From 10768189e27822fbdc7d0a20071a1a07697c3a66 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 31 Mar 2012 18:59:27 +0200 Subject: [PATCH] Unbreak nightly build The nightly build uses a gross hack to keep timestamps stable: it replaces the system's time() by emp_time(). It doesn't replace other time-related functions such as gettimeofday(). Works as long as we don't mix hacked time with unhacked time. The previous commit compares time gotten from gettimeofday() with time gotten from time(). The nightly build's I/O timeouts become zero, which makes login impossible. Replace gettimeofday(), too. --- src/scripts/nightly/nightlybuild.sh | 4 ++- .../nightly/patches/All/emptime.c.patch | 33 +++++++++++++------ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/scripts/nightly/nightlybuild.sh b/src/scripts/nightly/nightlybuild.sh index 088c7aca..6b5abf49 100755 --- a/src/scripts/nightly/nightlybuild.sh +++ b/src/scripts/nightly/nightlybuild.sh @@ -184,7 +184,9 @@ then sed "$n"'a\ #include "emptime.h"\ #undef time\ -#define time(timer) emp_time((timer), __FUNCTION__)' $f >$f.patched +#define time(timer) emp_time((timer), __FUNCTION__)\ +#undef gettimeofday\ +#define gettimeofday(tv, tz) emp_gettimeofday((tv), (tz))' $f >$f.patched mv $f.patched $f fi done diff --git a/src/scripts/nightly/patches/All/emptime.c.patch b/src/scripts/nightly/patches/All/emptime.c.patch index 40fda013..3d88883a 100644 --- a/src/scripts/nightly/patches/All/emptime.c.patch +++ b/src/scripts/nightly/patches/All/emptime.c.patch @@ -1,9 +1,9 @@ diff --git a/include/emptime.h b/include/emptime.h new file mode 100644 -index 0000000..a83b29d +index 0000000..3c1eb7b --- /dev/null +++ b/include/emptime.h -@@ -0,0 +1,40 @@ +@@ -0,0 +1,43 @@ +/* + * Empire - A multi-player, client/server Internet based war game. + * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak, @@ -30,26 +30,29 @@ index 0000000..a83b29d + * + * --- + * -+ * emptime.h: Time functions for regression testing and -+ * replaying journals. ++ * emptime.h: Time functions for regression testing + * + * Known contributors to this file: + * Ron Koenderink, 2008 ++ * Markus Armbruster, 2012 + */ + +#ifndef EMPTIME_H +#define EMPTIME_H + ++#include +#include + +extern time_t emp_time(time_t *, const char []); ++extern int emp_gettimeofday(struct timeval *, void *); ++ +#endif diff --git a/src/lib/gen/emptime.c b/src/lib/gen/emptime.c new file mode 100644 -index 0000000..855de99 +index 0000000..4461093 --- /dev/null +++ b/src/lib/gen/emptime.c -@@ -0,0 +1,50 @@ +@@ -0,0 +1,60 @@ +/* + * Empire - A multi-player, client/server Internet based war game. + * Copyright (C) 1986-2011, Dave Pare, Jeff Bailey, Thomas Ruschak, @@ -76,22 +79,22 @@ index 0000000..855de99 + * + * --- + * -+ * emptime.c: Time functions for regression testing and -+ * replaying journals. ++ * emptime.c: Time functions for regression testing + * + * Known contributors to this file: + * Ron Koenderink, 2008 ++ * Markus Armbruster, 2012 + */ + +#include +#include +#include "emptime.h" + ++static time_t now = (time_t)100L; ++ +time_t +emp_time(time_t * time_ptr, const char function[]) +{ -+ static time_t now = (time_t)100L; -+ + if (strcmp(function, "update_main") == 0) + now += 100L; + @@ -100,3 +103,13 @@ index 0000000..855de99 + + return now; +} ++ ++int ++emp_gettimeofday(struct timeval *tv, void *tz) ++{ ++ if (tv) { ++ tv->tv_sec = now; ++ tv->tv_usec = 0; ++ } ++ return 0; ++}