All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/1] Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile
@ 2018-04-10 10:28 James Byrne
  2018-04-10 12:36 ` Thomas Petazzoni
  2018-04-12 21:32 ` Thomas Petazzoni
  0 siblings, 2 replies; 5+ messages in thread
From: James Byrne @ 2018-04-10 10:28 UTC (permalink / raw)
  To: buildroot

For reproducible builds, SOURCE_DATE_EPOCH will be set to the git commit
date if it is not defined in the environment, but this was done by
explicitly using $(TOPDIR)/.git as the git repository, which would not
give the expected result if Buildroot had been put into a subdirectory
of another repository.

This commit removes that restriction, meaning that the default date will
now be the date of the git commit that contains Makefile, regardless of
what level above Makefile the repository is at. This works because the
current directory when the 'git log' command is executed will always be
the directory containing Makefile (it must be, since TOPDIR is set from
CURDIR).

In general this should be a sensible default, and in cases where a
different date is required SOURCE_DATE_EPOCH can be defined in the
environment before invoking make.

Signed-off-by: James Byrne <james.byrne@origamienergy.com>
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index cd53362..3b846b9 100644
--- a/Makefile
+++ b/Makefile
@@ -506,7 +506,7 @@ ifeq ($(BR2_REPRODUCIBLE),y)
 # If SOURCE_DATE_EPOCH has not been set then use the commit date, or the last
 # release date if the source tree is not within a Git repository.
 # See: https://reproducible-builds.org/specs/source-date-epoch/
-BR2_VERSION_GIT_EPOCH := $(shell $(GIT) --git-dir=$(TOPDIR)/.git log -1 --format=%at 2> /dev/null)
+BR2_VERSION_GIT_EPOCH := $(shell $(GIT) log -1 --format=%at 2> /dev/null)
 export SOURCE_DATE_EPOCH ?= $(or $(BR2_VERSION_GIT_EPOCH),$(BR2_VERSION_EPOCH))
 endif

--
2.7.4

The contents of this email and any attachment are confidential to the intended recipient(s). If you are not an intended recipient: (i) do not use, disclose, distribute, copy or publish this email or its contents; (ii) please contact the sender immediately; and (iii) delete this email. Origami Energy Limited (company number 8619644); Origami Storage Limited (company number 10436515) and OSSPV001 Limited (company number 10933403), each registered in England and each with a registered office at: Ashcombe Court, Woolsack Way, Godalming, GU7 1LQ.

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH 1/1] Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile
  2018-04-10 10:28 [Buildroot] [PATCH 1/1] Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile James Byrne
@ 2018-04-10 12:36 ` Thomas Petazzoni
  2018-04-12 15:40   ` James Byrne
  2018-04-12 21:32 ` Thomas Petazzoni
  1 sibling, 1 reply; 5+ messages in thread
From: Thomas Petazzoni @ 2018-04-10 12:36 UTC (permalink / raw)
  To: buildroot

Hello,

On Tue, 10 Apr 2018 11:28:12 +0100, James Byrne wrote:
> For reproducible builds, SOURCE_DATE_EPOCH will be set to the git commit
> date if it is not defined in the environment, but this was done by
> explicitly using $(TOPDIR)/.git as the git repository, which would not
> give the expected result if Buildroot had been put into a subdirectory
> of another repository.
> 
> This commit removes that restriction, meaning that the default date will
> now be the date of the git commit that contains Makefile, regardless of
> what level above Makefile the repository is at. This works because the
> current directory when the 'git log' command is executed will always be
> the directory containing Makefile (it must be, since TOPDIR is set from
> CURDIR).
> 
> In general this should be a sensible default, and in cases where a
> different date is required SOURCE_DATE_EPOCH can be defined in the
> environment before invoking make.
> 
> Signed-off-by: James Byrne <james.byrne@origamienergy.com>
> ---
>  Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index cd53362..3b846b9 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -506,7 +506,7 @@ ifeq ($(BR2_REPRODUCIBLE),y)
>  # If SOURCE_DATE_EPOCH has not been set then use the commit date, or the last
>  # release date if the source tree is not within a Git repository.
>  # See: https://reproducible-builds.org/specs/source-date-epoch/
> -BR2_VERSION_GIT_EPOCH := $(shell $(GIT) --git-dir=$(TOPDIR)/.git log -1 --format=%at 2> /dev/null)
> +BR2_VERSION_GIT_EPOCH := $(shell $(GIT) log -1 --format=%at 2> /dev/null)

Was there a reason to have this --git-dir/GIT_DIR option/variable
passed in the first place ?

I don't immediately see any problem with the change you're proposing,
but I'm wondering why we were passing --git-dir (previously GIT_DIR).

It has been done this way since commit
9befe94baf990ee6331e77edb40e286e9dc4df8d, where SOURCE_DATE_EPOCH was
introduced in Buildroot.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH 1/1] Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile
  2018-04-10 12:36 ` Thomas Petazzoni
@ 2018-04-12 15:40   ` James Byrne
  2018-04-12 17:29     ` Yann E. MORIN
  0 siblings, 1 reply; 5+ messages in thread
From: James Byrne @ 2018-04-12 15:40 UTC (permalink / raw)
  To: buildroot

Hi Thomas,

On 10/04/18 13:36, Thomas Petazzoni wrote:
 > On Tue, 10 Apr 2018 11:28:12 +0100, James Byrne wrote:
 >> diff --git a/Makefile b/Makefile
 >> index cd53362..3b846b9 100644
 >> --- a/Makefile
 >> +++ b/Makefile
 >> @@ -506,7 +506,7 @@ ifeq ($(BR2_REPRODUCIBLE),y)
 >>   # If SOURCE_DATE_EPOCH has not been set then use the commit date,
or the last
 >>   # release date if the source tree is not within a Git repository.
 >>   # See: https://reproducible-builds.org/specs/source-date-epoch/
 >> -BR2_VERSION_GIT_EPOCH := $(shell $(GIT) --git-dir=$(TOPDIR)/.git
log -1 --format=%at 2> /dev/null)
 >> +BR2_VERSION_GIT_EPOCH := $(shell $(GIT) log -1 --format=%at 2>
/dev/null)
 >
 > Was there a reason to have this --git-dir/GIT_DIR option/variable
 > passed in the first place ?
 >
 > I don't immediately see any problem with the change you're proposing,
 > but I'm wondering why we were passing --git-dir (previously GIT_DIR).
 >
 > It has been done this way since commit
 > 9befe94baf990ee6331e77edb40e286e9dc4df8d, where SOURCE_DATE_EPOCH was
 > introduced in Buildroot.

I don't know, but my guess would be that the original author thought
that if you were building out of tree then the current directory might
be somewhere else, so they wanted to ensure it would use the right one,
but in fact the current directory can only be the one containing Makefile.

James
--
The contents of this email and any attachment are confidential to the intended recipient(s). If you are not an intended recipient: (i) do not use, disclose, distribute, copy or publish this email or its contents; (ii) please contact the sender immediately; and (iii) delete this email. Origami Energy Limited (company number 8619644); Origami Storage Limited (company number 10436515) and OSSPV001 Limited (company number 10933403), each registered in England and each with a registered office at: Ashcombe Court, Woolsack Way, Godalming, GU7 1LQ.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH 1/1] Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile
  2018-04-12 15:40   ` James Byrne
@ 2018-04-12 17:29     ` Yann E. MORIN
  0 siblings, 0 replies; 5+ messages in thread
From: Yann E. MORIN @ 2018-04-12 17:29 UTC (permalink / raw)
  To: buildroot

James, Thomas, All,

On 2018-04-12 16:40 +0100, James Byrne spake thusly:
> On 10/04/18 13:36, Thomas Petazzoni wrote:
> > On Tue, 10 Apr 2018 11:28:12 +0100, James Byrne wrote:
> >> diff --git a/Makefile b/Makefile
> >> index cd53362..3b846b9 100644
> >> --- a/Makefile
> >> +++ b/Makefile
> >> @@ -506,7 +506,7 @@ ifeq ($(BR2_REPRODUCIBLE),y)
> >>   # If SOURCE_DATE_EPOCH has not been set then use the commit date,
> or the last
> >>   # release date if the source tree is not within a Git repository.
> >>   # See: https://reproducible-builds.org/specs/source-date-epoch/
> >> -BR2_VERSION_GIT_EPOCH := $(shell $(GIT) --git-dir=$(TOPDIR)/.git
> log -1 --format=%at 2> /dev/null)
> >> +BR2_VERSION_GIT_EPOCH := $(shell $(GIT) log -1 --format=%at 2>
> /dev/null)

I was pretty sure I had ACKed that patch. Seems not, so:

Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

> > Was there a reason to have this --git-dir/GIT_DIR option/variable
> > passed in the first place ?
> >
> > I don't immediately see any problem with the change you're proposing,
> > but I'm wondering why we were passing --git-dir (previously GIT_DIR).
> >
> > It has been done this way since commit
> > 9befe94baf990ee6331e77edb40e286e9dc4df8d, where SOURCE_DATE_EPOCH was
> > introduced in Buildroot.
> 
> I don't know, but my guess would be that the original author thought
> that if you were building out of tree then the current directory might
> be somewhere else, so they wanted to ensure it would use the right one,
> but in fact the current directory can only be the one containing Makefile.

Indeed, the current directory can only be the Buildroot top-dir,
whatever the conditions we call Buildroot;

  - in-tree: well, obviously, we're in top-dir,
  - out-fo-tree with 'make -C': make will chdir into our top-dir,
  - out-of-tree, via wrapper: the wrapper calls make -C

So, it does not really make sense to enforce the git directory.

Regards,
Yann E. MORIN.

> The contents of this email and any attachment are confidential to the intended recipient(s). If you are not an intended recipient: (i) do not use, disclose, distribute, copy or publish this email or its contents; (ii) please contact the sender immediately; and (iii) delete this email. Origami Energy Limited (company number 8619644); Origami Storage Limited (company number 10436515) and OSSPV001 Limited (company number 10933403), each registered in England and each with a registered office at: Ashcombe Court, Woolsack Way, Godalming, GU7 1LQ.
> _______________________________________________
> 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.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH 1/1] Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile
  2018-04-10 10:28 [Buildroot] [PATCH 1/1] Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile James Byrne
  2018-04-10 12:36 ` Thomas Petazzoni
@ 2018-04-12 21:32 ` Thomas Petazzoni
  1 sibling, 0 replies; 5+ messages in thread
From: Thomas Petazzoni @ 2018-04-12 21:32 UTC (permalink / raw)
  To: buildroot

Hello,

On Tue, 10 Apr 2018 11:28:12 +0100, James Byrne wrote:
> For reproducible builds, SOURCE_DATE_EPOCH will be set to the git commit
> date if it is not defined in the environment, but this was done by
> explicitly using $(TOPDIR)/.git as the git repository, which would not
> give the expected result if Buildroot had been put into a subdirectory
> of another repository.
> 
> This commit removes that restriction, meaning that the default date will
> now be the date of the git commit that contains Makefile, regardless of
> what level above Makefile the repository is at. This works because the
> current directory when the 'git log' command is executed will always be
> the directory containing Makefile (it must be, since TOPDIR is set from
> CURDIR).
> 
> In general this should be a sensible default, and in cases where a
> different date is required SOURCE_DATE_EPOCH can be defined in the
> environment before invoking make.
> 
> Signed-off-by: James Byrne <james.byrne@origamienergy.com>
> ---
>  Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied to master, thanks.

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-04-12 21:32 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-10 10:28 [Buildroot] [PATCH 1/1] Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile James Byrne
2018-04-10 12:36 ` Thomas Petazzoni
2018-04-12 15:40   ` James Byrne
2018-04-12 17:29     ` Yann E. MORIN
2018-04-12 21:32 ` Thomas Petazzoni

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.