[Buildroot] [PATCH v2 09/15] fakedate: new package
Arnout Vandecappelle
arnout at mind.be
Sat Nov 19 10:21:39 UTC 2016
On 18-11-16 10:10, Jérôme Pouiller wrote:
> `date' is widely used by packages to include build information in their
> binaries. Unfortunately, this is incompatible with BR2_REPRODUCIBLE.
>
> Instead to find all `date' invocation in build process, we add small tool
> allowing to alway return same date.
>
> This work was sponsored by `BA Robotic Systems'.
>
> Signed-off-by: Jérôme Pouiller <jezz at sysmic.org>
> ---
> package/fakedate/fakedate | 28 ++++++++++++++++++++++++++++
> package/fakedate/fakedate.mk | 14 ++++++++++++++
> 2 files changed, 42 insertions(+)
> create mode 100755 package/fakedate/fakedate
> create mode 100644 package/fakedate/fakedate.mk
>
> diff --git a/package/fakedate/fakedate b/package/fakedate/fakedate
> new file mode 100755
> index 0000000..2eded22
> --- /dev/null
> +++ b/package/fakedate/fakedate
> @@ -0,0 +1,28 @@
> +#!/bin/sh
> +# vim: set sw=4 expandtab:
> +#
> +# Licence: GPL
Please use a proper copyright blurb. Yes, it's long, but it's also more
accurate. You seem to be saying here that it is GPLv1 only, which is most likely
not what you want.
> +# Created: 2016-11-04 16:31:18+01:00
> +# Main authors:
> +# - Jérôme Pouiller <jezz at sysmic.org>
> +#
> +
> +PATH=/bin:/usr/bin
> +LOG=/dev/null
> +if [ -n "$SOURCE_DATE_EPOCH" ]; then
> + INHIBIT=0
INHIBIT is a bit vague. How about DATE_IS_FORCED?
> + for i in "$@"; do
> + case $i in
> + -d|-[!-]*d|--date=*|-f|-[!-]*f|--file=*)
We use [^-] everywhere else. Note that this pattern will also match something
like -rfrood, i.e. --reference=frood. Fixing that becomes tricky without regexp.
Anyway, the -d option doesn't really need to be checked. 'date -d foo -d bar'
will ignore the first -d, so things work OK. It's just that you get the spurious
warning. So we could limit to checking -f, and limit to -f|--file=*). In that
case, if someone passes something like -uf we'll get an error and the build will
most likely terminate, so that particular error can be fixed.
> + INHIBIT=1
You could add a break here.
> + ;;
> + esac
> + done
> + if [ $INHIBIT -eq 0 ]; then
> + echo "date: Warning: using \$SOURCE_DATE_EPOCH instead of true time" >&2
Is it really needed to print this warning?
> + echo "Catch call to date from `pwd` with parameters: '$@'" >> $LOG
> + exec date -d "@$SOURCE_DATE_EPOCH" "$@"
> + fi
> +fi
> +
> +exec date "$@"
> diff --git a/package/fakedate/fakedate.mk b/package/fakedate/fakedate.mk
> new file mode 100644
> index 0000000..e81ce5d
> --- /dev/null
> +++ b/package/fakedate/fakedate.mk
> @@ -0,0 +1,14 @@
> +################################################################################
> +#
> +# fakedate
> +#
> +################################################################################
> +
> +# source included in buildroot
> +HOST_FAKEDATE_LICENSE = GPLv2+
This is inconsistent with the script itself, which specifies GPLv1 only :-P
Regards,
Arnout
> +
> +define HOST_FAKEDATE_INSTALL_CMDS
> + $(INSTALL) -D -m 755 package/fakedate/fakedate $(HOST_DIR)/usr/bin/date
> +endef
> +
> +$(eval $(host-generic-package))
>
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
More information about the buildroot
mailing list