]>
Commit | Line | Data |
---|---|---|
1ad3ae4c JH |
1 | #!/bin/sh |
2 | ||
bd45e1c3 JH |
3 | MASTER=master |
4 | ||
81a1b6df JH |
5 | if test -z "$GIT" |
6 | then | |
7 | case "$(git version 2>/dev/null)" in | |
8 | "git version"*) | |
9 | GIT=git ;; | |
10 | *) | |
11 | echo >&2 "No git to bootstrap" | |
12 | exit 1 ;; | |
13 | esac | |
14 | fi | |
936a95a0 JH |
15 | |
16 | inst_prefix=$( | |
17 | IFS=: | |
18 | for p in $PATH | |
19 | do | |
20 | probed=${p%/git-active/bin} | |
21 | if test "$probed" != "$p" | |
22 | then | |
23 | echo "$probed" | |
24 | exit | |
25 | fi | |
26 | done | |
27 | echo $HOME | |
28 | ) | |
997283a8 | 29 | |
f355f256 | 30 | LANG=C |
c36a8442 | 31 | |
079b34d9 JH |
32 | for cv in PYTHON_PATH=python TCL_PATH=tclsh TCLTKPATH=wish |
33 | do | |
34 | cmd=${cv#*=} | |
35 | var=${cv%=*} | |
36 | eval $( | |
37 | if test -f "/usr/bin/$cmd" | |
38 | then | |
39 | break | |
40 | fi | |
41 | for p in /usr/bin /usr/local/bin | |
42 | do | |
43 | if test -f "$p/$cmd" | |
44 | then | |
45 | echo "$var=$p/$cmd; export $var" | |
46 | break | |
47 | fi | |
48 | found=$(find "$p/$cmd"* -type f 2>/dev/null | head -n 1) | |
49 | if test -f "$found" | |
50 | then | |
51 | echo "$var=$found; export $var" | |
52 | break | |
53 | fi | |
54 | done | |
55 | ) | |
56 | done | |
57 | ||
09537cff | 58 | tests= jobs= skip= oldtest= with_dash= testpen= |
a55cb8ee | 59 | clean=: |
119ae8ad | 60 | |
079b34d9 JH |
61 | case `uname` in |
62 | OpenBSD) | |
3303f663 | 63 | # O="-fgnu89-inline" |
9f15e753 | 64 | skip="t9402" |
a8516ddd | 65 | ;; |
94b7fd87 JH |
66 | NetBSD) |
67 | OLD_ICONV=YesPlease; export OLD_ICONV | |
68 | skip="t5000 t9402" | |
69 | ;; | |
079b34d9 JH |
70 | FreeBSD) |
71 | OLD_ICONV=YesPlease; export OLD_ICONV | |
ca2a4aa4 | 72 | skip="t5560" |
079b34d9 JH |
73 | ;; |
74 | SunOS) | |
75 | NEEDS_CRYPTO_WITH_SSL=YesPlease ; export NEEDS_CRYPTO_WITH_SSL | |
3303f663 | 76 | NO_PEDANTIC=CannotDo |
079b34d9 JH |
77 | ;; |
78 | esac | |
79 | ||
119ae8ad | 80 | determine_branch () { |
fd9c53d5 JH |
81 | expr "$($GIT symbolic-ref --no-recurse HEAD 2>/dev/null || |
82 | $GIT symbolic-ref HEAD 2>/dev/null)" : 'refs/heads/\(.*\)' || | |
119ae8ad JH |
83 | echo detached |
84 | } | |
85 | ||
86 | determine_version () { | |
87 | v=`$GIT describe HEAD` | |
88 | expr "$v" : '.*-g[0-9a-f]*$' >/dev/null && { | |
89 | echo >&2 "You are on 'snap' but $v is not an official version." | |
90 | exit 1 | |
91 | } | |
92 | echo "$v" | |
93 | } | |
94 | ||
95 | determine_long_version () { | |
96 | $GIT describe HEAD 2>/dev/null || echo unknown-g00000000 | | |
97 | sed -e 's/-/./g' | |
98 | } | |
99 | ||
ddc2105c JH |
100 | BUILTIN_CLEAN_FIX=8687f777 |
101 | if ! git merge-base --is-ancestor $BUILTIN_CLEAN_FIX HEAD | |
102 | then | |
103 | NO_PEDANTIC=YesPlease | |
104 | fi | |
105 | ||
3303f663 | 106 | DEVELOPER= |
d1eae690 JH |
107 | case "$NO_PEDANTIC" in |
108 | ?*) ;; | |
109 | '') | |
3303f663 JH |
110 | DEVELOPER=1 |
111 | ;; | |
112 | 'not-used-anymore') | |
bafe7fb3 | 113 | # PEDANT="-Wtypedef-redefinition $PEDANT" |
364297f9 | 114 | PEDANT="-Werror -Wold-style-definition $PEDANT" |
d1eae690 JH |
115 | PEDANT="-Wpointer-arith -Woverflow -Wunused $PEDANT" |
116 | PEDANT="-Wold-style-declaration -Wstrict-prototypes $PEDANT" | |
3303f663 | 117 | PEDANT="-Wstrict-prototypes $PEDANT" |
d1eae690 JH |
118 | ;; |
119 | esac | |
120 | ||
ef4ede09 JH |
121 | while case $# in 0) break ;; esac |
122 | do | |
123 | case "$1" in | |
d1eae690 JH |
124 | --pedantic) |
125 | echo >&2 "(no need to say --pedantic)" | |
ef4ede09 | 126 | ;; |
f5d9ae24 | 127 | -j*) |
96d720e4 JH |
128 | case "$NO_JOBS" in |
129 | ?*) jobs= ;; | |
130 | '') jobs=$1 ;; | |
131 | esac | |
f5d9ae24 | 132 | ;; |
007cb031 JH |
133 | -noprove | --noprove) |
134 | oldtest=t | |
135 | ;; | |
f355f256 | 136 | -loose | --loose) |
3303f663 | 137 | DEVELOPER= PEDANT= |
3169eb47 | 138 | ;; |
3135db2b JH |
139 | --memtrash) |
140 | testpen=testpen.$$ | |
141 | ;; | |
142 | --memtrash=*) | |
143 | testpen=testpen.${1#--memtrash=} | |
144 | ;; | |
f355f256 JH |
145 | --locale=*) |
146 | LANG=${1#*=} | |
147 | ;; | |
148 | --test=*) | |
149 | tests=$( | |
150 | cd t && | |
3c5a7dd0 | 151 | IFS="$IFS," |
f355f256 JH |
152 | for t in ${1#*=} |
153 | do | |
154 | eval echo "t$t-*.sh" | |
155 | done | tr '\012' ' ' | |
156 | ) | |
157 | ;; | |
d4ebbfcb JH |
158 | --long) |
159 | GIT_TEST_LONG=YesPlease | |
160 | export GIT_TEST_LONG | |
161 | ;; | |
49781092 JH |
162 | --dash) |
163 | with_dash=y | |
164 | ;; | |
f7ad3c78 JH |
165 | --) |
166 | shift | |
167 | break | |
168 | ;; | |
169 | -*) | |
ef4ede09 JH |
170 | echo >&2 "Eh $1?" |
171 | exit 1 | |
172 | ;; | |
f7ad3c78 JH |
173 | *) |
174 | break | |
175 | ;; | |
ef4ede09 JH |
176 | esac |
177 | shift | |
178 | done | |
3135db2b JH |
179 | |
180 | if test -n "$testpen" | |
181 | then | |
182 | for TRASH in /dev/shm /tmp "" | |
183 | do | |
184 | if test -n "$TRASH" && | |
185 | mkdir -p "$TRASH/$testpen" 2>/dev/null && | |
186 | test -w "$TRASH/$testpen" | |
187 | then | |
a55cb8ee JH |
188 | testpen=$(cd "$TRASH/$testpen" && /bin/pwd) |
189 | TRASH="--root=$testpen" | |
190 | clean="$clean; rmdir '$testpen'" | |
3135db2b JH |
191 | break |
192 | fi | |
193 | done | |
194 | GIT_TEST_OPTS="$TRASH${GIT_TEST_OPTS+" $GIT_TEST_OPTS"}" | |
195 | export GIT_TEST_OPTS | |
196 | fi | |
197 | ||
49781092 JH |
198 | test -f /bin/dash || with_dash= |
199 | ||
ca2a4aa4 JH |
200 | if test -z "$tests" && test -n "$skip" |
201 | then | |
2c14e53b JH |
202 | GIT_SKIP_TESTS="${GIT_SKIP_TESTS:-$skip}" |
203 | export GIT_SKIP_TESTS | |
ca2a4aa4 | 204 | fi |
007cb031 JH |
205 | if test -z "$oldtest" && |
206 | sh -c 'prove --version >/dev/null 2>&1' && | |
7e62b4a7 JH |
207 | sh -c 'prove --exec : >/dev/null 2>&1' |
208 | then | |
bafe7fb3 | 209 | # --state=slow,save |
232e2967 JH |
210 | DEFAULT_TEST_TARGET=prove |
211 | GIT_PROVE_OPTS="${GIT_PROVE_OPTS:+$GIT_PROVE_OPTS }--timer $jobs" | |
212 | export DEFAULT_TEST_TARGET GIT_PROVE_OPTS | |
7e62b4a7 | 213 | fi |
ca2a4aa4 | 214 | |
f355f256 JH |
215 | LC_ALL=$LANG |
216 | export LANG LC_ALL | |
217 | ||
119ae8ad | 218 | branch=$(determine_branch) |
936a95a0 JH |
219 | |
220 | case "$branch" in | |
bd45e1c3 | 221 | next | maint | $MASTER | seen | jch) |
936a95a0 JH |
222 | prefix="$inst_prefix/git-$branch" |
223 | ;; | |
224 | snap) | |
119ae8ad | 225 | v=$(determine_version) |
936a95a0 JH |
226 | prefix="$inst_prefix/git-snap-$v" |
227 | ;; | |
228 | *) | |
229 | prefix="$inst_prefix/git-test" ;; | |
230 | esac | |
936a95a0 | 231 | |
a55cb8ee | 232 | clean="$clean; rm -f version" |
119ae8ad | 233 | determine_long_version >version |
389f8450 | 234 | |
49781092 JH |
235 | set "prefix=$prefix" "$@" |
236 | if test -n "$with_dash" && test -f /bin/dash | |
237 | then | |
238 | set "SHELL_PATH=/bin/dash" "$@" | |
239 | fi | |
240 | ||
af5df88c JH |
241 | if grep >/dev/null DC_SHA1 Makefile |
242 | then | |
243 | SHA1IMPLEMENTATION=DC_SHA1=YesPlease | |
244 | elif grep >/dev/null BLK_SHA1 Makefile | |
245 | then | |
246 | SHA1IMPLEMENTATION=BLK_SHA1=YesPlease | |
247 | else | |
248 | SHA1IMPLEMENTATION= | |
249 | fi | |
250 | ||
e16743dc JH |
251 | if test -f sha256/nettle.h && test -f /usr/include/nettle/sha2.h |
252 | then | |
253 | SHA1IMPLEMENTATION="$SHA1IMPLEMENTATION NETTLE_SHA256=YesPlease" | |
254 | fi | |
255 | ||
49781092 | 256 | set MAN_BASE_URL='"http://www.kernel.org/pub/software/scm/git/docs/"' \ |
af1e5c2a | 257 | MAN_BOLD_LITERAL=YesPlease \ |
af5df88c | 258 | $SHA1IMPLEMENTATION \ |
49781092 | 259 | GNU_ROFF=YesPlease \ |
3d153c53 | 260 | USE_LIBPCRE=YesPlease \ |
49781092 | 261 | "$@" |
cce1400a | 262 | |
6f5eea98 | 263 | # Platform hack |
f7ba48ed JH |
264 | if test -z "${make:+set}" && { |
265 | test -x /usr/local/bin/gmake || | |
bf6bbec6 | 266 | test -x /usr/pkg/bin/gmake || |
f7ba48ed JH |
267 | test -x /usr/bin/gmake |
268 | } | |
6f5eea98 JH |
269 | then |
270 | make=gmake | |
271 | fi | |
3dc11f3b JH |
272 | if test -f /bin/ginstall |
273 | then | |
274 | set INSTALL=ginstall "$@" | |
275 | fi | |
6f5eea98 | 276 | |
92fb5638 JH |
277 | unset SSH_AGENT_PID SSH_CLIENT SSH_TTY SSH_AUTH_SOCK SSH_CONNECTION \ |
278 | GPG_AGENT_INFO GNOME_KEYRING_CONTROL GNOME_KEYRING_PID \ | |
279 | XDG_SESSION_COOKIE XDG_SESSION_PATH XDG_SEAT_PATH XDG_DATA_DIRS \ | |
280 | PGPPATH AUTO_PROXY WINDOWID SESSION_MANAGER XDG_CONFIG_DIRS STY \ | |
281 | GDMSESSION KRB5CCNAME GNOME_DESKTOP_SESSION_ID \ | |
282 | DBUS_SESSION_BUS_ADDRESS LESSOPEN WINDOW DISPLAY GTK_IM_MODULE \ | |
283 | XDG_CURRENT_DESKTOP LESSCLOSE XAUTHORITY | |
284 | ||
3303f663 JH |
285 | # O=-fsanitize=address Meta/Make |
286 | ||
49781092 JH |
287 | ${make-make} \ |
288 | $jobs \ | |
167e415e | 289 | ETC_GITCONFIG=$prefix/etc/gitconfig \ |
3303f663 | 290 | ${DEVELOPER:+"DEVELOPER=YesPlease"} \ |
eb5e54d8 JH |
291 | SPATCH_FLAGS="--all-includes --recursive-includes --patch ." \ |
292 | SPATCH_BATCH_SIZE=16 \ | |
293 | CFLAGS="-g -Wall -Wunused -Wdeclaration-after-statement -std=gnu99${O:+ $O}" \ | |
f355f256 | 294 | ${tests:+"T=$tests"} \ |
1ad3ae4c | 295 | "$@" |
efdc54a8 | 296 | status=$? |
a55cb8ee | 297 | eval "$clean" |
efdc54a8 | 298 | exit $status |