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 <armbru@pond.sub.org>
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))
*
* Known contributors to this file:
* Steve McClure, 2000
- * Markus Armbruster, 2004-2014
+ * Markus Armbruster, 2004-2017
* Ron Koenderink, 2004-2009
*/
#include "optlist.h"
#include "player.h"
#include "prototypes.h"
-
+#include "version.h"
static int command(void);
static int status(void);
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;
* Steve McClure, 1996, 1998
* Doug Hay, 1998
* Ron Koenderink, 2004-2009
- * Markus Armbruster, 2005-2014
+ * Markus Armbruster, 2005-2017
*/
#include <config.h>
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);
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/;