Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile
PATCH 1/1 Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile
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.
--- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Makefile +1 -1
@@ -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.
PATCH 1/1 Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile
Hello,
Quoted 27 lines · James Byrne
For reproducible builds,
SOURCE_DATE_EPOCHwill 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 aboveMakefilethe repository is at. This works because the current directory when the 'git log' command is executed will always be the directory containingMakefile(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_EPOCHcan be defined in the environment before invoking make.Signed-off-by James Byrne <[email protected]>--- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)Makefile +0
-0
Makefile ifeq ($(BR2_REPRODUCIBLE),y) · line 509
Quoted 5 lines
Makefile +1
-1@@ -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
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com
PATCH 1/1 Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile
Hi Thomas,
Quoted 7 lines · Thomas Petazzoni
Makefile ifeq ($(BR2_REPRODUCIBLE),y) · line 506
Quoted 6 lines · James Byrne
Makefile +0
-0@@ -506,7 +506,7 @@ ifeq ($(BR2_REPRODUCIBLE),y) # If SOURCE_DATE_EPOCH has not been set then use the commit date,
or the last
Quoted 3 lines
Makefile ifeq ($(BR2_REPRODUCIBLE),y)
Quoted 3 lines
Makefile +0
-1# 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)
Quoted 1 line
Makefile ifeq ($(BR2_REPRODUCIBLE),y) · line 509
Quoted 1 line
Makefile +1
-0+BR2_VERSION_GIT_EPOCH := $(shell $(GIT) log -1 --format=%at 2>
/dev/null)
Quoted 10 lines
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, whereSOURCE_DATE_EPOCHwas 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.
PATCH 1/1 Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile
James, Thomas, All,
On 2018-04-12 16:40 +0100, James Byrne spake thusly:
Quoted 9 lines · Thomas Petazzoni
Quoted 7 lines · James Byrne
Makefile ifeq ($(BR2_REPRODUCIBLE),y) · line 506
Quoted 6 lines
Makefile +0
-0@@ -506,7 +506,7 @@ ifeq ($(BR2_REPRODUCIBLE),y) # If SOURCE_DATE_EPOCH has not been set then use the commit date,or the last
Quoted 6 lines
Quoted 3 lines
Makefile ifeq ($(BR2_REPRODUCIBLE),y)
Quoted 3 lines
Makefile +0
-1# 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)/.gitlog -1 --format=%at 2>
/dev/null)Quoted 1 line
Makefile ifeq ($(BR2_REPRODUCIBLE),y) · line 509
Quoted 1 line
Makefile +1
-0+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:
Quoted 6 lines
Quoted 6 lines
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).
Quoted 8 lines
Quoted 3 lines
It has been done this way since commit
9befe94baf990ee6331e77edb40e286e9dc4df8d, whereSOURCE_DATE_EPOCHwas 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.
Quoted 5 lines
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
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | 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. | '------------------------------^-------^------------------^--------------------'
Thomas Petazzoni
AppliedPATCH 1/1 Makefile: Take default SOURCE_DATE_EPOCH from repo containing Makefile
In reply to James ByrneHello,
Quoted 13 lines · James Byrne
For reproducible builds,
SOURCE_DATE_EPOCHwill 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 aboveMakefilethe repository is at. This works because the current directory when the 'git log' command is executed will always be the directory containingMakefile(it must be, since TOPDIR is set from CURDIR).
Quoted 8 lines
In general this should be a sensible default, and in cases where a different date is required
SOURCE_DATE_EPOCHcan be defined in the environment before invoking make.Signed-off-by James Byrne <[email protected]>--- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Applied to master, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com