summaryrefslogtreecommitdiff
path: root/libre/syslinux/PKGBUILD
blob: fa55238619645df2dd98805b5831a02d10d6d68b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# Maintainer (Arch): Tobias Powalowski <tpowa@archlinux.org>
# Maintainer (Arch): Thomas Bächler <thomas@archlinux.org>
# Maintainer (Arch): Anatol Pomozov <anatol.pomozov@gmail.com>
# Contributor (Arch): Keshav Amburay <(the ddoott ridikulus ddoott rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)>
# Maintainer (Hyperbola): André Silva <emulatorman@hyperbola.info>
# Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>

pkgname=syslinux
pkgver=6.04.pre2.r11.gbf6db5b4
#_tag=syslinux-$pkgver
_commit=bf6db5b4
pkgrel=3
pkgrel+=.parabola1
pkgdesc='Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE'
pkgdesc+=' (Parabola rebranded)'
url='https://www.syslinux.org/'
arch=(x86_64)
arch+=(i686)
backup=(boot/syslinux/syslinux.cfg)
backup+=(boot/syslinux/splash.png)
install=syslinux.install
license=(GPL2)
# syslinux build system is a mess of submakes that does not work with -jN
# efi32/com32 do not like Parabola cflags/ldflags, though it would be nice to have the flags for userspace tools
options=(!makeflags !buildflags)
replaces=(${pkgname}-parabola)
conflicts=(${pkgname}-parabola)
makedepends=(git python nasm upx asciidoc)
makedepends_x86_64=(lib32-glibc) # efi32 needs it
optdepends=('perl-crypt-passwdmd5: For md5pass'
            'perl-digest-sha1:     For sha1pass'
            'mtools:               For mkdiskimage and syslinux support'
            'gptfdisk:             For GPT support'
            'util-linux:           For isohybrid'
            'efibootmgr:           For EFI support'
            'dosfstools:           For EFI support')

# The syslinux-install_update script is maintained at https://gist.github.com/pyther/772138
# Script not yet updated for syslinux-efi
source=(git+https://repo.or.cz/syslinux.git#commit=$_commit
        gnu-efi::git://git.code.sf.net/p/gnu-efi/code
        syslinux.cfg
        syslinux-install_update
        0002-gfxboot-menu-label.patch
        0005-gnu-efi-version-compatibility.patch
        0017-single-load-segment.patch
        0004-gnu-efi-from-arch.patch
        0016-strip-gnu-property.patch
        0018-prevent-pow-optimization.patch
        0025-reproducible-build.patch
        splash.png
)
sha1sums=('SKIP'
          'SKIP'
          'e40acf4cf9d05ec000c59284f959d1540b35a3be'
          'df5160a138ca8c6502d67fe1a64fec78b50e82c2'
          '69239fda4a3d5a247f0e48c5c683e0124c7d9201'
          '1e0cd52252622f206d22e84f2a4d358508c902f4'
          '81d05572b15dc5c55b63489fecdc79a6a332959c'
          '4c3706e7a5620e450a6abb9238c08d7b39bb6945'
          'f4a6768c7e5b8d02428ae550e37a7ca445ad1bb8'
          'c94622eaa14ad9512e4f43b13302ba35d1787cbc'
          '5b3878a1fff74bbb09ddbc66cc8afa38f34ed05c'
          'aab1c7789e0d7290fe87538abad181abac069d40')
sha256sums=('SKIP'
            'SKIP'
            '67fe3050e60a0d1572293ff095dac2e6cab9da6d0f98fb1fc555850ec046d6ea'
            '5f86b5813465c48ba7bd178389aacb5149ff0b5f2467ab1772a4f862c5b15d41'
            'd1fe9084ce2526619f94b8a07b89fb0194e874beef9f202f8b974879d77f2e1a'
            '8610959df6c01568ff478ca1eb4aac301f3ba1f5bd4739daaec072865e8be2d7'
            '5b017ba5eae77caa09fa5af6ecfa0df1e7e22776b2b13c8744c6cb7ecd7ad0e9'
            'cf3c3da9300d6ea70eab5b8dca724ce03a3651bd63fb0168594dcfeb35eec11c'
            '7facb5c2abc71c9bfe01bf4db388306ed7b7abf6654009af336262839527f962'
            '755cd7062fe8495f6f62053ce664451c12ae65dba9fb5c75062a495fbe040fb1'
            '9a76f6f75a42485bc337163ba38068b09f7889bdc1a4e191408898f10de36662'
            'a839e3e1242c5279f95f5f913af47be73cf16339c7aa55af378a428c904f1595')

_targets='bios efi32'
case "$CARCH" in
  x86_64) _targets+=' efi64' ;;
esac

pkgver() {
  cd syslinux
  git describe --long | sed 's/^syslinux-//;s/\([^-]*-g\)/r\1/;s/-/./g'
}

prepare() {
  cd syslinux

  patch -p1 < ../0002-gfxboot-menu-label.patch
  patch -p1 < ../0017-single-load-segment.patch
  patch -p1 < ../0016-strip-gnu-property.patch
  patch -p1 < ../0018-prevent-pow-optimization.patch

  # TODO: use 'gnu-efi-libs' package instead of embedded sources
  # patch -p1 < ../0004-gnu-efi-from-arch.patch
  # patch -p1 < ../0005-gnu-efi-version-compatibility.patch

  patch -p1 < ../0025-reproducible-build.patch

  # do not swallow efi compilation output to make debugging easier
  sed 's|> /dev/null 2>&1||' -i efi/check-gnu-efi.sh

  # disable debug and development flags to reduce bootloader size
  truncate --size 0 mk/devel.mk

  git submodule init
  git config --local submodule.gnu-efi.url "$srcdir/gnu-efi"
  git submodule update
}

build() {
  cd syslinux
  export LDFLAGS+=--no-dynamic-linker  # workaround for binutils 2.28 http://www.syslinux.org/wiki/index.php?title=Building
  export EXTRA_CFLAGS=-fno-PIE   # to fix gpxe build
  make PYTHON=python $_targets
}

package() {
  cd syslinux
  make $_targets install INSTALLROOT="$pkgdir" SBINDIR=/usr/bin MANDIR=/usr/share/man AUXDIR=/usr/lib/syslinux

  rm -r "$pkgdir"/usr/lib/syslinux/{com32,dosutil,syslinux.com}
  install -D -m644 COPYING "$pkgdir"/usr/share/licenses/syslinux/COPYING
  install -d "$pkgdir"/usr/share/doc
  cp -ar doc "$pkgdir"/usr/share/doc/syslinux

  install -d "$pkgdir"/usr/lib/syslinux/bios
  mv "$pkgdir"/usr/lib/syslinux/{*.bin,*.c32,*.0,memdisk} "$pkgdir"/usr/lib/syslinux/bios 

  install -D -m0644 ../syslinux.cfg "$pkgdir"/boot/syslinux/syslinux.cfg
  install -D -m0755 ../syslinux-install_update "$pkgdir"/usr/bin/syslinux-install_update
  install -D -m0644 ../splash.png "$pkgdir"/boot/syslinux/splash.png
}