On Wed, 2021-09-08 at 21:50 -0500, Mark Hatle wrote:
> From: Mark Hatle <mark.ha...@xilinx.com>
> 
> A variable BUILD_REPRODUCIBLE_BINARIES is set to '1' by default and was used
> to control if the postfuncs were added.  However, it didn't actually disable
> the reproducible_build (date) logic.  This resulted in the program falling
> back to the default date.
> 
> This change fully honors the variable and disables the various pieces
> that discover and configure the SOURCE_DATE_EPOCH if the value if not
> set to '1'.
> 
> Signed-off-by: Mark Hatle <mark.ha...@xilinx.com>
> Signed-off-by: Mark Hatle <mark.ha...@kernel.crashing.org>
> ---
>  meta/classes/reproducible_build.bbclass | 17 ++++++++++++++---
>  1 file changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/meta/classes/reproducible_build.bbclass 
> b/meta/classes/reproducible_build.bbclass
> index 378121903d..a9c117c3b9 100644
> --- a/meta/classes/reproducible_build.bbclass
> +++ b/meta/classes/reproducible_build.bbclass
> @@ -47,7 +47,9 @@ TARGET_CC_ARCH:append:class-target = " -Wdate-time"
>  # A SOURCE_DATE_EPOCH of '0' might be misinterpreted as no SDE
>  export SOURCE_DATE_EPOCH_FALLBACK ??= "1302044400"
>  
> -SSTATETASKS += "do_deploy_source_date_epoch"
> +# The following are preformed in the anonymous python function, only if
> +# BUILD_REPRODUCIBLE_BINARIES == 1
> +#SSTATETASKS += "do_deploy_source_date_epoch"
>  
>  do_deploy_source_date_epoch () {
>      mkdir -p ${SDE_DEPLOYDIR}
> @@ -73,8 +75,10 @@ python do_deploy_source_date_epoch_setscene () {
>  
>  do_deploy_source_date_epoch[dirs] = "${SDE_DEPLOYDIR}"
>  do_deploy_source_date_epoch[sstate-plaindirs] = "${SDE_DEPLOYDIR}"
> -addtask do_deploy_source_date_epoch_setscene
> -addtask do_deploy_source_date_epoch before do_configure after do_patch
> +# The following are preformed in the anonymous python function, only if
> +# BUILD_REPRODUCIBLE_BINARIES == 1
> +#addtask do_deploy_source_date_epoch_setscene
> +#addtask do_deploy_source_date_epoch before do_configure after do_patch
>  
>  python create_source_date_epoch_stamp() {
>      import oe.reproducible
> @@ -123,5 +127,12 @@ 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")
> +        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)
> +    else:
> +        # If this is set at all, the system components will attempt to use it
> +        d.delVar('SOURCE_DATE_EPOCH')
>  }

Doing this makes me rather sad. Why? If we keep going down this route, all our
code will just become a mess of python rather than metadata.

A better question here is probably whether we can keep the tasks but correctly
disable changing of the date instead?

I really don't want to just pile up anonymous python.

FWIW I'm also leaning towards moving some of the reproducible code into the main
classes/tasks out the box as I'm not sure we're that interested in having non-
reproducible builds.

Cheers,

Richard

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#155850): 
https://lists.openembedded.org/g/openembedded-core/message/155850
Mute This Topic: https://lists.openembedded.org/mt/85476713/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to