diff --git a/Buildscr b/Buildscr index 4d86ba6..947102d 100644 --- a/Buildscr +++ b/Buildscr @@ -3,10 +3,17 @@ module puzzles +set Version $(!builddate).$(vcsid) + # Start by substituting the right version number in configure.ac. -in puzzles do perl -i~ -pe 's/rNNNN/r$(revision)/' configure.ac +in puzzles do perl -i~ -pe 's/6.66/$(Version)/' configure.ac in puzzles do rm configure.ac~ +# And put it into the documentation as a versionid. +# use perl to avoid inconsistent behaviour of echo '\v' +in puzzles do perl -e 'print "\n\\versionid Simon Tatham'\''s Portable Puzzle Collection, version $$ARGV[0]\n"' $(Version) >> puzzles.but +in puzzles do perl -e 'print "\n\\versionid Simon Tatham'\''s Portable Puzzle Collection, version $$ARGV[0]\n"' $(Version) >> devel.but + # First build some local binaries, to run the icon build. in puzzles do perl mkfiles.pl -U in puzzles do make @@ -28,7 +35,7 @@ in puzzles do ./mkauto.sh # Build the OS X .dmg archive. delegate osx in puzzles do make -f Makefile.osx clean - in puzzles do make -f Makefile.osx release VER=-DREVISION=$(revision) + in puzzles do make -f Makefile.osx release VER=-DVER=$(Version) return puzzles/Puzzles.dmg enddelegate @@ -36,14 +43,14 @@ enddelegate in puzzles do make -f Makefile.doc clean in puzzles do make -f Makefile.doc chm in puzzles do make -f Makefile.doc # build help file for installer -in puzzles do perl winiss.pl $(revision) gamedesc.txt > puzzles.iss +in puzzles do perl winiss.pl $(Version) gamedesc.txt > puzzles.iss delegate windows # Ignore the poorly controlled return value from HHC, and instead # just test that the output file was generated. in puzzles do hhc puzzles.hhp; test -f puzzles.chm # FIXME: Cygwin alternative? in puzzles do cmd /c 'vcvars32 & nmake -f Makefile.vc clean' - in puzzles do cmd /c 'vcvars32 & nmake -f Makefile.vc VER=-DREVISION=$(revision)' + in puzzles do cmd /c 'vcvars32 & nmake -f Makefile.vc VER=-DVER=$(Version)' # Build installer. in puzzles do iscc puzzles.iss return puzzles/puzzles.chm @@ -76,7 +83,7 @@ in puzzles do chmod +x *.exe #in puzzles do perl wceinf.pl gamedesc.txt > puzzles.inf #delegate windows # in puzzles do cmd /c 'wcearmv4 & nmake -f Makefile.wce clean' -# in puzzles do cmd /c 'wcearmv4 & nmake -f Makefile.wce VER=-DREVISION=$(revision)' +# in puzzles do cmd /c 'wcearmv4 & nmake -f Makefile.wce VER=-DVER=$(Version)' # # Nasty piece of sh here which saves the return code from cabwiz, # # outputs its errors and/or warnings, and then propagates the # # return code back to bob. If only cabwiz could output to @@ -107,7 +114,7 @@ in puzzles do zip -j puzzles.zip winbin/*.exe puzzles.chm puzzles.hlp puzzles.cn # Create the source archive. (That writes the archive into the # _parent_ directory, so be careful when we deliver it.) -in puzzles do ./makedist.sh $(revision) +in puzzles do ./makedist.sh $(Version) ifneq "$(JAVA_UNFINISHED)" "" in puzzles do perl -i~ -pe 'print "!srcdir unfinished/\n" if /!srcdir icons/' Recipe ifneq "$(JAVA_UNFINISHED)" "" in puzzles do ln -s unfinished/group.R . @@ -115,7 +122,7 @@ ifneq "$(JAVA_UNFINISHED)" "" in puzzles do perl mkfiles.pl # Build the Java applets. delegate nestedvm - in puzzles do make -f Makefile.nestedvm NESTEDVM="$$NESTEDVM" VER=-DREVISION=$(revision) + in puzzles do make -f Makefile.nestedvm NESTEDVM="$$NESTEDVM" VER=-DVER=$(Version) return puzzles/*.jar enddelegate @@ -134,7 +141,7 @@ in puzzles do echo "AddType application/octet-stream .chm" > .htaccess in puzzles do echo "AddType application/octet-stream .hlp" >> .htaccess in puzzles do echo "AddType application/octet-stream .cnt" >> .htaccess in . do set -- puzzles*.tar.gz; echo RedirectMatch temp '(.*/)'puzzles.tar.gz '$$1'"$$1" >> puzzles/.htaccess -in puzzles do echo RedirectMatch temp '(.*/)'puzzles-installer.exe '$$1'puzzles-r$(revision)-installer.exe >> .htaccess +in puzzles do echo RedirectMatch temp '(.*/)'puzzles-installer.exe '$$1'puzzles-$(Version)-installer.exe >> .htaccess # Phew, we're done. Deliver everything! deliver puzzles/icons/*-web.png $@ @@ -147,7 +154,7 @@ deliver puzzles/puzzles.chm $@ deliver puzzles/puzzles.hlp $@ deliver puzzles/puzzles.cnt $@ deliver puzzles/puzzles.zip $@ -deliver puzzles/Output/setup.exe puzzles-r$(revision)-installer.exe +deliver puzzles/Output/setup.exe puzzles-$(Version)-installer.exe deliver puzzles/*.jar java/$@ deliver puzzles/js/*.js js/$@ deliver puzzles/html/*.html html/$@ diff --git a/Recipe b/Recipe index e6af51d..0d9e2a3 100644 --- a/Recipe +++ b/Recipe @@ -118,8 +118,6 @@ version.o: version.c version2.def version2.def: FORCE if test -z "$(VER)" && test -f manifest && md5sum -c manifest; then \ cat version.def > version2.def.new; \ - elif test -z "$(VER)" && test -d .svn && svnversion . >/dev/null 2>&1; then \ - echo "-DREVISION=`svnversion .`" >version2.def.new; \ else \ echo "$(VER)" >version2.def.new; \ fi && \ @@ -136,7 +134,7 @@ version2.def: FORCE # backtick expression. We also force rebuilding via a -D option that # makes version.o include empty.h, which we construct ourselves and # touch whenever any source file is updated. -!cflags am version $(VER) -DINCLUDE_EMPTY_H `if test -z "$(VER)" && (cd $(srcdir) && test -f manifest && md5sum -c manifest >/dev/null 2>&1); then cat $(srcdir)/version.def; elif test -z "$(VER)" && test -d $(srcdir)/.svn && svnversion $(srcdir) >/dev/null 2>&1; then echo "-DREVISION=\`svnversion $(srcdir)\`"; else echo "$(VER)"; fi` +!cflags am version -DINCLUDE_EMPTY_H `if test -z "$(VER)" && (cd $(srcdir) && test -f manifest && md5sum -c manifest >/dev/null 2>&1); then cat $(srcdir)/version.def; else echo "$(VER)"; fi` !begin am BUILT_SOURCES = empty.h CLEANFILES = empty.h @@ -156,8 +154,6 @@ version.o: version.c version2.def version2.def: FORCE if test -z "$(VER)" && test -f manifest && md5sum -c manifest; then \ cat version.def > version2.def.new; \ - elif test -z "$(VER)" && test -d .svn && svnversion . >/dev/null 2>&1; then \ - echo "-DREVISION=`svnversion .`" >version2.def.new; \ else \ echo "$(VER)" >version2.def.new; \ fi && \ @@ -180,8 +176,6 @@ version.i386.o: version.c version2.def version2.def: FORCE if test -z "$(VER)" && test -f manifest && (md5 -r `awk '{print $$2}' manifest` | diff -w manifest -); then \ cat version.def > version2.def.new; \ - elif test -z "$(VER)" && test -d .svn && svnversion . >/dev/null 2>&1; then \ - echo "-DREVISION=`svnversion .`" >version2.def.new; \ else \ echo "$(VER)" >version2.def.new; \ fi && \ diff --git a/chm.but b/chm.but index a28384d..e023704 100644 --- a/chm.but +++ b/chm.but @@ -19,5 +19,3 @@ \cfg{html-body-end}{} \cfg{html-head-end}{} - -\versionid $Id$ diff --git a/configure.ac b/configure.ac index 4281e96..49dc5c6 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ dnl Configure script for the Unix GTK build of puzzles. -AC_INIT([puzzles], rNNNN, [anakin@pobox.com]) +AC_INIT([puzzles], [6.66], [anakin@pobox.com]) AC_CONFIG_SRCDIR([midend.c]) AM_INIT_AUTOMAKE([foreign]) AC_PROG_CC diff --git a/makedist.sh b/makedist.sh index 3b87bff..65eb519 100755 --- a/makedist.sh +++ b/makedist.sh @@ -2,27 +2,15 @@ # Build a Unix source distribution from the Puzzles SVN area. # -# Pass a numeric argument to have the archive tagged as that SVN -# revision. Otherwise, the script will work it out itself by -# calling `svnversion', or failing that it will not version-tag the +# Pass a version number argument to have the archive tagged with that +# version number. Otherwise, the script will not version-tag the # archive at all. -case "$#" in - 0) - # Ignore errors; if we can't get a version, we'll have a blank - # string. - rev=`svnversion . 2>/dev/null` - if test "x$rev" = "xexported"; then rev=; fi - ;; - *) - case "$1" in *[!0-9M]*) echo "Malformed revision number '$1'">&2;exit 1;;esac - rev="$1" - ;; -esac +version="$1" -if test "x$rev" != "x"; then - arcsuffix="-r$rev" - ver="-DREVISION=$rev" +if test "x$version" != "x"; then + arcsuffix="-$version" + ver="-DVER=$version" else arcsuffix= ver= @@ -45,7 +33,8 @@ for i in *.c *.m *.h *.R *.rc *.but *.plist *.icns LICENCE README Recipe \ HACKING puzzles.txt puzzles.hlp puzzles.cnt puzzles.chm \ icons/Makefile icons/*.{sav,pl,sh} icons/win16pal.xpm \ icons/*.png icons/*.ico icons/*.rc icons/*.c \ - configure.ac mkauto.sh aclocal.m4 configure depcomp install-sh missing; do + configure.ac mkauto.sh aclocal.m4 \ + configure depcomp install-sh missing compile; do case $i in */*) ln -s ../../../$i tmp.$$/puzzles$arcsuffix/$i;; *) ln -s ../../$i tmp.$$/puzzles$arcsuffix/$i;; diff --git a/puzzles.but b/puzzles.but index fb0e482..3d0597f 100644 --- a/puzzles.but +++ b/puzzles.but @@ -36,8 +36,6 @@ See \k{licence} for the licence text in full. \cfg{html-local-head}{} -\versionid $Id$ - \C{intro} Introduction I wrote this collection because I thought there should be more small diff --git a/version.c b/version.c index 590e587..1dde602 100644 --- a/version.c +++ b/version.c @@ -21,9 +21,9 @@ # include "empty.h" #endif -#if defined REVISION +#if defined VER -char ver[] = "Revision: r" STR(REVISION); +char ver[] = "Version: " STR(VER); #else diff --git a/winiss.pl b/winiss.pl index 9e796e0..449916c 100755 --- a/winiss.pl +++ b/winiss.pl @@ -6,15 +6,27 @@ # Usage: # -# $ ./winiss.pl 1234 gamedesc.txt > puzzles.iss +# $ ./winiss.pl 20140922.sdfsdf gamedesc.txt > puzzles.iss # -# where `1234' is the revision number which will be encoded in the -# installer's version indicators. +# where the first argument is the version number which will be encoded +# in the installer's version indicators. The first component of that +# version number will be expected to be a YYYYMMDD-format date. use warnings; +use Time::Local; + +$ver = shift @ARGV; + +# Parse the date out of $ver, and convert it into an integer number of +# days since an arbitrary epoch. This number is used for the Windows +# version resource (which wants a monotonic 16-bit integer). The epoch +# is chosen so that the first build using this date-based mechanism +# has a higher number than the last build in which that number was +# derived from a Subversion revision. +die "bad date format" if $ver !~ /^(\d{4})(\d{2})(\d{2})/; +$date = timegm(0,0,0,$3,$2-1,$1); +$integer_date = int($date / 86400) - 6000; -$rev = shift @ARGV; -($revclean=$rev) =~ s/M$//; $desc = shift @ARGV; open DESC, "<", $desc; while () { @@ -31,10 +43,10 @@ print '; -- Inno Setup installer script for Puzzles.'."\n"; print ''."\n"; print '[Setup]'."\n"; print 'AppName=Simon Tatham\'s Portable Puzzle Collection'."\n"; -print 'AppVerName=Puzzles revision '.$rev."\n"; -print 'VersionInfoTextVersion=Revision '.$rev."\n"; -print 'AppVersion=r'.$rev."\n"; -print 'VersionInfoVersion=0.0.'.$revclean.'.0'."\n"; +print 'AppVerName=Puzzles version '.$ver."\n"; +print 'VersionInfoTextVersion=Version '.$ver."\n"; +print 'AppVersion=r'.$ver."\n"; +print 'VersionInfoVersion=0.0.'.$integer_date.'.0'."\n"; print 'AppPublisher=Simon Tatham'."\n"; print 'AppPublisherURL=http://www.chiark.greenend.org.uk/~sgtatham/puzzles/'."\n"; print 'DefaultDirName={pf}\Simon Tatham\'s Portable Puzzle Collection'."\n";