From: Heiko Schocher <hs@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] Reproducible U-Boot build support, using SOURCE_DATE_EPOCH
Date: Mon, 20 Jul 2015 17:13:54 +0200 [thread overview]
Message-ID: <55AD1032.7000202@denx.de> (raw)
In-Reply-To: <1437399005.2338.9.camel@aldrin>
Hello Paul,
Am 20.07.2015 um 15:30 schrieb Paul Kocialkowski:
>> I am just on the jump into my holidays, so I have not yet the time
>> to test it ... I want to try it for all builds with the scripts
>> I posted with my v2 ... but a first fast look into your patch looks
>> nice, if it works, it is ok with me ... I am back aprox. july 5th.
>
> Okay, maybe I'll have a go at your scripts then! The idea to coordinate
Uh.. I am just a script beginner, they are not perfect ...
Maybe this can be done/added at travis.org ?
See u-boot builds there:
https://travis-ci.org/u-boot/u-boot/
> with Debian developers would be to use their infrastructure to
> automatically test as many u-boot targets as possible in an automated
> and periodical manner (e.g. once a month), so that we can easily spot
> which target is broken or which commit introduced a regression.
This sounds good ... feel free to trigger me, if I can help.
bye,
Heiko
>
>> maybe a README entry would be fine ;-)
>
> Good point, that makes sense. I'll craft that in v2. I'll just wait for
> some more feedback before sending a new version.
>
> Thanks!
>
>>> It would be nice to have this tested on as many boards as possible to
>>> spot other areas that make the binaries not reproducible. However, I
>>> doubt this patch will evolve much and other fixes should be sent in
>>> subsequent patches.
>>>
>>>> Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
>>>> ---
>>>> Makefile | 7 ++++---
>>>> tools/default_image.c | 21 ++++++++++++++++++++-
>>>> 2 files changed, 24 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/Makefile b/Makefile
>>>> index 37cc4c3..71aeac7 100644
>>>> --- a/Makefile
>>>> +++ b/Makefile
>>>> @@ -1231,9 +1231,10 @@ define filechk_version.h
>>>> endef
>>>>
>>>> define filechk_timestamp.h
>>>> - (LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \
>>>> - LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \
>>>> - LC_ALL=C date +'#define U_BOOT_TZ "%z"')
>>>> + (SOURCE_DATE="$${SOURCE_DATE_EPOCH:+@$$SOURCE_DATE_EPOCH}"; \
>>>> + LC_ALL=C date -u -d "$${SOURCE_DATE:-now}" +'#define U_BOOT_DATE "%b %d %C%y"'; \
>>>> + LC_ALL=C date -u -d "$${SOURCE_DATE:-now}" +'#define U_BOOT_TIME "%T"'; \
>>>> + LC_ALL=C date -u -d "$${SOURCE_DATE:-now}" +'#define U_BOOT_TZ "%z"' )
>>>> endef
>>>>
>>>> $(version_h): include/config/uboot.release FORCE
>>>> diff --git a/tools/default_image.c b/tools/default_image.c
>>>> index cf5c0d4..18940af 100644
>>>> --- a/tools/default_image.c
>>>> +++ b/tools/default_image.c
>>>> @@ -88,6 +88,9 @@ static void image_set_header(void *ptr, struct stat *sbuf, int ifd,
>>>> struct image_tool_params *params)
>>>> {
>>>> uint32_t checksum;
>>>> + char *source_date_epoch;
>>>> + struct tm *time_universal;
>>>> + time_t time;
>>>>
>>>> image_header_t * hdr = (image_header_t *)ptr;
>>>>
>>>> @@ -96,9 +99,25 @@ static void image_set_header(void *ptr, struct stat *sbuf, int ifd,
>>>> sizeof(image_header_t)),
>>>> sbuf->st_size - sizeof(image_header_t));
>>>>
>>>> + source_date_epoch = getenv("SOURCE_DATE_EPOCH");
>>>> + if (source_date_epoch != NULL) {
>>>> + time = (time_t) strtol(source_date_epoch, NULL, 10);
>>>> +
>>>> + time_universal = gmtime(&time);
>>>> + if (time_universal == NULL) {
>>>> + fprintf(stderr, "%s: SOURCE_DATE_EPOCH is not valid\n",
>>>> + __func__);
>>>> + time = 0;
>>>> + } else {
>>>> + time = mktime(time_universal);
>>>> + }
>>>> + } else {
>>>> + time = sbuf->st_mtime;
>>>> + }
>>>> +
>>>> /* Build new header */
>>>> image_set_magic(hdr, IH_MAGIC);
>>>> - image_set_time(hdr, sbuf->st_mtime);
>>>> + image_set_time(hdr, time);
>>>> image_set_size(hdr, sbuf->st_size - sizeof(image_header_t));
>>>> image_set_load(hdr, params->addr);
>>>> image_set_ep(hdr, params->ep);
>>>
>>
>
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
next prev parent reply other threads:[~2015-07-20 15:13 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-20 8:01 [U-Boot] [PATCH] Reproducible U-Boot build support, using SOURCE_DATE_EPOCH Paul Kocialkowski
2015-07-20 8:06 ` Paul Kocialkowski
2015-07-20 11:21 ` Heiko Schocher
2015-07-20 13:30 ` Paul Kocialkowski
2015-07-20 15:13 ` Heiko Schocher [this message]
2015-07-21 16:20 ` Paul Kocialkowski
2015-07-27 17:36 ` Paul Kocialkowski
2015-07-20 14:45 ` Vagrant Cascadian
2015-07-21 16:18 ` Paul Kocialkowski
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=55AD1032.7000202@denx.de \
--to=hs@denx.de \
--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 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.