aboutsummaryrefslogtreecommitdiff
path: root/spec2xxx-install
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