1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
From: intrigeri <intrigeri@boum.org>
Date: Mon, 27 Jun 2016 13:23:53 +0000
Subject: Honour SOURCE_DATE_EPOCH for embedded timestamp in generated
documentation.
When the environment variable SOURCE_DATE_EPOCH is set, use it instead of the
current time for the embedded build timestamp.
The specification of SOURCE_DATE_EPOCH is available here:
https://reproducible-builds.org/specs/source-date-epoch/
In the case it is not defined, fall back to current time.
---
lib/Command/V1.pm | 2 +-
lib/Command/View/DocMethods.pm | 2 +-
lib/UR/Context.pm | 8 ++++++++
3 files changed, 10 insertions(+), 2 deletions(-)
--- a/lib/Command/V1.pm
+++ b/lib/Command/V1.pm
@@ -598,7 +598,7 @@ sub doc_sections {
my $command_name = $self->command_name;
my $version = do { no strict; ${ $self->class . '::VERSION' } };
my $help_brief = $self->help_brief;
- my $datetime = $self->__context__->now;
+ my $datetime = $self->__context__->build_time;
my $sub_commands = $self->help_sub_commands(brief => 1) if $self->is_sub_command_delegator;
my ($date,$time) = split(' ',$datetime);
--- a/lib/Command/View/DocMethods.pm
+++ b/lib/Command/View/DocMethods.pm
@@ -168,7 +168,7 @@ sub doc_sections {
my $version = do { no strict; ${ $self->class . '::VERSION' } };
my $help_brief = $self->help_brief;
- my $datetime = $self->__context__->now;
+ my $datetime = $self->__context__->build_time;
my ($date,$time) = split(' ',$datetime);
push(@sections, UR::Doc::Section->create(
--- a/lib/UR/Context.pm
+++ b/lib/UR/Context.pm
@@ -137,6 +137,14 @@ sub now {
return Date::Format::time2str(date_template(), time());
}
+sub build_time {
+ return Date::Format::time2str(
+ date_template(),
+ $ENV{SOURCE_DATE_EPOCH} || time(),
+ 'UTC'
+ );
+}
+
my $master_monitor_query = 0;
sub monitor_query {
return if $UR::Object::Type::bootstrapping;
|