| #!/bin/bash |
| |
| # |
| # This file creates dist tarball. |
| # Optional autotools patches are applied for better toolchains |
| # compatibility. |
| # |
| # Based on Debian SID baseline files as of April 2023. |
| # |
| |
| if ! grep -Eq -e '^PRETTY_NAME="Debian GNU/Linux 12 \(bookworm\)"$' /etc/os-release |
| then |
| echo "Only Debian 'bookworm' is supported by this script." >&2 |
| exit 1 |
| fi |
| |
| if ! autoconf --version | head -1 | grep -Eq -e ' 2\.71$' - |
| then |
| echo "The only supported autoconf version is 2.71." >&2 |
| exit 1 |
| fi |
| |
| |
| tooldir=$(dirname $BASH_SOURCE) || exit 2 |
| test -n "$tooldir" || exit 2 |
| cd "$tooldir" || exit 2 |
| tooldir="$PWD" || exit 2 |
| cd "${tooldir}/.." || exit 2 |
| rootsrcdir="$PWD" || exit 2 |
| |
| # Cleanup sources |
| echo '' |
| echo '*** Performing initial cleanup...' |
| echo '' |
| if [[ ! -f 'Makefile' ]] || ! make maintainer-clean |
| then |
| # Makefile needed for initial cleanup |
| if [[ ! -f 'Makefile.in' ]] || [[ ! -f 'configure' ]] || ! ./configure || ! make maintainer-clean |
| then |
| rm -f po/Makefile || exit 3 |
| # Build 'configure' to build Makefile for initial cleanup |
| autoreconf -fvi || exit 3 |
| ./configure || exit 3 |
| make maintainer-clean || exit 3 |
| fi |
| fi |
| echo '' |
| echo '** Initial cleanup completed.' |
| echo '' |
| |
| # Copy latest autotools files |
| echo '' |
| echo '*** Copying autotools files...' |
| echo '' |
| autoreconf -fvi || exit 4 |
| echo '' |
| echo '*** Performing intermediate cleanup...' |
| echo '' |
| ./configure || exit 4 |
| make distclean || exit 4 |
| rm -f ./configure ./aclocal.m4 || exit 4 |
| rm -rf ./autom4te.cache || exit 4 |
| echo '' |
| echo '** Intermediate cleanup completed.' |
| echo '' |
| |
| # Patching local autotools files |
| echo '' |
| echo '*** Performing patching of local autotools files...' |
| echo '' |
| "$tooldir/fixes-libtool/apply-all.sh" || exit 5 |
| "$tooldir/fixes-autoconf/apply-all.sh" || exit 5 |
| echo '' |
| echo '** Local autotools files patched.' |
| echo '' |
| |
| # Build the configure and the related files with patches |
| echo '' |
| echo '*** Building patched configure and related files...' |
| echo '' |
| autoreconf -v || exit 6 |
| echo '' |
| echo '** Patched build system ready.' |
| echo '' |
| |
| # Build the configure and the related files with patches |
| |
| have_command() |
| { |
| command -v "$1" >/dev/null 2>&1 |
| } |
| |
| echo '' |
| echo '*** Building dist tarball...' |
| echo '' |
| ./configure || exit 7 |
| if have_command zopfli; then |
| make dist-custm2 'ARC_CMD=zopfli -v --gzip --i15' 'ARC_EXT=tar.gz' || exit 7 |
| else |
| make dist || exit 7 |
| echo '* zopfli is not installed, tarball size is suboptimal.' |
| fi |
| echo '' |
| echo '** Dist tarball ready.' |
| echo '' |
| |
| exit 0 |