All of 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.