Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(354)

Side by Side Diff: tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.debian.sh

Issue 1195393006: Update mips sysroot creator script (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/trusted_cross_toolchains/trusted-toolchain-creator.armhf.sh ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 # Copyright (c) 2012 The Native Client Authors. All rights reserved. 2 # Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 # 5 #
6 #@ This script creates the mips trusted SDK. 6 #@ This script creates the mips trusted SDK.
7 #@ It must be run from the native_client directory. 7 #@ It must be run from the native_client directory.
8 8
9 # This script is intended to build a mipsel-linux-gnu cross compilation 9 # This script is intended to build a mipsel-linux-gnu cross compilation
10 # toolchain that runs on x86 linux and generates code for a little-endian, 10 # toolchain that runs on x86 linux and generates code for a little-endian,
11 # hard-float, mips32 target. 11 # hard-float, mips32 target.
12 12
13 ###################################################################### 13 ######################################################################
14 # Config 14 # Config
15 ###################################################################### 15 ######################################################################
16 16
17 set -o nounset 17 set -o nounset
18 set -o errexit 18 set -o errexit
19 19
20 readonly SCRIPT_DIR=$(dirname $0) 20 readonly SCRIPT_DIR=$(dirname $0)
21 readonly NACL_ROOT=$(cd ${SCRIPT_DIR}/../.. && pwd)
21 22
22 readonly MAKE_OPTS="-j8" 23 readonly MAKE_OPTS="-j8"
23 readonly ARCH="mips32" 24 readonly ARCH="mips32"
24 25
25 readonly GMP_URL="http://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.bz2" 26 readonly GMP_URL="http://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.bz2"
26 readonly GMP_SHA1SUM="b35928e2927b272711fdfbf71b7cfd5f86a6b165" 27 readonly GMP_SHA1SUM="b35928e2927b272711fdfbf71b7cfd5f86a6b165"
27 28
28 readonly MPFR_URL="http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.bz2" 29 readonly MPFR_URL="http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.bz2"
29 readonly MPFR_SHA1SUM="46d5a11a59a4e31f74f73dd70c5d57a59de2d0b4" 30 readonly MPFR_SHA1SUM="46d5a11a59a4e31f74f73dd70c5d57a59de2d0b4"
30 31
(...skipping 10 matching lines...) Expand all
41 readonly KERNEL_SHA1SUM="9b094e817a7a9b7c09b5bc268e23de642c6c407a" 42 readonly KERNEL_SHA1SUM="9b094e817a7a9b7c09b5bc268e23de642c6c407a"
42 43
43 readonly GDB_URL="http://ftp.gnu.org/gnu/gdb/gdb-7.7.1.tar.bz2" 44 readonly GDB_URL="http://ftp.gnu.org/gnu/gdb/gdb-7.7.1.tar.bz2"
44 readonly GDB_SHA1SUM="35228319f7c715074a80be42fff64c7645227a80" 45 readonly GDB_SHA1SUM="35228319f7c715074a80be42fff64c7645227a80"
45 46
46 readonly GLIBC_URL="http://ftp.gnu.org/gnu/glibc/glibc-2.19.tar.bz2" 47 readonly GLIBC_URL="http://ftp.gnu.org/gnu/glibc/glibc-2.19.tar.bz2"
47 readonly GLIBC_SHA1SUM="382f4438a7321dc29ea1a3da8e7852d2c2b3208c" 48 readonly GLIBC_SHA1SUM="382f4438a7321dc29ea1a3da8e7852d2c2b3208c"
48 49
49 readonly DOWNLOAD_QEMU_URL="http://wiki.qemu-project.org/download/qemu-2.0.0.tar .bz2" 50 readonly DOWNLOAD_QEMU_URL="http://wiki.qemu-project.org/download/qemu-2.0.0.tar .bz2"
50 51
51 readonly INSTALL_ROOT=$(pwd)/toolchain/linux_x86/mips_trusted 52 readonly OUT_DIR=$(dirname ${NACL_ROOT})/out
52 53 readonly INSTALL_ROOT=${NACL_ROOT}/toolchain/linux_x86/mips_trusted
53 readonly TMP=$(pwd)/toolchain/tmp/crosstool-trusted 54 readonly JAIL_MIPS32=${INSTALL_ROOT}/sysroot
54 55 readonly TMP=${OUT_DIR}/sysroot_mips_trusted
55 readonly BUILD_DIR=${TMP}/build 56 readonly BUILD_DIR=${TMP}/build
56
57 readonly JAIL_MIPS32=${INSTALL_ROOT}/sysroot
58
59 readonly CROSS_TARBALL="chromesdk_linux_mipsel" 57 readonly CROSS_TARBALL="chromesdk_linux_mipsel"
58 readonly TAR_ARCHIVE=${OUT_DIR}/sysroot_mipsel_trusted_jessie.tar.gz
59 readonly PACKAGES="
60 libgcc1
61 libc6
62 libc6-dev
63 libstdc++6
64 libssl1.0.0
65 libssl-dev
66 zlib1g
67 zlib1g-dev
68 "
60 69
61 ###################################################################### 70 ######################################################################
62 # Helper 71 # Helper
63 ###################################################################### 72 ######################################################################
64 73
65 Banner() { 74 Banner() {
66 echo "######################################################################" 75 echo "######################################################################"
67 echo $* 76 echo $*
68 echo "######################################################################" 77 echo "######################################################################"
69 } 78 }
70 79
71 SubBanner() { 80 SubBanner() {
72 echo "......................................................................" 81 echo "......................................................................"
73 echo $* 82 echo $*
74 echo "......................................................................" 83 echo "......................................................................"
75 } 84 }
76 85
86
77 Usage() { 87 Usage() {
78 echo 88 egrep "^#@" $0 | cut --bytes=3-
79 echo "$0 <nacl_sdk|chrome_sdk>"
80 echo
81 echo "nacl_sdk - Build nacl toolchain and package it"
82 echo "chrome_sdk - Build chrome toolchain and package it"
83 echo
84 } 89 }
85 90
86 DownloadOrCopy() { 91 DownloadOrCopy() {
87 local url=$1 92 local url=$1
88 local filename="${TMP}/${url##*/}" 93 local filename="${TMP}/${url##*/}"
89 local filetype="${url%%:*}" 94 local filetype="${url%%:*}"
90 95
91 if [ "${filename}" == "" ]; then 96 if [ "${filename}" == "" ]; then
92 echo "Unknown error occured. Aborting." 97 echo "Unknown error occured. Aborting."
93 exit 1 98 exit 1
94 fi 99 fi
95 100
96 if [[ "${filetype}" == "http" || ${filetype} == "https" ]] ; then 101 if [[ "${filetype}" == "http" || ${filetype} == "https" ]] ; then
97 if [ ! -f "${filename}" ]; then 102 if [ ! -f "${filename}" ]; then
98 SubBanner "downloading from ${url} -> ${filename}" 103 SubBanner "downloading from ${url} -> ${filename}"
99 wget ${url} -O ${filename} 104 wget ${url} -O ${filename}
105 else
106 SubBanner "using existing file: ${filename}"
100 fi 107 fi
101 else 108 else
102 SubBanner "copying from ${url}" 109 SubBanner "copying from ${url}"
103 cp ${url} ${filename} 110 cp ${url} ${filename}
104 fi 111 fi
105 } 112 }
106 113
107 DownloadOrCopyAndVerify() { 114 DownloadOrCopyAndVerify() {
108 local url=$1 115 local url=$1
109 local checksum=$2 116 local checksum=$2
110 local filename="${TMP}/${url##*/}" 117 local filename="${TMP}/${url##*/}"
111 local filetype="${url%%:*}" 118 local filetype="${url%%:*}"
112 119
113 if [ "${filename}" == "" ]; then 120 if [ "${filename}" == "" ]; then
114 echo "Unknown error occured. Aborting." 121 echo "Unknown error occured. Aborting."
115 exit 1 122 exit 1
116 fi 123 fi
117 124
118 if [[ "${filetype}" == "http" || ${filetype} == "https" ]] ; then 125 if [[ "${filetype}" == "http" || ${filetype} == "https" ]] ; then
119 if [ ! -f "${filename}" ]; then 126 if [ ! -f "${filename}" ]; then
120 SubBanner "downloading from ${url} -> ${filename}" 127 SubBanner "downloading from ${url} -> ${filename}"
121 wget ${url} -O ${filename} 128 wget ${url} -O ${filename}
129 else
130 SubBanner "using existing file: ${filename}"
122 fi 131 fi
123 if [ "${checksum}" != "nochecksum" ]; then 132 if [ "${checksum}" != "nochecksum" ]; then
124 if [ "$(sha1sum ${filename} | cut -d ' ' -f 1)" != "${checksum}" ]; then 133 if [ "$(sha1sum ${filename} | cut -d ' ' -f 1)" != "${checksum}" ]; then
125 echo "${filename} sha1sum failed. Deleting file and aborting." 134 echo "${filename} sha1sum failed. Deleting file and aborting."
126 rm -f ${filename} 135 rm -f ${filename}
127 exit 1 136 exit 1
128 fi 137 fi
129 fi 138 fi
130 else 139 else
131 SubBanner "copying from ${url}" 140 SubBanner "copying from ${url}"
(...skipping 24 matching lines...) Expand all
156 echo "Required binary $tool not found." 165 echo "Required binary $tool not found."
157 echo "Exiting." 166 echo "Exiting."
158 exit 1 167 exit 1
159 fi 168 fi
160 done 169 done
161 } 170 }
162 171
163 172
164 ClearInstallDir() { 173 ClearInstallDir() {
165 Banner "clearing dirs in ${INSTALL_ROOT}" 174 Banner "clearing dirs in ${INSTALL_ROOT}"
166 rm -rf ${INSTALL_ROOT}/* 175 rm -rf ${INSTALL_ROOT}
167 mkdir -p ${JAIL_MIPS32} 176 mkdir -p ${INSTALL_ROOT}
168 } 177 }
169 178
170 ClearBuildDir() { 179 ClearBuildDir() {
171 Banner "clearing dirs in ${BUILD_DIR}" 180 Banner "clearing dirs in ${BUILD_DIR}"
172 rm -rf ${BUILD_DIR}/* 181 rm -rf ${BUILD_DIR}/*
173 } 182 }
174 183
175 CreateTarBall() { 184 CreateTarBall() {
176 local tarball=$1 185 Banner "creating tar ball ${TAR_ARCHIVE}"
177 Banner "creating tar ball ${tarball}" 186 tar cfz ${TAR_ARCHIVE} -C ${INSTALL_ROOT} .
178 tar cfz ${tarball}.tgz -C ${INSTALL_ROOT} .
179 } 187 }
180 188
181 189
182 # Download the toolchain source tarballs or use a local copy when available. 190 # Download the toolchain source tarballs or use a local copy when available.
183 DownloadOrCopyAndInstallToolchain() { 191 DownloadOrCopyAndInstallToolchain() {
184 Banner "Installing toolchain" 192 Banner "Installing toolchain"
185 193
186 tarball="${TMP}/${GCC_URL##*/}" 194 tarball="${TMP}/${GCC_URL##*/}"
187 DownloadOrCopyAndVerify ${GCC_URL} ${GCC_SHA1SUM} 195 DownloadOrCopyAndVerify ${GCC_URL} ${GCC_SHA1SUM}
188 SubBanner "extracting from ${tarball}" 196 SubBanner "extracting from ${tarball}"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 249
242 Banner "Preparing the code" 250 Banner "Preparing the code"
243 251
244 # Fix a minor syntax issue in tc-mips.c. 252 # Fix a minor syntax issue in tc-mips.c.
245 local OLD_TEXT="as_warn_where (fragp->fr_file, fragp->fr_line, msg);" 253 local OLD_TEXT="as_warn_where (fragp->fr_file, fragp->fr_line, msg);"
246 local NEW_TEXT="as_warn_where (fragp->fr_file, fragp->fr_line, \"%s\", msg);" 254 local NEW_TEXT="as_warn_where (fragp->fr_file, fragp->fr_line, \"%s\", msg);"
247 local FILE_NAME="${TMP}/binutils-2.24/gas/config/tc-mips.c" 255 local FILE_NAME="${TMP}/binutils-2.24/gas/config/tc-mips.c"
248 sed -i "s/${OLD_TEXT}/${NEW_TEXT}/g" "${FILE_NAME}" 256 sed -i "s/${OLD_TEXT}/${NEW_TEXT}/g" "${FILE_NAME}"
249 257
250 export PATH=${INSTALL_ROOT}/bin:$PATH 258 export PATH=${INSTALL_ROOT}/bin:$PATH
259 local PREFIX_MIPSEL=/usr
260 local PREFIX=/
petarj 2015/06/26 21:58:32 Correct me if I am wrong, but I believe this will
Sam Clegg 2015/06/26 23:13:12 Actually I think the opposite is true. --prefix i
251 261
252 262
253 Banner "Building binutils" 263 Banner "Building binutils"
254 264
255 rm -rf ${BUILD_DIR}/binutils/ 265 rm -rf ${BUILD_DIR}/binutils/
256 mkdir -p ${BUILD_DIR}/binutils/ 266 mkdir -p ${BUILD_DIR}/binutils/
257 pushd ${BUILD_DIR}/binutils/ 267 pushd ${BUILD_DIR}/binutils/
258 268
259 SubBanner "Configuring" 269 SubBanner "Configuring"
260 ${TMP}/binutils-2.24/configure \ 270 ${TMP}/binutils-2.24/configure \
261 --prefix=${INSTALL_ROOT} \ 271 --prefix=${PREFIX} \
petarj 2015/06/26 21:58:32 ${INSTALL_ROOT} instead of $(PREFIX)
262 --target=mipsel-linux-gnu \ 272 --target=mipsel-linux-gnu \
263 --with-sysroot=${JAIL_MIPS32} 273 --with-sysroot=${JAIL_MIPS32}
264 274
265 SubBanner "Make" 275 SubBanner "Make"
266 make ${MAKE_OPTS} all-binutils all-gas all-ld 276 make ${MAKE_OPTS} all-binutils all-gas all-ld
267 277
268 SubBanner "Install" 278 SubBanner "Install"
269 make ${MAKE_OPTS} install-binutils install-gas install-ld 279 make ${MAKE_OPTS} DESTDIR=${INSTALL_ROOT} install-binutils install-gas install -ld
petarj 2015/06/26 21:58:32 No need for DESTDIR=${INSTALL_ROOT} then.
270 280
271 popd 281 popd
272 282
273 283
274 Banner "Building GCC (initial)" 284 Banner "Building GCC (initial)"
275 285
276 rm -rf ${BUILD_DIR}/gcc/initial 286 rm -rf ${BUILD_DIR}/gcc/initial
277 mkdir -p ${BUILD_DIR}/gcc/initial 287 mkdir -p ${BUILD_DIR}/gcc/initial
278 pushd ${BUILD_DIR}/gcc/initial 288 pushd ${BUILD_DIR}/gcc/initial
279 289
280 SubBanner "Configuring" 290 SubBanner "Configuring"
281 ${TMP}/gcc-4.9.0/configure \ 291 ${TMP}/gcc-4.9.0/configure \
282 --prefix=${INSTALL_ROOT} \ 292 --prefix=${PREFIX} \
petarj 2015/06/26 21:58:32 ${INSTALL_ROOT} instead of $(PREFIX)
283 --disable-libssp \ 293 --disable-libssp \
284 --disable-libgomp \ 294 --disable-libgomp \
285 --disable-libmudflap \ 295 --disable-libmudflap \
286 --disable-fixed-point \ 296 --disable-fixed-point \
287 --disable-decimal-float \ 297 --disable-decimal-float \
288 --with-mips-plt \ 298 --with-mips-plt \
289 --with-endian=little \ 299 --with-endian=little \
290 --with-arch=${ARCH} \ 300 --with-arch=${ARCH} \
291 --enable-languages=c \ 301 --enable-languages=c \
292 --with-newlib \ 302 --with-newlib \
293 --without-headers \ 303 --without-headers \
294 --disable-shared \ 304 --disable-shared \
295 --disable-threads \ 305 --disable-threads \
296 --disable-libquadmath \ 306 --disable-libquadmath \
297 --disable-libatomic \ 307 --disable-libatomic \
298 --target=mipsel-linux-gnu 308 --target=mipsel-linux-gnu
299 309
300 SubBanner "Make" 310 SubBanner "Make"
301 make ${MAKE_OPTS} all 311 make ${MAKE_OPTS} all
302 312
303 SubBanner "Install" 313 SubBanner "Install"
304 make ${MAKE_OPTS} install 314 make ${MAKE_OPTS} DESTDIR=${INSTALL_ROOT} install
petarj 2015/06/26 21:58:32 No need for DESTDIR=${INSTALL_ROOT} then.
305 315
306 popd 316 popd
307 317
308 318
309 Banner "Installing Linux kernel headers" 319 Banner "Installing Linux kernel headers"
310 pushd ${TMP}/linux-3.14.2 320 pushd ${TMP}/linux-3.14.2
311 make headers_install ARCH=mips INSTALL_HDR_PATH=${JAIL_MIPS32}/usr 321 make headers_install ARCH=mips INSTALL_HDR_PATH=${JAIL_MIPS32}${PREFIX_MIPSEL}
312 popd 322 popd
313 323
324
314 Banner "Building GLIBC" 325 Banner "Building GLIBC"
315 326
316 rm -rf ${BUILD_DIR}/glibc/final 327 rm -rf ${BUILD_DIR}/glibc/final
317 mkdir -p ${BUILD_DIR}/glibc/final 328 mkdir -p ${BUILD_DIR}/glibc/final
318 pushd ${BUILD_DIR}/glibc/final 329 pushd ${BUILD_DIR}/glibc/final
319 330
320 BUILD_CC=gcc \ 331 BUILD_CC=gcc \
321 AR=mipsel-linux-gnu-ar \ 332 AR=mipsel-linux-gnu-ar \
322 RANLIB=mipsel-linux-gnu-ranlibi \ 333 RANLIB=mipsel-linux-gnu-ranlibi \
323 CC=mipsel-linux-gnu-gcc \ 334 CC=mipsel-linux-gnu-gcc \
324 CXX=mipsel-linux-gnu-g++ \ 335 CXX=mipsel-linux-gnu-g++ \
325 ${TMP}/glibc-2.19/configure \ 336 ${TMP}/glibc-2.19/configure \
326 --prefix=/usr \ 337 --prefix=${PREFIX_MIPSEL} \
327 --enable-add-ons \ 338 --enable-add-ons \
328 --host=mipsel-linux-gnu \ 339 --host=mipsel-linux-gnu \
329 --disable-profile \ 340 --disable-profile \
330 --without-gd \ 341 --without-gd \
331 --without-cvs \ 342 --without-cvs \
332 --build=i686-pc-linux-gnu \ 343 --build=i686-pc-linux-gnu \
333 --with-headers=${JAIL_MIPS32}/usr/include 344 --with-sysroot=${JAIL_MIPS32} \
345 --with-headers=${JAIL_MIPS32}${PREFIX_MIPSEL}/include
334 346
335 SubBanner "Make" 347 SubBanner "Make"
336 make ${MAKE_OPTS} all 348 make ${MAKE_OPTS} all
337 349
338 SubBanner "Install" 350 SubBanner "Install"
339 make ${MAKE_OPTS} install install_root=${JAIL_MIPS32} 351 make ${MAKE_OPTS} DESTDIR=${JAIL_MIPS32} install
340 352
341 popd 353 popd
342 354
343
344 Banner "Building GCC (final)" 355 Banner "Building GCC (final)"
345 356
346 rm -rf ${BUILD_DIR}/gcc/final 357 rm -rf ${BUILD_DIR}/gcc/final
347 mkdir -p ${BUILD_DIR}/gcc/final 358 mkdir -p ${BUILD_DIR}/gcc/final
348 pushd ${BUILD_DIR}/gcc/final 359 pushd ${BUILD_DIR}/gcc/final
349 360
361 export MULTIARCH_DIRNAME=mipsel-linux-gnu
362
350 ${TMP}/gcc-4.9.0/configure \ 363 ${TMP}/gcc-4.9.0/configure \
351 --prefix=${INSTALL_ROOT} \ 364 --prefix=${PREFIX} \
petarj 2015/06/26 21:58:32 --prefix=${INSTALL_ROOT}
352 --disable-libssp \ 365 --disable-libssp \
353 --disable-libgomp \ 366 --disable-libgomp \
354 --disable-libmudflap \ 367 --disable-libmudflap \
355 --disable-fixed-point \ 368 --disable-fixed-point \
356 --disable-decimal-float \ 369 --disable-decimal-float \
357 --with-mips-plt \ 370 --with-mips-plt \
358 --with-endian=little \ 371 --with-endian=little \
359 --with-arch=${ARCH} \ 372 --with-arch=${ARCH} \
360 --target=mipsel-linux-gnu \ 373 --target=mipsel-linux-gnu \
361 --enable-__cxa_atexit \ 374 --enable-__cxa_atexit \
362 --enable-languages=c,c++ \ 375 --enable-languages=c,c++ \
363 --with-sysroot=${JAIL_MIPS32} 376 --enable-multiarch \
377 --with-sysroot=${JAIL_MIPS32} \
378 --includedir=/usr/include/mipsel-linux-gnueabi/
petarj 2015/06/26 21:58:32 --includedir=${INSTALL_ROOT}/usr/include/mipsel-li
Sam Clegg 2015/06/26 23:13:12 Actually I think I can just drop this line.
364 379
365 SubBanner "Make" 380 SubBanner "Make"
366 make ${MAKE_OPTS} all 381 make ${MAKE_OPTS} all
367 382
368 SubBanner "Install" 383 SubBanner "Install"
369 make ${MAKE_OPTS} install 384 make ${MAKE_OPTS} DESTDIR=${INSTALL_ROOT} install
petarj 2015/06/26 21:58:32 No need for DESTDIR=${INSTALL_ROOT}
370 385
371 popd 386 popd
372 387
373 388
374 Banner "Building GDB" 389 Banner "Building GDB"
375 390
376 rm -rf ${BUILD_DIR}/gdb/ 391 rm -rf ${BUILD_DIR}/gdb/
377 mkdir -p ${BUILD_DIR}/gdb/ 392 mkdir -p ${BUILD_DIR}/gdb/
378 pushd ${BUILD_DIR}/gdb/ 393 pushd ${BUILD_DIR}/gdb/
379 394
380 ${TMP}/gdb-7.7.1/configure \ 395 ${TMP}/gdb-7.7.1/configure \
381 --prefix=${INSTALL_ROOT} \ 396 --prefix=${PREFIX} \
petarj 2015/06/26 21:58:32 --prefix=${INSTALL_ROOT}
382 --target=mipsel-linux-gnu 397 --target=mipsel-linux-gnu
383 398
384 SubBanner "Make" 399 SubBanner "Make"
385 make ${MAKE_OPTS} all-gdb 400 make ${MAKE_OPTS} all-gdb
386 401
387 SubBanner "Install" 402 SubBanner "Install"
388 make ${MAKE_OPTS} install-gdb 403 make ${MAKE_OPTS} DESTDIR=${INSTALL_ROOT} install-gdb
petarj 2015/06/26 21:58:32 No need for DESTDIR=${INSTALL_ROOT}.
389 404
390 popd 405 popd
391 } 406 }
392 407
393 408
394 # ---------------------------------------------------------------------- 409 # ----------------------------------------------------------------------
395 # mips32 deb files to complete our code sourcery jail 410 # mips32 deb files to complete our code sourcery jail
396 # ---------------------------------------------------------------------- 411 # ----------------------------------------------------------------------
397 412
398 readonly REPO_DEBIAN=http://ftp.debian.org/debian 413 readonly REPO_DEBIAN=http://ftp.debian.org/debian
399 readonly MIPS32_PACKAGES=${REPO_DEBIAN}/dists/wheezy/main/binary-mipsel/Packages .bz2 414 readonly MIPS32_PACKAGES=${REPO_DEBIAN}/dists/jessie/main/binary-mipsel/Packages .gz
415 readonly PACKAGE_LIST=${SCRIPT_DIR}/packagelist.jessie.mipsel.base
400 416
401 readonly BASE_PACKAGELIST_MIPS32=${SCRIPT_DIR}/packagelist.wheezy.mipsel.base 417 #@
402 readonly EXTRA_PACKAGELIST_MIPS32=${SCRIPT_DIR}/packagelist.wheezy.mipsel.extra 418 #@ GeneratePackageList
403 readonly TMP_BASE_PKG_MIPS32=${TMP}/packagelist.generated.wheezy.mipsel.base 419 #@
404 readonly TMP_EXTRA_PKG_MIPS32=${TMP}/packagelist.generated.wheezy.mipsel.extra 420 GeneratePackageList() {
405 421 Banner "generating package lists for mips32"
406 GeneratePackageLists() { 422 rm -f ${TMP}/Packages.gz
407 local sdk_target=$1
408 local packages=
409 local TMP_PACKAGELIST=
410 Banner "generating ${sdk_target} package lists for mips32"
411 rm -f ${TMP}/Packages.bz2
412 DownloadOrCopy ${MIPS32_PACKAGES} 423 DownloadOrCopy ${MIPS32_PACKAGES}
413 bzcat ${TMP}/Packages.bz2\ 424 zcat ${TMP}/Packages.gz\
414 | egrep '^(Package:|Filename:)' > ${TMP}/Packages_mipsel 425 | egrep '^(Package:|Filename:)' > ${TMP}/Packages_mipsel
415 426
416 if [ ${sdk_target} == "nacl_sdk" ] ; then 427 echo -n > ${PACKAGE_LIST}
417 echo -n > ${TMP_BASE_PKG_MIPS32}
418 TMP_PACKAGELIST=${TMP_BASE_PKG_MIPS32}
419 packages=$(cat ${BASE_PACKAGELIST_MIPS32})
420 elif [ ${sdk_target} == "chrome_sdk" ] ; then
421 echo -n > ${TMP_EXTRA_PKG_MIPS32}
422 TMP_PACKAGELIST=${TMP_EXTRA_PKG_MIPS32}
423 packages=$(cat ${EXTRA_PACKAGELIST_MIPS32})
424 else
425 Banner "ERROR: Packages for \"${sdk_taget}\" not defined."
426 exit -1
427 fi
428 428
429 for pkg in ${packages} ; do 429 for pkg in ${PACKAGES} ; do
430 grep -A 1 "${pkg}\$" ${TMP}/Packages_mipsel\ 430 grep -A 1 "${pkg}\$" ${TMP}/Packages_mipsel\
431 | egrep -o "pool/.*" >> ${TMP_PACKAGELIST} 431 | egrep -o "pool/.*" >> ${PACKAGE_LIST}
432 done 432 done
433 } 433 }
434 434
435 InstallMissingLibraries() { 435 #@
436 local sdk_target=$1 436 #@ InstallPackages
437 #@
438 InstallPackages() {
439 mkdir -p ${JAIL_MIPS32}
437 local DEP_FILES_NEEDED_MIPS32= 440 local DEP_FILES_NEEDED_MIPS32=
438 441 DEP_FILES_NEEDED_MIPS32=$(cat ${PACKAGE_LIST})
439 if [ ${sdk_target} == "nacl_sdk" ] ; then
440 DEP_FILES_NEEDED_MIPS32=$(cat ${TMP_BASE_PKG_MIPS32})
441 elif [ ${sdk_target} == "chrome_sdk" ] ; then
442 DEP_FILES_NEEDED_MIPS32=$(cat ${TMP_EXTRA_PKG_MIPS32})
443 else
444 Banner "ERROR: Target \"${sdk_taget}\" not defined."
445 exit -1
446 fi
447 442
448 for file in ${DEP_FILES_NEEDED_MIPS32} ; do 443 for file in ${DEP_FILES_NEEDED_MIPS32} ; do
449 local package="${TMP}/${file##*/}" 444 local package="${TMP}/${file##*/}"
450 Banner "installing ${file}" 445 Banner "installing ${file}"
451 DownloadOrCopy ${REPO_DEBIAN}/${file} 446 DownloadOrCopy ${REPO_DEBIAN}/${file}
452 SubBanner "extracting to ${JAIL_MIPS32}" 447 SubBanner "extracting to ${JAIL_MIPS32}"
453 dpkg --fsys-tarfile ${package}\ 448 dpkg --fsys-tarfile ${package}\
454 | tar -xvf - --exclude=./usr/share -C ${JAIL_MIPS32} 449 | tar -xvf - --exclude=./usr/share -C ${JAIL_MIPS32}
455 done 450 done
456 } 451 }
457 452
458 # Workaround for missing headers since pkg-config is not working correctly.
459 FixIncludes() {
460 Banner "Fixing includes"
461 pushd ${JAIL_MIPS32}/usr/include/glib-2.0
462 ln -s ../../lib/glib-2.0/include/glibconfig.h .
463 popd
464
465 pushd ${JAIL_MIPS32}/usr/include/gtk-2.0
466 ln -s ../../lib/gtk-2.0/include/gdkconfig.h .
467 popd
468
469 pushd ${JAIL_MIPS32}/usr/include/dbus-1.0/dbus
470 ln -s ../../../lib/dbus-1.0/include/dbus/dbus-arch-deps.h .
471 popd
472 }
473
474 FixLinks() {
475 Banner "Fixing links"
476 pushd ${JAIL_MIPS32}/lib/
477 mv mipsel-linux-gnu/* .
478 rm -rf mipsel-linux-gnu
479 ln -s . mipsel-linux-gnu
480 popd
481
482 pushd ${JAIL_MIPS32}/usr/lib/
483 mkdir -p pkgconfig
484 mv mipsel-linux-gnu/pkgconfig/* pkgconfig/
485 rm -rf mipsel-linux-gnu/pkgconfig
486 mv mipsel-linux-gnu/* .
487 rm -rf mipsel-linux-gnu
488 ln -s . mipsel-linux-gnu
489 popd
490
491 pushd ${JAIL_MIPS32}/usr/lib/
492 rm -f libstdc++.so*
493 ln -s ../../../mipsel-linux-gnu/lib/libstdc++.so.6.0.20 .
494 ln -s libstdc++.so.6.0.20 libstdc++.so.6
495 ln -s libstdc++.so.6.0.20 libstdc++.so
496
497 rm -f libgcc_s.so*
498 ln -s ../../../mipsel-linux-gnu/lib/libgcc_s.so.1 .
499 ln -s libgcc_s.so.1 libgcc_s.so
500 popd
501 }
502
503 FixLibs() {
504 Banner "Fixing libraries"
505
506 readonly liblist="libbz2.so \
507 libcom_err.so \
508 libdbus-1.so \
509 libexpat.so \
510 libglib-2.0.so \
511 libgpg-error.so \
512 libkeyutils.so \
513 libpamc.so \
514 libpam_misc.so \
515 libpam.so \
516 libpci.so \
517 libpcre.so \
518 libpng12.so \
519 libudev.so \
520 libz.so"
521
522 pushd ${JAIL_MIPS32}/usr/lib/
523 for library in ${liblist}; do
524 rm -f ${library}
525 ln -s ../../lib/${library}.[0123] ${library}
526 done
527 popd
528 }
529
530 BuildAndInstallQemu() { 453 BuildAndInstallQemu() {
531 local saved_dir=$(pwd) 454 local saved_dir=$(pwd)
532 local tmpdir="${TMP}/qemu-mips.nacl" 455 local tmpdir="${TMP}/qemu-mips.nacl"
533 local tarball="qemu-2.0.0.tar.bz2" 456 local tarball="qemu-2.0.0.tar.bz2"
534 457
535 Banner "Building qemu in ${tmpdir}" 458 Banner "Building qemu in ${tmpdir}"
536 459
537 rm -rf ${tmpdir} 460 rm -rf ${tmpdir}
538 mkdir ${tmpdir} 461 mkdir ${tmpdir}
539 cd ${tmpdir} 462 cd ${tmpdir}
540 463
541 SubBanner "Downloading" 464 SubBanner "Downloading"
542 wget -c ${DOWNLOAD_QEMU_URL} 465 wget -c ${DOWNLOAD_QEMU_URL}
543 466
544 SubBanner "Untarring" 467 SubBanner "Untarring"
545 tar xf ${tarball} 468 tar xf ${tarball}
546 cd qemu-2.0.0 469 cd qemu-2.0.0
547 470
548 SubBanner "Configuring" 471 SubBanner "Configuring"
549 env -i PATH=/usr/bin/:/bin \ 472 env -i PATH=/usr/bin/:/bin \
550 ./configure \ 473 ./configure \
551 --disable-system \ 474 --disable-system \
552 --enable-linux-user \ 475 --enable-linux-user \
553 --disable-bsd-user \ 476 --disable-bsd-user \
554 --target-list=mipsel-linux-user \ 477 --target-list=mipsel-linux-user \
555 --disable-sdl \ 478 --disable-sdl \
556 --disable-linux-aio 479 --disable-linux-aio
557 480
558 SubBanner "Make" 481 SubBanner "Make"
559 env -i PATH=/usr/bin/:/bin \ 482 env -i PATH=/usr/bin/:/bin make ${MAKE_OPTS}
560 make MAKE_OPTS=${MAKE_OPTS}
561 483
562 SubBanner "Install" 484 SubBanner "Install"
563 cp mipsel-linux-user/qemu-mipsel ${INSTALL_ROOT}/qemu-mips32 485 cp mipsel-linux-user/qemu-mipsel ${INSTALL_ROOT}/qemu-mips32
564 cd ${saved_dir} 486 cd ${saved_dir}
565 cp tools/trusted_cross_toolchains/qemu_tool_mips32.sh ${INSTALL_ROOT} 487 cp tools/trusted_cross_toolchains/qemu_tool_mips32.sh ${INSTALL_ROOT}
566 ln -sf qemu_tool_mips32.sh ${INSTALL_ROOT}/run_under_qemu_mips32 488 ln -sf qemu_tool_mips32.sh ${INSTALL_ROOT}/run_under_qemu_mips32
567 } 489 }
568 490
491 CleanupSysrootSymlinks() {
492 Banner "jail symlink cleanup"
493
494 pushd ${JAIL_MIPS32}
495 find usr/lib -type l -printf '%p %l\n' | while read link target; do
496 # skip links with non-absolute paths
497 if [[ ${target} != /* ]] ; then
498 continue
499 fi
500 echo "${link}: ${target}"
501 case "${link}" in
502 usr/lib/mipsel-linux-gnu/*)
503 # Relativize the symlink.
504 ln -snfv "../../..${target}" "${link}"
505 ;;
506 usr/lib/*)
507 # Relativize the symlink.
508 ln -snfv "../..${target}" "${link}"
509 ;;
510 esac
511 done
512
513 find usr/lib -type l -printf '%p %l\n' | while read link target; do
514 # Make sure we catch new bad links.
515 if [ ! -r "${link}" ]; then
516 echo "ERROR: FOUND BAD LINK ${link}"
517 exit -1
518 fi
519 done
520 popd
521 }
522
523 #@
524 #@ UploadArchive <revision>
525 #@
526 #@ Upload archive to Cloud Storage along with json manifest and
527 #@ update toolchain_revisions to point to new version.
528 #@ This requires write access the Cloud Storage bucket for Native Client.
529 UploadArchive() {
530 local REV=$1
531 local TAR_NAME=$(basename ${TAR_ARCHIVE})
532 local GS_FILE=nativeclient-archive2/toolchain/${REV}/${TAR_NAME}
533 local URL=https://storage.googleapis.com/${GS_FILE}
534 set -x
535 gsutil cp -a public-read ${TAR_ARCHIVE} gs://${GS_FILE}
536 local package_version=build/package_version/package_version.py
537 ${package_version} archive --archive-package linux_x86/mips_trusted \
538 ${TAR_ARCHIVE}@${URL}
539 ${package_version} upload --upload-package linux_x86/mips_trusted \
540 --revision ${REV}
541 ${package_version} setrevision --revision-package linux_x86/mips_trusted \
542 --revision ${REV}
543 set +x
544 }
545
546 help() {
547 Usage
548 }
549
569 ###################################################################### 550 ######################################################################
570 # Main 551 # Main
571 ###################################################################### 552 ######################################################################
572 553
573 if [[ $# -eq 0 ]] ; then 554 mkdir -p ${TMP}
574 echo "you must specify a mode on the commandline:"
575 echo
576 Usage
577 exit -1
578 555
579 elif [[ $1 == "nacl_sdk" || $1 == "chrome_sdk" ]] ; then 556 BuildSysroot() {
580 mkdir -p ${TMP}
581 SanityCheck 557 SanityCheck
582 ClearInstallDir 558 ClearInstallDir
583 ClearBuildDir 559 ClearBuildDir
584 DownloadOrCopyAndInstallToolchain 560 DownloadOrCopyAndInstallToolchain
585 GeneratePackageLists $1 561 GeneratePackageList
586 InstallMissingLibraries $1 562 InstallPackages
587 FixLinks 563 CleanupSysrootSymlinks
588 if [[ $1 == "nacl_sdk" ]] ; then 564 BuildAndInstallQemu
589 BuildAndInstallQemu 565 CreateTarBall
590 CreateTarBall $1 566 }
591 else
592 FixLibs
593 FixIncludes
594 CreateTarBall ${CROSS_TARBALL}
595 fi
596 567
568 if [[ $# -eq 0 ]] ; then
569 BuildSysroot
570 elif [[ "$(type -t $1)" != "function" ]]; then
571 echo "ERROR: unknown function '$1'." >&2
572 echo "For help, try:"
573 echo " $0 help"
574 exit 1
597 else 575 else
598 Usage 576 "$@"
599 exit -1
600
601 fi 577 fi
602
OLDNEW
« no previous file with comments | « tools/trusted_cross_toolchains/trusted-toolchain-creator.armhf.sh ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698