On 9/09/21 2:51 pm, Mark Hatle wrote: > From: Mark Hatle > > Externalsrc removes do_fetch, do_unpack, and do_patch. The system normally > discovers the correct reproducible date as a postfuncs on do_unpack, so this > date is never found, so it goes back to the default epoch. > > Instead we can move the discovery function to a prefuncs on the epoch > deploy task. This task will run before do_configure, and since the source > is already available can run anytime safely. > > Signed-off-by: Mark Hatle > Signed-off-by: Mark Hatle > --- > meta/classes/reproducible_build.bbclass | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/meta/classes/reproducible_build.bbclass b/meta/classes/reproducible_build.bbclass > index a9c117c3b9..ae0723ab21 100644 > --- a/meta/classes/reproducible_build.bbclass > +++ b/meta/classes/reproducible_build.bbclass > @@ -128,7 +128,13 @@ BB_HASHBASE_WHITELIST += "SOURCE_DATE_EPOCH" > python () { > if d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1': > # Generate the timestamp with create_source_date_epoch_stamp. > - d.appendVarFlag("do_unpack", "postfuncs", " create_source_date_epoch_stamp") > + # In most cases this will be a postfuncs of do_unpack. > + # If we're running in external source, add create_source_date_epoch_stamp > + # to do_deploy_source_date_epoch instead because there is no do_unpack. > + if d.getVar('EXTERNALSRC') and bb.data.inherits_class('externalsrc', d): > + d.appendVarFlag('do_deploy_source_date_epoch', 'prefuncs', ' create_source_date_epoch_stamp') > + else: > + d.appendVarFlag("do_unpack", "postfuncs", " create_source_date_epoch_stamp") > d.appendVar('SSTATETASKS', " do_deploy_source_date_epoch") > bb.build.addtask('do_deploy_source_date_epoch_setscene', None, None, d) > bb.build.addtask('do_deploy_source_date_epoch', 'do_configure', 'do_patch', d) Why was create_source_date_epoch_stamp ever added as a do_unpack postfunc in the first place? Why wasn't it invoked directly from do_deploy_source_date_epoch all along? This task runs after do_patch and before do_configure anyway. What am I missing? Are you there, Juro? If we create_source_date_epoch_stamp (either as a do_deploy_source_date_epoch prefunc or directly invoked), then it should work either way, for externalsrc or not. As an aside, perhaps do_deploy_source_date_epoch should come after do_unpack as well, just in case someone has deleted do_patch: addtask do_deploy_source_date_epoch before do_configure after do_unpack do_patch