From: Markus Armbruster Date: Sat, 2 Sep 2017 15:18:30 +0000 (+0200) Subject: Make: Support shallow git clones for testing X-Git-Tag: v4.4.0~10 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=5e1b590867504e3361d73378a3f2ec39ea3665db Make: Support shallow git clones for testing Since commit 1ec9b94, we derive the version number from git tags with build-aux/git-version-gen. When a shallow clone doesn't include a suitable tag, this fails, and make refuses to build anything. Since Travis uses git-clone --depth=50, it'll break as soon as we've got more than 50 commits since the last release. Support arbitrarily shallow clones for limited purposes like testing by falling back from a proper V.N-H version number to UNKNOWN-H. To guard against use of such builds for other purposes, log a warning on server startup, and print one on player login. Signed-off-by: Markus Armbruster --- diff --git a/Make.mk b/Make.mk index b08596470..1f6f5af54 100644 --- a/Make.mk +++ b/Make.mk @@ -48,12 +48,16 @@ all: ifeq ($(revctrl),git) src := $(shell cd $(srcdir) && git ls-files | uniq) version := $(shell cd $(srcdir) && build-aux/git-version-gen /dev/null) +ifeq ($(version),UNKNOWN) +$(warning cannot figure out version number, falling back to git hash) +version := UNKNOWN-$(shell cd $(srcdir) && git-rev-parse --verify --short HEAD || echo "UNKNOWN") +endif else include $(srcdir)/sources.mk version := $(shell cat $(srcdir)/.tarball-version || echo "UNKNOWN") endif ifeq ($(version),UNKNOWN) -$(error cannot figure out version) +$(error cannot figure out version number) endif dirs := $(sort $(dir $(src))) csrc := $(filter %.c, $(src)) diff --git a/src/lib/player/player.c b/src/lib/player/player.c index 36d11cdb6..bf6e281ae 100644 --- a/src/lib/player/player.c +++ b/src/lib/player/player.c @@ -28,7 +28,7 @@ * * Known contributors to this file: * Steve McClure, 2000 - * Markus Armbruster, 2004-2014 + * Markus Armbruster, 2004-2017 * Ron Koenderink, 2004-2009 */ @@ -42,7 +42,7 @@ #include "optlist.h" #include "player.h" #include "prototypes.h" - +#include "version.h" static int command(void); static int status(void); @@ -63,6 +63,11 @@ player_main(struct player *p) pr("\n" "*** Server configured for testing ***\n" "*** If you see this in a game, it is misconfigured! ***\n"); + else if (strstr(version, "UNKNOWN-")) + pr("\n" + "*** Server version is unknown ***\n" + "*** If you see this in a game, it was built incorrectly! ***\n"); + if (init_nats() < 0) { pr("Server confused, try again later\n"); return; diff --git a/src/server/main.c b/src/server/main.c index 850bc6db0..07f2b5a6d 100644 --- a/src/server/main.c +++ b/src/server/main.c @@ -31,7 +31,7 @@ * Steve McClure, 1996, 1998 * Doug Hay, 1998 * Ron Koenderink, 2004-2009 - * Markus Armbruster, 2005-2014 + * Markus Armbruster, 2005-2017 */ #include @@ -380,6 +380,8 @@ start_server(int flags) logerror("Empire server (pid %d) started", (int)pid); if (running_test_suite) logerror("Configured for testing"); + else if (strstr(version, "UNKNOWN-")) + logerror("Warning: version number unknown"); empth_init((void **)&player, flags); diff --git a/tests/normalize.pl b/tests/normalize.pl index 9330f692d..01c4b274d 100755 --- a/tests/normalize.pl +++ b/tests/normalize.pl @@ -91,7 +91,7 @@ while (<>) { or /^[0-9]+ (sector|ship|plane|unit|nuke|lost item)/)); ### Version - s/(Wolfpack( |\\\\040)Empire( |\\\\040))[0-9][^ "]*/${1}4.4.0/; + s/(Wolfpack( |\\\\040)Empire( |\\\\040))(UNKNOWN-|[0-9])[^ "]*/${1}4.4.0/; ### Formatted time # nat_timeused in prompt s/^\[[0-9]+(:[0-9]+\] Command \:)/[0$1/;