mirror of
https://git.yoctoproject.org/poky
synced 2026-03-17 12:49:40 +01:00
reproducible_build: Work around caching issues
SOURCE_DATE_EPOCH can be expanded early in the parsing process before the class extensions are applied. This can mean the directory pointed to for the SDE can be incorrect until later in parsing. Cache the file name in the cached value and allow it to dynamically update. This isn't ideal but avoding expansion of the variable likely isn't possible and I'm not sure how else to handle this. This works around the issue until a better solution can be found. (From OE-Core rev: 44dc97cd1223e4d2b635669627ec5f796838d42d) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -115,11 +115,14 @@ EPOCHTASK = "do_deploy_source_date_epoch"
|
||||
do_unpack[postfuncs] += "create_source_date_epoch_stamp"
|
||||
|
||||
def get_source_date_epoch_value(d):
|
||||
cached = d.getVar('__CACHED_SOURCE_DATE_EPOCH')
|
||||
if cached:
|
||||
epochfile = d.getVar('SDE_FILE')
|
||||
cached, efile = d.getVar('__CACHED_SOURCE_DATE_EPOCH') or (None, None)
|
||||
if cached and efile == epochfile:
|
||||
return cached
|
||||
|
||||
epochfile = d.getVar('SDE_FILE')
|
||||
if cached and epochfile != efile:
|
||||
bb.debug(1, "Epoch file changed from %s to %s" % (efile, epochfile))
|
||||
|
||||
source_date_epoch = int(d.getVar('SOURCE_DATE_EPOCH_FALLBACK'))
|
||||
try:
|
||||
with open(epochfile, 'r') as f:
|
||||
@@ -137,7 +140,7 @@ def get_source_date_epoch_value(d):
|
||||
except FileNotFoundError:
|
||||
bb.debug(1, "Cannot find %s. SOURCE_DATE_EPOCH will default to %d" % (epochfile, source_date_epoch))
|
||||
|
||||
d.setVar('__CACHED_SOURCE_DATE_EPOCH', str(source_date_epoch))
|
||||
d.setVar('__CACHED_SOURCE_DATE_EPOCH', (str(source_date_epoch), epochfile))
|
||||
return str(source_date_epoch)
|
||||
|
||||
export SOURCE_DATE_EPOCH ?= "${@get_source_date_epoch_value(d)}"
|
||||
|
||||
Reference in New Issue
Block a user