source: git/make_release @ 5e967522

debug-cidebug-ci-sanitisersfaster-cavernlogwalls-datawalls-data-hanging-as-warning
Last change on this file since 5e967522 was d8f00a9, checked in by Olly Betts <olly@…>, 2 years ago

C99 is now a requirement

37d6b84fb1ac772bf44344230af23bba127d321b added a use of VA_ARGS
which is a C99 feature, so we might as well formalise this and stop
worrying about comments in C code.

  • Property mode set to 100755
File size: 3.1 KB
Line 
1#! /bin/sh
2
3# This script automates most of the process on making a new release.
4
5set -e
6
7rel=yes
8if test x"$1" = x-t ; then
9   rel=
10   shift
11fi
12
13if 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
19  fi
20
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
31else
32  make dist
33fi
34
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.
39tarball=`ls -1t survex-1*.tar.gz|head -n1`
40tardir=`basename "$tarball" .tar.gz`
41rm -rf "$tardir"
42tar xf "$tarball"
43cd "$tardir"
44
45test -n "$build_platform" || build_platform=`sh config.guess`
46SAVE_PATH=$PATH
47for wxc in \
48  /usr/i686-w64-mingw32/lib/wx/config/i686-w64-mingw32-msw-unicode-static-3.0 \
49  /usr/i586-mingw32msvc/lib/wx/config/i586-mingw32msvc-msw-unicode-static-3.0 \
50  "" ; do
51  if test -z "$wxc" ; then
52    echo "wx-config for mingw not found" >&2
53    exit 1
54  fi
55  if test -x "$wxc" ; then
56    CC=`$wxc --cc`
57    CXX=`$wxc --cxx`
58    break
59  fi
60done
61host=mingw
62case $CC in
63  *i686-w64-mingw32-gcc)
64    # debian mingw package
65    host=i686-w64-mingw32
66    ;;
67  *i586-mingw32msvc-gcc)
68    # debian mingw32 package
69    host=i586-mingw32msvc
70    ;;
71  *i386-mingw32msvc-gcc)
72    # debian mingw32 package
73    host=i386-mingw32msvc
74    ;;
75esac
76PATH=/usr/$host/bin:$PATH
77
78# Passing -Werror to configure causes AC_CHECK_FUNCS to fail, so pass it to
79# make instead.
80cross_pkg_config_path=`echo "$wxc"|sed 's,/lib/.*,/lib/pkgconfig,'`
81PKG_CONFIG_PATH=$cross_pkg_config_path \
82PKG_CONFIG_LIBDIR=$cross_pkg_config_path \
83  ./configure --host="$host" --build="$build_platform" WX_CONFIG="$wxc" \
84      CC="$CC" CXX="$CXX" CXXFLAGS="-g -O2 -fno-strict-aliasing -Werror" \
85      LDFLAGS='-s -static' LIBS='-lsqlite3 -lstdc++'
86make CFLAGS='-g -O2 -Werror'
87make mingw_iss
88PATH=$SAVE_PATH
89
90mv survex-win32-*.exe ..
91cd ..
92
93if test x"$rel" = xyes ; then
94  rm -rf "$tardir"
95else
96  exit 0
97fi
98
99VERSION=`sed 's/^VERSION *= *//p;d' Makefile`
100FILES="survex-$VERSION.tar.gz survex-win32-$VERSION.exe"
101echo "SHA256 checksums:"
102sha256sum $FILES
103echo
104
105for f in $FILES ; do
106    gpg --detach-sign --armour "$f"
107    FILES="$FILES $f.asc"
108done
109
110echo "To tag this release and upload it to the webserver, run:"
111echo git tag -s -m"'Survex $VERSION'" "v$VERSION"
112
113HOST=thyestes.tartarus.org
114echo ssh "$HOST" mkdir /srv/www/survex.com/software/"$VERSION"
115echo scp $FILES "$HOST":/srv/www/survex.com/software/"$VERSION"
Note: See TracBrowser for help on using the repository browser.