From 3088f292855f4a525271906a5652985f01c5d7b2 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Fri, 7 Jan 2022 21:55:50 +0100 Subject: [PATCH] meson: Use files() for source lists for boot and fundamental This fixes build reproducibility as otherwise the full path of the source files ends up in the output binary. (cherry picked from commit b3c5a7074cd434bc02c4b560afe933d3df24759e) Related: #2017035 --- src/boot/efi/meson.build | 29 +++++++++++++++++------------ src/fundamental/meson.build | 22 +++++++++------------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build index 144fbb0f43..4cc43dc00c 100644 --- a/src/boot/efi/meson.build +++ b/src/boot/efi/meson.build @@ -312,9 +312,10 @@ efi_headers = files( 'shim.h', 'splash.h', 'util.h', - 'xbootldr.h') + 'xbootldr.h', +) -common_sources = [ +common_sources = files( 'assert.c', 'devicetree.c', 'disk.c', @@ -322,31 +323,34 @@ common_sources = [ 'measure.c', 'pe.c', 'secure-boot.c', - 'util.c'] + 'util.c', +) -systemd_boot_sources = [ +systemd_boot_sources = files( 'boot.c', 'console.c', 'drivers.c', 'random-seed.c', 'shim.c', - 'xbootldr.c'] + 'xbootldr.c', +) -stub_sources = [ +stub_sources = files( 'cpio.c', 'initrd.c', 'splash.c', - 'stub.c'] + 'stub.c', +) if efi_arch[1] in ['ia32', 'x86_64'] - stub_sources += 'linux_x86.c' + stub_sources += files('linux_x86.c') else - stub_sources += 'linux.c' + stub_sources += files('linux.c') endif # BCD parser only makes sense on arches that Windows supports. if efi_arch[1] in ['ia32', 'x86_64', 'arm', 'aarch64'] - systemd_boot_sources += 'bcd.c' + systemd_boot_sources += files('bcd.c') tests += [ [['src/boot/efi/test-bcd.c'], [], @@ -359,9 +363,10 @@ endif systemd_boot_objects = [] stub_objects = [] foreach file : fundamental_source_paths + common_sources + systemd_boot_sources + stub_sources - o_file = custom_target(file.split('/')[-1] + '.o', + # FIXME: replace ''.format(file) with fs.name(file) when meson_version requirement is >= 0.59.0 + o_file = custom_target('@0@.o'.format(file).split('/')[-1], input : file, - output : file.split('/')[-1] + '.o', + output : '@0@.o'.format(file).split('/')[-1], command : [cc.cmd_array(), '-c', '@INPUT@', '-o', '@OUTPUT@', efi_cflags], depend_files : efi_headers + fundamental_headers) if (fundamental_source_paths + common_sources + systemd_boot_sources).contains(file) diff --git a/src/fundamental/meson.build b/src/fundamental/meson.build index 287f0fe36a..f927788c3a 100644 --- a/src/fundamental/meson.build +++ b/src/fundamental/meson.build @@ -8,20 +8,16 @@ fundamental_headers = files( 'macro-fundamental.h', 'sha256.h', 'string-util-fundamental.h', - 'types-fundamental.h') - -sources = ''' - bootspec-fundamental.c - efivars-fundamental.c - string-util-fundamental.c - sha256.c -'''.split() + 'types-fundamental.h', +) # for sd-boot -fundamental_source_paths = [] -foreach source : sources - fundamental_source_paths += meson.current_source_dir() / source -endforeach +fundamental_source_paths = files( + 'bootspec-fundamental.c', + 'efivars-fundamental.c', + 'sha256.c', + 'string-util-fundamental.c', +) # for libbasic -fundamental_sources = files(sources) + fundamental_headers +fundamental_sources = fundamental_source_paths + fundamental_headers