Use SOURCE_DATE_EPOCH for reproducible build

Similar to https://github.com/yquake2/yquake2/pull/142 in the yquake2
engine/base game.

Signed-off-by: Simon McVittie <smcv@debian.org>
This commit is contained in:
Simon McVittie 2017-09-14 11:23:58 +01:00
parent ca0e44b2a4
commit 3e82fe1ef2
2 changed files with 15 additions and 4 deletions

View file

@ -70,6 +70,13 @@ endif
# ---------- # ----------
# https://reproducible-builds.org/specs/source-date-epoch/
ifdef SOURCE_DATE_EPOCH
CFLAGS += -DBUILD_DATE=\"$(shell date --utc --date="@${SOURCE_DATE_EPOCH}" +"%b %_d %Y" | sed -e 's/ /\\ /g')\"
endif
# ----------
# Builds everything # Builds everything
all: ctf all: ctf

View file

@ -28,6 +28,10 @@
#include "header/local.h" #include "header/local.h"
#ifndef BUILD_DATE
#define BUILD_DATE __DATE__
#endif
field_t fields[] = { field_t fields[] = {
{"classname", FOFS(classname), F_LSTRING}, {"classname", FOFS(classname), F_LSTRING},
{"origin", FOFS(s.origin), F_VECTOR}, {"origin", FOFS(s.origin), F_VECTOR},
@ -141,7 +145,7 @@ void
InitGame(void) InitGame(void)
{ {
gi.dprintf("Game is starting up.\n"); gi.dprintf("Game is starting up.\n");
gi.dprintf("Game is ctf built on %s.\n", GAMEVERSION, __DATE__); gi.dprintf("Game is ctf built on %s.\n", GAMEVERSION, BUILD_DATE);
gun_x = gi.cvar("gun_x", "0", 0); gun_x = gi.cvar("gun_x", "0", 0);
gun_y = gi.cvar("gun_y", "0", 0); gun_y = gi.cvar("gun_y", "0", 0);
@ -157,7 +161,7 @@ InitGame(void)
/* latched vars */ /* latched vars */
sv_cheats = gi.cvar("cheats", "0", CVAR_SERVERINFO | CVAR_LATCH); sv_cheats = gi.cvar("cheats", "0", CVAR_SERVERINFO | CVAR_LATCH);
gi.cvar("gamename", GAMEVERSION, CVAR_SERVERINFO | CVAR_LATCH); gi.cvar("gamename", GAMEVERSION, CVAR_SERVERINFO | CVAR_LATCH);
gi.cvar("gamedate", __DATE__, CVAR_SERVERINFO | CVAR_LATCH); gi.cvar("gamedate", BUILD_DATE, CVAR_SERVERINFO | CVAR_LATCH);
maxclients = gi.cvar("maxclients", "4", CVAR_SERVERINFO | CVAR_LATCH); maxclients = gi.cvar("maxclients", "4", CVAR_SERVERINFO | CVAR_LATCH);
deathmatch = gi.cvar("deathmatch", "0", CVAR_LATCH); deathmatch = gi.cvar("deathmatch", "0", CVAR_LATCH);
coop = gi.cvar("coop", "0", CVAR_LATCH); coop = gi.cvar("coop", "0", CVAR_LATCH);
@ -493,7 +497,7 @@ WriteGame(char *filename, qboolean autosave)
} }
memset(str, 0, sizeof(str)); memset(str, 0, sizeof(str));
strcpy(str, __DATE__); strcpy(str, BUILD_DATE);
fwrite(str, sizeof(str), 1, f); fwrite(str, sizeof(str), 1, f);
game.autosaved = autosave; game.autosaved = autosave;
@ -526,7 +530,7 @@ ReadGame(char *filename)
fread(str, sizeof(str), 1, f); fread(str, sizeof(str), 1, f);
if (strcmp(str, __DATE__)) if (strcmp(str, BUILD_DATE))
{ {
fclose(f); fclose(f);
gi.error("Savegame from an older version.\n"); gi.error("Savegame from an older version.\n");