From 5227302c984839b27524362ba2f45fb6d0025512 Mon Sep 17 00:00:00 2001 From: Zbigniew Jędrzejewski-Szmek Date: Mar 03 2023 19:11:48 +0000 Subject: Really fix build with gnu-efi-3.0.11-13 It turns out that the patch applied cleanly when backported to v253-stable, but did not work. [skip changelog] --- diff --git a/265.patch b/265.patch new file mode 100644 index 0000000..0f8c817 --- /dev/null +++ b/265.patch @@ -0,0 +1,78 @@ +From e2f169f816809ad4db9ebca080c73b36810f7bdc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 3 Mar 2023 16:08:41 +0100 +Subject: [PATCH] meson: adjust for removal of gnu-efi compat + +gnu-efi-3.0.11-13.fc39 in Fedora dropped the old include paths. + +/usr/include/efi/efi.h uses 'include "efibind.h"', so we cannot use -isystem. +--- + src/boot/efi/meson.build | 26 +++++++++++++++----------- + 1 file changed, 15 insertions(+), 11 deletions(-) + +diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build +index 6c1934d9f1..68c5dd15dc 100644 +--- a/src/boot/efi/meson.build ++++ b/src/boot/efi/meson.build +@@ -19,7 +19,7 @@ elif efi_arch == 'x86_64' and '-m32' in get_option('efi-cflags') + efi_arch = 'x86' + endif + efi_arch = { +- # host_cc_arch: [efi_arch (see Table 3-2 in UEFI spec), gnu_efi_inc_arch] ++ # host_cc_arch: [efi_arch (see Table 3-2 in UEFI spec), obsolete gnu_efi_inc_arch] + 'x86': ['ia32', 'ia32'], + 'x86_64': ['x64', 'x86_64'], + 'arm': ['arm', 'arm'], +@@ -28,14 +28,17 @@ efi_arch = { + }.get(efi_arch, []) + + efi_incdir = get_option('efi-includedir') +-if efi_arch.length() > 0 and not cc.has_header( +- '@0@/@1@/efibind.h'.format(efi_incdir, efi_arch[1]), +- args: get_option('efi-cflags')) +- +- efi_arch = [] +-endif ++found = false ++foreach efi_arch_candidate : efi_arch ++ efi_archdir = efi_incdir / efi_arch_candidate ++ if cc.has_header(efi_archdir / 'efibind.h', ++ args: get_option('efi-cflags')) ++ found = true ++ break ++ endif ++endforeach + +-if efi_arch.length() == 0 ++if not found + if get_option('gnu-efi') == 'true' + error('gnu-efi support requested, but headers not found or efi arch is unknown') + endif +@@ -45,7 +48,8 @@ endif + + if not cc.has_header_symbol('efi.h', 'EFI_IMAGE_MACHINE_X64', + args: ['-nostdlib', '-ffreestanding', '-fshort-wchar'] + get_option('efi-cflags'), +- include_directories: include_directories(efi_incdir, efi_incdir / efi_arch[1])) ++ include_directories: include_directories(efi_incdir, ++ efi_archdir)) + + if get_option('gnu-efi') == 'true' + error('gnu-efi support requested, but found headers are too old (3.0.5+ required)') +@@ -184,7 +188,7 @@ efi_cflags = [ + '-I', meson.current_source_dir(), + '-include', efi_config_h, + '-include', version_h, +- '-isystem', efi_incdir / efi_arch[1], ++ '-I', efi_archdir, + '-isystem', efi_incdir, + '-std=gnu11', + '-Wall', +@@ -315,7 +319,7 @@ summary({ + 'EFI LD' : efi_ld, + 'EFI lds' : efi_lds, + 'EFI crt0' : efi_crt0, +- 'EFI include directory' : efi_incdir}, ++ 'EFI include directory' : efi_archdir}, + section : 'Extensible Firmware Interface') + + if efi_conf.get('SBAT_DISTRO', '') != '' diff --git a/26659.patch b/26659.patch deleted file mode 100644 index bb8d0b1..0000000 --- a/26659.patch +++ /dev/null @@ -1,67 +0,0 @@ -From b3ec28645a2e02d03fa0d4a618802292540acf43 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 3 Mar 2023 16:08:41 +0100 -Subject: [PATCH] meson: adjust for removal of gnu-efi compat - -gnu-efi-3.0.11-13.fc39 in Fedora dropped the old include paths. ---- - src/boot/efi/meson.build | 24 ++++++++++++++---------- - 1 file changed, 14 insertions(+), 10 deletions(-) - -diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build -index bf595c33901e..ea55f1c9fa52 100644 ---- a/src/boot/efi/meson.build -+++ b/src/boot/efi/meson.build -@@ -19,7 +19,7 @@ elif efi_arch == 'x86_64' and '-m32' in get_option('efi-cflags') - efi_arch = 'x86' - endif - efi_arch = { -- # host_cc_arch: [efi_arch (see Table 3-2 in UEFI spec), gnu_efi_inc_arch] -+ # host_cc_arch: [efi_arch (see Table 3-2 in UEFI spec), obsolete gnu_efi_inc_arch] - 'x86': ['ia32', 'ia32'], - 'x86_64': ['x64', 'x86_64'], - 'arm': ['arm', 'arm'], -@@ -28,14 +28,17 @@ efi_arch = { - }.get(efi_arch, []) - - efi_incdir = get_option('efi-includedir') --if efi_arch.length() > 0 and not cc.has_header( -- '@0@/@1@/efibind.h'.format(efi_incdir, efi_arch[1]), -- args: get_option('efi-cflags')) -- -- efi_arch = [] --endif -+found = false -+foreach efi_arch_candidate : efi_arch -+ efi_archdir = efi_incdir / efi_arch_candidate -+ if cc.has_header(efi_archdir / 'efibind.h', -+ args: get_option('efi-cflags')) -+ found = true -+ break -+ endif -+endforeach - --if efi_arch.length() == 0 -+if not found - if get_option('gnu-efi') == 'true' - error('gnu-efi support requested, but headers not found or efi arch is unknown') - endif -@@ -45,7 +48,8 @@ endif - - if not cc.has_header_symbol('efi.h', 'EFI_IMAGE_MACHINE_X64', - args: ['-nostdlib', '-ffreestanding', '-fshort-wchar'] + get_option('efi-cflags'), -- include_directories: include_directories(efi_incdir, efi_incdir / efi_arch[1])) -+ include_directories: include_directories(efi_incdir, -+ efi_archdir)) - - if get_option('gnu-efi') == 'true' - error('gnu-efi support requested, but found headers are too old (3.0.5+ required)') -@@ -313,7 +317,7 @@ summary({ - 'EFI LD' : efi_ld, - 'EFI lds' : efi_lds, - 'EFI crt0' : efi_crt0, -- 'EFI include directory' : efi_incdir}, -+ 'EFI include directory' : efi_archdir}, - section : 'Extensible Firmware Interface') - - if efi_conf.get('SBAT_DISTRO', '') != '' diff --git a/systemd.spec b/systemd.spec index f22b373..db1a7d3 100644 --- a/systemd.spec +++ b/systemd.spec @@ -96,7 +96,7 @@ GIT_DIR=../../src/systemd/.git git diffab -M v233..master@{2017-06-15} -- hwdb/[ Patch0001: https://github.com/systemd/systemd/pull/26494.patch # Fix build with gnu-efi-3.0.11-13.fc39 -Patch0002: https://github.com/systemd/systemd/pull/26659.patch +Patch0002: https://github.com/systemd/systemd-stable/pull/265.patch # Those are downstream-only patches, but we don't want them in packit builds: # https://bugzilla.redhat.com/show_bug.cgi?id=1738828