diff --git a/srcpkgs/fwupd-efi/patches/cc-as-ld.patch b/srcpkgs/fwupd-efi/patches/cc-as-ld.patch new file mode 100644 index 00000000000..67092dd0fb6 --- /dev/null +++ b/srcpkgs/fwupd-efi/patches/cc-as-ld.patch @@ -0,0 +1,78 @@ +--- a/meson.build ++++ b/meson.build +@@ -9,7 +9,6 @@ + conf.set_quoted('PACKAGE_VERSION', meson.project_version()) + + cc = meson.get_compiler('c') +-ld = cc.get_linker_id() + objcopy = find_program('objcopy') + objcopy_version = run_command(objcopy, '--version').stdout().split('\n')[0].split(' ')[-1] + +--- a/efi/generate_binary.py ++++ b/efi/generate_binary.py +@@ -29,9 +29,9 @@ + "-j", + ".rodata", + "-j", ++ ".areloc", ++ "-j", + ".rel*", +- "--section-alignment", +- "512", + args.infile, + args.outfile, + ] +--- a/efi/meson.build ++++ b/efi/meson.build +@@ -72,6 +72,11 @@ + coff_header_in_crt0 = false + endif + ++# For NX compat, we must ensure we have .note.GNU-stack ++if run_command('grep', '-q', '.note.GNU-stack', join_paths(efi_crtdir, arch_crt), check: false).returncode() != 0 ++ error('Cannot find NX section in @0@, update to gnu-efi 3.0.15+'.format(join_paths(efi_crtdir, arch_crt))) ++endif ++ + # older objcopy for Aarch64 and ARM32 are not EFI capable. + # Use 'binary' instead, and add required symbols manually. + if host_cpu == 'arm' or (host_cpu == 'aarch64' and (objcopy_version.version_compare ('< 2.38') or coff_header_in_crt0)) +@@ -95,7 +100,6 @@ + # is the system crt0 for arm and aarch64 new enough to know about SBAT? + if objcopy_manualsymbols + if get_option('efi_sbat_distro_id') != '' +- arch_crt_source = 'crt0-efi-@0@.S'.format(gnu_efi_path_arch) + cmd = run_command('grep', '-q', 'sbat', join_paths(efi_crtdir, arch_crt)) + if cmd.returncode() != 0 + warning('Cannot find SBAT section in @0@, using local copy'.format(join_paths(efi_crtdir, arch_crt))) +@@ -163,6 +167,12 @@ + '-L', efi_libdir, + join_paths(efi_crtdir, arch_crt)] + ++if host_cpu == 'aarch64' ++# Don't use 64KiB pages ++ efi_ldflags += ['-z', 'common-page-size=4096'] ++ efi_ldflags += ['-z', 'max-page-size=4096'] ++endif ++ + if objcopy_manualsymbols + # older objcopy for Aarch64 and ARM32 are not EFI capable. + # Use 'binary' instead, and add required symbols manually. +@@ -223,11 +233,16 @@ + fwupd_so_deps += [o_crt0] + endif + ++efi_cc_ldflags = [] ++foreach flag : efi_ldflags ++ efi_cc_ldflags += ['-Wl,' + flag] ++endforeach ++ + so = custom_target('fwup.so', + input : [o_file1, o_file2, o_file3, o_file4, o_file5], + output : 'fwup.so', +- command : [ld, '-o', '@OUTPUT@'] + +- efi_ldflags + ['@INPUT@'] + ++ command : [cc.cmd_array(), '-nostdlib', '-o', '@OUTPUT@'] + ++ efi_cc_ldflags + ['@INPUT@'] + + ['-lefi', '-lgnuefi', libgcc_file_name], + depends: fwupd_so_deps) + diff --git a/srcpkgs/fwupd-efi/template b/srcpkgs/fwupd-efi/template index 78a543fec1d..2d811f6165f 100644 --- a/srcpkgs/fwupd-efi/template +++ b/srcpkgs/fwupd-efi/template @@ -1,22 +1,18 @@ # Template file for 'fwupd-efi' pkgname=fwupd-efi -version=1.3 +version=1.4 revision=1 archs="x86_64* i686* arm* aarch64*" build_style=meson build_helper="gir" configure_args="-Defi-includedir=${XBPS_CROSS_BASE}/usr/include/efi - -Defi-ldsdir=${XBPS_CROSS_BASE}/usr/lib -Defi-ld=${XBPS_CROSS_BASE}/bin/ld + -Defi-ldsdir=${XBPS_CROSS_BASE}/usr/lib -Defi-libdir=${XBPS_CROSS_BASE}/usr/lib" -hostmakedepends="efivar" +hostmakedepends="efivar python3-pefile" makedepends="libefivar-devel gnu-efi-libs" short_desc="EFI Application used by uefi-capsule plugin in fwupd" maintainer="dkwo " license="LGPL-2.1-or-later" homepage="https://github.com/fwupd/fwupd-efi" distfiles="https://github.com/fwupd/fwupd-efi/archive/refs/tags/${version}.tar.gz" -checksum=0e76057c178e221f63eaf9142fa1d06780a8eb3df7cf0c11f92660138dec5c83 - -if [ "$CROSS_BUILD" ]; then - configure_args+=" -Defi-cc=/usr/bin/${XBPS_CROSS_TRIPLET}-gcc" -fi +checksum=b1f5fe72e16d4e2f4c616da416dc93bd79331057336208465da37bafe8f8f83d