X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=bootstrap;h=b4f5b4dc3d3374daa3d967b4200d583d34d27817;hb=612704d69e365b8715804d41a57e533f227862bd;hp=f13919ba8a8fe50fb2df15a3f9341c888eaa6969;hpb=5126e9d42b24a0a6cf26de79b65bcd23790dee9b;p=oweals%2Fgnunet.git diff --git a/bootstrap b/bootstrap index f13919ba8..b4f5b4dc3 100755 --- a/bootstrap +++ b/bootstrap @@ -1,9 +1,121 @@ #!/bin/sh -rm -rf libltdl -echo -n "checking for libtoolize / libtool... " -which glibtoolize || which libtoolize || which libtool || { - echo "*** No libtoolize (libtool) or libtool found, please install it ***" +# +# We should use /usr/bin/env sh, but some systems are notoriously picky. +# In fact we could ommit this line if some automations wouldn't rely on +# running this file via ./bootstrap. +# +# This file is in the public domain. +# SPDX-License-Identifier: 0BSD +# +# We can't set -eu because we encounter warnings which +# result in stops, whereas the warnings can for now be +# safely ignored. +# set -eu + +cleanup() +{ + echo "Removing folder 'libltdl'..." + rm -rf libltdl +} + +errmsg='' + +# Check if shell supports builtin 'type'. +if test -z "$errmsg"; then + if ! (eval 'type type') >/dev/null 2>&1 + then + errmsg='Shell does not support type builtin' + exit 1 + fi +fi + +# This is more portable than `which' but comes with +# the caveat of not(?) properly working on busybox's ash: +existence() +{ + type "$1" >/dev/null 2>&1 +} + +check_uncrustify() +{ + if existence uncrustify; then + echo "Installing uncrustify hook and configuration" + ln -fs contrib/build-common/conf/uncrustify.cfg uncrustify.cfg 2> /dev/null + ln -fs contrib/build-common/conf/uncrustify_precommit .git/hooks/pre-commit 2> /dev/null + else + echo "Uncrustify not detected, hook not installed." + echo "Please install uncrustify if you plan on doing development" + fi +} + +# yapf can be a suffixed binary, don't change the essential logic +# of this if you change it. +check_yapf() +{ + if existence yapf || \ + existence yapf3.0 || \ + existence yapf3.1 || \ + existence yapf3.2 || \ + existence yapf3.3 || \ + existence yapf3.4 || \ + existence yapf3.5 || \ + existence yapf3.6 || \ + existence yapf3.7 || \ + existence yapf3.8 || \ + existence yapf3.9 || \ + existence yapf4.0; then + echo "Installing yapf symlink" + ln -fs contrib/build-common/conf/.style.yapf .style.yapf 2> /dev/null + else + echo "yapf not detected, please install yapf if you plan on contributing python code" + fi +} + +check_libtool() +{ + echo "checking for libtoolize / libtool... " + + if existence libtool || \ + existence libtoolize || \ + existence glibtoolize || \ + existence slibtool; then + autoreconf -if + . "bin/pogen.sh" + else + echo "*** No libtoolize (libtool) or libtool found, please install it ***" >&2; exit 1 + fi +} + +submodules() +{ + # Try to update the submodule. Since bootstrap + # is also invoked by distributors, we must + # ignore any failing of this function as we + # could have no outgoing network connection + # in a restricted environment. + if ! git --version >/dev/null; then + echo "git not installed, skipping submodule update" + else + git submodule update --init || true + git submodule update --recursive || true + git submodule sync || true + fi +} + +init_buildcommon_include() +{ + cp contrib/build-common/Makefile.inc contrib/Makefile.inc || true +} + +main() +{ + cleanup + submodules + init_buildcommon_include + check_uncrustify + check_yapf + check_libtool } -autoreconf -if -contrib/pogen.sh + +main "$@"