From: Paul Kocialkowski <contact@paulk.fr>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC PATCH] Makefile: search for GNU date
Date: Thu, 27 Aug 2015 10:32:13 +0200 [thread overview]
Message-ID: <1440664333.2601.6.camel@collins> (raw)
In-Reply-To: <1440663230-4715-1-git-send-email-andreas.devel@googlemail.com>
Le jeudi 27 ao?t 2015 ? 10:13 +0200, Andreas Bie?mann a ?crit :
> The SOURCE_DATE_EPOCH mechanism for reproducible builds requires the GNU
> variant of date. Respect this and search it, error on missing GNU date.
Well, IMHO we shouldn't check for GNU date but for the extensions it
implements. Those could be included in other date implementations. For
instance, it looks like busybox's date implements the -u and -d options
too.
> Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
> ---
> This commit tries to figure out if we have a GNU date variant
> available. It errors on missing GNU date when it is required (for
> SOURCE_DATE_EPOCH set). The result is:
Also, I don't think it should be up to the Makefile to figure out which
date binary to use. It should be up to the user to put the right one as
"date", e.g. with an alias. That is, unless the name for GNU date is
something really standardized on non-GNU systems.
> ---8<---
> abiessmann at punisher % PATH=$ARMv5_PATH:$PATH CROSS_COMPILE=arm-v5te-linux-gnueabi- make SOURCE_DATE_EPOCH="`date -R`" O=/tmp/picosam ARCH=arm include/generated/timestamp_autogenerated.h
> make[1]: Entering directory '/tmp/picosam'
> /home/abiessmann/src/u-boot/Makefile:1303: *** "No GNU date found". Stop.
> make[1]: Leaving directory '/tmp/picosam'
> Makefile:146: recipe for target 'sub-make' failed
> make: *** [sub-make] Error 2
> abiessmann at punisher % PATH=$ARMv5_PATH:$PATH CROSS_COMPILE=arm-v5te-linux-gnueabi- make O=/tmp/picosam ARCH=arm include/generated/timestamp_autogenerated.h
> make[1]: Entering directory '/tmp/picosam'
> CHK include/generated/timestamp_autogenerated.h
> UPD include/generated/timestamp_autogenerated.h
> make[1]: Leaving directory '/tmp/picosam'
> --->8---
>
> It applies on top of http://patchwork.ozlabs.org/patch/506856/ (Makefile: Use correct timezone for U_BOOT_TZ).
>
> Makefile | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index b9b2375..95eae64 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -346,6 +346,9 @@ PERL = perl
> PYTHON = python
> DTC = dtc
> CHECK = sparse
> +GNUDATE := $(foreach date,gdate date.gnu date, \
> + $(shell _date=`which $(date)`; \
> + $${_date} --version 2> /dev/null | $(AWK) "/GNU coreutils/ { print \"$${_date}\"; }"))
I advise running date with the needed options (-u -d) and checked the
error code instead of this. And of course, the variable names shouldn't
mention GNU date.
> CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
> -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF)
> @@ -1281,9 +1284,9 @@ endef
> define filechk_timestamp.h
> (if test -n "$${SOURCE_DATE_EPOCH}"; then \
> SOURCE_DATE="@$${SOURCE_DATE_EPOCH}"; \
> - LC_ALL=C date -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DATE "%b %d %C%y"'; \
> - LC_ALL=C date -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIME "%T"'; \
> - LC_ALL=C date -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ "%z"'; \
> + LC_ALL=C $(GNUDATE) -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DATE "%b %d %C%y"'; \
> + LC_ALL=C $(GNUDATE) -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIME "%T"'; \
> + LC_ALL=C $(GNUDATE) -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ "%z"'; \
> else \
> LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \
> LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \
> @@ -1295,6 +1298,11 @@ $(version_h): include/config/uboot.release FORCE
> $(call filechk,version.h)
>
> $(timestamp_h): $(srctree)/Makefile FORCE
> +ifneq ($(strip $(SOURCE_DATE_EPOCH)),)
> +ifeq ($(strip $(GNUDATE)),)
> + $(error "No GNU date found")
> +endif
> +endif
> $(call filechk,timestamp.h)
>
> # ---------------------------------------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150827/c052cc01/attachment.sig>
next prev parent reply other threads:[~2015-08-27 8:32 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-26 16:48 [U-Boot] [PATCH v2] Reproducible U-Boot build support, using SOURCE_DATE_EPOCH Paul Kocialkowski
2015-07-28 15:00 ` [U-Boot] [U-Boot, " Tom Rini
2015-07-31 2:54 ` Bin Meng
2015-07-31 5:25 ` Chris Packham
2015-07-31 10:04 ` [U-Boot] [PATCH] Makefile: Use correct timezone for U_BOOT_TZ Chris Packham
2015-07-31 12:14 ` Bin Meng
2015-07-31 17:05 ` Paul Kocialkowski
2015-08-01 9:40 ` Chris Packham
2015-08-01 9:43 ` [U-Boot] [PATCH v2] " Chris Packham
2015-08-10 10:49 ` Chris Packham
2015-07-31 10:19 ` [U-Boot] [Reproducible-builds] [U-Boot, v2] Reproducible U-Boot build support, using SOURCE_DATE_EPOCH Ximin Luo
2015-08-01 10:32 ` [U-Boot] [RFC PATCH] Makefile: Add SOURCE_DATE_TZ Chris Packham
2015-08-01 18:47 ` Paul Kocialkowski
2015-08-01 22:02 ` Ximin Luo
2015-08-01 22:04 ` Ximin Luo
2015-08-12 16:40 ` [U-Boot] [U-Boot,RFC] " Tom Rini
2015-08-13 5:57 ` Chris Packham
2015-08-25 10:08 ` [U-Boot] [U-Boot, v2] Reproducible U-Boot build support, using SOURCE_DATE_EPOCH Fabio Estevam
2015-08-25 8:49 ` Andreas Bießmann
2015-08-25 9:55 ` [U-Boot] [Reproducible-builds] " Vagrant Cascadian
2015-08-25 10:20 ` Andreas Bießmann
2015-08-25 12:12 ` Paul Kocialkowski
2015-08-25 11:20 ` [U-Boot] SOURCE_DATE_EPOCH must not be linux only... (was Re: [Reproducible-builds] [U-Boot, v2] Reproducible U-Boot build support, using SOURCE_DATE_EPOCH) Holger Levsen
2015-08-27 8:13 ` [U-Boot] [RFC PATCH] Makefile: search for GNU date Andreas Bießmann
2015-08-27 8:28 ` Marek Vasut
2015-08-27 9:01 ` Andreas Bießmann
2015-08-27 10:28 ` Marek Vasut
2015-08-27 8:32 ` Paul Kocialkowski [this message]
2015-08-27 8:56 ` Andreas Bießmann
2015-08-27 9:30 ` [U-Boot] [RFC PATCH v2] " Andreas Bießmann
2015-08-27 13:03 ` Paul Kocialkowski
2015-08-27 13:52 ` Andreas Bießmann
2015-08-27 14:23 ` Paul Kocialkowski
2015-08-28 8:29 ` [U-Boot] [PATCH v3] Makefile: fix SOURCE_DATE_EPOCH for *BSD host Andreas Bießmann
2015-08-28 21:04 ` [U-Boot] [U-Boot, " Tom Rini
2015-08-28 21:22 ` Holger Levsen
2015-09-01 17:03 ` [U-Boot] [PATCH " Paul Kocialkowski
2015-09-02 7:41 ` Andreas Bießmann
2015-09-24 16:05 ` [U-Boot] Reproducible U-Boot build support, using SOURCE_DATE_EPOCH Vagrant Cascadian
2015-09-28 17:42 ` Paul Kocialkowski
2015-09-30 15:50 ` [U-Boot] [Reproducible-builds] " Vagrant Cascadian
2015-10-02 10:19 ` Paul Kocialkowski
2015-09-28 18:59 ` [U-Boot] " Siarhei Siamashka
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=1440664333.2601.6.camel@collins \
--to=contact@paulk.fr \
--cc=u-boot@lists.denx.de \
/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