summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric BAIL <cedric@osg.samsung.com>2017-05-18 16:19:00 -0700
committerCedric BAIL <cedric@osg.samsung.com>2017-05-18 16:20:06 -0700
commit26d401351d920eaad848e5f09ff8b993adf97c1a (patch)
tree5b81f8ea4a1940695922c544a588839e195a498d
parent7510a2a9eeb2c4f2b9c12788bb6f4c0175655ed1 (diff)
downloadefl-26d401351d920eaad848e5f09ff8b993adf97c1a.tar.gz
eina: fix reproductible build.
This make eina hamster depend on when configure was generated. This should only happen really when we make a new tarball for release. @fix T5495
-rw-r--r--m4/efl.m43
-rw-r--r--src/lib/eina/eina_hamster.c53
2 files changed, 15 insertions, 41 deletions
diff --git a/m4/efl.m4 b/m4/efl.m4
index 7c2fc416a9..1fb49b9255 100644
--- a/m4/efl.m4
+++ b/m4/efl.m4
@@ -26,6 +26,7 @@ m4_define([v_maj], [$1])dnl
m4_define([v_min], [$2])dnl
m4_define([v_mic], [$3])dnl
m4_define([dev_version], m4_esyscmd([(git rev-list --count HEAD 2>/dev/null || echo 0) | tr -d '\n']))dnl
+m4_define([v_time], m4_esyscmd([(git log --format=%ci -1 2>/dev/null || date "+%Y-%m-%d %H:%M:%S %z") | tr -d '\n']))dnl
m4_define([v_rev], m4_if($4, dev, [dev_version], [0]))dnl
m4_define([v_rel], [])dnl
m4_define([def_build_profile], m4_if($4, dev, [dev], [release]))dnl
@@ -102,12 +103,14 @@ AC_DEFINE_UNQUOTED([VMAJ], [v_maj], [Major version])dnl
AC_DEFINE_UNQUOTED([VMIN], [v_min], [Minor version])dnl
AC_DEFINE_UNQUOTED([VMIC], [v_mic], [Micro version])dnl
AC_DEFINE_UNQUOTED([VREV], [v_rev], [Revison])dnl
+AC_DEFINE([VTIME], ["v_time"], [Last source reconfigure])dnl
VMAJ=v_maj
VMIN=v_min
VMIC=v_mic
AC_SUBST([VMAJ])dnl
AC_SUBST([VMIN])dnl
AC_SUBST([VMIC])dnl
+AC_SUBST([VTIME])dnl
dnl
dnl TODO: warning - lt_cur:
dnl the previous code assumed v_maj + v_min, but this will be a problem when
diff --git a/src/lib/eina/eina_hamster.c b/src/lib/eina/eina_hamster.c
index cebc10b758..0cfd808fe2 100644
--- a/src/lib/eina/eina_hamster.c
+++ b/src/lib/eina/eina_hamster.c
@@ -35,8 +35,7 @@
* @cond LOCAL
*/
-const char *_eina_hamster_time = __TIME__;
-const char *_eina_hamster_date = __DATE__;
+const char *_eina_hamster = VTIME;
static int _eina_hamsters = -1;
/**
@@ -57,50 +56,22 @@ eina_hamster_count(void)
if (_eina_hamsters < 0)
{
int hrs = 0, min = 0, sec = 0;
- char mon[8] = "";
int monnum = 0, day = 0, year = 0;
+ int zone = 0;
int fields;
- fields = sscanf(_eina_hamster_time, "%02d:%02d:%02d", &hrs, &min, &sec);
- if (fields == 3)
+ fields = sscanf(_eina_hamster, "%04d-%02d-%02d %02d:%02d:%02d %d",
+ &year, &monnum, &day, &hrs, &min, &sec, &zone);
+ if (fields == 7)
{
_eina_hamsters = (hrs * 60) + min;
- fields = sscanf(_eina_hamster_date, "%s %d %d", mon, &day, &year);
- if (fields == 3)
- {
- int i;
- const char *mons[] =
- {
- "Jan",
- "Feb",
- "Mar",
- "Apr",
- "May",
- "Jun",
- "Jul",
- "Aug",
- "Sep",
- "Oct",
- "Nov",
- "Dec"
- };
-
- for (i = 0; i < 12; i++)
- {
- if (!strcmp(mon, mons[i]))
- {
- monnum = i + 1;
- break;
- }
- }
- // alloc 60 for mins, 24 for hrs
- // alloc 1-31 (32) for days, 1-12 (13) for months
- // use year as-is, for 31 bits (signed) this gives us up to
- // 3584 years, which is good enough imho. - 1500 years from
- // now or so. :)
- _eina_hamsters +=
- (day + (monnum * 32) + (13 * 32 * year)) * (24 * 60);
- }
+ // alloc 60 for mins, 24 for hrs
+ // alloc 1-31 (32) for days, 1-12 (13) for months
+ // use year as-is, for 31 bits (signed) this gives us up to
+ // 3584 years, which is good enough imho. - 1500 years from
+ // now or so. :)
+ _eina_hamsters +=
+ (day + (monnum * 32) + (13 * 32 * year)) * (24 * 60);
}
}