blob: 12620d052179c2d04cb58a0e01876f206cd5b3d6 (
plain)
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
#!/bin/bash
set -e
dest_dir="`pwd`"
version=""
while getopts "d:s:v" OPTION; do
case $OPTION in
d) dest_dir="$OPTARG" ;;
s) version="$OPTARG" ;;
v) set -x ;;
esac
done
shift $((OPTIND-1))
if [ -e "$dest_dir" ]; then
echo "ERROR: Cannot install into existing directory: $dest_dir"
exit 1
fi
mkdir "$dest_dir"
tarball="$1"
shift
if ! [ -f "$tarball" ]; then
echo "ERROR: Wrong SPEC tarball: $tarball"
exit 1
fi
if [ $# -gt 0 ]; then
echo "ERROR: Extra arguments: $@"
exit 1
fi
if [ x"$version" = x"" ]; then
case "$tarball" in
*"2000"*"1.3"*) version="cpu2000v1.3" ;;
*"2006"*"1.2"*) version="cpu2006v1.2" ;;
esac
fi
case "$version" in
"cpu2000v1.3") ;;
"cpu2006v1.2") ;;
*)
echo UNKNOWN SPEC VERSION TAR: $tar
exit 1
;;
esac
cat $tarball | (cd $dest_dir && tar --strip-components=1 -xJ && chmod -R +w ./)
cpu="$(uname -m)"
case "$cpu" in
"armv8l")
cpu=armv7l
;;
esac
toolstar=""
case "$version" in
"cpu2000v1.3")
case "$cpu" in
"x86_64") arch=linux-glibc22-x86_64 ;;
"ia32") arch=linux-redhat62-ia32 ;;
"armv7l")
arch=linux-armv7l
toolstar=linux-armv7l-122.tar.bz2
;;
"aarch64")
arch=linux-aarch64
toolstar=linux-aarch64-122.tar.bz2
;;
*)
toolstar="build"
;;
esac
;;
"cpu2006v1.2")
case "$cpu" in
"x86_64") arch=linux-suse10-amd64 ;;
"ia32") arch=linux-redhat62-ia32 ;;
"armv7l")
arch=linux-armv7l
toolstar=linux-armv7l-118.tar
;;
"aarch64")
arch=linux-apm-arm64
toolstar=linux-apm-arm64-118.tar
;;
*)
toolstar="build"
;;
esac
;;
esac
case "$toolstar" in
"") ;;
"build")
arch="linux-$cpu"
# Make sure bash is used for building perl
echo "/bin/bash \$@" > $dest_dir/bin/sh
chmod +x $dest_dir/bin/sh
case "$version" in
"cpu2000v1.3")
# Patch up specmd5sum
sed -i -e "/^int/d" -e "/^getline/d" -e "/^getdelim/d" \
$dest_dir/tools/src/specmd5sum/lib/getline.h
# Patch up perl sources
sed -i -e "s#command line#command\.line#" \
$dest_dir/tools/src/perl-5.8.7/makedepend.SH
sed -i -e "/asm\/page.h/d" \
$dest_dir/tools/src/perl-5.8.7/ext/IPC/SysV/SysV.xs
;;
esac
# Find where libm.so and libdl.so are
libpth=$(ssh $target find /usr -name libm.so | sed -e "s#/libm.so##")
# config.guess can be too old to know about new architecture.
configflags="--build=$cpu-unknown-linux-gnu"
ssh $target "cd $dest_dir && PATH=$dest_dir/bin:\$PATH PERLFLAGS='-A libs=-lm -A libs=-ldl -A libs=-lcrypt -Dlibpth=$libpth' CONFIGFLAGS=\"$configflags\" $dest_dir/tools/src/buildtools && . shrc && packagetools $arch"
# Clean up
rm $dest_dir/bin/sh
# Copy newly-built tools to the scripts dir
cp $dest_dir/$arch-*.tar* $(dirname $0)/
;;
*)
case "$version" in
"cpu2000"*)
cat $(dirname $0)/$toolstar \
| (cd $dest_dir && tar -xj && chmod -R +w ./)
;;
"cpu2006"*)
cat $(dirname $0)/$toolstar \
| (cd $dest_dir && tar -x && chmod -R +w ./)
;;
esac
;;
esac
case "$version" in
"cpu2000"*) (cd $dest_dir && ./install.sh $arch) ;;
"cpu2006"*) (cd $dest_dir && ./install.sh -f -u $arch) ;;
esac
case "$version" in
"cpu2006"*)
# Add a Makefile rule that all sources should be generated before
# starting compilation. This works around parallelization problem
# when using rsync-based remote compilation.
echo '$(OBJS): $(FINAL_SOURCES)' >> $dest_dir/benchspec/Makefile.defaults
;;
esac
|