blob: 05c761fe17539bc257b527950cdd0ae4b93fdbb3 (
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
# Maintainer (Arch): Tobias Powalowski <tpowa@archlinux.org>
# Maintainer (Arch): Thomas Bächler <thomas@archlinux.org>
# Contributor (Arch): Keshav Padram Amburay <(the ddoott ridikulus ddoott rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)>
# Maintainer: André Silva <emulatorman@parabola.nu>
pkgname="syslinux"
pkgver="6.02"
pkgrel="8.1"
arch=('x86_64' 'i686')
pkgdesc="Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE (Parabola rebranded)"
url="http://syslinux.zytor.com/"
license=('GPL2')
options=('!makeflags' '!emptydirs')
backup=('boot/syslinux/syslinux.cfg'
'boot/syslinux/splash.png')
makedepends=('python2' 'nasm' 'gnu-efi-libs')
depends=('perl' 'glibc')
optdepends=('perl-passwd-md5: 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')
install="${pkgname}.install"
source=("https://www.kernel.org/pub/linux/utils/boot/syslinux/${pkgname}-${pkgver}.tar.xz"
'syslinux.cfg'
'syslinux-install_update'
'syslinux-6.02-fix-chainloading.patch'
'syslinux-6.02-fix-bios-isolinux.patch'
'syslinux-6.02-fix-efi-ovmf.patch'
'splash.png')
md5sums=('6f275813a1b08cf852e55c0a3f8fbc78'
'f048880b57e2c5a7017ff8804bfda327'
'9376f18fa3e42fc36cffa4cff0a84c09'
'9dbede6b71a4de9e46aac4aad65334d7'
'adf71eceb4fccecd9a7efe1ab3d54918'
'62d22b101ef2ef53e25b4f86d9f41cb5'
'cb46ca47c6b6323127d908440057d98f')
prepare() {
cd "${srcdir}/${pkgname}-${pkgver}/"
## Do not try to build the Windows or DOS installers and DIAG files
sed 's|diag libinstaller dos win32 win64 dosutil txt|libinstaller txt|g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
sed 's|win32/syslinux.exe win64/syslinux64.exe||g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
sed 's|dosutil/*.com dosutil/*.sys||g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
sed 's|dos/syslinux.com||g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
sed 's|INSTALLSUBDIRS = com32 utils dosutil|INSTALLSUBDIRS = com32 utils|g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
sed 's|install -m 644 -c $(INSTALL_DIAG) $(INSTALLROOT)$(DIAGDIR)|# install -m 644 -c $(INSTALL_DIAG) $(INSTALLROOT)$(DIAGDIR)|g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
## Fix FHS manpage path
sed 's|/usr/man|/usr/share/man|g' -i "${srcdir}/${pkgname}-${pkgver}/mk/syslinux.mk" || true
# fix chainloading
# http://bugzilla.syslinux.org/show_bug.cgi?id=31
# http://www.syslinux.org/archives/2013-October/020971.html
patch -Np1 -i "${srcdir}/syslinux-6.02-fix-chainloading.patch"
# fix bios booting from isohybrid
# http://www.syslinux.org/archives/2013-November/021189.html
patch -Np1 -i "${srcdir}/syslinux-6.02-fix-bios-isolinux.patch"
# fix efi booting in qemu/ovmf
# http://bugzilla.syslinux.org/show_bug.cgi?id=23
patch -Np1 -i "${srcdir}/syslinux-6.02-fix-efi-ovmf.patch"
}
_build_syslinux_bios() {
rm -rf "${srcdir}/${pkgname}-${pkgver}-bios/" || true
cp -r "${srcdir}/${pkgname}-${pkgver}" "${srcdir}/${pkgname}-${pkgver}-bios"
cd "${srcdir}/${pkgname}-${pkgver}-bios/"
## Do not try to build syslinux with our default LDFLAGS, it will fail
unset LDFLAGS
make PYTHON="python2" bios
make PYTHON="python2" bios installer
}
_build_syslinux_efi64() {
rm -rf "${srcdir}/${pkgname}-${pkgver}-efi64/" || true
cp -r "${srcdir}/${pkgname}-${pkgver}" "${srcdir}/${pkgname}-${pkgver}-efi64"
cd "${srcdir}/${pkgname}-${pkgver}-efi64/"
## Unset all compiler FLAGS for efi64 build
unset CFLAGS
unset CPPFLAGS
unset CXXFLAGS
unset LDFLAGS
unset MAKEFLAGS
make PYTHON="python2" efi64
make PYTHON="python2" efi64 installer
}
_build_syslinux_efi32() {
rm -rf "${srcdir}/${pkgname}-${pkgver}-efi32/" || true
cp -r "${srcdir}/${pkgname}-${pkgver}" "${srcdir}/${pkgname}-${pkgver}-efi32"
cd "${srcdir}/${pkgname}-${pkgver}-efi32/"
## Unset all compiler FLAGS for efi32 build
unset CFLAGS
unset CPPFLAGS
unset CXXFLAGS
unset LDFLAGS
unset MAKEFLAGS
make PYTHON="python2" efi32
make PYTHON="python2" efi32 installer
}
build() {
cd "${srcdir}/${pkgname}-${pkgver}/"
## Build syslinux-efi
if [[ "${CARCH}" == "x86_64" ]]; then
_build_syslinux_efi64
fi
if [[ "${CARCH}" == "i686" ]]; then
_build_syslinux_efi32
fi
## Build syslinux-bios
_build_syslinux_bios
}
_package_syslinux_bios() {
cd "${srcdir}/${pkgname}-${pkgver}-bios/"
## Install Syslinux bios
make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/bios/" bios install
## Remove syslinux.exe,syslinux64.exe,syslinux.com and dosutil dir
rm "${pkgdir}/usr/lib/syslinux/bios"/syslinux.{com,exe} || true
rm "${pkgdir}/usr/lib/syslinux/bios/syslinux64.exe" || true
rm -rf "${pkgdir}/usr/lib/syslinux/bios/dosutil/" || true
## Remove com32 and diag dirs
rm -rf "${pkgdir}/usr/lib/syslinux/bios/diag/" || true
rm -rf "${pkgdir}/usr/lib/syslinux/bios/com32/" || true
## Move extlinux binary to /usr/bin
install -d "${pkgdir}/usr/bin"
mv "${pkgdir}/sbin/extlinux" "${pkgdir}/usr/bin/extlinux"
rm -rf "${pkgdir}/sbin/"
## Install docs
install -d "${pkgdir}/usr/share/doc"
cp -ar "${srcdir}/${pkgname}-${pkgver}/doc" "${pkgdir}/usr/share/doc/syslinux"
## Install the default configuration
install -D -m0644 "${srcdir}/syslinux.cfg" "${pkgdir}/boot/syslinux/syslinux.cfg"
## Install the installation and update script
## This script is maintained at git://gist.github.com/772138.git
## Script not yet updated for syslinux-efi
install -D -m0755 "${srcdir}/syslinux-install_update" "${pkgdir}/usr/bin/syslinux-install_update"
# Install Parabola splash
install -D -m644 "${srcdir}/splash.png" "${pkgdir}/boot/syslinux/splash.png"
}
_package_syslinux_efi() {
cd "${srcdir}/${pkgname}-${pkgver}/"
if [[ "${CARCH}" == "x86_64" ]]; then
cd "${srcdir}/${pkgname}-${pkgver}-efi64/"
make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/" efi64 install
fi
if [[ "${CARCH}" == "i686" ]]; then
cd "${srcdir}/${pkgname}-${pkgver}-efi32/"
make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/" efi32 install
fi
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}/"
_package_syslinux_efi
_package_syslinux_bios
}
|