3 # This script automates most of the process on making a new release.
8 if test x
"$1" = x-t
; then
13 if test x
"$rel" = xyes
; then
15 perl
-e 'while (<>) { if (m!(.*)//! && $1 !~ / \* /) {print "$ARGV:$.:// comment in C source\n"; exit 1}} continue { close ARGV if eof }' \
17 cavern.h commands.h cmdline.h
date.h datain.h debug.h\
18 filelist.h filename.h getopt.h
hash.h img.c img.h img_hosted.h\
19 listpos.h matrix.h message.h namecmp.h netartic.h netbits.h\
20 netskel.h network.h osalloc.h osdepend.h ostypes.h out.h readval.h str.h\
21 useful.h validate.h whichos.h
24 # Check there are no uncommitted changes.
25 if git commit
-a --dry-run >/dev
/null
2>/dev
/null
; then
26 echo 'There are uncommitted changes - please rectify'
27 echo 'If you just want to test, run with option -t'
31 test ! -f Makefile ||
make distclean
32 cp -u /usr
/share
/misc
/config.guess .
33 cp -u /usr
/share
/misc
/config.sub .
34 mv INSTALL INSTALL.keep
36 mv INSTALL.keep INSTALL
37 .
/configure CC
=gcc CXX
=g
++
38 # Don't error out on new GCC8 and GCC9 warnings for now.
39 make CFLAGS
='-Werror' CXXFLAGS
='-Werror -Wno-error=cast-function-type -Wno-error=deprecated-copy -Wno-error=ignored-qualifiers'
40 VALGRIND
=valgrind
make distcheck VERBOSE
=1
45 # Perform mingw build on a clean unpacked source tree from the release tarball
46 # so that (a) we don't need to "make distclean" on the source tree and (b) we
47 # ensure that any files required to build the mingw version and installer
48 # package are actually shipped in the source tarball.
49 tarball
=`ls -1t survex-1*.tar.gz|head -n1`
50 tardir
=`basename "$tarball" .tar.gz`
55 test -n "$build_platform" || build_platform
=`sh config.guess`
58 /usr
/i686-w64-mingw32
/lib
/wx
/config
/i686-w64-mingw32-msw-unicode-static-3.0 \
59 /usr
/i586-mingw32msvc
/lib
/wx
/config
/i586-mingw32msvc-msw-unicode-static-3.0 \
61 if test -z "$wxc" ; then
62 echo "wx-config for mingw not found" >&2
65 if test -x "$wxc" ; then
73 *i686-w64-mingw32-gcc
)
74 # debian mingw package
77 *i586-mingw32msvc-gcc
)
78 # debian mingw32 package
81 *i386-mingw32msvc-gcc
)
82 # debian mingw32 package
86 PATH
=/usr
/$host/bin
:$PATH
88 # Passing -Werror to configure causes AC_CHECK_FUNCS to fail, so pass it to
90 cross_pkg_config_path
=`echo "$wxc"|sed 's,/lib/.*,/lib/pkgconfig,'`
91 PKG_CONFIG_PATH
=$cross_pkg_config_path \
92 PKG_CONFIG_LIBDIR
=$cross_pkg_config_path \
93 .
/configure
--host="$host" --build="$build_platform" WX_CONFIG
="$wxc" \
94 CC
="$CC" CXX
="$CXX" CXXFLAGS
="-g -O2 -fno-strict-aliasing -Werror" \
95 LDFLAGS
='-s -static' LIBS
='-lsqlite3 -lstdc++'
96 make CFLAGS
='-g -O2 -Werror'
100 mv survex-win32-
*.exe ..
103 if test x
"$rel" = xyes
; then
109 VERSION
=`sed 's/^VERSION *= *//p;d' Makefile`
110 FILES
="survex-$VERSION.tar.gz survex-win32-$VERSION.exe"
111 echo "SHA256 checksums:"
116 gpg
--detach-sign --armour "$f"
117 FILES
="$FILES $f.asc"
120 echo "To tag this release and upload it to the webserver, run:"
121 echo git tag
-s -m"'Survex $VERSION'" "v$VERSION"
123 HOST
=thyestes.tartarus.org
124 echo ssh "$HOST" mkdir
/srv
/www
/survex.com
/software
/"$VERSION"
125 echo scp
$FILES "$HOST":/srv
/www
/survex.com
/software
/"$VERSION"