From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Date: Thu, 27 Aug 2015 16:23:07 +0200 Subject: [U-Boot] [RFC PATCH v2] Makefile: search for GNU date In-Reply-To: <55DF160D.8050906@gmail.com> References: <1440663230-4715-1-git-send-email-andreas.devel@googlemail.com> <1440667806-7428-1-git-send-email-andreas.devel@googlemail.com> <1440680592.2601.12.camel@collins> <55DF160D.8050906@gmail.com> Message-ID: <1440685387.2601.18.camel@collins> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Le jeudi 27 ao?t 2015 ? 15:52 +0200, Andreas Bie?mann a ?crit : > On 08/27/2015 03:03 PM, Paul Kocialkowski wrote: > > Le jeudi 27 ao?t 2015 ? 11:30 +0200, Andreas Bie?mann a ?crit : > > > >> Changes in v2: > >> * check for '-u' and '-d "@0"' switch rather than for the GNU variant > >> > >> Makefile | 15 ++++++++++++--- > >> 1 file changed, 12 insertions(+), 3 deletions(-) > >> > >> diff --git a/Makefile b/Makefile > >> index b9b2375..b797e38 100644 > >> --- a/Makefile > >> +++ b/Makefile > >> @@ -346,6 +346,10 @@ PERL = perl > >> PYTHON = python > >> DTC = dtc > >> CHECK = sparse > >> +DATE := $(foreach date,gdate date.gnu date, \ > >> + $(shell _date=`which $(date)`; \ > >> + $${_date} -u -d "@0" >/dev/null 2>&1; \ > >> + test $$? -eq 0 && echo $${_date})) > > > > First, I don't understand why you need to call date with the full path: > > if which can find it, then calling the binary without its full path > > should do just as well, right? > > You'r right. > > > Then, correct me if I'm wrong, but calling test and using && is > > overkill, you could simply do: $${_date} -u -d "@0" >/dev/null 2>&1 && > > echo $${_date} > > Also true. > > > So in the end, the whole line would look like: > > > > DATE := $(foreach date,gdate date.gnu date, \ > > $($${date} -u -d "@0" >/dev/null 2>&1 \ > > && echo $${date})) > > > > Let me know what you think (and please test it as well). > > That should work. I wonder however why we don't include this snippet in > the filechk_timestamp.h script directly. In fact the $(DATE) (a date > that support -d '@0' switch) is just used there, so why clobber the > Makefile with it? I'm fine with both options, but your suggestion also makes it more obvious why we're doing that check at all. > ---8<--- > define filechk_timestamp.h > (if test -n "$${SOURCE_DATE_EPOCH}"; then \ > date=""; \ > for _date in gdate date.gnu date; do \ > $${_date} -u -d "$${SOURCE_DATE}" >/dev/null 2>&1 && \ > date="$${_date}"; \ > done; \ > if test -n "$${date}"; 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"'; \ > else \ > return 42; \ > fi; \ > else \ > 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"'; \ > fi) > endef > --->8--- > > > >> CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ > >> -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF) > >> @@ -1281,9 +1285,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 $(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"'; \ > >> else \ > >> LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \ > >> LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \ > >> @@ -1295,6 +1299,11 @@ $(version_h): include/config/uboot.release FORCE > >> $(call filechk,version.h) > >> > >> $(timestamp_h): $(srctree)/Makefile FORCE > >> +ifneq ($(strip $(SOURCE_DATE_EPOCH)),) > >> +ifeq ($(strip $(DATE)),) > >> + $(error "Your gdate/date.gnu/date does not support the '-u' and '-d' switches like GNU date does!") > >> +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: