summaryrefslogtreecommitdiff
path: root/libre/syslinux/PKGBUILD
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
    
}