diff --git a/srcpkgs/gummiboot/patches/aarch64-support.patch b/srcpkgs/gummiboot/patches/aarch64-support.patch new file mode 100644 index 00000000000..1a54aa1a18d --- /dev/null +++ b/srcpkgs/gummiboot/patches/aarch64-support.patch @@ -0,0 +1,232 @@ +From koen.kooi at linaro.org Sat Apr 11 01:23:22 2015 +From: koen.kooi at linaro.org (Koen Kooi) +Date: Sat, 11 Apr 2015 10:23:22 +0200 +Subject: [systemd-devel] [gummiboot][PATCH 1/5] Makefile: support non-x86 + builds +Message-ID: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org> + +Move the no-mmx/no-sse CFLAGS to X86-64 and IA32 defines in preparation +for ARM32 and Aarch64 support. + +Signed-off-by: Koen Kooi +--- + Makefile.am | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 6568a35..2cca313 100644 +--- Makefile.am ++++ Makefile.am +@@ -94,17 +94,23 @@ efi_cflags = \ + -ffreestanding \ + -fno-strict-aliasing \ + -fno-stack-protector \ +- -Wsign-compare \ +- -mno-sse \ +- -mno-mmx ++ -Wsign-compare + + if ARCH_X86_64 + efi_cflags += \ + -mno-red-zone \ ++ -mno-sse \ ++ -mno-mmx \ + -DEFI_FUNCTION_WRAPPER \ + -DGNU_EFI_USE_MS_ABI + endif + ++if ARCH_IA32 ++efi_cflags += \ ++ -mno-sse \ ++ -mno-mmx ++endif ++ + efi_ldflags = \ + $(EFI_LDFLAGS) \ + -T $(EFI_LDS_DIR)/elf_$(ARCH)_efi.lds \ +-- +2.0.1 + + +From koen.kooi at linaro.org Sat Apr 11 01:23:23 2015 +From: koen.kooi at linaro.org (Koen Kooi) +Date: Sat, 11 Apr 2015 10:23:23 +0200 +Subject: [systemd-devel] [gummiboot][PATCH 2/5] util: use x86 ASM only on + x86(-64) platforms. +In-Reply-To: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org> +References: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org> +Message-ID: <1428740606-30060-2-git-send-email-koen.kooi@linaro.org> + +Signed-off-by: Koen Kooi +--- + src/efi/util.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/efi/util.c b/src/efi/util.c +index ba5ed7d..689bc7c 100644 +--- src/efi/util.c ++++ src/efi/util.c +@@ -33,7 +33,9 @@ UINT64 ticks_read(VOID) { + __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d)); + return (d << 32) | a; + } +-#else ++#endif ++ ++#ifdef __i386__ + UINT64 ticks_read(VOID) { + UINT64 val; + __asm__ volatile ("rdtsc" : "=A" (val)); +-- +2.0.1 + + +From koen.kooi at linaro.org Sat Apr 11 01:23:24 2015 +From: koen.kooi at linaro.org (Koen Kooi) +Date: Sat, 11 Apr 2015 10:23:24 +0200 +Subject: [systemd-devel] [gummiboot][PATCH 3/5] configure: add AARCH64 + support +In-Reply-To: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org> +References: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org> +Message-ID: <1428740606-30060-3-git-send-email-koen.kooi@linaro.org> + +This is just plumbing to add ARCH_AARCH64 for makefile tests and +defining the machine name. + +Signed-off-by: Koen Kooi +--- + configure.ac | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 27bbe1d..c2077b1 100644 +--- configure.ac ++++ configure.ac +@@ -51,6 +51,7 @@ dnl Define ARCH_ conditionals + SET_ARCH(IA32, i*86*) + SET_ARCH(X86_64, x86_64*) + SET_ARCH(IA64, ia64*) ++SET_ARCH(AARCH64, aarch64*) + + ARCH=`echo $host | sed "s/\(-\).*$//"` + +@@ -61,6 +62,9 @@ AM_COND_IF(ARCH_IA32, [ + AM_COND_IF(ARCH_X86_64, [ + MACHINE_TYPE_NAME=x64]) + ++AM_COND_IF(ARCH_AARCH64, [ ++ MACHINE_TYPE_NAME=aa64]) ++ + AC_SUBST([ARCH]) + AC_SUBST([MACHINE_TYPE_NAME]) + +-- +2.0.1 + + +From koen.kooi at linaro.org Sat Apr 11 01:23:25 2015 +From: koen.kooi at linaro.org (Koen Kooi) +Date: Sat, 11 Apr 2015 10:23:25 +0200 +Subject: [systemd-devel] [gummiboot][PATCH 4/5] util: confine x86 asm to x86 + architectures +In-Reply-To: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org> +References: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org> +Message-ID: <1428740606-30060-4-git-send-email-koen.kooi@linaro.org> + +Also add a stub function that just returns '1' to avoid missing symbols. + +Signed-off-by: Koen Kooi +--- + src/efi/util.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/src/efi/util.c b/src/efi/util.c +index 689bc7c..6ce1f18 100644 +--- src/efi/util.c ++++ src/efi/util.c +@@ -33,14 +33,17 @@ UINT64 ticks_read(VOID) { + __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d)); + return (d << 32) | a; + } +-#endif +- +-#ifdef __i386__ ++#elif __i386__ + UINT64 ticks_read(VOID) { + UINT64 val; + __asm__ volatile ("rdtsc" : "=A" (val)); + return val; + } ++#else ++UINT64 ticks_read(VOID) { ++ UINT64 val = 1; ++ return val; ++} + #endif + + /* count TSC ticks during a millisecond delay */ +-- +2.0.1 + + +From koen.kooi at linaro.org Sat Apr 11 01:23:26 2015 +From: koen.kooi at linaro.org (Koen Kooi) +Date: Sat, 11 Apr 2015 10:23:26 +0200 +Subject: [systemd-devel] [gummiboot][PATCH 5/5] Makefile.am: Add support for + AARCH64 +In-Reply-To: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org> +References: <1428740606-30060-1-git-send-email-koen.kooi@linaro.org> +Message-ID: <1428740606-30060-5-git-send-email-koen.kooi@linaro.org> + +Aarch64 and ARM32 lack an EFI capable objcopy, so use the ldflags + -O +binary trick gnu-efi and the Red Hat shimloader are using. + +Signed-off-by: Koen Kooi +--- + Makefile.am | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 2cca313..eba5ec4 100644 +--- Makefile.am ++++ Makefile.am +@@ -121,6 +121,17 @@ efi_ldflags = \ + -L $(EFI_LIB_DIR) \ + $(EFI_LDS_DIR)/crt0-efi-$(ARCH).o + ++# Aarch64 and ARM32 don't have an EFI capable objcopy ++if ARCH_AARCH64 ++efi_ldflags += \ ++ --defsym=EFI_SUBSYSTEM=0xa ++ ++FORMAT = -O binary ++else ++FORMAT = --target=efi-app-$(ARCH) ++endif ++ ++ + # ------------------------------------------------------------------------------ + gummiboot_headers = \ + src/efi/util.h \ +@@ -156,7 +167,7 @@ $(gummiboot_solib): $(gummiboot_objects) + $(gummiboot): $(gummiboot_solib) + $(AM_V_GEN) objcopy -j .text -j .sdata -j .data -j .dynamic \ + -j .dynsym -j .rel -j .rela -j .reloc \ +- --target=efi-app-$(ARCH) $< $@ ++ $(FORMAT) $< $@ + + # ------------------------------------------------------------------------------ + stub_headers = \ +@@ -191,7 +202,7 @@ $(stub_solib): $(stub_objects) + $(stub): $(stub_solib) + $(AM_V_GEN) objcopy -j .text -j .sdata -j .data -j .dynamic \ + -j .dynsym -j .rel -j .rela -j .reloc \ +- --target=efi-app-$(ARCH) $< $@ ++ $(FORMAT) $< $@ + + # ------------------------------------------------------------------------------ + CLEANFILES += test-disk.img +-- +2.0.1 + + diff --git a/srcpkgs/gummiboot/patches/cross-support.patch b/srcpkgs/gummiboot/patches/cross-support.patch new file mode 100644 index 00000000000..709213b5ab8 --- /dev/null +++ b/srcpkgs/gummiboot/patches/cross-support.patch @@ -0,0 +1,23 @@ +diff --git a/Makefile.am b/Makefile.am +index eba5ec4..46c1728 100644 +--- Makefile.am ++++ Makefile.am +@@ -165,7 +165,7 @@ $(gummiboot_solib): $(gummiboot_objects) + .DELETE_ON_ERROR: $(gummboot_solib) + + $(gummiboot): $(gummiboot_solib) +- $(AM_V_GEN) objcopy -j .text -j .sdata -j .data -j .dynamic \ ++ $(AM_V_GEN) $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic \ + -j .dynsym -j .rel -j .rela -j .reloc \ + $(FORMAT) $< $@ + +@@ -200,7 +200,7 @@ $(stub_solib): $(stub_objects) + .DELETE_ON_ERROR: $(gummboot_solib) + + $(stub): $(stub_solib) +- $(AM_V_GEN) objcopy -j .text -j .sdata -j .data -j .dynamic \ ++ $(AM_V_GEN) $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic \ + -j .dynsym -j .rel -j .rela -j .reloc \ + $(FORMAT) $< $@ + + diff --git a/srcpkgs/gummiboot/patches/fix-glibc.patch b/srcpkgs/gummiboot/patches/fix-glibc.patch new file mode 100644 index 00000000000..cd6dbdec6ba --- /dev/null +++ b/srcpkgs/gummiboot/patches/fix-glibc.patch @@ -0,0 +1,13 @@ +diff --git a/src/setup/setup.c b/src/setup/setup.c +index 6a4275a..5342937 100644 +--- src/setup/setup.c ++++ src/setup/setup.c +@@ -37,6 +37,7 @@ + #include + #include + #include ++#include + + #include "efivars.h" + + diff --git a/srcpkgs/gummiboot/template b/srcpkgs/gummiboot/template index 9a0c7a727ef..5e47c87447b 100644 --- a/srcpkgs/gummiboot/template +++ b/srcpkgs/gummiboot/template @@ -1,17 +1,17 @@ # Template file for 'gummiboot' pkgname=gummiboot -version=48 -revision=4 +version=48.1 +revision=1 build_style=gnu-configure hostmakedepends="automake pkg-config libxslt docbook-xsl" makedepends="gnu-efi-libs liblzma-devel libblkid-devel" short_desc="Simple UEFI Boot Manager" maintainer="Eivind Uggedal " -license="LGPL-2.1" +license="LGPL-2.0-or-later" homepage="http://freedesktop.org/wiki/Software/gummiboot" -distfiles="http://cgit.freedesktop.org/${pkgname}/snapshot/${pkgname}-${version}.tar.gz" -checksum=ea228571d962be6a06a64291e507e9cfe4ef0f46acfacc0677f211d1ced458d6 -only_for_archs="i686 i686-musl x86_64 x86_64-musl" +distfiles="https://dev.alpinelinux.org/archive/gummiboot/gummiboot-${version}.tar.gz" +checksum=2b649a6eb22007cd34bb355ba4ca6c1a8058e115c13048985f09a0f11f3d5295 +only_for_archs="i686 i686-musl x86_64 x86_64-musl aarch64 aarch64-musl" CFLAGS="-std=gnu89" @@ -23,10 +23,6 @@ pre_configure() { ./autogen.sh } -pre_build() { - sed -i Makefile -e "s/\-nostdinc//g" -} - post_install() { vinstall ${FILESDIR}/kernel.d/gummiboot.post-install 750 \ etc/kernel.d/post-install 50-gummiboot