sys-boot/syslinux: respect user's AR, OBJCOPY, RANLIB, bug #721902
authorSergei Trofimovich <slyfox@gentoo.org>
Tue, 26 May 2020 22:30:58 +0000 (23:30 +0100)
committerSergei Trofimovich <slyfox@gentoo.org>
Tue, 26 May 2020 22:30:58 +0000 (23:30 +0100)
Reported-by: Agostino Sarubbo
Closes: https://bugs.gentoo.org/721902
Package-Manager: Portage-2.3.100, Repoman-2.3.22
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
sys-boot/syslinux/syslinux-6.04_pre1-r2.ebuild [new file with mode: 0644]

diff --git a/sys-boot/syslinux/syslinux-6.04_pre1-r2.ebuild b/sys-boot/syslinux/syslinux-6.04_pre1-r2.ebuild
new file mode 100644 (file)
index 0000000..415672b
--- /dev/null
@@ -0,0 +1,119 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit eutils toolchain-funcs
+
+DESCRIPTION="SYSLINUX, PXELINUX, ISOLINUX, EXTLINUX and MEMDISK bootloaders"
+HOMEPAGE="https://www.syslinux.org/"
+# Final releases in 6.xx/$PV.tar.* (literal "xx")
+# Testing releases in Testing/$PV/$PV.tar.*
+SRC_URI_DIR=${PV:0:1}.xx
+SRC_URI_TESTING=Testing/${PV:0:4}
+[[ ${PV/_alpha} != $PV ]] && SRC_URI_DIR=$SRC_URI_TESTING
+[[ ${PV/_beta} != $PV ]] && SRC_URI_DIR=$SRC_URI_TESTING
+[[ ${PV/_pre} != $PV ]] && SRC_URI_DIR=$SRC_URI_TESTING
+[[ ${PV/_rc} != $PV ]] && SRC_URI_DIR=$SRC_URI_TESTING
+SRC_URI="https://www.kernel.org/pub/linux/utils/boot/syslinux/${SRC_URI_DIR}/${P/_/-}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~x86"
+IUSE="custom-cflags"
+
+RDEPEND="sys-fs/mtools
+       dev-perl/Crypt-PasswdMD5
+       dev-perl/Digest-SHA1"
+DEPEND="${RDEPEND}
+       dev-lang/nasm
+       >=sys-boot/gnu-efi-3.0u
+       virtual/os-headers"
+
+S=${WORKDIR}/${P/_/-}
+
+# This ebuild is a departure from the old way of rebuilding everything in syslinux
+# This departure is necessary since hpa doesn't support the rebuilding of anything other
+# than the installers.
+
+# These are executables which come precompiled and are run by the boot loader
+QA_PREBUILT="usr/share/${PN}/*.c32"
+
+# removed all the unpack/patching stuff since we aren't rebuilding the core stuff anymore
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-6.03-sysmacros.patch #579928
+       "${FILESDIR}"/${P}-singleloadsegment.patch #662678
+       "${FILESDIR}"/${P}-fcommon.patch #705730
+)
+
+src_prepare() {
+       default
+
+       rm -f gethostip #bug 137081
+
+       # Don't prestrip or override user LDFLAGS, bug #305783
+       local SYSLINUX_MAKEFILES="extlinux/Makefile linux/Makefile mtools/Makefile \
+               sample/Makefile utils/Makefile"
+       sed -i ${SYSLINUX_MAKEFILES} -e '/^LDFLAGS/d' || die "sed failed"
+
+       if use custom-cflags; then
+               sed -i ${SYSLINUX_MAKEFILES} \
+                       -e 's|-g -Os||g' \
+                       -e 's|-Os||g' \
+                       -e 's|CFLAGS[[:space:]]\+=|CFLAGS +=|g' \
+                       || die "sed custom-cflags failed"
+       else
+               QA_FLAGS_IGNORED="
+                       /sbin/extlinux
+                       /usr/bin/memdiskfind
+                       /usr/bin/gethostip
+                       /usr/bin/isohybrid
+                       /usr/bin/syslinux
+                       "
+       fi
+       case ${ARCH} in
+               amd64)  loaderarch="efi64" ;;
+               x86)    loaderarch="efi32" ;;
+               *)      ewarn "Unsupported architecture, building installers only." ;;
+       esac
+
+       # building with ld.gold causes problems, bug #563364
+       if tc-ld-is-gold; then
+               ewarn "Building syslinux with the gold linker may cause problems, see bug #563364"
+               if [[ -z "${I_KNOW_WHAT_I_AM_DOING}" ]]; then
+                       tc-ld-disable-gold
+                       ewarn "set I_KNOW_WHAT_I_AM_DOING=1 to override this."
+               else
+                       ewarn "Continuing anyway as requested."
+               fi
+       fi
+
+       tc-export AR CC LD OBJCOPY RANLIB
+}
+
+_emake() {
+       emake \
+               AR="${AR}" \
+               CC="${CC}" \
+               LD="${LD}" \
+               OBJCOPY="${OBJCOPY}" \
+               RANLIB="${RANLIB}" \
+               "$@"
+}
+
+src_compile() {
+       # build system abuses the LDFLAGS variable to pass arguments to ld
+       unset LDFLAGS
+       if [[ ! -z ${loaderarch} ]]; then
+               _emake ${loaderarch}
+       fi
+       _emake ${loaderarch} installer
+}
+
+src_install() {
+       # parallel install fails sometimes
+       einfo "loaderarch=${loaderarch}"
+       _emake -j1 INSTALLROOT="${D}" MANDIR=/usr/share/man bios ${loaderarch} install
+       dodoc README NEWS doc/*.txt
+}