Chromium Code Reviews| Index: chrome/installer/linux/sysroot_scripts/sysroot-creator-debian.wheezy.sh |
| diff --git a/chrome/installer/linux/sysroot_scripts/sysroot-creator-debian.wheezy.sh b/chrome/installer/linux/sysroot_scripts/sysroot-creator-debian.wheezy.sh |
| index fb3e0436cbf8c8b0ec85b3f063f20d780016257b..a0123989984a5f6dff671a9e3879b071e852c7b0 100755 |
| --- a/chrome/installer/linux/sysroot_scripts/sysroot-creator-debian.wheezy.sh |
| +++ b/chrome/installer/linux/sysroot_scripts/sysroot-creator-debian.wheezy.sh |
| @@ -24,6 +24,7 @@ readonly SCRIPT_DIR=$(dirname $0) |
| # This is where the staging sysroot is. |
| readonly INSTALL_ROOT_AMD64=$(pwd)/debian_wheezy_amd64_staging |
| readonly INSTALL_ROOT_I386=$(pwd)/debian_wheezy_i386_staging |
| +readonly INSTALL_ROOT_ARM=$(pwd)/debian_wheezy_arm_staging |
| readonly REQUIRED_TOOLS="wget" |
| @@ -41,8 +42,10 @@ readonly RELEASE_LIST="${REPO_BASEDIR}/${RELEASE_FILE}" |
| readonly RELEASE_LIST_GPG="${REPO_BASEDIR}/${RELEASE_FILE_GPG}" |
| readonly PACKAGE_FILE_AMD64="main/binary-amd64/Packages.bz2" |
| readonly PACKAGE_FILE_I386="main/binary-i386/Packages.bz2" |
| +readonly PACKAGE_FILE_ARM="main/binary-armhf/Packages.bz2" |
| readonly PACKAGE_LIST_AMD64="${REPO_BASEDIR}/${PACKAGE_FILE_AMD64}" |
| readonly PACKAGE_LIST_I386="${REPO_BASEDIR}/${PACKAGE_FILE_I386}" |
| +readonly PACKAGE_LIST_ARM="${REPO_BASEDIR}/${PACKAGE_FILE_ARM}" |
| # Sysroot packages: these are the packages needed to build chrome. |
| # NOTE: When DEBIAN_PACKAGES is modified, the packagelist files must be updated |
| @@ -142,7 +145,6 @@ readonly DEBIAN_PACKAGES="\ |
| libpulse0 \ |
| libpulse-dev \ |
| libpulse-mainloop-glib0 \ |
| - libquadmath0 \ |
| libselinux1 \ |
| libspeechd2 \ |
| libspeechd-dev \ |
| @@ -208,8 +210,11 @@ readonly DEBIAN_PACKAGES="\ |
| zlib1g \ |
| zlib1g-dev" |
| -readonly DEBIAN_DEP_LIST_AMD64="${SCRIPT_DIR}/packagelist.debian.wheezy.amd64" |
| -readonly DEBIAN_DEP_LIST_I386="${SCRIPT_DIR}/packagelist.debian.wheezy.i386" |
| +DEBIAN_PACKAGES_X86="libquadmath0" |
| + |
| +readonly DEBIAN_DEP_LIST_AMD64="packagelist.debian.wheezy.amd64" |
| +readonly DEBIAN_DEP_LIST_I386="packagelist.debian.wheezy.i386" |
| +readonly DEBIAN_DEP_LIST_ARM="packagelist.debian.wheezy.arm" |
| ###################################################################### |
| # Helper |
| @@ -258,7 +263,13 @@ SetEnvironmentVariables() { |
| if [ -z "$ARCH" ]; then |
| echo $1 | grep -qs I386$ && ARCH=I386 |
| fi |
| + if [ -z "$ARCH" ]; then |
| + echo $1 | grep -qs ARM$ && ARCH=ARM |
| + fi |
| case "$ARCH" in |
| + ARM) |
| + INSTALL_ROOT="$INSTALL_ROOT_ARM"; |
| + ;; |
| AMD64) |
| INSTALL_ROOT="$INSTALL_ROOT_AMD64"; |
| ;; |
| @@ -273,6 +284,7 @@ SetEnvironmentVariables() { |
| } |
| Cleanup() { |
| + echo "Cleaning: $TMP" |
| rm -rf "$TMP" |
| } |
| @@ -292,7 +304,8 @@ SanityCheck() { |
| exit 1 |
| fi |
| - TMP=$(mktemp -q -t -d debian-wheezy-XXXXXX) |
| + TMP=/tmp/$USER/debian-wheezy-sysroot |
|
Lei Zhang
2014/05/12 21:45:37
Is this intention or for local testing?
Sam Clegg
2014/05/12 22:25:32
I can revert this for now, but I really wanted a d
Lei Zhang
2014/05/12 22:34:17
It does mean a lot less downloads. I've done it fo
|
| + mkdir -p $TMP |
| if [ -z "$TMP" ]; then |
| echo "ERROR: temp dir can't be created." |
| exit 1 |
| @@ -311,7 +324,7 @@ SanityCheck() { |
| ChangeDirectory() { |
| # Change directory to where this script is. |
| - cd $(dirname "$0") |
| + cd ${SCRIPT_DIR} |
| } |
| @@ -346,21 +359,36 @@ ExtractPackageBz2() { |
| GeneratePackageListAmd64() { |
| local output_file="$1" |
| local package_list="${TMP}/Packages.wheezy_amd64.bz2" |
| + local tmp_package_list="${TMP}/Packages.wheezy_amd64" |
| DownloadOrCopy ${PACKAGE_LIST_AMD64} ${package_list} |
| VerifyPackageListing ${PACKAGE_FILE_AMD64} ${package_list} |
| - ExtractPackageBz2 "$package_list" "${TMP}/Packages" |
| + ExtractPackageBz2 $package_list $tmp_package_list |
|
Lei Zhang
2014/05/12 21:45:37
Generally quoting is preferred: https://google-sty
Sam Clegg
2014/05/12 22:25:32
Done.
|
| - GeneratePackageList "$output_file" "${DEBIAN_PACKAGES}" |
| + GeneratePackageList $tmp_package_list $output_file "${DEBIAN_PACKAGES} |
| + ${DEBIAN_PACKAGES_X86}" |
| } |
| GeneratePackageListI386() { |
| local output_file="$1" |
| local package_list="${TMP}/Packages.wheezy_i386.bz2" |
| + local tmp_package_list="${TMP}/Packages.wheezy_amd64" |
| DownloadOrCopy ${PACKAGE_LIST_I386} ${package_list} |
| VerifyPackageListing ${PACKAGE_FILE_I386} ${package_list} |
| - ExtractPackageBz2 "$package_list" "${TMP}/Packages" |
| + ExtractPackageBz2 $package_list $tmp_package_list |
| - GeneratePackageList "$output_file" "${DEBIAN_PACKAGES}" |
| + GeneratePackageList $tmp_package_list $output_file "${DEBIAN_PACKAGES} |
| + ${DEBIAN_PACKAGES_X86}" |
| +} |
| + |
| +GeneratePackageListARM() { |
| + local output_file="$1" |
| + local package_list="${TMP}/Packages.wheezy_arm.bz2" |
| + local tmp_package_list="${TMP}/Packages.wheezy_arm" |
| + DownloadOrCopy ${PACKAGE_LIST_ARM} ${package_list} |
| + VerifyPackageListing ${PACKAGE_FILE_ARM} ${package_list} |
| + ExtractPackageBz2 $package_list $tmp_package_list |
| + |
| + GeneratePackageList $tmp_package_list $output_file "${DEBIAN_PACKAGES}" |
| } |
| StripChecksumsFromPackageList() { |
| @@ -431,6 +459,25 @@ HacksAndPatchesI386() { |
| } |
| +HacksAndPatchesARM() { |
| + Banner "Misc Hacks & Patches" |
| + # these are linker scripts with absolute pathnames in them |
| + # which we rewrite here |
| + lscripts="${INSTALL_ROOT}/usr/lib/arm-linux-gnueabihf/libpthread.so \ |
| + ${INSTALL_ROOT}/usr/lib/arm-linux-gnueabihf/libc.so" |
| + |
| + #SubBanner "Rewriting Linker Scripts" |
| + sed -i -e 's|/usr/lib/arm-linux-gnueabihf/||g' ${lscripts} |
| + sed -i -e 's|/lib/arm-linux-gnueabihf/||g' ${lscripts} |
| + |
| + # This is for chrome's ./build/linux/pkg-config-wrapper |
| + # which overwrites PKG_CONFIG_PATH internally |
| + SubBanner "Package Configs Symlink" |
| + mkdir -p ${INSTALL_ROOT}/usr/share |
| + ln -s ../lib/arm-linux-gnueabihf/pkgconfig ${INSTALL_ROOT}/usr/share/pkgconfig |
| +} |
| + |
| + |
| InstallIntoSysroot() { |
| Banner "Install Libs And Headers Into Jail" |
| @@ -473,11 +520,13 @@ CleanupJailSymlinks() { |
| echo "${target}" | grep -qs ^/ || continue |
| echo "${link}: ${target}" |
| case "${link}" in |
| - usr/lib/gcc/x86_64-linux-gnu/4.*/* | usr/lib/gcc/i486-linux-gnu/4.*/*) |
| + usr/lib/gcc/x86_64-linux-gnu/4.*/* | usr/lib/gcc/i486-linux-gnu/4.*/* | \ |
| + usr/lib/gcc/arm-linux-gnueabihf/4.*/*) |
| # Relativize the symlink. |
| ln -snfv "../../../../..${target}" "${link}" |
| ;; |
| - usr/lib/x86_64-linux-gnu/* | usr/lib/i386-linux-gnu/*) |
| + usr/lib/x86_64-linux-gnu/* | usr/lib/i386-linux-gnu/* | \ |
| + usr/lib/arm-linux-gnueabihf/*) |
| # Relativize the symlink. |
| ln -snfv "../../..${target}" "${link}" |
| ;; |
| @@ -528,7 +577,7 @@ BuildSysrootAmd64() { |
| BuildSysrootI386() { |
| CheckBuildSysrootArgs $@ |
| ClearInstallDir |
| - local package_file="$TMP/package_with_sha256sum_amd64" |
| + local package_file="$TMP/package_with_sha256sum_i386" |
| GeneratePackageListI386 "$package_file" |
| local files_and_sha256sums="$(cat ${package_file})" |
| StripChecksumsFromPackageList "$package_file" |
| @@ -539,14 +588,31 @@ BuildSysrootI386() { |
| CreateTarBall "$1" |
| } |
| +#@ |
| +#@ BuildSysrootARM <tarball-name> |
| +#@ |
| +#@ Build everything and package it |
| +BuildSysrootARM() { |
| + CheckBuildSysrootArgs $@ |
| + ClearInstallDir |
| + local package_file="$TMP/package_with_sha256sum_arm" |
| + GeneratePackageListARM "$package_file" |
| + local files_and_sha256sums="$(cat ${package_file})" |
| + StripChecksumsFromPackageList "$package_file" |
| + VerifyPackageFilesMatch "$package_file" "$DEBIAN_DEP_LIST_ARM" |
| + InstallIntoSysroot ${files_and_sha256sums} |
| + CleanupJailSymlinks |
| + HacksAndPatchesARM |
| + CreateTarBall "$1" |
| +} |
| + |
| # |
| -# CheckForDebianGPGKeys |
| +# CheckForDebianGPGKeyring |
| # |
| # Make sure the Debian GPG keys exist. Otherwise print a helpful message. |
| # |
| -CheckForDebianGPGKeys() { |
| - if [ ! -e "/etc/apt/trusted.gpg.d/debian-archive-wheezy-automatic.gpg" ] || |
| - [ ! -e "/etc/apt/trusted.gpg.d/debian-archive-wheezy-stable.gpg" ]; then |
| +CheckForDebianGPGKeyring() { |
| + if [ ! -e "/usr/share/keyrings/debian-archive-keyring.gpg" ]; then |
| echo "Debian GPG keys missing. Install the debian-archive-keyring package." |
| exit 1 |
| fi |
| @@ -563,13 +629,12 @@ VerifyPackageListing() { |
| local release_file="${TMP}/${RELEASE_FILE}" |
| local release_file_gpg="${TMP}/${RELEASE_FILE_GPG}" |
| - CheckForDebianGPGKeys |
| + CheckForDebianGPGKeyring |
| DownloadOrCopy ${RELEASE_LIST} ${release_file} |
| DownloadOrCopy ${RELEASE_LIST_GPG} ${release_file_gpg} |
| echo "Verifying: ${release_file} with ${release_file_gpg}" |
| - gpgv --keyring /etc/apt/trusted.gpg.d/debian-archive-wheezy-automatic.gpg \ |
| - --keyring /etc/apt/trusted.gpg.d/debian-archive-wheezy-stable.gpg \ |
| + gpgv --keyring /usr/share/keyrings/debian-archive-keyring.gpg \ |
| ${release_file_gpg} ${release_file} |
| echo "Verifying: ${output_file}" |
| @@ -591,19 +656,21 @@ VerifyPackageListing() { |
| # to output file. |
| # |
| GeneratePackageList() { |
| - local output_file="$1" |
| - echo "Updating: ${output_file}" |
| + local input_file="$1" |
| + local output_file="$2" |
| + echo "Updating: ${output_file} from ${input_file}" |
| /bin/rm -f "${output_file}" |
| shift |
| + shift |
| for pkg in $@ ; do |
| - local pkg_full=$(grep -A 1 " ${pkg}\$" "${TMP}/Packages" | \ |
| + local pkg_full=$(grep -A 1 " ${pkg}\$" "$input_file" | \ |
| egrep -o "pool/.*") |
| if [ -z "${pkg_full}" ]; then |
| echo "ERROR: missing package: $pkg" |
| exit 1 |
| fi |
| local pkg_nopool=$(echo "$pkg_full" | sed "s/^pool\///") |
| - local sha256sum=$(grep -A 4 " ${pkg}\$" "${TMP}/Packages" | \ |
| + local sha256sum=$(grep -A 4 " ${pkg}\$" "$input_file" | \ |
| grep ^SHA256: | sed 's/^SHA256: //') |
| if [ "${#sha256sum}" -ne "64" ]; then |
| echo "Bad sha256sum from Packages" |
| @@ -635,6 +702,16 @@ UpdatePackageListsI386() { |
| StripChecksumsFromPackageList "$DEBIAN_DEP_LIST_I386" |
| } |
| +#@ |
| +#@ UpdatePackageListsARM |
| +#@ |
| +#@ Regenerate the package lists such that they contain an up-to-date |
| +#@ list of URLs within the Debian archive. (For arm) |
| +UpdatePackageListsARM() { |
| + GeneratePackageListARM "$DEBIAN_DEP_LIST_ARM" |
| + StripChecksumsFromPackageList "$DEBIAN_DEP_LIST_ARM" |
| +} |
| + |
| if [ $# -eq 0 ] ; then |
| echo "ERROR: you must specify a mode on the commandline" |
| echo |