Unbreak nightly build
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 31 Mar 2012 16:59:27 +0000 (18:59 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 31 Mar 2012 17:03:19 +0000 (19:03 +0200)
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
src/scripts/nightly/patches/All/emptime.c.patch

index 088c7aca33474606e10cd374215511997838b636..6b5abf494ee6f1ae50fcbf4d2e91213e2a79e5b0 100755 (executable)
@@ -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
index 40fda01329ebb3cc10658d5748af94945f9d2668..3d88883adc810d85ad6b3f3e3045b90e1ec231d2 100644 (file)
@@ -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 <sys/time.h>
 +#include <time.h>
 +
 +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 <stdio.h>
 +#include <string.h>
 +#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;
++}