Date: Monday, October 13, 2014 @ 21:26:09 Author: anatolik Revision: 224295
redo/simplify PKGBUILD Modified: syslinux/trunk/PKGBUILD syslinux/trunk/syslinux-install_update syslinux/trunk/syslinux.cfg syslinux/trunk/syslinux.install -------------------------+ PKGBUILD | 301 ++++++++-------------------------------------- syslinux-install_update | 6 syslinux.cfg | 6 syslinux.install | 43 ++---- 4 files changed, 77 insertions(+), 279 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2014-10-13 18:43:50 UTC (rev 224294) +++ PKGBUILD 2014-10-13 19:26:09 UTC (rev 224295) @@ -1,27 +1,25 @@ -# Maintainer : Tobias Powalowski <tp...@archlinux.org> -# Maintainer : Thomas Bächler <tho...@archlinux.org> +# Maintainer: Tobias Powalowski <tp...@archlinux.org> +# Maintainer: Thomas Bächler <tho...@archlinux.org> +# Maintainer: Anatol Pomozov <anatol.pomo...@gmail.com> # Contributor: Keshav Amburay <(the ddoott ridikulus ddoott rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)> -## "1" to enable IA32-EFI build in Arch x86_64, "0" to disable -_IA32_EFI_IN_ARCH_X64="1" - -_VER="6.03" -_GIT_TAG="syslinux-${_VER}" - -pkgname="syslinux" -pkgver="${_VER/-/}" -pkgrel="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" -url="http://syslinux.zytor.com/" -license=('GPL2') -options=('!makeflags' '!emptydirs') -backup=('boot/syslinux/syslinux.cfg') -makedepends=('git' 'python2' 'nasm' 'ncurses') -if [[ "$CARCH" == "x86_64" ]]; then - makedepends+=('lib32-glibc') +pkgname=syslinux +pkgver=6.03 +_tag=syslinux-$pkgver +pkgrel=2 +pkgdesc='Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE' +url='http://www.syslinux.org/' +arch=(i686 x86_64) +backup=(boot/syslinux/syslinux.cfg) +install=syslinux.install +license=(GPL2) +# syslinux build system is a mess of submakes that does not work with -jN +options=(!makeflags) +makedepends=(git python2 nasm upx asciidoc) +if [[ "$CARCH" == x86_64 ]]; then + # efi32 needs it + makedepends+=(lib32-glibc) fi -depends=('glibc') optdepends=('perl-passwd-md5: For md5pass' 'perl-digest-sha1: For sha1pass' 'mtools: For mkdiskimage and syslinux support' @@ -29,243 +27,56 @@ 'util-linux: For isohybrid' 'efibootmgr: For EFI support' 'dosfstools: For EFI support') -install="${pkgname}.install" -source=("${pkgname}::git+http://git.zytor.com/syslinux/syslinux.git#tag=${_GIT_TAG}" - "gnu-efi::git+http://git.code.sf.net/p/gnu-efi/code#commit=3c62e78556aea01e9798380cd46794c6ca09d4bd" - 'syslinux.cfg' - 'syslinux-install_update') -md5sums=('SKIP' - 'SKIP' - '46ca150f53322ff8f1597d9a342f7e40' - '9376f18fa3e42fc36cffa4cff0a84c09') +# 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 + syslinux.cfg + syslinux-install_update) +sha1sums=('SKIP' + '0640bd89e2ba609bab20db671e14f74e26554873' + '15db7e99259bed1c88907d0561f1af4174d1cc65') -_pkgver() { - cd "${srcdir}/${pkgname}/" - echo "$(git describe --tags)" | sed -e 's|syslinux-||g' -e 's|-pre|pre|g' -e 's|-|.|g' -} +_targets='bios efi32' +case "$CARCH" in + x86_64) _targets+=' efi64' ;; +esac prepare() { - - mv "${srcdir}/${pkgname}" "${srcdir}/${pkgname}-${pkgver}/" - cd "${srcdir}/${pkgname}-${pkgver}/" - - msg "Run git clean" - git clean -x -d -f - - msg "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 - sed 's|-include $(MAKEDIR)/devel.mk||g' -i "${srcdir}/${pkgname}-${pkgver}/mk/syslinux.mk" || true - - msg "Fix FHS manpage path" - sed 's|/usr/man|/usr/share/man|g' -i "${srcdir}/${pkgname}-${pkgver}/mk/syslinux.mk" || true - - cd "${srcdir}/gnu-efi/" - - msg "Run git clean for gnu-efi" - git clean -x -d -f - - msg "Revert gnu-efi Makefile 'make install' problamatic commit" - git revert --no-commit 06744d69273de4945cf0ffcaa4a6abf7cec707b6 - - msg "Prepare gnu-efi source" - cp -r "${srcdir}/gnu-efi/gnu-efi-3.0" "${srcdir}/${pkgname}-${pkgver}/gnu-efi/gnu-efi-3.0" - - cd "${srcdir}/${pkgname}-${pkgver}/" - -} + cd syslinux -_build_syslinux_bios() { - - rm -rf "${srcdir}/${pkgname}-${pkgver}-bios/" || true - cp -r "${srcdir}/${pkgname}-${pkgver}" "${srcdir}/${pkgname}-${pkgver}-bios" - - mkdir -p "${srcdir}/${pkgname}-${pkgver}-bios/OBJDIR" - cd "${srcdir}/${pkgname}-${pkgver}-bios/" - - msg "Do not try to compile bios build with our default LDFLAGS, it will fail" - unset LDFLAGS - - msg "Run make bios" - make PYTHON="python2" OBJDIR="${srcdir}/${pkgname}-${pkgver}-bios/OBJDIR" bios - - msg "Run make bios installer" - make PYTHON="python2" OBJDIR="${srcdir}/${pkgname}-${pkgver}-bios/OBJDIR" bios installer - -} + # do not swallow efi compilation output to make debugging easier + sed 's|> /dev/null 2>&1||' -i efi/check-gnu-efi.sh -_build_syslinux_efi64() { - - rm -rf "${srcdir}/${pkgname}-${pkgver}-efi64/" || true - cp -r "${srcdir}/${pkgname}-${pkgver}" "${srcdir}/${pkgname}-${pkgver}-efi64" - - mkdir -p "${srcdir}/${pkgname}-${pkgver}-efi64/OBJDIR/efi64/" - cd "${srcdir}/${pkgname}-${pkgver}-efi64/gnu-efi/gnu-efi-3.0/" - - msg "Unset all compiler FLAGS for gnu-efi efi64 build" - unset CFLAGS - unset CPPFLAGS - unset CXXFLAGS - unset LDFLAGS - unset MAKEFLAGS - - msg "Run make gnu-efi for syslinux efi64" - make ARCH="x86_64" -j1 - - msg "Run make install gnu-efi for syslinux efi64" - make ARCH="x86_64" PREFIX="${srcdir}/${pkgname}-${pkgver}-efi64/OBJDIR/efi64/" -j1 install - - cd "${srcdir}/${pkgname}-${pkgver}-efi64/" - - msg "Unset all compiler FLAGS for efi64 build" - unset CFLAGS - unset CPPFLAGS - unset CXXFLAGS - unset LDFLAGS - unset MAKEFLAGS - - msg "Run make efi64" - make PYTHON="python2" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi64/OBJDIR" efi64 - - msg "Run make efi64 installer" - make PYTHON="python2" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi64/OBJDIR" efi64 installer - + # disable debug and development flags to reduce bootloader size + truncate --size 0 mk/devel.mk } -_build_syslinux_efi32() { - - rm -rf "${srcdir}/${pkgname}-${pkgver}-efi32/" || true - cp -r "${srcdir}/${pkgname}-${pkgver}" "${srcdir}/${pkgname}-${pkgver}-efi32" - - mkdir -p "${srcdir}/${pkgname}-${pkgver}-efi32/OBJDIR/efi32/" - cd "${srcdir}/${pkgname}-${pkgver}-efi32/gnu-efi/gnu-efi-3.0/" - - msg "Unset all compiler FLAGS for gnu-efi efi32 build" - unset CFLAGS - unset CPPFLAGS - unset CXXFLAGS - unset LDFLAGS - unset MAKEFLAGS - - msg "Run make gnu-efi for syslinux efi32" - make ARCH="ia32" -j1 - - msg "Run make install gnu-efi for syslinux efi32" - make ARCH="ia32" PREFIX="${srcdir}/${pkgname}-${pkgver}-efi32/OBJDIR/efi32/" install - - cd "${srcdir}/${pkgname}-${pkgver}-efi32/" - - msg "Unset all compiler FLAGS for efi32 build" - unset CFLAGS - unset CPPFLAGS - unset CXXFLAGS - unset LDFLAGS - unset MAKEFLAGS - - msg "Run make efi32" - make PYTHON="python2" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi32/OBJDIR" efi32 - - msg "Run make efi32 installer" - make PYTHON="python2" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi32/OBJDIR" efi32 installer - -} - build() { - - cd "${srcdir}/${pkgname}-${pkgver}/" - - if [[ "${CARCH}" == "x86_64" ]]; then - msg "Build syslinux efi64" - _build_syslinux_efi64 - - if [[ "${_IA32_EFI_IN_ARCH_X64}" == "1" ]]; then - msg "Build syslinux efi32" - _build_syslinux_efi32 - fi - fi - - if [[ "${CARCH}" == "i686" ]]; then - msg "Build syslinux efi32" - _build_syslinux_efi32 - fi - - msg "Build syslinux bios" - _build_syslinux_bios - -} + cd syslinux -_package_syslinux_bios() { - - cd "${srcdir}/${pkgname}-${pkgver}-bios/" - - msg "Install Syslinux bios" - make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/bios/" OBJDIR="${srcdir}/${pkgname}-${pkgver}-bios/OBJDIR" bios install - - msg "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 - - msg "Remove com32 and diag dirs" - rm -rf "${pkgdir}/usr/lib/syslinux/bios/diag/" || true - rm -rf "${pkgdir}/usr/lib/syslinux/bios/com32/" || true - - msg "Move extlinux binary to /usr/bin" - install -d "${pkgdir}/usr/bin" - mv "${pkgdir}/sbin/extlinux" "${pkgdir}/usr/bin/extlinux" - rm -rf "${pkgdir}/sbin/" - - msg "Install syslinux docs" - install -d "${pkgdir}/usr/share/doc" - cp -ar "${srcdir}/${pkgname}-${pkgver}/doc" "${pkgdir}/usr/share/doc/syslinux" - - msg "Install syslinux.cfg" - install -D -m0644 "${srcdir}/syslinux.cfg" "${pkgdir}/boot/syslinux/syslinux.cfg" - - msg "Install the syslinux-install_update script" - ## This script is maintained at https://gist.github.com/pyther/772138 - ## Script not yet updated for syslinux-efi - install -D -m0755 "${srcdir}/syslinux-install_update" "${pkgdir}/usr/bin/syslinux-install_update" - + # it would be great to use Arch cflags/ldflags for userspace tools + unset CFLAGS + unset CPPFLAGS + unset CXXFLAGS + unset LDFLAGS + make PYTHON=python2 $_targets } -_package_syslinux_efi() { - - cd "${srcdir}/${pkgname}-${pkgver}/" - - if [[ "${CARCH}" == "x86_64" ]]; then - cd "${srcdir}/${pkgname}-${pkgver}-efi64/" - msg "Install Syslinux efi64" - make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi64/OBJDIR" efi64 install - - if [[ "${_IA32_EFI_IN_ARCH_X64}" == "1" ]]; then - cd "${srcdir}/${pkgname}-${pkgver}-efi32/" - msg "Install Syslinux efi32" - make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi32/OBJDIR" efi32 install - fi - fi - - if [[ "${CARCH}" == "i686" ]]; then - cd "${srcdir}/${pkgname}-${pkgver}-efi32/" - msg "Install Syslinux efi32" - make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi32/OBJDIR" efi32 install - fi - +check() { + cd syslinux + make unittest } package() { - - cd "${srcdir}/${pkgname}-${pkgver}/" - - msg "Package Syslinux efi" - _package_syslinux_efi - - msg "Package Syslinux bios" - _package_syslinux_bios - + cd syslinux + make $_targets install INSTALLROOT="$pkgdir" SBINDIR=/usr/bin MANDIR=/usr/share/man + + rm -r "$pkgdir"/usr/share/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 -m0644 ../syslinux.cfg "$pkgdir"/boot/syslinux/syslinux.cfg + install -D -m0755 ../syslinux-install_update "$pkgdir"/usr/bin/syslinux-install_update } Modified: syslinux-install_update =================================================================== --- syslinux-install_update 2014-10-13 18:43:50 UTC (rev 224294) +++ syslinux-install_update 2014-10-13 19:26:09 UTC (rev 224295) @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/bash # # Syslinux Installer / Updater Script (for BIOS only) # Copyright (C) 2011-2013 Matthew Gyurgyik <pyt...@pyther.net> @@ -31,7 +31,7 @@ shopt -s nullglob -bios_libpath="/usr/lib/syslinux/bios" +bios_libpath="/usr/share/syslinux" bios_bootpath="/boot/syslinux" EXTLINUX="/usr/bin/extlinux" @@ -449,5 +449,3 @@ fi exit 0 - -# vim: set et sw=4: Modified: syslinux.cfg =================================================================== --- syslinux.cfg 2014-10-13 18:43:50 UTC (rev 224294) +++ syslinux.cfg 2014-10-13 19:26:09 UTC (rev 224295) @@ -8,7 +8,7 @@ # * hdt.c32 - hardware detection tool # * reboot.c32 - reboots the system # -# To Use: Copy the respective files from /usr/lib/syslinux to /boot/syslinux. +# To Use: Copy the respective files from /usr/share/syslinux to /boot/syslinux. # If /usr and /boot are on the same file system, symlink the files instead # of copying them. # @@ -19,13 +19,13 @@ # The wiki provides further configuration examples DEFAULT arch -PROMPT 0 # Set to 1 if you always want to display the boot: prompt +PROMPT 0 # Set to 1 if you always want to display the boot: prompt TIMEOUT 50 # You can create syslinux keymaps with the keytab-lilo tool #KBDMAP de.ktl # Menu Configuration -# Either menu.c32 or vesamenu32.c32 must be copied to /boot/syslinux +# Either menu.c32 or vesamenu32.c32 must be copied to /boot/syslinux UI menu.c32 #UI vesamenu.c32 Modified: syslinux.install =================================================================== --- syslinux.install 2014-10-13 18:43:50 UTC (rev 224294) +++ syslinux.install 2014-10-13 19:26:09 UTC (rev 224295) @@ -1,43 +1,32 @@ -post_install() { - +show_efi_msg() { cat << EOF -==> For setting up Syslinux BIOS using the syslinux-install_update script follow - https://wiki.archlinux.org/index.php/Syslinux#Automatic_Install -EOF - - ## Message specific to Syslinux 4.xx (or 5.xx) to 6.xx upgrade - if [ "$(vercmp $2 6.00)" -lt 0 ]; then - - cat << EOF +==> For setting up Syslinux EFI follow + https://wiki.archlinux.org/index.php/Syslinux#UEFI_Systems -==> If you are upgrading from Syslinux 4.xx or 5.xx, please re-install - (not update) Syslinux BIOS manually (not using the install script) once - by following https://wiki.archlinux.org/index.php/Syslinux#Manual_install +==> The syslinux-install_update script does not currently support EFI install -==> The install script may not properly upgrade Syslinux to 6.xx version EOF - - fi - +} + +show_bios_autoupdate_msg() { cat << EOF -==> For setting up Syslinux EFI follow - https://wiki.archlinux.org/index.php/Syslinux#UEFI_Systems +==> For setting up Syslinux BIOS using the syslinux-install_update script follow + https://wiki.archlinux.org/index.php/Syslinux#Automatic_Install +EOF +} -==> The syslinux-install_update script does not currently support EFI install +post_install() { + [ -f /boot/syslinux/SYSLINUX_AUTOUPDATE ] || show_bios_autoupdate_msg + [ -d /sys/firmware/efi ] && show_efi_msg -EOF - + true } post_upgrade() { - ## auto-update syslinux if /boot/syslinux/SYSLINUX_AUTOUPDATE exists /usr/bin/syslinux-install_update -s - + post_install - } - -# vim:set ts=2 sw=2 et: