-
Notifications
You must be signed in to change notification settings - Fork 0
/
make-target-contrib.sh
executable file
·133 lines (113 loc) · 3.82 KB
/
make-target-contrib.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/sh
set -e
# This is a script to be run as part of make.sh. The only time you'd
# probably want to run it by itself is if you're cross-compiling the
# system or doing some kind of troubleshooting.
# This software is part of the SBCL system. See the README file for
# more information.
#
# This software is derived from the CMU CL system, which was
# written at Carnegie Mellon University and released into the
# public domain. The software is in the public domain and is
# provided with absolutely no warranty. See the COPYING and CREDITS
# files for more information.
echo //entering make-target-contrib.sh
LANG=C
LC_ALL=C
# Just doing CC=${CC:-cc} may be enough, but it needs to be checked
# that cc is available on all platforms.
if [ -z "$CC" ]; then
if [ -x "`command -v cc`" ]; then
CC=cc
else
CC=gcc
fi
fi
unset EXTRA_CFLAGS # avoid any potential interference
export CC LANG LC_ALL
# Load our build configuration
. output/build-config
## All programs spawned by make-target-contrib.sh that use this
## variable or anything derived from it are started with CWD
## contrib/<contrib_name>/. Keeping this a relative pathname to the
## toplevel source directory makes the shell and make portions of the
## build system robust against funny stuff in PWD.
SBCL_TOP="../../"
SBCL_HOME="$SBCL_TOP/obj/sbcl-home"
export SBCL_HOME SBCL_TOP
SBCL="$SBCL_TOP/src/runtime/sbcl --noinform --core $SBCL_TOP/output/sbcl.core \
--lose-on-corruption --disable-debugger --no-sysinit --no-userinit"
SBCL_BUILDING_CONTRIB=1
export SBCL SBCL_BUILDING_CONTRIB
# deleting things here lets us not worry about interaction with stale
# fasls. This is not good, but is better than :FORCE on each asdf
# operation, because that causes multiple builds of base systems such
# as SB-RT and SB-GROVEL, but FIXME: there's probably a better
# solution. -- CSR, 2003-05-30
if [ -z "$DONT_CLEAN_SBCL_CONTRIB" ] ; then
rm -fr obj/sbcl-home/contrib/
rm -fr obj/asdf-cache/
fi
find output -name 'building-contrib.*' -print | xargs rm -f
# Ignore all source registries.
if [ -z "$*" ]; then
$GNUMAKE $SBCL_MAKE_JOBS -C contrib
else
for x in "$@"; do
$GNUMAKE -C contrib $x.fasl
done
fi
# Otherwise report expected failures:
HEADER_HAS_BEEN_PRINTED=false
for dir in `cd ./obj/asdf-cache/ ; echo *`; do
f="obj/asdf-cache/$dir/build-passed.test-report"
if test -f "$f" && grep -i fail "$f" >/dev/null; then
if ! $HEADER_HAS_BEEN_PRINTED; then
cat <<EOF
Note: Build failures which are expected for this combination of
platform and features have been ignored:
EOF
HEADER_HAS_BEEN_PRINTED=true
fi
echo " contrib/$dir"
(unset IFS; while read line; do echo " $line"; done <"$f")
fi
done
if [ -z "$*" ]; then
contrib_candidates="`cd ./contrib ; echo *`"
else
contrib_candidates=="$*"
fi
# Filter out candidates that are not actually contribs and skip those that
# have been blocked explicitly with a --without-CONTRIB argument to
# make.sh.
contrib_dirs=""
for candidate in $contrib_candidates
do
if [ -d "contrib/$candidate" -a -f "contrib/$candidate/Makefile" ]; then
case $SBCL_CONTRIB_BLOCKLIST in
*"$candidate"*) ;;
*) contrib_dirs="$contrib_dirs $candidate" ;;
esac
fi
done
# Sometimes people used to see the "No tests failed." output from the last
# DEFTEST in contrib self-tests and think that's all that is. So...
HEADER_HAS_BEEN_PRINTED=false
for dir in $contrib_dirs
do
if [ ! -f "obj/asdf-cache/$dir/build-passed.test-report" ]; then
if $HEADER_HAS_BEEN_PRINTED; then
echo > /dev/null
else
cat <<EOF
WARNING! Some of the contrib modules did not build successfully. Failed contribs:"
EOF
HEADER_HAS_BEEN_PRINTED=true
fi
echo " $dir"
fi
done
if [ $HEADER_HAS_BEEN_PRINTED = true ]; then
exit 1
fi