| #!/bin/sh | |
| MASTER=master | |
| if test -z "$GIT" | |
| then | |
| case "$(git version 2>/dev/null)" in | |
| "git version"*) | |
| GIT=git ;; | |
| *) | |
| echo >&2 "No git to bootstrap" | |
| exit 1 ;; | |
| esac | |
| fi | |
| inst_prefix=$( | |
| IFS=: | |
| for p in $PATH | |
| do | |
| probed=${p%/git-active/bin} | |
| if test "$probed" != "$p" | |
| then | |
| echo "$probed" | |
| exit | |
| fi | |
| done | |
| echo $HOME | |
| ) | |
| LANG=C | |
| for cv in PYTHON_PATH=python TCL_PATH=tclsh TCLTKPATH=wish | |
| do | |
| cmd=${cv#*=} | |
| var=${cv%=*} | |
| eval $( | |
| if test -f "/usr/bin/$cmd" | |
| then | |
| break | |
| fi | |
| for p in /usr/bin /usr/local/bin | |
| do | |
| if test -f "$p/$cmd" | |
| then | |
| echo "$var=$p/$cmd; export $var" | |
| break | |
| fi | |
| found=$(find "$p/$cmd"* -type f 2>/dev/null | head -n 1) | |
| if test -f "$found" | |
| then | |
| echo "$var=$found; export $var" | |
| break | |
| fi | |
| done | |
| ) | |
| done | |
| tests= jobs= oldtest= with_shell= testpen= silent= | |
| clean=: | |
| determine_branch () { | |
| if test -n "$METAMAKEBRANCH" | |
| then | |
| echo "$METAMAKEBRANCH" | |
| return | |
| fi | |
| expr "$($GIT symbolic-ref --no-recurse HEAD 2>/dev/null || | |
| $GIT symbolic-ref HEAD 2>/dev/null)" : 'refs/heads/\(.*\)' || | |
| echo detached | |
| } | |
| determine_version () { | |
| v=`$GIT describe HEAD` | |
| expr "$v" : '.*-g[0-9a-f]*$' >/dev/null && { | |
| echo >&2 "You are on 'snap' but $v is not an official version." | |
| exit 1 | |
| } | |
| echo "$v" | |
| } | |
| determine_long_version () { | |
| $GIT describe HEAD 2>/dev/null || echo unknown-g00000000 | | |
| sed -e 's/-/./g' | |
| } | |
| BUILTIN_CLEAN_FIX=8687f777 | |
| if ! git merge-base --is-ancestor $BUILTIN_CLEAN_FIX HEAD | |
| then | |
| NO_PEDANTIC=YesPlease | |
| fi | |
| DEVELOPER= | |
| case "$NO_PEDANTIC" in | |
| ?*) ;; | |
| '') | |
| DEVELOPER=1 | |
| ;; | |
| 'not-used-anymore') | |
| # PEDANT="-Wtypedef-redefinition $PEDANT" | |
| PEDANT="-Werror -Wold-style-definition $PEDANT" | |
| PEDANT="-Wpointer-arith -Woverflow -Wunused $PEDANT" | |
| PEDANT="-Wold-style-declaration -Wstrict-prototypes $PEDANT" | |
| PEDANT="-Wstrict-prototypes $PEDANT" | |
| ;; | |
| esac | |
| while case $# in 0) break ;; esac | |
| do | |
| case "$1" in | |
| --pedantic) | |
| echo >&2 "(no need to say --pedantic)" | |
| ;; | |
| -j*) | |
| case "$NO_JOBS" in | |
| ?*) jobs= ;; | |
| '') jobs=$1 ;; | |
| esac | |
| ;; | |
| -s) | |
| silent=-s | |
| ;; | |
| -noprove | --noprove) | |
| oldtest=t | |
| ;; | |
| -loose | --loose) | |
| DEVELOPER= PEDANT= | |
| ;; | |
| --memtrash) | |
| testpen=testpen.$$ | |
| ;; | |
| --memtrash=*) | |
| testpen=testpen.${1#--memtrash=} | |
| ;; | |
| --locale=*) | |
| LANG=${1#*=} | |
| ;; | |
| --test=*) | |
| tests=$( | |
| cd t && | |
| IFS="$IFS," | |
| for t in ${1#*=} | |
| do | |
| eval echo "t$t-*.sh" | |
| done | tr '\012' ' ' | |
| ) | |
| ;; | |
| --long) | |
| GIT_TEST_LONG=YesPlease | |
| export GIT_TEST_LONG | |
| ;; | |
| --bash) | |
| with_shell=/bin/bash | |
| ;; | |
| --dash) | |
| with_shell=/bin/dash | |
| ;; | |
| --ksh) | |
| with_shell=/bin/ksh | |
| ;; | |
| --) | |
| shift | |
| break | |
| ;; | |
| -*) | |
| echo >&2 "Eh $1?" | |
| exit 1 | |
| ;; | |
| *) | |
| break | |
| ;; | |
| esac | |
| shift | |
| done | |
| if test -n "$testpen" | |
| then | |
| for TRASH in /dev/shm /tmp "" | |
| do | |
| if test -n "$TRASH" && | |
| mkdir -p "$TRASH/$testpen" 2>/dev/null && | |
| test -w "$TRASH/$testpen" | |
| then | |
| testpen=$(cd "$TRASH/$testpen" && /bin/pwd) | |
| TRASH="--root=$testpen" | |
| clean="$clean; rmdir '$testpen'" | |
| break | |
| fi | |
| done | |
| GIT_TEST_OPTS="$TRASH${GIT_TEST_OPTS+" $GIT_TEST_OPTS"}" | |
| export GIT_TEST_OPTS | |
| fi | |
| if test -z "$oldtest" && | |
| sh -c 'prove --version >/dev/null 2>&1' && | |
| sh -c 'prove --exec : >/dev/null 2>&1' | |
| then | |
| # --state=slow,save | |
| DEFAULT_TEST_TARGET=prove | |
| GIT_PROVE_OPTS="${GIT_PROVE_OPTS:+$GIT_PROVE_OPTS }--timer $jobs" | |
| export DEFAULT_TEST_TARGET GIT_PROVE_OPTS | |
| fi | |
| LC_ALL=$LANG | |
| export LANG LC_ALL | |
| branch=$(determine_branch) | |
| case "$branch" in | |
| next | maint | $MASTER | seen | jch) | |
| prefix="$inst_prefix/git-$branch" | |
| ;; | |
| snap) | |
| v=$(determine_version) | |
| prefix="$inst_prefix/git-snap-$v" | |
| ;; | |
| *) | |
| prefix="$inst_prefix/git-test" ;; | |
| esac | |
| clean="$clean; rm -f version" | |
| determine_long_version >version | |
| set "prefix=$prefix" "$@" | |
| if test -n "$with_shell" && test -f "$with_shell" | |
| then | |
| set "SHELL_PATH=$with_shell" "SHELL=$with_shell" "$@" | |
| fi | |
| if grep >/dev/null DC_SHA1 Makefile | |
| then | |
| SHA1IMPLEMENTATION=DC_SHA1=YesPlease | |
| elif grep >/dev/null BLK_SHA1 Makefile | |
| then | |
| SHA1IMPLEMENTATION=BLK_SHA1=YesPlease | |
| else | |
| SHA1IMPLEMENTATION= | |
| fi | |
| if test -f sha256/nettle.h && test -f /usr/include/nettle/sha2.h | |
| then | |
| SHA1IMPLEMENTATION="$SHA1IMPLEMENTATION NETTLE_SHA256=YesPlease" | |
| fi | |
| set MAN_BASE_URL='"http://www.kernel.org/pub/software/scm/git/docs/"' \ | |
| $SHA1IMPLEMENTATION \ | |
| USE_ASCIIDOCTOR=YesPlease \ | |
| USE_LIBPCRE=YesPlease \ | |
| "$@" | |
| # Platform hack | |
| if test -z "${make:+set}" && { | |
| test -x /usr/local/bin/gmake || | |
| test -x /usr/pkg/bin/gmake || | |
| test -x /usr/bin/gmake | |
| } | |
| then | |
| make=gmake | |
| fi | |
| if test -f /bin/ginstall | |
| then | |
| set INSTALL=ginstall "$@" | |
| fi | |
| GIT_SKIP_TESTS=${GIT_SKIP_TESTS:+"$GIT_SKIP_TESTS "}"t9999" | |
| export GIT_SKIP_TESTS | |
| unset SSH_AGENT_PID SSH_CLIENT SSH_TTY SSH_AUTH_SOCK SSH_CONNECTION \ | |
| GPG_AGENT_INFO GNOME_KEYRING_CONTROL GNOME_KEYRING_PID \ | |
| XDG_SESSION_COOKIE XDG_SESSION_PATH XDG_SEAT_PATH XDG_DATA_DIRS \ | |
| PGPPATH AUTO_PROXY WINDOWID SESSION_MANAGER XDG_CONFIG_DIRS STY \ | |
| GDMSESSION KRB5CCNAME GNOME_DESKTOP_SESSION_ID \ | |
| DBUS_SESSION_BUS_ADDRESS LESSOPEN WINDOW DISPLAY GTK_IM_MODULE \ | |
| XDG_CURRENT_DESKTOP LESSCLOSE XAUTHORITY | |
| # O=-fsanitize=address Meta/Make | |
| ${make-make} \ | |
| $jobs \ | |
| $silent \ | |
| ETC_GITCONFIG=$prefix/etc/gitconfig \ | |
| ${DEVELOPER:+"DEVELOPER=YesPlease"} \ | |
| SPATCH_FLAGS="--all-includes --recursive-includes --patch ." \ | |
| SPATCH_BATCH_SIZE=16 \ | |
| CFLAGS="-g -Wdeclaration-after-statement ${O:+ $O}" \ | |
| ${tests:+"T=$tests"} ${tests:+UNIT_TESTS=} \ | |
| "$@" | |
| status=$? | |
| eval "$clean" | |
| exit $status |