summaryrefslogtreecommitdiff
path: root/libre/syslinux/PKGBUILD
blob: fa0886dd77f8dd73e4ea66447354fcfefc39517a (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
# 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.03
_tag=syslinux-$pkgver
pkgrel=8.parabola1
pkgdesc='Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE (Parabola rebranded)'
url='http://www.syslinux.org/'
arch=(i686 x86_64)
backup=(boot/syslinux/syslinux.cfg
        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 python2 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://git.kernel.org/pub/scm/boot/syslinux/syslinux.git#tag=$_tag
        git://git.code.sf.net/p/gnu-efi/code#commit=ab54e2b40e914d0ca01dc3d44c8d4eb8517bf999
        syslinux.cfg
        syslinux-install_update
        btrfs-fix.patch::http://repo.or.cz/syslinux.git/patch/548386049cd41e887079cdb904d3954365eb28f3?hp=721a0af2f0ba111c31685c5f6c5481eb25346971
        gcc-fix-alignment.patch::http://repo.or.cz/syslinux.git/patch/e5f2b577ded109291c9632dacb6eaa621d8a59fe?hp=8dc6d758b564a1ccc44c3ae11f265d43628219ce
        dont-guess-alignment.patch::http://repo.or.cz/syslinux.git/patch/0cc9a99e560a2f52bcf052fd85b1efae35ee812f?hp=e5f2b577ded109291c9632dacb6eaa621d8a59fe
        kdb-230.patch::http://repo.or.cz/syslinux.git/patch/138e850fab106b5235178848b3e0d33e25f4d3a2
        correct_base_type.patch::http://repo.or.cz/syslinux.git/patch/83aad4f
        set_mode_base.patch::http://repo.or.cz/syslinux.git/patch/0a2dbb3
        fix_return_pointer.patch::http://repo.or.cz/syslinux.git/patch/8dc6d758b564a1ccc44c3ae11f265d43628219ce
        fix_infinite_loop_tests.patch
        gnu-efi-git.patch
        splash.png)
sha1sums=('SKIP'
          'SKIP'
          'e40acf4cf9d05ec000c59284f959d1540b35a3be'
          '6bf38a8de1891ba3fbea27ef73cc4a8047c1b6c7'
          '6ebf77bf028c928a6ef33dadeee7402b3113b6d3'
          'eaa9f5cd82b501f076ece4812d2d37f49d02caae'
          'c6a6e96e233b2f8105503725cd614abc1bac2845'
          'f50e0a92c65536ef73a84614d489e52d9d1db329'
          'e24bf5b1617bab4a3f46925c5a8ee6079f4686bf'
          '500c174fce91133d40024b28f6f5cedb144b84c2'
          'b3d2196aaec154749c5b796c6d9bfd605a918cf8'
          '7ecb02550666dfafeb0b22a67dcc34caa4b79767'
          '324af118594e6fb0864ef4905ce47d95c4d8e6ef'
          'aab1c7789e0d7290fe87538abad181abac069d40')

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

prepare() {
  cd syslinux

  # FS#48253
  patch -p1 < ../gcc-fix-alignment.patch
  patch -p1 < ../dont-guess-alignment.patch

  # FS#48214
  patch -p1 < ../btrfs-fix.patch

  # FS#49046
  patch -p1 < ../kdb-230.patch

  # FS#53083
  patch -p1 < ../correct_base_type.patch
  patch -p1 < ../set_mode_base.patch

  # FS#49250
  patch -p1 < ../fix_return_pointer.patch

  # fix infinite loop in load_linux
  patch -p1 < ../fix_infinite_loop_tests.patch

  patch -p1 < ../gnu-efi-git.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

  mkdir -p gnu-efi
  cp -rv $srcdir/code/gnu-efi-3.0 gnu-efi
}

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=python2 $_targets
}

check() {
  cd syslinux
  make unittest
}

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
}