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

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

Issue 16880002: [MIPS] Switch the script to use packages from Debian Wheezy (Closed) Base URL: http://git.chromium.org/native_client/src/native_client.git@master
Patch Set: Add a comment. Created 7 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.debian.sh
diff --git a/tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.squeeze.sh b/tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.debian.sh
similarity index 79%
rename from tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.squeeze.sh
rename to tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.debian.sh
index 94709f0766554d6ae2dbc31dcd6d8387acd5162b..0f042aed80eab069e14031f9e81482975db9d6b5 100755
--- a/tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.squeeze.sh
+++ b/tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.debian.sh
@@ -9,12 +9,6 @@
# This script is intended to build a mipsel-linux-gnu cross compilation
# toolchain that runs on x86 linux and generates code for a little-endian,
# hard-float, mips32 target.
-#
-# It expects the host machine to have relatively recent versions of GMP (4.2.0
-# or later), MPFR (2.4.2), and MPC (0.8.1) in order to build the GCC.
-#
-# Common way to get those is:
-# sudo apt-get install libmpfr-dev libmpc-dev libgmp3-dev
######################################################################
# Config
@@ -29,6 +23,15 @@ readonly SCRIPT_DIR=$(dirname $0)
readonly MAKE_OPTS="-j8"
readonly ARCH="mips32"
+readonly GMP_URL="http://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2"
+readonly GMP_SHA1SUM="c011e8feaf1bb89158bd55eaabd7ef8fdd101a2c"
+
+readonly MPFR_URL="http://ftp.gnu.org/gnu/mpfr/mpfr-2.4.2.tar.bz2"
+readonly MPFR_SHA1SUM="7ca93006e38ae6e53a995af836173cf10ee7c18c"
+
+readonly MPC_URL="http://ftp.gnu.org/gnu/mpc/mpc-1.0.1.tar.gz"
+readonly MPC_SHA1SUM="8c7e19ad0dd9b3b5cc652273403423d6cf0c5edf"
+
readonly GCC_URL="http://ftp.gnu.org/gnu/gcc/gcc-4.7.2/gcc-4.7.2.tar.bz2"
readonly GCC_SHA1SUM="a464ba0f26eef24c29bcd1e7489421117fb9ee35"
@@ -98,12 +101,15 @@ CheckoutOrCopy() {
exit 1
fi
- if [ "${filetype}" == "svn" ]; then
- SubBanner "checkout from ${url} -> ${filename}"
- svn --force export -r ${revision} ${url} ${filename}
- else
- SubBanner "copying from ${url}"
- cp ${url} ${filename}
+ if [ ! -f "${filename}/completed" ]; then
+ if [ "${filetype}" == "svn" ]; then
+ SubBanner "checkout from ${url} -> ${filename}"
+ svn --force export -r ${revision} ${url} ${filename}
+ else
+ SubBanner "copying from ${url}"
+ cp ${url} ${filename}
+ fi
+ touch ${filename}/completed
fi
}
@@ -175,7 +181,7 @@ SanityCheck() {
exit -1
fi
- for tool in cleanlinks wget ; do
+ for tool in wget ; do
if ! which ${tool} ; then
echo "Required binary $tool not found."
echo "Exiting."
@@ -207,13 +213,41 @@ CreateTarBall() {
DownloadOrCopyAndInstallToolchain() {
Banner "Installing toolchain"
- local tarball="${TMP}/${BINUTILS_URL##*/}"
- DownloadOrCopyAndVerify ${BINUTILS_URL} ${BINUTILS_SHA1SUM}
+ tarball="${TMP}/${GCC_URL##*/}"
+ DownloadOrCopyAndVerify ${GCC_URL} ${GCC_SHA1SUM}
SubBanner "extracting from ${tarball}"
tar jxf ${tarball} -C ${TMP}
- tarball="${TMP}/${GCC_URL##*/}"
- DownloadOrCopyAndVerify ${GCC_URL} ${GCC_SHA1SUM}
+ pushd ${TMP}/gcc-*
+
+ local tarball="${TMP}/${GMP_URL##*/}"
+ DownloadOrCopyAndVerify ${GMP_URL} ${GMP_SHA1SUM}
+ SubBanner "extracting from ${tarball}"
+ tar jxf ${tarball}
+ local filename=`ls | grep gmp\-`
+ rm -f gmp
+ ln -s ${filename} gmp
+
+ local tarball="${TMP}/${MPFR_URL##*/}"
+ DownloadOrCopyAndVerify ${MPFR_URL} ${MPFR_SHA1SUM}
+ SubBanner "extracting from ${tarball}"
+ tar jxf ${tarball}
+ local filename=`ls | grep mpfr\-`
+ rm -f mpfr
+ ln -s ${filename} mpfr
+
+ local tarball="${TMP}/${MPC_URL##*/}"
+ DownloadOrCopyAndVerify ${MPC_URL} ${MPC_SHA1SUM}
+ SubBanner "extracting from ${tarball}"
+ tar zxf ${tarball}
+ local filename=`ls | grep mpc\-`
+ rm -f mpc
+ ln -s ${filename} mpc
+
+ popd
+
+ local tarball="${TMP}/${BINUTILS_URL##*/}"
+ DownloadOrCopyAndVerify ${BINUTILS_URL} ${BINUTILS_SHA1SUM}
SubBanner "extracting from ${tarball}"
tar jxf ${tarball} -C ${TMP}
@@ -248,6 +282,7 @@ DownloadOrCopyAndInstallToolchain() {
Banner "Building binutils"
+ rm -rf ${BUILD_DIR}/binutils/
mkdir -p ${BUILD_DIR}/binutils/
pushd ${BUILD_DIR}/binutils/
@@ -268,6 +303,7 @@ DownloadOrCopyAndInstallToolchain() {
Banner "Building GCC (initial)"
+ rm -rf ${BUILD_DIR}/gcc/initial
mkdir -p ${BUILD_DIR}/gcc/initial
pushd ${BUILD_DIR}/gcc/initial
@@ -309,6 +345,8 @@ DownloadOrCopyAndInstallToolchain() {
Banner "Building EGLIBC (initial)"
mkdir -p ${JAIL_MIPS32}/usr/lib
+
+ rm -rf ${BUILD_DIR}/eglibc/initial
mkdir -p ${BUILD_DIR}/eglibc/initial
pushd ${BUILD_DIR}/eglibc/initial
@@ -346,6 +384,7 @@ DownloadOrCopyAndInstallToolchain() {
Banner "Building GCC (intermediate)"
+ rm -rf ${BUILD_DIR}/gcc/intermediate
mkdir -p ${BUILD_DIR}/gcc/intermediate
pushd ${BUILD_DIR}/gcc/intermediate
@@ -377,6 +416,7 @@ DownloadOrCopyAndInstallToolchain() {
Banner "Building EGLIBC (final)"
+ rm -rf ${BUILD_DIR}/eglibc/final
mkdir -p ${BUILD_DIR}/eglibc/final
pushd ${BUILD_DIR}/eglibc/final
@@ -406,6 +446,7 @@ DownloadOrCopyAndInstallToolchain() {
Banner "Building GCC (final)"
+ rm -rf ${BUILD_DIR}/gcc/final
mkdir -p ${BUILD_DIR}/gcc/final
pushd ${BUILD_DIR}/gcc/final
@@ -435,6 +476,7 @@ DownloadOrCopyAndInstallToolchain() {
Banner "Building GDB"
+ rm -rf ${BUILD_DIR}/gdb/
mkdir -p ${BUILD_DIR}/gdb/
pushd ${BUILD_DIR}/gdb/
@@ -472,18 +514,19 @@ InstallTrustedLinkerScript() {
# ----------------------------------------------------------------------
readonly REPO_DEBIAN=http://ftp.debian.org/debian
-readonly MIPS32_PACKAGES=${REPO_DEBIAN}/dists/squeeze/main/binary-mipsel/Packages.bz2
+readonly MIPS32_PACKAGES=${REPO_DEBIAN}/dists/wheezy/main/binary-mipsel/Packages.bz2
-readonly BASE_PACKAGELIST_MIPS32=${SCRIPT_DIR}/packagelist.squeeze.mipsel.base
-readonly EXTRA_PACKAGELIST_MIPS32=${SCRIPT_DIR}/packagelist.squeeze.mipsel.extra
-readonly TMP_BASE_PKG_MIPS32=${TMP}/packagelist.generated.squeeze.mipsel.base
-readonly TMP_EXTRA_PKG_MIPS32=${TMP}/packagelist.generated.squeeze.mipsel.extra
+readonly BASE_PACKAGELIST_MIPS32=${SCRIPT_DIR}/packagelist.wheezy.mipsel.base
+readonly EXTRA_PACKAGELIST_MIPS32=${SCRIPT_DIR}/packagelist.wheezy.mipsel.extra
+readonly TMP_BASE_PKG_MIPS32=${TMP}/packagelist.generated.wheezy.mipsel.base
+readonly TMP_EXTRA_PKG_MIPS32=${TMP}/packagelist.generated.wheezy.mipsel.extra
GeneratePackageLists() {
local sdk_target=$1
local packages=
local TMP_PACKAGELIST=
Banner "generating ${sdk_target} package lists for mips32"
+ rm -f ${TMP}/Packages.bz2
DownloadOrCopy ${MIPS32_PACKAGES}
bzcat ${TMP}/Packages.bz2\
| egrep '^(Package:|Filename:)' > ${TMP}/Packages_mipsel
@@ -528,56 +571,78 @@ InstallMissingLibraries() {
dpkg --fsys-tarfile ${package}\
| tar -xvf - --exclude=./usr/share -C ${JAIL_MIPS32}
done
-
- Banner "some cleanup"
-
- pushd ${JAIL_MIPS32}/usr/lib/
- cleanlinks > /dev/null 2> /dev/null
- FixLibs
- popd
}
-FixLibs() {
- Banner "Fixing libraries"
-
- rm -f libbz2.so
- ln -s ../../lib/libbz2.so.1 libbz2.so
-
- rm -f libm.so
- ln -s ../../lib/libm.so.6 libm.so
-
- rm -f libdl.so
- ln -s ../../lib/libdl.so.2 libdl.so
-
- rm -f librt.so
- ln -s ../../lib/librt.so.1 librt.so
+# Workaround for missing headers since pkg-config is not working correctly.
+FixIncludes() {
+ Banner "Fixing includes"
+ pushd ${JAIL_MIPS32}/usr/include/glib-2.0
+ ln -s ../../lib/glib-2.0/include/glibconfig.h .
+ popd
- rm -f libpcre.so
- ln -s ../../lib/libpcre.so.3 libpcre.so
+ pushd ${JAIL_MIPS32}/usr/include/gtk-2.0
+ ln -s ../../lib/gtk-2.0/include/gdkconfig.h .
+ popd
- rm -f libresolv.so
- ln -s ../../lib/libresolv.so.2 libresolv.so
+ pushd ${JAIL_MIPS32}/usr/include/dbus-1.0/dbus
+ ln -s ../../../lib/dbus-1.0/include/dbus/dbus-arch-deps.h .
+ popd
+}
- rm -f libglib-2.0.so
- ln -s ../../lib/libglib-2.0.so.0 libglib-2.0.so
+FixLinks() {
+ Banner "Fixing links"
+ pushd ${JAIL_MIPS32}/lib/
+ mv mipsel-linux-gnu/* .
+ rm -rf mipsel-linux-gnu
+ ln -s . mipsel-linux-gnu
+ popd
- rm -f libudev.so
- ln -s ../../lib/libudev.so.0 libudev.so
+ pushd ${JAIL_MIPS32}/usr/lib/
+ mkdir -p pkgconfig
+ mv mipsel-linux-gnu/pkgconfig/* pkgconfig/
+ rm -rf mipsel-linux-gnu/pkgconfig
+ mv mipsel-linux-gnu/* .
+ rm -rf mipsel-linux-gnu
+ ln -s . mipsel-linux-gnu
+ popd
- rm -f libcom_err.so
- ln -s ../../lib/libcom_err.so.2 libcom_err.so
+ pushd ${JAIL_MIPS32}/usr/lib/
+ rm -f libstdc++.so*
+ ln -s ../../../mipsel-linux-gnu/lib/libstdc++.so.6.0.17 .
+ ln -s libstdc++.so.6.0.17 libstdc++.so.6
+ ln -s libstdc++.so.6.0.17 libstdc++.so
+
+ rm -f libgcc_s.so*
+ ln -s ../../../mipsel-linux-gnu/lib/libgcc_s.so.1 .
+ ln -s libgcc_s.so.1 libgcc_s.so
+ popd
+}
- rm -f libXdmcp.so
- ln -s ../../lib/libXdmcp.so.6 libXdmcp.so
+FixLibs() {
+ Banner "Fixing libraries"
- rm -f libstdc++.so*
- ln -s ../../../mipsel-linux-gnu/lib/libstdc++.so.6.0.17 .
- ln -s libstdc++.so.6.0.17 libstdc++.so.6
- ln -s libstdc++.so.6.0.17 libstdc++.so
+ readonly liblist="libbz2.so \
+ libcom_err.so \
+ libdbus-1.so \
+ libexpat.so \
+ libglib-2.0.so \
+ libgpg-error.so \
+ libkeyutils.so \
+ libpamc.so \
+ libpam_misc.so \
+ libpam.so \
+ libpci.so \
+ libpcre.so \
+ libpng12.so \
+ libudev.so \
+ libz.so"
- rm -f libgcc_s.so*
- ln -s ../../../mipsel-linux-gnu/lib/libgcc_s.so.1 .
- ln -s libgcc_s.so.1 libgcc_s.so
+ pushd ${JAIL_MIPS32}/usr/lib/
+ for library in ${liblist}; do
+ rm -f ${library}
+ ln -s ../../lib/${library}.[0123] ${library}
+ done
+ popd
}
BuildAndInstallQemu() {
@@ -615,8 +680,7 @@ BuildAndInstallQemu() {
--disable-bsd-user \
--target-list=mipsel-linux-user \
--disable-sdl \
- --disable-linux-aio \
- --static
+ --disable-linux-aio
SubBanner "Make"
env -i PATH=/usr/bin/:/bin \
@@ -647,11 +711,14 @@ elif [[ $1 == "nacl_sdk" || $1 == "chrome_sdk" ]] ; then
DownloadOrCopyAndInstallToolchain
GeneratePackageLists $1
InstallMissingLibraries $1
+ FixLinks
if [[ $1 == "nacl_sdk" ]] ; then
InstallTrustedLinkerScript
BuildAndInstallQemu
CreateTarBall $1
else
+ FixLibs
+ FixIncludes
CreateTarBall ${CROSS_TARBALL}
fi

Powered by Google App Engine
This is Rietveld 408576698