Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] BR2_REPRODUCIBLE issues
Date: Sun, 5 Nov 2017 09:46:30 +0100	[thread overview]
Message-ID: <20171105084630.GF2996@scaer> (raw)
In-Reply-To: <5c52008b-1ffa-7260-8681-5abeecd09665@mind.be>

Arnout, All,

On 2017-11-04 20:53 +0100, Arnout Vandecappelle spake thusly:
> On 03-11-17 21:15, Peter Korsgaard wrote:
> >>>>>> "Einar" == Einar J?n Gunnarsson <tolvupostur@gmail.com> writes:
> > 
> >  > Hello all.
> >  > I've been using BR2_REPRODUCIBLE, and it mostly works.
> > 
> >  > But when it is using a git repo, I have the following issues with creating
> >  > SOURCE_DATE_EPOCH:
> >  > 1) It uses $(GIT), but the GIT variable is only defined in line 487:
> >  > "include package/Makefile.in".
> >  > Note that this is done around line 250 in $(TOPDIR)/Makefile, so sometimes
> >  > $(GIT) is unset then getting BR2_VERSION_GIT_EPOCH
> > 
> > What make version (and buildroot version) are you using? It works here:
> > 
> > strace -s 100 -f -e execve make BR2_REPRODUCIBLE=y printvars VARS=SOURCE_DATE_EPOCH 2>&1 | grep log
> > [pid  9504] execve("/bin/bash", ["/bin/bash", "-c", "GIT_DIR=/home/peko/source/buildroot/.git git log -1 --format=%at"], [/* 46 vars */]) = 0
> > [pid  9504] execve("/usr/bin/git", ["git", "log", "-1", "--format=%at"], [/* 47 vars */]) = 0
> > [pid  9505] execve("/bin/bash", ["/bin/bash", "-c", "GIT_DIR=/home/peko/source/buildroot/.git git log -1 --format=%at"], [/* 46 vars */]) = 0
> > [pid  9505] execve("/usr/bin/git", ["git", "log", "-1", "--format=%at"], [/* 47 vars */]) = 0
> > 
> > It uses the BR2_GIT setting, E.G.:
> > 
> > strace -s 100 -f -e execve make BR2_REPRODUCIBLE=y printvars VARS=SOURCE_DATE_EPOCH BR2_GIT=foot 2>&1 | grep log
> > [pid  9880] execve("/bin/bash", ["/bin/bash", "-c", "GIT_DIR=/home/peko/source/buildroot/.git foot log -1 --format=%at"], [/* 46 vars */]) = 0
> > [pid  9881] execve("/bin/bash", ["/bin/bash", "-c", "GIT_DIR=/home/peko/source/buildroot/.git foot log -1 --format=%at"], [/* 46 vars */]) = 0
> > 
> > This is with current master and make 4.1.
> 
>  But not when there is no .config file:
> 
> $ make O=/tmp/brtest BR2_REPRODUCIBLE=y printvars VARS=SOURCE_DATE_EPOCH
> /bin/sh: log: command not found
> SOURCE_DATE_EPOCH=
> /bin/sh: log: command not found

Uh? Why you want to do that?

> $ make O=/tmp/brtest BR2_REPRODUCIBLE=y printvars VARS=SOURCE_DATE_EPOCH GIT=git
> SOURCE_DATE_EPOCH=1509720578

If anything, SOURCE_DATE_EPOCH should come from the environment, as
specified in the spec (see below).

>  Solution: move the GIT definition to top-level Makefile.

That would not solve anything, because it is still defined from BR2_GIT
that comes... from .config .

> >> 2) It always uses the last git commit to calculate the date. So any commit
> >  > changes the timestamp, while the non-git timestamp stays the same.
> >  > This makes the whole thing almost useless.
> >  > If the git log command could take a parameter, you could make reproducible
> >  > builds based on e.g. tag 2017.08, which would be much more useful.
> > 
> > Well, SOURCE_DATE_EPOCH is meant to refer to the date of the last source
> > code change rather than the build time (E.G. so repeated builds of the
> > same sources would give the same results, but builds of changed sources
> > would return a newer timestamp).
> >
> > So I don't really agree that it useless. What we could perhaps do is to
> > only export our value for SOURCE_DATE_EPOCH if not already set in the
> > enviroment, so you can set it outside Buildroot if you want a different
> > behaviour.
> 
>  Well, the proposed solution of using a config variable sounds OK. Only, I think
> it would make more sense to have a config variable with a date, rather than a
> commit ID.

Or let the user define SOURCE_DATE_EPOCH in the environment, as this is
what would be used and is how SOURCE_DATE_EPOCH is specified;
    https://reproducible-builds.org/specs/source-date-epoch/

    Build systems MUST NOT overwrite this variable for child processes
    to consume if it is already present.

I still fail to see what is wrong with the current situation...

Regards,
Yann E. MORIN.

>  Regards,
>  Arnout
> 
> 
> -- 
> Arnout Vandecappelle                          arnout at mind be
> Senior Embedded Software Architect            +32-16-286500
> Essensium/Mind                                http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

  parent reply	other threads:[~2017-11-05  8:46 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-03 14:40 [Buildroot] BR2_REPRODUCIBLE issues Einar Jón Gunnarsson
2017-11-03 20:15 ` Peter Korsgaard
2017-11-04 19:53   ` Arnout Vandecappelle
2017-11-04 20:49     ` Peter Korsgaard
2017-11-04 22:24     ` Thomas Petazzoni
2017-11-05  8:46     ` Yann E. MORIN [this message]
2017-11-06  9:43       ` Einar Jón
2017-11-06 17:50         ` Yann E. MORIN
2017-11-06 20:39           ` Peter Korsgaard
2017-11-06 22:50           ` Arnout Vandecappelle
2017-11-08 18:00             ` Yann E. MORIN
2017-11-08 18:59               ` Peter Korsgaard
2017-11-08 22:07               ` Arnout Vandecappelle
2017-11-06 21:34         ` Arnout Vandecappelle
2017-11-06 21:37           ` Yann E. MORIN
2017-11-05  8:35 ` Yann E. MORIN
2017-11-05  8:54   ` Peter Korsgaard
2017-11-05  8:59     ` Yann E. MORIN

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171105084630.GF2996@scaer \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox