dcavalca / rpms / systemd

Forked from rpms/systemd 4 months ago
Clone
Blob Blame History Raw
From 3088f292855f4a525271906a5652985f01c5d7b2 Mon Sep 17 00:00:00 2001
From: Jan Janssen <medhefgo@web.de>
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