]> git.draconx.ca Git - cdecl99.git/blobdiff - bootstrap
Release 1.3.
[cdecl99.git] / bootstrap
index a9ad6714f4035790cea4e6d7bdc1723d2b0c8ddb..639e6c422526d5eead51ca1f946f85690930372c 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -1,23 +1,71 @@
 #!/bin/sh
+#
+# Copyright © 2011-2012, 2021-2023 Nick Bowler
+#
+# Simple script to get started from a fresh git checkout.
+#
+# License WTFPL2: Do What The Fuck You Want To Public License, version 2.
+# This is free software: you are free to do what the fuck you want to.
+# There is NO WARRANTY, to the extent permitted by law.
 
-trap 'exit 1' USR1
-die() { printf '%s\n' "$@" 1>&2; kill -USR1 $$; }
+scriptname=$0
+
+err() {
+       printf '%s: %s\n' "$scriptname" "$*" 1>&2
+}
+
+die() {
+       err "$@"
+       exit 1
+}
 
 : ${AUTORECONF=autoreconf}
+: ${AUTOMAKE=automake}
 : ${GNULIB=gnulib}
 : ${GIT=git}
 : ${PERL=perl}
 
-$GIT submodule update --init \
-       || echo "Failed to update Gnulib sources from git."
+$GIT submodule update --init || err "Failed to update submodules from git."
 
 if test -x $GNULIB/gnulib-tool; then
-       $GNULIB/gnulib-tool --update -S || die "Failed to update Gnulib."
+  $GNULIB/gnulib-tool --update -S || die "Failed to update Gnulib."
+
+  exec 3>lib/symfiles.tmp 4<lib/symfiles.tmp
+  rm -f lib/symfiles.tmp
+
+  shared_modules='threadlib'
+  set x --extract-recursive-dependencies $shared_modules; shift
+  (set -x; $GNULIB/gnulib-tool "$@" >&3 ) || die "gnulib-tool failed"
+  shared_modules=`LC_ALL=C sort -u <&4`
+
+  set x --extract-filelist $shared_modules; shift
+  ( set -x; $GNULIB/gnulib-tool "$@" >&3 ) || die "gnulib-tool failed"
+  <&4 grep '^lib/.*[.][^vh][^.]*$' | LC_ALL=C sort -u >lib/symfiles
 else
-       die "Gnulib sources are not properly installed in gnulib/."
+  err "Gnulib sources are not properly installed in $GNULIB/"
+  cat >&2 <<'EOF'
+
+To bootstrap this package using an external Gnulib, you can set the GNULIB
+environment variable to indicate the location of the Gnulib sources.
+EOF
+
+  test ! -f configure || cat >&2 <<'EOF'
+
+However, it seems this package is already bootstrapped.  It should not
+normally be necessary to run this script from a release tarball.
+EOF
+  exit 1
 fi
 
-$PERL fix-gnulib.pl -o lib/gnulib.mk -i lib/gnulib.mk.in -m m4/fix-gnulib.m4 \
+$PERL common/scripts/fix-gnulib.pl -o lib/gnulib.mk -i lib/gnulib.mk.in \
        || die "Failed to fixup Gnulib makefile fragment."
 
-$AUTORECONF -fis
+# Punt some automake-generated files so that Gentoo's wrapper script doesn't
+# try to detect the automake version in use.
+rm -f Makefile.in aclocal.m4
+$AUTORECONF -fis || exit
+
+amdir=`$AUTOMAKE --print-libdir`
+if test -f "$amdir/INSTALL"; then
+  ln -sf "$amdir/INSTALL" INSTALL
+fi