aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-boot')
-rw-r--r--sys-boot/syslinux/files/syslinux-6.04_pre1-fcommon.patch54
-rw-r--r--sys-boot/syslinux/files/syslinux-6.04_pre1-singleloadsegment.patch304
-rw-r--r--sys-boot/syslinux/metadata.xml3
-rw-r--r--sys-boot/syslinux/syslinux-6.04_pre1-r2.ebuild (renamed from sys-boot/syslinux/syslinux-6.04_pre1.ebuild)53
4 files changed, 391 insertions, 23 deletions
diff --git a/sys-boot/syslinux/files/syslinux-6.04_pre1-fcommon.patch b/sys-boot/syslinux/files/syslinux-6.04_pre1-fcommon.patch
new file mode 100644
index 0000000..7d061db
--- /dev/null
+++ b/sys-boot/syslinux/files/syslinux-6.04_pre1-fcommon.patch
@@ -0,0 +1,54 @@
+https://bugs.gentoo.org/705730
+
+gcc-10 enabled f-no-common by default. Broke syslinux linking.
+--- a/mk/com32.mk
++++ b/mk/com32.mk
+@@ -47,6 +47,7 @@ GCCOPT += $(call gcc_ok,-falign-functions=0,-malign-functions=0)
+ GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
+ GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
+ GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
++GCCOPT += $(call gcc_ok,-fcommon)
+
+ ifeq ($(FWCLASS),EFI)
+ GCCOPT += -mno-red-zone
+--- a/mk/elf.mk
++++ b/mk/elf.mk
+@@ -42,6 +42,7 @@ GCCOPT += $(call gcc_ok,-falign-functions=0,-malign-functions=0)
+ GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
+ GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
+ GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
++GCCOPT += $(call gcc_ok,-fcommon)
+
+ com32 = $(topdir)/com32
+ core = $(topdir)/core
+--- a/mk/embedded.mk
++++ b/mk/embedded.mk
+@@ -51,6 +51,7 @@ GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
+ GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
+ GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
+ GCCOPT += $(call gcc_ok,-fvisibility=hidden)
++GCCOPT += $(call gcc_ok,-fcommon)
+
+ LIBGCC := $(shell $(CC) $(GCCOPT) --print-libgcc)
+
+--- a/mk/lib.mk
++++ b/mk/lib.mk
+@@ -28,6 +28,7 @@ GCCOPT += $(call gcc_ok,-falign-functions=0,-malign-functions=0)
+ GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
+ GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
+ GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
++GCCOPT += $(call gcc_ok,-fcommon)
+
+ INCLUDE = -I$(SRC)
+ STRIP = strip --strip-all -R .comment -R .note
+--- a/mk/efi.mk
++++ b/mk/efi.mk
+@@ -7,7 +7,7 @@ core = $(topdir)/core
+ # Set up architecture specifics; for cross compilation, set ARCH as apt
+ # gnuefi sets up architecture specifics in ia32 or x86_64 sub directories
+ # set up the LIBDIR and EFIINC for building for the appropriate architecture
+-GCCOPT := $(call gcc_ok,-fno-stack-protector,)
++GCCOPT := $(call gcc_ok,-fno-stack-protector,) $(call gcc_ok,-fcommon)
+ EFIINC = $(objdir)/include/efi
+ LIBDIR = $(objdir)/lib
+
diff --git a/sys-boot/syslinux/files/syslinux-6.04_pre1-singleloadsegment.patch b/sys-boot/syslinux/files/syslinux-6.04_pre1-singleloadsegment.patch
new file mode 100644
index 0000000..db9b7d0
--- /dev/null
+++ b/sys-boot/syslinux/files/syslinux-6.04_pre1-singleloadsegment.patch
@@ -0,0 +1,304 @@
+Author: Lukas Schwaighofer <lukas@schwaighofer.name>
+Description: Force the linker to put all sections into a single PT_LOAD
+ segment. This is required when using binutils >= 2.31 which writes two PT_LOAD
+ segments by default. This is not supported by the wrapper.c script used to
+ convert the shared object into an elf binary.
+Forwarded: https://www.syslinux.org/archives/2018-August/026167.html
+
+---
+ efi/i386/syslinux.ld | 37 +++++++++++++++++++++----------------
+ efi/x86_64/syslinux.ld | 37 +++++++++++++++++++++----------------
+ 2 files changed, 42 insertions(+), 32 deletions(-)
+
+diff --git a/efi/i386/syslinux.ld b/efi/i386/syslinux.ld
+index bab3fc7..5b4589d 100644
+--- a/efi/i386/syslinux.ld
++++ b/efi/i386/syslinux.ld
+@@ -19,6 +19,11 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
+ OUTPUT_ARCH(i386)
+ ENTRY(_start)
+
++PHDRS
++{
++ all PT_LOAD ;
++}
++
+ SECTIONS
+ {
+ . = 0;
+@@ -31,7 +36,7 @@ SECTIONS
+ *(.text)
+ *(.text.*)
+ __text_end = .;
+- }
++ } :all
+
+ . = ALIGN(16);
+
+@@ -40,7 +45,7 @@ SECTIONS
+ *(.rodata)
+ *(.rodata.*)
+ __rodata_end = .;
+- }
++ } :all
+
+ . = ALIGN(4);
+
+@@ -49,14 +54,14 @@ SECTIONS
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ __ctors_end = .;
+- }
++ } :all
+
+ .dtors : {
+ __dtors_start = .;
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ __dtors_end = .;
+- }
++ } :all
+
+ . = ALIGN(4096);
+ .rel : {
+@@ -64,7 +69,7 @@ SECTIONS
+ *(.rel.data)
+ *(.rel.data.*)
+ *(.rel.ctors)
+- }
++ } :all
+
+ . = ALIGN(4);
+
+@@ -72,14 +77,14 @@ SECTIONS
+ __gnu_hash_start = .;
+ *(.gnu.hash)
+ __gnu_hash_end = .;
+- }
++ } :all
+
+
+ .dynsym : {
+ __dynsym_start = .;
+ *(.dynsym)
+ __dynsym_end = .;
+- }
++ } :all
+
+ . = ALIGN(4);
+
+@@ -87,7 +92,7 @@ SECTIONS
+ __dynstr_start = .;
+ *(.dynstr)
+ __dynstr_end = .;
+- }
++ } :all
+
+ . = ALIGN(4);
+
+@@ -104,7 +109,7 @@ SECTIONS
+ KEEP (*(.got.plt))
+ KEEP (*(.got))
+ __got_end = .;
+- }
++ } :all
+
+ . = ALIGN(4);
+
+@@ -112,7 +117,7 @@ SECTIONS
+ __dynamic_start = .;
+ *(.dynamic)
+ __dynamic_end = .;
+- }
++ } :all
+
+ . = ALIGN(16);
+
+@@ -122,19 +127,19 @@ SECTIONS
+ *(.data.*)
+ *(.lowmem)
+ __data_end = .;
+- }
++ } :all
+
+ .reloc : {
+ *(.reloc)
+- }
++ } :all
+
+ .symtab : {
+ *(.symtab)
+- }
++ } :all
+
+ .strtab : {
+ *(.strtab)
+- }
++ } :all
+
+ .bss (NOLOAD) : {
+ /* the EFI loader doesn't seem to like a .bss section,
+@@ -148,7 +153,7 @@ SECTIONS
+ __bss_end = .;
+ *(.sbss)
+ *(.scommon)
+- }
++ } :all
+ __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);
+ __bss_dwords = (__bss_len + 3) >> 2;
+
+@@ -161,7 +166,7 @@ SECTIONS
+ *(.hugebss)
+ *(.hugebss.*)
+ __hugebss_end = .;
+- }
++ } :all
+
+ _end = .;
+
+diff --git a/efi/x86_64/syslinux.ld b/efi/x86_64/syslinux.ld
+index 450641c..cad28a8 100644
+--- a/efi/x86_64/syslinux.ld
++++ b/efi/x86_64/syslinux.ld
+@@ -19,6 +19,11 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
+ OUTPUT_ARCH(i386:x86-64)
+ ENTRY(_start)
+
++PHDRS
++{
++ all PT_LOAD ;
++}
++
+ SECTIONS
+ {
+ . = 0;
+@@ -31,7 +36,7 @@ SECTIONS
+ *(.text)
+ *(.text.*)
+ __text_end = .;
+- }
++ } :all
+
+ . = ALIGN(16);
+
+@@ -40,7 +45,7 @@ SECTIONS
+ *(.rodata)
+ *(.rodata.*)
+ __rodata_end = .;
+- }
++ } :all
+
+ . = ALIGN(4);
+
+@@ -49,14 +54,14 @@ SECTIONS
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ __ctors_end = .;
+- }
++ } :all
+
+ .dtors : {
+ __dtors_start = .;
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ __dtors_end = .;
+- }
++ } :all
+
+ . = ALIGN(4096);
+ .rel : {
+@@ -64,7 +69,7 @@ SECTIONS
+ *(.rel.data)
+ *(.rel.data.*)
+ *(.rel.ctors)
+- }
++ } :all
+
+ . = ALIGN(4);
+
+@@ -72,14 +77,14 @@ SECTIONS
+ __gnu_hash_start = .;
+ *(.gnu.hash)
+ __gnu_hash_end = .;
+- }
++ } :all
+
+
+ .dynsym : {
+ __dynsym_start = .;
+ *(.dynsym)
+ __dynsym_end = .;
+- }
++ } :all
+
+ . = ALIGN(4);
+
+@@ -87,7 +92,7 @@ SECTIONS
+ __dynstr_start = .;
+ *(.dynstr)
+ __dynstr_end = .;
+- }
++ } :all
+
+ . = ALIGN(4);
+
+@@ -104,7 +109,7 @@ SECTIONS
+ KEEP (*(.got.plt))
+ KEEP (*(.got))
+ __got_end = .;
+- }
++ } :all
+
+ . = ALIGN(4);
+
+@@ -112,7 +117,7 @@ SECTIONS
+ __dynamic_start = .;
+ *(.dynamic)
+ __dynamic_end = .;
+- }
++ } :all
+
+ . = ALIGN(16);
+
+@@ -122,19 +127,19 @@ SECTIONS
+ *(.data.*)
+ *(.lowmem)
+ __data_end = .;
+- }
++ } :all
+
+ .reloc : {
+ *(.reloc)
+- }
++ } :all
+
+ .symtab : {
+ *(.symtab)
+- }
++ } :all
+
+ .strtab : {
+ *(.strtab)
+- }
++ } :all
+
+ .bss (NOLOAD) : {
+ /* the EFI loader doesn't seem to like a .bss section,
+@@ -148,7 +153,7 @@ SECTIONS
+ __bss_end = .;
+ *(.sbss)
+ *(.scommon)
+- }
++ } :all
+ __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);
+ __bss_dwords = (__bss_len + 3) >> 2;
+
+@@ -161,7 +166,7 @@ SECTIONS
+ *(.hugebss)
+ *(.hugebss.*)
+ __hugebss_end = .;
+- }
++ } :all
+
+ _end = .;
+
diff --git a/sys-boot/syslinux/metadata.xml b/sys-boot/syslinux/metadata.xml
index dbe176c..72e7472 100644
--- a/sys-boot/syslinux/metadata.xml
+++ b/sys-boot/syslinux/metadata.xml
@@ -8,4 +8,7 @@
<email>base-system@gentoo.org</email>
<name>Gentoo Base System</name>
</maintainer>
+<upstream>
+ <remote-id type="cpe">cpe:/a:gentoo:syslinux</remote-id>
+</upstream>
</pkgmetadata>
diff --git a/sys-boot/syslinux/syslinux-6.04_pre1.ebuild b/sys-boot/syslinux/syslinux-6.04_pre1-r2.ebuild
index 7356e25..d8eb8fa 100644
--- a/sys-boot/syslinux/syslinux-6.04_pre1.ebuild
+++ b/sys-boot/syslinux/syslinux-6.04_pre1-r2.ebuild
@@ -1,12 +1,12 @@
-# Copyright 1999-2017 Gentoo Foundation
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=5
+EAPI=7
inherit eutils toolchain-funcs
DESCRIPTION="SYSLINUX, PXELINUX, ISOLINUX, EXTLINUX and MEMDISK bootloaders"
-HOMEPAGE="http://www.syslinux.org/"
+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
@@ -15,7 +15,7 @@ SRC_URI_TESTING=Testing/${PV:0:4}
[[ ${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="mirror://kernel/linux/utils/boot/syslinux/${SRC_URI_DIR}/${P/_/-}.tar.xz"
+SRC_URI="https://www.kernel.org/pub/linux/utils/boot/syslinux/${SRC_URI_DIR}/${P/_/-}.tar.xz"
LICENSE="GPL-2"
SLOT="0"
@@ -23,8 +23,8 @@ KEYWORDS="-* amd64 x86"
IUSE="custom-cflags"
RDEPEND="sys-fs/mtools
- dev-perl/Crypt-PasswdMD5
- dev-perl/Digest-SHA1"
+ dev-perl/Crypt-PasswdMD5
+ dev-perl/Digest-SHA1"
DEPEND="${RDEPEND}
dev-lang/nasm
>=sys-boot/gnu-efi-3.0u
@@ -41,11 +41,17 @@ 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
+ "${FILESDIR}"/${PN}-musl.patch
+)
+
src_prepare() {
- rm -f gethostip #bug 137081
+ default
- epatch "${FILESDIR}"/${PN}-6.03-sysmacros.patch #579928
- epatch "${FILESDIR}"/${PN}-musl.patch
+ rm -f gethostip #bug 137081
# Don't prestrip or override user LDFLAGS, bug #305783
local SYSLINUX_MAKEFILES="extlinux/Makefile linux/Makefile mtools/Makefile \
@@ -83,31 +89,32 @@ src_prepare() {
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 CC="$(tc-getCC)" LD="$(tc-getLD)" ${loaderarch}
+ _emake ${loaderarch}
fi
- emake CC="$(tc-getCC)" LD="$(tc-getLD)" ${loaderarch} installer
+ _emake ${loaderarch} installer
}
src_install() {
# parallel install fails sometimes
einfo "loaderarch=${loaderarch}"
- emake -j1 LD="$(tc-getLD)" INSTALLROOT="${D}" MANDIR=/usr/share/man bios ${loaderarch} install
+ _emake -j1 INSTALLROOT="${D}" MANDIR=/usr/share/man bios ${loaderarch} install
dodoc README NEWS doc/*.txt
}
-
-pkg_postinst() {
- # print warning for users upgrading from the previous stable version
- if has 4.07 ${REPLACING_VERSIONS}; then
- ewarn "syslinux now uses dynamically linked ELF executables. Before you reboot,"
- ewarn "ensure that needed dependencies are fulfilled. For example, run from your"
- ewarn "syslinux directory:"
- ewarn
- ewarn "LD_LIBRARY_PATH=\".\" ldd menu.c32"
- fi
-}