Remove 3dtopos on "make uninstall"
[survex.git] / make_release
blobc4130b60d9e7136b342a457a8d0d0cffb56474f4
1 #! /bin/sh
3 # This script automates most of the process on making a new release.
5 set -e
7 rel=yes
8 if test x"$1" = x-t ; then
9 rel=
10 shift
13 if test x"$rel" = xyes ; then
14 cd src
15 perl -e 'while (<>) { if (m!(.*)//! && $1 !~ / \* /) {print "$ARGV:$.:// comment in C source\n"; exit 1}} continue { close ARGV if eof }' \
16 *.c \
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
22 cd ..
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'
28 exit 1
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
35 autoreconf --force -i
36 mv INSTALL.keep INSTALL
37 ./configure CC=gcc CXX=g++
38 # Don't error out on new GCC8 warning for now.
39 make CFLAGS='-Werror' CXXFLAGS='-Werror -Wno-error=cast-function-type'
40 VALGRIND=valgrind make distcheck VERBOSE=1
41 else
42 make dist
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`
51 rm -rf "$tardir"
52 tar xf "$tarball"
53 cd "$tardir"
55 test -n "$build_platform" || build_platform=`sh config.guess`
56 SAVE_PATH=$PATH
57 for wxc in \
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 \
60 "" ; do
61 if test -z "$wxc" ; then
62 echo "wx-config for mingw not found" >&2
63 exit 1
65 if test -x "$wxc" ; then
66 CC=`$wxc --cc`
67 CXX=`$wxc --cxx`
68 break
70 done
71 host=mingw
72 case $CC in
73 *i686-w64-mingw32-gcc)
74 # debian mingw package
75 host=i686-w64-mingw32
77 *i586-mingw32msvc-gcc)
78 # debian mingw32 package
79 host=i586-mingw32msvc
81 *i386-mingw32msvc-gcc)
82 # debian mingw32 package
83 host=i386-mingw32msvc
85 esac
86 PATH=/usr/$host/bin:$PATH
88 # Passing -Werror to configure causes AC_CHECK_FUNCS to fail, so pass it to
89 # make instead.
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'
96 make CFLAGS='-g -O2 -Werror'
97 make mingw_iss
98 PATH=$SAVE_PATH
100 mv survex-win32-*.exe ..
101 cd ..
103 if test x"$rel" = xyes ; then
104 rm -rf "$tardir"
105 else
106 exit 0
109 VERSION=`sed 's/^VERSION *= *//p;d' Makefile`
110 FILES="survex-$VERSION.tar.gz survex-win32-$VERSION.exe"
111 echo "SHA1 checksums:"
112 sha1sum $FILES
113 echo
115 for f in $FILES ; do
116 gpg --detach-sign --armour "$f"
117 FILES="$FILES $f.asc"
118 done
120 echo "To tag this release and upload it to the webserver, run:"
121 echo git tag -s -m"'Survex $VERSION'" "$VERSION"
123 HOST=atreus.tartarus.org
124 echo ssh "$HOST" mkdir /srv/www/survex.com/software/"$VERSION"
125 echo scp $FILES "$HOST":/srv/www/survex.com/software/"$VERSION"