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

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

Issue 12315003: [MIPS] Update the toolchain script with packages for Chromium (Closed) Base URL: http://git.chromium.org/native_client/src/native_client.git@master
Patch Set: Update per codereview. Created 7 years, 9 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/packagelist.squeeze.mipsel.extra ('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) 2013 The Native Client Authors. All rights reserved.
Mark Seaborn 2013/03/12 23:13:42 The policy is not to update copyright years any mo
petarj 2013/03/12 23:50:07 Done.
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 # It expects the host machine to have relatively recent versions of GMP (4.2.0 13 # It expects the host machine to have relatively recent versions of GMP (4.2.0
14 # or later), MPFR (2.4.2), and MPC (0.8.1) in order to build the GCC. 14 # or later), MPFR (2.4.2), and MPC (0.8.1) in order to build the GCC.
15 # 15 #
16 # Common way to get those is: 16 # Common way to get those is:
17 # sudo apt-get install libmpfr-dev libmpc-dev libgmp3-dev 17 # sudo apt-get install libmpfr-dev libmpc-dev libgmp3-dev
18 18
19 ###################################################################### 19 ######################################################################
20 # Config 20 # Config
21 ###################################################################### 21 ######################################################################
22 22
23 set -o nounset 23 set -o nounset
24 set -o errexit 24 set -o errexit
25 set -o xtrace 25 set -o xtrace
26 26
27 readonly SCRIPT_DIR=$(dirname $0)
28
27 readonly MAKE_OPTS="-j8" 29 readonly MAKE_OPTS="-j8"
28 readonly ARCH="mips32" 30 readonly ARCH="mips32"
29 31
30 readonly GCC_URL="http://ftp.gnu.org/gnu/gcc/gcc-4.7.2/gcc-4.7.2.tar.bz2" 32 readonly GCC_URL="http://ftp.gnu.org/gnu/gcc/gcc-4.7.2/gcc-4.7.2.tar.bz2"
31 readonly GCC_SHA1SUM="a464ba0f26eef24c29bcd1e7489421117fb9ee35" 33 readonly GCC_SHA1SUM="a464ba0f26eef24c29bcd1e7489421117fb9ee35"
32 34
33 readonly BINUTILS_URL="http://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.bz2" 35 readonly BINUTILS_URL="http://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.bz2"
34 readonly BINUTILS_SHA1SUM="65b304a0b9a53a686ce50a01173d1f40f8efe404" 36 readonly BINUTILS_SHA1SUM="65b304a0b9a53a686ce50a01173d1f40f8efe404"
35 37
36 readonly KERNEL_URL="http://www.linux-mips.org/pub/linux/mips/kernel/v2.6/linux- 2.6.38.4.tar.gz" 38 readonly KERNEL_URL="http://www.linux-mips.org/pub/linux/mips/kernel/v2.6/linux- 2.6.38.4.tar.gz"
(...skipping 10 matching lines...) Expand all
47 readonly INSTALL_ROOT=$(pwd)/toolchain/linux_mips-trusted 49 readonly INSTALL_ROOT=$(pwd)/toolchain/linux_mips-trusted
48 50
49 readonly TMP=$(pwd)/toolchain/tmp/crosstool-trusted 51 readonly TMP=$(pwd)/toolchain/tmp/crosstool-trusted
50 52
51 readonly BUILD_DIR=${TMP}/build 53 readonly BUILD_DIR=${TMP}/build
52 54
53 readonly PATCH_MIPS32=$(readlink -f ../third_party/qemu/qemu-0.12.5.patch_mips) 55 readonly PATCH_MIPS32=$(readlink -f ../third_party/qemu/qemu-0.12.5.patch_mips)
54 56
55 readonly JAIL_MIPS32=${INSTALL_ROOT}/sysroot 57 readonly JAIL_MIPS32=${INSTALL_ROOT}/sysroot
56 58
59 readonly CROSS_TARBALL="chromesdk_linux_mipsel"
60
57 # These are simple compiler wrappers to force 32bit builds. 61 # These are simple compiler wrappers to force 32bit builds.
58 readonly CC32=$(readlink -f pnacl/scripts/mygcc32) 62 readonly CC32=$(readlink -f pnacl/scripts/mygcc32)
59 readonly CXX32=$(readlink -f pnacl/scripts/myg++32) 63 readonly CXX32=$(readlink -f pnacl/scripts/myg++32)
60 64
61 ###################################################################### 65 ######################################################################
62 # Helper 66 # Helper
63 ###################################################################### 67 ######################################################################
64 68
65 Banner() { 69 Banner() {
66 echo "######################################################################" 70 echo "######################################################################"
67 echo $* 71 echo $*
68 echo "######################################################################" 72 echo "######################################################################"
69 } 73 }
70 74
71 SubBanner() { 75 SubBanner() {
72 echo "......................................................................" 76 echo "......................................................................"
73 echo $* 77 echo $*
74 echo "......................................................................" 78 echo "......................................................................"
75 } 79 }
76 80
77 Usage() { 81 Usage() {
78 echo 82 echo
79 echo "$0 trusted_sdk" 83 echo "$0 <nacl_sdk|chrome_sdk>"
80 echo 84 echo
81 echo "trusted_sdk - Build everything and package it" 85 echo "nacl_sdk - Build nacl toolchain and package it"
86 echo "chrome_sdk - Build chrome toolchain and package it"
82 echo 87 echo
83 } 88 }
84 89
85 CheckoutOrCopy() { 90 CheckoutOrCopy() {
86 local url=$1 91 local url=$1
87 local revision=$2 92 local revision=$2
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
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 echo "Exiting." 181 echo "Exiting."
177 exit 1 182 exit 1
178 fi 183 fi
179 done 184 done
180 } 185 }
181 186
182 187
183 ClearInstallDir() { 188 ClearInstallDir() {
184 Banner "clearing dirs in ${INSTALL_ROOT}" 189 Banner "clearing dirs in ${INSTALL_ROOT}"
185 rm -rf ${INSTALL_ROOT}/* 190 rm -rf ${INSTALL_ROOT}/*
191 mkdir -p ${JAIL_MIPS32}
186 } 192 }
187 193
188 ClearBuildDir() { 194 ClearBuildDir() {
189 Banner "clearing dirs in ${BUILD_DIR}" 195 Banner "clearing dirs in ${BUILD_DIR}"
190 rm -rf ${BUILD_DIR}/* 196 rm -rf ${BUILD_DIR}/*
191 } 197 }
192 198
193 CreateTarBall() { 199 CreateTarBall() {
194 local tarball=$1 200 local tarball=$1
195 Banner "creating tar ball ${tarball}" 201 Banner "creating tar ball ${tarball}"
196 tar cfz ${tarball}-mips.tgz -C ${INSTALL_ROOT} . 202 tar cfz ${tarball}.tgz -C ${INSTALL_ROOT} .
197 } 203 }
198 204
199 205
200 # Download the toolchain source tarballs or use a local copy when available. 206 # Download the toolchain source tarballs or use a local copy when available.
201 DownloadOrCopyAndInstallToolchain() { 207 DownloadOrCopyAndInstallToolchain() {
202 Banner "Installing toolchain" 208 Banner "Installing toolchain"
203 209
204 local tarball="${TMP}/${BINUTILS_URL##*/}" 210 local tarball="${TMP}/${BINUTILS_URL##*/}"
205 DownloadOrCopyAndVerify ${BINUTILS_URL} ${BINUTILS_SHA1SUM} 211 DownloadOrCopyAndVerify ${BINUTILS_URL} ${BINUTILS_SHA1SUM}
206 SubBanner "extracting from ${tarball}" 212 SubBanner "extracting from ${tarball}"
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 } 467 }
462 468
463 469
464 # ---------------------------------------------------------------------- 470 # ----------------------------------------------------------------------
465 # mips32 deb files to complete our code sourcery jail 471 # mips32 deb files to complete our code sourcery jail
466 # ---------------------------------------------------------------------- 472 # ----------------------------------------------------------------------
467 473
468 readonly REPO_DEBIAN=http://ftp.debian.org/debian 474 readonly REPO_DEBIAN=http://ftp.debian.org/debian
469 readonly MIPS32_PACKAGES=${REPO_DEBIAN}/dists/squeeze/main/binary-mipsel/Package s.bz2 475 readonly MIPS32_PACKAGES=${REPO_DEBIAN}/dists/squeeze/main/binary-mipsel/Package s.bz2
470 476
471 readonly TMP_PACKAGELIST_MIPS32=${TMP}/../packagelist_mipsel.tmp 477 readonly BASE_PACKAGELIST_MIPS32=${SCRIPT_DIR}/packagelist.squeeze.mipsel.base
472 478 readonly EXTRA_PACKAGELIST_MIPS32=${SCRIPT_DIR}/packagelist.squeeze.mipsel.extra
473 # These are good enough for native client. 479 readonly TMP_BASE_PACKAGELIST_MIPS32=${TMP}/packagelist.generated.squeeze.mipsel .base
474 readonly BASE_PACKAGES="\ 480 readonly TMP_EXTRA_PACKAGELIST_MIPS32=${TMP}/packagelist.generated.squeeze.mipse l.extra
475 libssl0.9.8 \
476 libssl-dev \
477 libx11-6 \
478 libx11-dev \
479 x11proto-core-dev \
480 libxt6 \
481 libxt-dev \
482 zlib1g \
483 zlib1g-dev \
484 libasound2 \
485 libasound2-dev \
486 libaa1 \
487 libaa1-dev \
488 libxau-dev \
489 libxau6 \
490 libxcb1 \
491 libxcb1-dev \
492 libxcb-render0 \
493 libxcb-render0-dev \
494 libxcb-render-util0 \
495 libxcb-render-util0-dev \
496 libxcb-shm0 \
497 libxcb-shm0-dev \
498 libxdmcp6 \
499 libxdmcp-dev \
500 libxss1 \
501 libxss-dev"
502 481
503 GeneratePackageLists() { 482 GeneratePackageLists() {
504 Banner "generating package lists for mips32" 483 local sdk_target=$1
505 echo -n > ${TMP_PACKAGELIST_MIPS32} 484 local packages=
485 local TMP_PACKAGELIST=
486 Banner "generating ${sdk_target} package lists for mips32"
506 DownloadOrCopy ${MIPS32_PACKAGES} 487 DownloadOrCopy ${MIPS32_PACKAGES}
507 bzcat ${TMP}/Packages.bz2\ 488 bzcat ${TMP}/Packages.bz2\
508 | egrep '^(Package:|Filename:)' > ${TMP}/Packages_mipsel 489 | egrep '^(Package:|Filename:)' > ${TMP}/Packages_mipsel
509 for pkg in ${BASE_PACKAGES} ; do 490
491 if [ ${sdk_target} == "nacl_sdk" ] ; then
492 echo -n > ${TMP_BASE_PACKAGELIST_MIPS32}
493 TMP_PACKAGELIST=${TMP_BASE_PACKAGELIST_MIPS32}
494 packages=$(cat ${BASE_PACKAGELIST_MIPS32})
495 elif [ ${sdk_target} == "chrome_sdk" ] ; then
496 echo -n > ${TMP_EXTRA_PACKAGELIST_MIPS32}
497 TMP_PACKAGELIST=${TMP_EXTRA_PACKAGELIST_MIPS32}
498 packages=$(cat ${EXTRA_PACKAGELIST_MIPS32})
499 else
500 Banner "ERROR: Packages for \"${sdk_taget}\" not defined."
501 exit -1
502 fi
503
504 for pkg in ${packages} ; do
510 grep -A 1 "${pkg}\$" ${TMP}/Packages_mipsel\ 505 grep -A 1 "${pkg}\$" ${TMP}/Packages_mipsel\
511 | egrep -o "pool/.*" >> ${TMP_PACKAGELIST_MIPS32} 506 | egrep -o "pool/.*" >> ${TMP_PACKAGELIST}
512 done 507 done
513 } 508 }
514 509
515 InstallMissingLibraries() { 510 InstallMissingLibraries() {
516 readonly DEP_FILES_NEEDED_MIPS32=$(cat ${TMP_PACKAGELIST_MIPS32}) 511 local sdk_target=$1
512 local DEP_FILES_NEEDED_MIPS32=
513
514 if [ ${sdk_target} == "nacl_sdk" ] ; then
515 DEP_FILES_NEEDED_MIPS32=$(cat ${TMP_BASE_PACKAGELIST_MIPS32})
516 elif [ ${sdk_target} == "chrome_sdk" ] ; then
517 DEP_FILES_NEEDED_MIPS32=$(cat ${TMP_EXTRA_PACKAGELIST_MIPS32})
518 else
519 Banner "ERROR: Target \"${sdk_taget}\" not defined."
520 exit -1
521 fi
522
517 for file in ${DEP_FILES_NEEDED_MIPS32} ; do 523 for file in ${DEP_FILES_NEEDED_MIPS32} ; do
518 local package="${TMP}/${file##*/}" 524 local package="${TMP}/${file##*/}"
519 Banner "installing ${file}" 525 Banner "installing ${file}"
520 DownloadOrCopy ${REPO_DEBIAN}/${file} 526 DownloadOrCopy ${REPO_DEBIAN}/${file}
521 SubBanner "extracting to ${JAIL_MIPS32}" 527 SubBanner "extracting to ${JAIL_MIPS32}"
522 dpkg --fsys-tarfile ${package}\ 528 dpkg --fsys-tarfile ${package}\
523 | tar -xvf - --exclude=./usr/share -C ${JAIL_MIPS32} 529 | tar -xvf - --exclude=./usr/share -C ${JAIL_MIPS32}
524 done 530 done
525 531
526 Banner "some cleanup" 532 Banner "some cleanup"
(...skipping 18 matching lines...) Expand all
545 551
546 rm -f librt.so 552 rm -f librt.so
547 ln -s ../../lib/librt.so.1 librt.so 553 ln -s ../../lib/librt.so.1 librt.so
548 554
549 rm -f libpcre.so 555 rm -f libpcre.so
550 ln -s ../../lib/libpcre.so.3 libpcre.so 556 ln -s ../../lib/libpcre.so.3 libpcre.so
551 557
552 rm -f libresolv.so 558 rm -f libresolv.so
553 ln -s ../../lib/libresolv.so.2 libresolv.so 559 ln -s ../../lib/libresolv.so.2 libresolv.so
554 560
561 rm -f libglib-2.0.so
562 ln -s ../../lib/libglib-2.0.so.0 libglib-2.0.so
563
564 rm -f libudev.so
565 ln -s ../../lib/libudev.so.0 libudev.so
566
567 rm -f libcom_err.so
568 ln -s ../../lib/libcom_err.so.2 libcom_err.so
569
570 rm -f libXdmcp.so
571 ln -s ../../lib/libXdmcp.so.6 libXdmcp.so
572
573 rm -f libstdc++.so*
555 ln -s ../../../mipsel-linux-gnu/lib/libstdc++.so.6.0.17 . 574 ln -s ../../../mipsel-linux-gnu/lib/libstdc++.so.6.0.17 .
556 ln -s libstdc++.so.6.0.17 libstdc++.so.6 575 ln -s libstdc++.so.6.0.17 libstdc++.so.6
557 ln -s libstdc++.so.6.0.17 libstdc++.so 576 ln -s libstdc++.so.6.0.17 libstdc++.so
558 577
578 rm -f libgcc_s.so*
559 ln -s ../../../mipsel-linux-gnu/lib/libgcc_s.so.1 . 579 ln -s ../../../mipsel-linux-gnu/lib/libgcc_s.so.1 .
560 ln -s libgcc_s.so.1 libgcc_s.so 580 ln -s libgcc_s.so.1 libgcc_s.so
561 } 581 }
562 582
563 BuildAndInstallQemu() { 583 BuildAndInstallQemu() {
564 local saved_dir=$(pwd) 584 local saved_dir=$(pwd)
565 local tmpdir="${TMP}/qemu-mips.nacl" 585 local tmpdir="${TMP}/qemu-mips.nacl"
566 local tarball="qemu-0.12.5.tar.gz" 586 local tarball="qemu-0.12.5.tar.gz"
567 587
568 Banner "Building qemu in ${tmpdir}" 588 Banner "Building qemu in ${tmpdir}"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 ###################################################################### 632 ######################################################################
613 # Main 633 # Main
614 ###################################################################### 634 ######################################################################
615 635
616 if [[ $# -eq 0 ]] ; then 636 if [[ $# -eq 0 ]] ; then
617 echo "you must specify a mode on the commandline:" 637 echo "you must specify a mode on the commandline:"
618 echo 638 echo
619 Usage 639 Usage
620 exit -1 640 exit -1
621 641
622 elif [[ $1 == "trusted_sdk" ]]; then 642 elif [[ $1 == "nacl_sdk" || $1 == "chrome_sdk" ]] ; then
623 mkdir -p ${TMP} 643 mkdir -p ${TMP}
624 SanityCheck 644 SanityCheck
625 ClearInstallDir 645 ClearInstallDir
626 ClearBuildDir 646 ClearBuildDir
627 DownloadOrCopyAndInstallToolchain 647 DownloadOrCopyAndInstallToolchain
628 GeneratePackageLists 648 GeneratePackageLists $1
629 InstallMissingLibraries 649 InstallMissingLibraries $1
630 InstallTrustedLinkerScript 650 if [[ $1 == "nacl_sdk" ]] ; then
631 BuildAndInstallQemu 651 InstallTrustedLinkerScript
632 CreateTarBall $1 652 BuildAndInstallQemu
653 CreateTarBall $1
654 else
655 CreateTarBall ${CROSS_TARBALL}
656 fi
633 657
634 else 658 else
635 Usage 659 Usage
636 exit -1 660 exit -1
637 661
638 fi 662 fi
639 663
OLDNEW
« no previous file with comments | « tools/trusted_cross_toolchains/packagelist.squeeze.mipsel.extra ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698