public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Ximin Luo <infinity0@pwned.gg>
To: u-boot@lists.denx.de
Subject: [U-Boot] [Reproducible-builds]  [U-Boot, v2] Reproducible U-Boot build support, using SOURCE_DATE_EPOCH
Date: Fri, 31 Jul 2015 12:19:18 +0200	[thread overview]
Message-ID: <55BB4BA6.8090400@pwned.gg> (raw)
In-Reply-To: <CAFOYHZA0TBBJQ0Kgi8LbUp4P-TZ1XDnXQ+XPceKL4yNFvp7Y6A@mail.gmail.com>

On 31/07/15 07:25, Chris Packham wrote:
> The problem is that date -u implies UTC. So +0000 is right if you do
> want the time to be displayed in UTC (for me living at +12/+13 UTC
> makes my head hurt because all the dates are yesterday).
> 

One of the main problems with human-readable date/time is that it implies a calendar, with all its exceptions like leap years, changing DST, etc. Many RFCs, and the POSIX date functions, are highly flawed and conflate calendars with absolute time, e.g. don't specify they mean the Gregorian calendar, and don't specify what to do with dates before when the Gregorian calendar was introduced.

If you want to be precise about these things (so as to not cause problems in the future), then you need to specify all of that when dealing with human-readable dates. This is why for now, the Reproducible Builds timestamps proposal only defines SOURCE_DATE_EPOCH. We might extend it later, though.

> The intent of f3f431a7 was to reflect the timezone that the build
> machine was set to. Dropping the -u would probably be sufficient but
> perhaps it would be better to make whole lot conditional on
> SOURCE_DATE_EPOCH being set. Something like this (untested, apologies
> gmail web interface)
> 
> ifneq ($(SOURCE_DATE_EPOCH),)
> define filechk_timestamp.h
>        (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"' )
> endef
> else
> 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"')
> endef
> endif
> 

Yes, it is best to force the TZ as UTC for now, if SOURCE_DATE_EPOCH is set.

At some point later, we might add SOURCE_DATE_TZOFFSET, or other formats that include a timezone offset, or something. (That would match Git's internal timestamp format, which is "$epochts $tzoffset", and can be translated unambiguously into ISO8601 and RFC2822 formats). For now though, we decided to keep things simple. But please say so, if you think that is something you (or others who use timestamps in build systems) would really want.

BTW, you need to do "@$${SOURCE_DATE_EPOCH}" when giving timestamps to date(1):

$ date -d @1438330000 +%s
1438330000
$ date -d 1438330000 +%s
date: invalid date ?1438330000?
1

X

-- 
GPG: 4096R/1318EFAC5FBBDBCE
git://github.com/infinity0/pubkeys.git

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150731/79985a4a/attachment.sig>

  parent reply	other threads:[~2015-07-31 10:19 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       ` Ximin Luo [this message]
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
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=55BB4BA6.8090400@pwned.gg \
    --to=infinity0@pwned.gg \
    --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