[Buildroot] [PATCH v5 02/19] fakedate: new package

Peter Korsgaard peter at korsgaard.com
Tue Feb 7 21:31:36 UTC 2017


>>>>> "Jérôme" == Jérôme Pouiller <jezz at sysmic.org> writes:

 > `date' is widely used by packages to include build information in their
 > binaries. Unfortunately, this is incompatible with  BR2_REPRODUCIBLE.

 > Instead of having to identify all `date' invocations in the different
 > packages, this commit adds a small tool that allows to always return
 > the same date.

 > This work was sponsored by `BA Robotic Systems'.

 > Signed-off-by: Jérôme Pouiller <jezz at sysmic.org>
 > ---

 > Notes:
 >     v3:
 >       - Do not force $PATH. Find true `date' binary instead (Thomas)
 >       - Add explanations (Thomas)
 >       - Fix options detection (Arnout)
 >       - Rename INHIBIT in FORCE_EPOCH (Thomas)
 >       - Break after FORCE_EPOCH=0 (Arnout)
 >       - Add support for '--reference'
 >       - Add full copyright blurb (Arnout)

 >  package/fakedate/fakedate    | 59 ++++++++++++++++++++++++++++++++++++++++++++
 >  package/fakedate/fakedate.mk | 15 +++++++++++
 >  2 files changed, 74 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..074c517
 > --- /dev/null
 > +++ b/package/fakedate/fakedate
 > @@ -0,0 +1,59 @@
 > +#!/bin/sh
 > +# vim: set sw=4 expandtab:
 > +#
 > +# This program is free software; you can redistribute it and/or modify
 > +# it under the terms of the GNU General Public License as published by
 > +# the Free Software Foundation; either version 2 of the License, or
 > +# (at your option) any later version.
 > +#
 > +# This program is distributed in the hope that it will be useful,
 > +# but WITHOUT ANY WARRANTY; without even the implied warranty of
 > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 > +# General Public License for more details.
 > +#
 > +# You should have received a copy of the GNU General Public License
 > +# along with this program; if not, write to the Free Software
 > +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 > +#
 > +# Copyright (C) 2016 Jérôme Pouiller <jezz at sysmic.org>
 > +#
 > +LOG=/dev/null
 > +
 > +# Sanity check
 > +if ! readlink -f "$0" | grep -q fakedate; then
 > +    echo "fakedate: Please name this script \`fakedate'"
 > +    exit 1
 > +fi
 > +
 > +DATE_BIN=false
 > +# Do not call `date'd directly since it will produce an infinite recursion.
 > +# Instead, find path of true `date' binary.
 > +for P in `echo $PATH | tr ':' ' '`; do
 > +    if [ -x "$P/date" ]; then
 > +        if readlink -f "$P/date" | grep -qv fakedate; then
 > +            DATE_BIN="$P/date"
 > +            break;
 > +        fi
 > +    fi
 > +done
 > +
 > +if [ -n "$SOURCE_DATE_EPOCH" ]; then
 > +    FORCE_EPOCH=1
 > +    for i in "$@"; do
 > +        # Use of --date, --file and --reference (and their short option counter
 > +        # parts) is incompatible with SOURCE_DATE_EPOCH.
 > +        # -u and -R are the only short options without argument. So they could
 > +        # appear between '-' and option we want to match.
 > +        if echo "$i" | grep -qE '^-([uR]*d|-date|[uR]*f|-file|[uR]*r|--reference)'; then
 > +            FORCE_EPOCH=0
 > +            break;
 > +        fi
 > +    done
 > +    if [ $FORCE_EPOCH -eq 1 ]; then
 > +        echo "date: Warning: using \$SOURCE_DATE_EPOCH instead of true time" >&2
 > +        echo "Catch call to date from `pwd` with parameters: '$@'" >> $LOG

I don't think this LOG debug stuff makes much sense as you have to edit the
file anyway, so you can just add any adhoc debug statements on the fly
anyway.

Committed with that removed, thanks.

-- 
Bye, Peter Korsgaard



More information about the buildroot mailing list