[arch-general] patch for syslinux install script
There is a slight change in behaviour. When preforming an update, all c32 modules in /usr/lib/syslinux/bios/ will get copied/symlinked. Previously we only updated/copied modules that were already in /boot/syslinux. Patches can also be found here: http://pyther.net/archlinux/syslinux/6/20130706/ Matthew Gyurgyik PKGBUILD: --- /tmp/syslinux/PKGBUILD 2013-07-06 08:55:21.000000000 -0400 +++ syslinux/PKGBUILD 2013-07-06 07:45:18.811510802 -0400 @@ -4,7 +4,7 @@ pkgname="syslinux" pkgver="6.01" -pkgrel="2" +pkgrel="3" 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/" @@ -29,62 +29,62 @@ source=("https://www.kernel.org/pub/linu sha1sums=('d7bc1b188677f77ac2d7060d25491dc29877a9c4' 'b0f174bcc0386fdf699e03d0090e3ac841098010' - 'b1d915045fe3094f5359df043c53e73a4dc32745') + '2a7c1abe9816f6f702f425499a10582eebf94632') _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}/" - + ## 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 @@ -92,73 +92,73 @@ build() { 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 - + ## 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" - + } package() { - + 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_syslinux_bios - + } syslinux-install_update: --- /tmp/syslinux/syslinux-install_update 2013-07-06 08:55:11.000000000 -0400 +++ syslinux/syslinux-install_update 2013-07-06 07:42:58.931760621 -0400 @@ -1,7 +1,7 @@ #!/bin/bash # # Sylinux Installer / Updater Scripts -# Copyright (C) 2011 Matthew Gyurgyik <pyther@pyther.net> +# Copyright (C) 2013 Matthew Gyurgyik <pyther@pyther.net> # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -293,13 +293,13 @@ install_mbr() { return 0 } -_install() { +install_modules() { # Copy all com32 files to /boot for file in "${libpath}"/*.c32; do file=${file##*/} # Symlink files if /boot resides on the same partition as root if [[ "$boot" = root ]]; then - ln -s "${libpath#$CHROOT}/$file" "$bootpath/$file" &> /dev/null + ln -sf "${libpath#$CHROOT}/$file" "$bootpath/$file" &> /dev/null elif [[ "$boot" = boot ]]; then cp "$libpath/$file" "$bootpath/$file" fi @@ -313,59 +313,43 @@ _install() { cp "$pciids_file" "$bootpath/pci.ids" &> /dev/null fi fi +} + +_install() { + install_modules if device_is_raid "$bootpart"; then - echo "Detected RAID on /boot - installing Syslinux with --raid" + echo "Detected RAID on /boot" "$extlinux" --install "$bootpath" -r > /dev/null 2>&1 else "$extlinux" --install "$bootpath" > /dev/null 2>&1 fi if (( $? )); then - echo "Syslinux install failed" + echo "syslinux install failed" exit 2 else - echo "Syslinux install successful" + echo "syslinux install successful" fi touch "$CHROOT/$autoupdate_file" } update() { - # Update c32 files in /boot, if /boot is not on same fs - if [[ "$boot" = boot ]]; then - for file in "$bootpath"/*.c32; do - file=${file##*/} - cp "$libpath/$file" "$bootpath/$file" &> /dev/null - done - if [[ -f "$bootpath/pci.ids" ]]; then - cp "$pciids_file" "$bootpath/pci.ids" &> /dev/null - fi - fi - - # Ensure core modules exist and if not install them - for file in "${core_modules[@]}"; do - if [[ ! -f $bootpath/$file ]]; then - if [[ "$boot" = root ]]; then - ln -s "${libpath#$CHROOT}/$file" "$bootpath/$file" &> /dev/null - elif [[ "$boot" = boot ]]; then - cp "$libpath/$file" "$bootpath/$file" - fi - fi - done + install_modules if device_is_raid $bootpart; then - echo "Detected RAID on /boot - installing Syslinux with --raid" + echo "Detected RAID on /boot" "$extlinux" --update "$bootpath" -r &> /dev/null else "$extlinux" --update "$bootpath" &> /dev/null fi if (($?)); then - echo "Syslinux update failed" + echo "syslinux update failed" exit 2 else - echo "Syslinux update successful" + echo "syslinux update successful" fi }
On Sat, Jul 6, 2013 at 3:05 PM, Matthew Gyurgyik <pyther@pyther.net> wrote:
There is a slight change in behaviour. When preforming an update, all c32 modules in /usr/lib/syslinux/bios/ will get copied/symlinked. Previously we only updated/copied modules that were already in /boot/syslinux.
Patches can also be found here: http://pyther.net/archlinux/syslinux/6/20130706/
Matthew Gyurgyik
PKGBUILD: --- /tmp/syslinux/PKGBUILD 2013-07-06 08:55:21.000000000 -0400 +++ syslinux/PKGBUILD 2013-07-06 07:45:18.811510802 -0400
<snip>
Are these whitespace diffs necessary? - + _package_syslinux_bios - +
participants (2)
-
Karol Blazewicz
-
Matthew Gyurgyik