Fix punctuation typo
[survex.git] / make_release
blob2f6d219bba5f8e4ed9c722be7de95d6be7cb2017
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 # Check there are no uncommitted changes.
15 if git commit -a --dry-run >/dev/null 2>/dev/null ; then
16 echo 'There are uncommitted changes - please rectify'
17 echo 'If you just want to test, run with option -t'
18 exit 1
21 test ! -f Makefile || make distclean
22 cp -u /usr/share/misc/config.guess .
23 cp -u /usr/share/misc/config.sub .
24 mv INSTALL INSTALL.keep
25 autoreconf --force -i
26 mv INSTALL.keep INSTALL
27 ./configure CC=gcc CXX=g++
28 # Don't error out on new GCC8 and GCC9 warnings for now.
29 make CFLAGS='-Werror' CXXFLAGS='-Werror -Wno-error=cast-function-type -Wno-error=deprecated-copy -Wno-error=ignored-qualifiers'
30 VALGRIND=valgrind make distcheck VERBOSE=1
31 else
32 make dist
35 # Perform mingw build on a clean unpacked source tree from the release tarball
36 # so that (a) we don't need to "make distclean" on the source tree and (b) we
37 # ensure that any files required to build the mingw version and installer
38 # package are actually shipped in the source tarball.
39 tarball=`ls -1t survex-1*.tar.gz|head -n1`
40 tardir=`basename "$tarball" .tar.gz`
41 rm -rf "$tardir"
42 tar xf "$tarball"
43 cd "$tardir"
45 test -n "$build_platform" || build_platform=`sh config.guess`
46 SAVE_PATH=$PATH
47 for wxc in \
48 /usr/i686-w64-mingw32/lib/wx/config/i686-w64-mingw32-msw-unicode-static-3.2 \
49 /usr/i686-w64-mingw32/lib/wx/config/i686-w64-mingw32-msw-unicode-static-3.1 \
50 /usr/i686-w64-mingw32/lib/wx/config/i686-w64-mingw32-msw-unicode-static-3.0 \
51 /usr/i586-mingw32msvc/lib/wx/config/i586-mingw32msvc-msw-unicode-static-3.0 \
52 "" ; do
53 if test -z "$wxc" ; then
54 echo "wx-config for mingw not found" >&2
55 exit 1
57 if test -x "$wxc" ; then
58 CC=`$wxc --cc`
59 CXX=`$wxc --cxx`
60 break
62 done
63 host=mingw
64 case $CC in
65 *i686-w64-mingw32-gcc)
66 # debian mingw package
67 host=i686-w64-mingw32
69 *i586-mingw32msvc-gcc)
70 # debian mingw32 package
71 host=i586-mingw32msvc
73 *i386-mingw32msvc-gcc)
74 # debian mingw32 package
75 host=i386-mingw32msvc
77 esac
78 PATH=/usr/$host/bin:$PATH
80 # Passing -Werror to configure causes AC_CHECK_FUNCS to fail, so pass it to
81 # make instead.
82 cross_pkg_config_path=`echo "$wxc"|sed 's,/lib/.*,/lib/pkgconfig,'`
83 PKG_CONFIG_PATH=$cross_pkg_config_path \
84 PKG_CONFIG_LIBDIR=$cross_pkg_config_path \
85 ./configure --host="$host" --build="$build_platform" WX_CONFIG="$wxc" \
86 CC="$CC" CXX="$CXX" CXXFLAGS="-g -O2 -fno-strict-aliasing -Werror" \
87 LDFLAGS='-s -static' LIBS='-lsqlite3 -lstdc++'
88 make CFLAGS='-g -O2 -Werror'
89 make mingw_iss
90 PATH=$SAVE_PATH
92 mv survex-win32-*.exe ..
93 cd ..
95 if test x"$rel" = xyes ; then
96 rm -rf "$tardir"
97 else
98 exit 0
101 VERSION=`sed 's/^VERSION *= *//p;d' Makefile`
102 FILES="survex-$VERSION.tar.gz survex-win32-$VERSION.exe"
103 echo "SHA256 checksums:"
104 sha256sum $FILES
105 echo
107 for f in $FILES ; do
108 gpg --detach-sign --armour "$f"
109 FILES="$FILES $f.asc"
110 done
112 echo "To tag this release and upload it to the webserver, run:"
113 echo git tag -s -m"'Survex $VERSION'" "v$VERSION"
115 HOST=thyestes.tartarus.org
116 echo ssh "$HOST" mkdir /srv/www/survex.com/software/"$VERSION"
117 echo scp $FILES "$HOST":/srv/www/survex.com/software/"$VERSION"