summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/reproducible_build.bbclass11
1 files changed, 7 insertions, 4 deletions
diff --git a/meta/classes/reproducible_build.bbclass b/meta/classes/reproducible_build.bbclass
index 1277764fab..62655c2a5b 100644
--- a/meta/classes/reproducible_build.bbclass
+++ b/meta/classes/reproducible_build.bbclass
@@ -90,11 +90,14 @@ python create_source_date_epoch_stamp() {
90} 90}
91 91
92def get_source_date_epoch_value(d): 92def get_source_date_epoch_value(d):
93 cached = d.getVar('__CACHED_SOURCE_DATE_EPOCH') 93 epochfile = d.getVar('SDE_FILE')
94 if cached: 94 cached, efile = d.getVar('__CACHED_SOURCE_DATE_EPOCH') or (None, None)
95 if cached and efile == epochfile:
95 return cached 96 return cached
96 97
97 epochfile = d.getVar('SDE_FILE') 98 if cached and epochfile != efile:
99 bb.debug(1, "Epoch file changed from %s to %s" % (efile, epochfile))
100
98 source_date_epoch = int(d.getVar('SOURCE_DATE_EPOCH_FALLBACK')) 101 source_date_epoch = int(d.getVar('SOURCE_DATE_EPOCH_FALLBACK'))
99 try: 102 try:
100 with open(epochfile, 'r') as f: 103 with open(epochfile, 'r') as f:
@@ -112,7 +115,7 @@ def get_source_date_epoch_value(d):
112 except FileNotFoundError: 115 except FileNotFoundError:
113 bb.debug(1, "Cannot find %s. SOURCE_DATE_EPOCH will default to %d" % (epochfile, source_date_epoch)) 116 bb.debug(1, "Cannot find %s. SOURCE_DATE_EPOCH will default to %d" % (epochfile, source_date_epoch))
114 117
115 d.setVar('__CACHED_SOURCE_DATE_EPOCH', str(source_date_epoch)) 118 d.setVar('__CACHED_SOURCE_DATE_EPOCH', (str(source_date_epoch), epochfile))
116 return str(source_date_epoch) 119 return str(source_date_epoch)
117 120
118export SOURCE_DATE_EPOCH ?= "${@get_source_date_epoch_value(d)}" 121export SOURCE_DATE_EPOCH ?= "${@get_source_date_epoch_value(d)}"