summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri John Ledkov <xnox@ubuntu.com>2020-05-15 19:16:05 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-05-18 08:45:01 +0200
commit6dbf352cfbbaf9c9b277af54da50da38296ae5c6 (patch)
tree4bf9a1fb8c2a11c86255eb36bf414471746f38c6
parent22ae6c7d9a27d880a7d70b341749c3a31a431161 (diff)
downloadsystemd-6dbf352cfbbaf9c9b277af54da50da38296ae5c6.tar.gz
meson: initialize time-epoch to reproducible builds compatible value
Debian Policy encourages to preserve timestamps whenever possible in the tarballs, thus stable release updates of systemd usually do not bump NEWS file timestamp. And thus time-epoch remains the same for the lifetime of a release. It would be better, if each new stable release rebuild of systemd would bump the time epoch a bit. But at the same time remain reproducible. SOURCE_DATE_EPOCH is an environmnet variable defined for this purpose. Thus if available, prefer that, instead of the NEWS file modification time. For example, on Debian/Ubuntu under the reproducible builds the SOURCE_DATE_EPOCH is set to the timestamp from the packaging metadata, thus it is incremented on every new stable release update, whilst preserving reproducible builds capability. Reference: https://reproducible-builds.org/docs/timestamps/
-rw-r--r--TODO3
-rw-r--r--meson.build9
2 files changed, 7 insertions, 5 deletions
diff --git a/TODO b/TODO
index 5f0a0004ad..947274ea19 100644
--- a/TODO
+++ b/TODO
@@ -511,9 +511,6 @@ Features:
* support projid-based quota in machinectl for containers
-* maybe use SOURCE_DATE_EPOCH (i.e. the env var the reproducible builds folks
- introduced) as the RTC epoch, instead of the mtime of NEWS.
-
* add a way to lock down cgroup migration: a boolean, which when set for a unit
makes sure the processes in it can never migrate out of it
diff --git a/meson.build b/meson.build
index 580d5126fa..e9eb7f9569 100644
--- a/meson.build
+++ b/meson.build
@@ -669,8 +669,13 @@ conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
time_epoch = get_option('time-epoch')
if time_epoch == -1
- NEWS = files('NEWS')
- time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
+ source_date_epoch = run_command('sh', ['-c', 'echo "$SOURCE_DATE_EPOCH"']).stdout().strip()
+ if source_date_epoch != ''
+ time_epoch = source_date_epoch.to_int()
+ else
+ NEWS = files('NEWS')
+ time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
+ endif
endif
conf.set('TIME_EPOCH', time_epoch)