Index: chrome/installer/linux/sysroot_scripts/sysroot-creator.sh |
diff --git a/chrome/installer/linux/sysroot_scripts/sysroot-creator-debian.wheezy.sh b/chrome/installer/linux/sysroot_scripts/sysroot-creator.sh |
old mode 100755 |
new mode 100644 |
similarity index 70% |
rename from chrome/installer/linux/sysroot_scripts/sysroot-creator-debian.wheezy.sh |
rename to chrome/installer/linux/sysroot_scripts/sysroot-creator.sh |
index b14359ca147c283d1d37fd4fe6ba7a9fd2a86202..87a3e7051746e89184f7b3a81a141016587c65dc |
--- a/chrome/installer/linux/sysroot_scripts/sysroot-creator-debian.wheezy.sh |
+++ b/chrome/installer/linux/sysroot_scripts/sysroot-creator.sh |
@@ -1,13 +1,19 @@ |
-#!/bin/sh |
-# |
# Copyright (c) 2013 The Chromium Authors. All rights reserved. |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
# |
-#@ This script builds a Debian Wheezy sysroot for building Google Chrome. |
+# This script should not be run directly but sourced by the other |
+# scripts (e.g. sysroot-creator-trusty.sh). Its up to the parent scripts |
+# to define certain environment variables: e.g. |
+# DIST=trusty |
+# APT_REPO=http://archive.ubuntu.com/ubuntu |
+# KEYRING_FILE=/usr/share/keyrings/ubuntu-archive-keyring.gpg |
+# DEBIAN_PACKAGES="gcc libz libssl" |
+ |
+#@ This script builds a Debian sysroot images for building Google Chrome. |
#@ |
#@ Generally this script is invoked as: |
-#@ sysroot-creator-debian.wheezy.sh <mode> <args>* |
+#@ sysroot-creator-<flavour>.sh <mode> <args>* |
#@ Available modes are shown below. |
#@ |
#@ List of modes: |
@@ -19,12 +25,34 @@ |
set -o nounset |
set -o errexit |
-readonly SCRIPT_DIR=$(dirname $0) |
+SCRIPT_DIR=$(cd $(dirname $0) && pwd) |
+ |
+if [ -z "${DIST:-}" ]; then |
+ echo "error: DIST not defined" |
+ exit 1 |
+fi |
+ |
+if [ -z "${APT_REPO:-}" ]; then |
+ echo "error: APT_REPO not defined" |
+ exit 1 |
+fi |
+ |
+if [ -z "${KEYRING_FILE:-}" ]; then |
+ echo "error: KEYRING_FILE not defined" |
+ exit 1 |
+fi |
+ |
+if [ -z "${DEBIAN_PACKAGES:-}" ]; then |
+ echo "error: DEBIAN_PACKAGES not defined" |
+ exit 1 |
+fi |
+ |
+readonly REPO_BASEDIR="${APT_REPO}/dists/${DIST}" |
# 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 INSTALL_ROOT_AMD64=$(pwd)/${DIST}_amd64_staging |
+readonly INSTALL_ROOT_I386=$(pwd)/${DIST}_i386_staging |
+readonly INSTALL_ROOT_ARM=$(pwd)/${DIST}_arm_staging |
readonly REQUIRED_TOOLS="wget" |
@@ -32,10 +60,6 @@ readonly REQUIRED_TOOLS="wget" |
# Package Config |
###################################################################### |
-# This is where we get all the debian packages from. |
-readonly DEBIAN_REPO=http://http.us.debian.org/debian |
-readonly REPO_BASEDIR="${DEBIAN_REPO}/dists/wheezy" |
- |
readonly RELEASE_FILE="Release" |
readonly RELEASE_FILE_GPG="Release.gpg" |
readonly RELEASE_LIST="${REPO_BASEDIR}/${RELEASE_FILE}" |
@@ -47,174 +71,9 @@ 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 |
-# by running this script in GeneratePackageList mode. |
-readonly DEBIAN_PACKAGES="\ |
- comerr-dev \ |
- gcc-4.6 \ |
- krb5-multidev \ |
- libasound2 \ |
- libasound2-dev \ |
- libatk1.0-0 \ |
- libatk1.0-dev \ |
- libavahi-client3 \ |
- libavahi-common3 \ |
- libc6 \ |
- libc6-dev \ |
- libcairo2 \ |
- libcairo2-dev \ |
- libcairo-gobject2 \ |
- libcairo-script-interpreter2 \ |
- libcap-dev \ |
- libcap2 \ |
- libcomerr2 \ |
- libcups2 \ |
- libcups2-dev \ |
- libdbus-1-3 \ |
- libdbus-1-dev \ |
- libdbus-glib-1-2 \ |
- libdrm2 \ |
- libelf1 \ |
- libelf-dev \ |
- libexif12 \ |
- libexif-dev \ |
- libexpat1 \ |
- libexpat1-dev \ |
- libffi5 \ |
- libfontconfig1 \ |
- libfontconfig1-dev \ |
- libfreetype6 \ |
- libfreetype6-dev \ |
- libgcc1 \ |
- libgcc1 \ |
- libgconf-2-4 \ |
- libgconf2-4 \ |
- libgconf2-dev \ |
- libgcrypt11 \ |
- libgcrypt11-dev \ |
- libgdk-pixbuf2.0-0 \ |
- libgdk-pixbuf2.0-dev \ |
- libgl1-mesa-dev \ |
- libgl1-mesa-glx \ |
- libglapi-mesa \ |
- libglib2.0-0 \ |
- libglib2.0-dev \ |
- libgnome-keyring0 \ |
- libgnome-keyring-dev \ |
- libgnutls26 \ |
- libgnutls-dev \ |
- libgnutls-openssl27 \ |
- libgnutlsxx27 \ |
- libgomp1 \ |
- libgpg-error0 \ |
- libgpg-error-dev \ |
- libgssapi-krb5-2 \ |
- libgssrpc4 \ |
- libgtk2.0-0 \ |
- libgtk2.0-dev \ |
- libk5crypto3 \ |
- libkadm5clnt-mit8 \ |
- libkadm5srv-mit8 \ |
- libkdb5-6 \ |
- libkeyutils1 \ |
- libkrb5-3 \ |
- libkrb5-dev \ |
- libkrb5support0 \ |
- libnspr4 \ |
- libnspr4-dev \ |
- libnss3 \ |
- libnss3-dev \ |
- libnss-db \ |
- liborbit2 \ |
- libp11-2 \ |
- libp11-kit0 \ |
- libpam0g \ |
- libpam0g-dev \ |
- libpango1.0-0 \ |
- libpango1.0-dev \ |
- libpci3 \ |
- libpci-dev \ |
- libpcre3 \ |
- libpcre3-dev \ |
- libpcrecpp0 \ |
- libpixman-1-0 \ |
- libpixman-1-dev \ |
- libpng12-0 \ |
- libpng12-dev \ |
- libpulse0 \ |
- libpulse-dev \ |
- libpulse-mainloop-glib0 \ |
- libselinux1 \ |
- libspeechd2 \ |
- libspeechd-dev \ |
- libssl1.0.0 \ |
- libssl-dev \ |
- libstdc++6 \ |
- libstdc++6-4.6-dev \ |
- libtasn1-3 \ |
- libudev0 \ |
- libudev-dev \ |
- libx11-6 \ |
- libx11-dev \ |
- libx11-xcb1 \ |
- libxau6 \ |
- libxau-dev \ |
- libxcb1 \ |
- libxcb1-dev \ |
- libxcb-glx0 \ |
- libxcb-render0 \ |
- libxcb-render0-dev \ |
- libxcb-shm0 \ |
- libxcb-shm0-dev \ |
- libxcomposite1 \ |
- libxcomposite-dev \ |
- libxcursor1 \ |
- libxcursor-dev \ |
- libxdamage1 \ |
- libxdamage-dev \ |
- libxdmcp6 \ |
- libxext6 \ |
- libxext-dev \ |
- libxfixes3 \ |
- libxfixes-dev \ |
- libxi6 \ |
- libxi-dev \ |
- libxinerama1 \ |
- libxinerama-dev \ |
- libxrandr2 \ |
- libxrandr-dev \ |
- libxrender1 \ |
- libxrender-dev \ |
- libxss1 \ |
- libxss-dev \ |
- libxt6 \ |
- libxt-dev \ |
- libxtst6 \ |
- libxtst-dev \ |
- libxxf86vm1 \ |
- linux-libc-dev \ |
- mesa-common-dev \ |
- speech-dispatcher \ |
- x11proto-composite-dev \ |
- x11proto-core-dev \ |
- x11proto-damage-dev \ |
- x11proto-fixes-dev \ |
- x11proto-input-dev \ |
- x11proto-kb-dev \ |
- x11proto-randr-dev \ |
- x11proto-record-dev \ |
- x11proto-render-dev \ |
- x11proto-scrnsaver-dev \ |
- x11proto-xext-dev \ |
- zlib1g \ |
- zlib1g-dev" |
- |
-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" |
+readonly DEBIAN_DEP_LIST_AMD64="packagelist.${DIST}.amd64" |
+readonly DEBIAN_DEP_LIST_I386="packagelist.${DIST}.i386" |
+readonly DEBIAN_DEP_LIST_ARM="packagelist.${DIST}.arm" |
###################################################################### |
# Helper |
@@ -228,14 +87,14 @@ Banner() { |
SubBanner() { |
- echo "......................................................................" |
+ echo "----------------------------------------------------------------------" |
echo $* |
- echo "......................................................................" |
+ echo "----------------------------------------------------------------------" |
} |
Usage() { |
- egrep "^#@" "$0" | cut --bytes=3- |
+ egrep "^#@" "${BASH_SOURCE[0]}" | cut --bytes=3- |
} |
@@ -249,7 +108,8 @@ DownloadOrCopy() { |
echo "$1" | grep -qs ^http:// && HTTP=1 |
if [ "$HTTP" = "1" ]; then |
SubBanner "downloading from $1 -> $2" |
- wget "$1" -O "$2" |
+ wget "$1" -O "${2}.partial" |
+ mv "${2}.partial" $2 |
else |
SubBanner "copying from $1" |
cp "$1" "$2" |
@@ -283,36 +143,24 @@ SetEnvironmentVariables() { |
esac |
} |
-Cleanup() { |
- echo "Cleaning: $TMP" |
- rm -rf "$TMP" |
-} |
# some sanity checks to make sure this script is run from the right place |
# with the right tools |
SanityCheck() { |
Banner "Sanity Checks" |
- if [ "$(basename $(pwd))" != "sysroot_scripts" ] ; then |
- echo -n "ERROR: run this script from " |
- echo "src/chrome/installer/linux/sysroot_scripts" |
- exit 1 |
- fi |
- |
if ! mkdir -p "${INSTALL_ROOT}" ; then |
echo "ERROR: ${INSTALL_ROOT} can't be created." |
exit 1 |
fi |
- TMP=$(mktemp -q -t -d debian-wheezy-XXXXXX) |
- if [ -z "$TMP" ]; then |
- echo "ERROR: temp dir can't be created." |
- exit 1 |
- fi |
- trap Cleanup 0 |
+ CHROME_DIR=$(cd "${SCRIPT_DIR}/../../.." && pwd) |
+ BUILD_DIR=${CHROME_DIR}/out/sysroot-build/${DIST} |
+ mkdir -p ${BUILD_DIR} |
+ echo "Using build directory: ${BUILD_DIR}" |
for tool in ${REQUIRED_TOOLS} ; do |
- if ! which ${tool} ; then |
+ if ! which ${tool} > /dev/null ; then |
echo "Required binary $tool not found." |
echo "Exiting." |
exit 1 |
@@ -357,36 +205,33 @@ ExtractPackageBz2() { |
GeneratePackageListAmd64() { |
local output_file="$1" |
- local package_list="${TMP}/Packages.wheezy_amd64.bz2" |
- local tmp_package_list="${TMP}/Packages.wheezy_amd64" |
+ local package_list="${BUILD_DIR}/Packages.${DIST}_amd64.bz2" |
+ local tmp_package_list="${BUILD_DIR}/Packages.${DIST}_amd64" |
DownloadOrCopy "${PACKAGE_LIST_AMD64}" "${package_list}" |
VerifyPackageListing "${PACKAGE_FILE_AMD64}" "${package_list}" |
ExtractPackageBz2 "$package_list" "$tmp_package_list" |
- |
GeneratePackageList "$tmp_package_list" "$output_file" "${DEBIAN_PACKAGES} |
- ${DEBIAN_PACKAGES_X86}" |
+ ${DEBIAN_PACKAGES_X86}" |
} |
GeneratePackageListI386() { |
local output_file="$1" |
- local package_list="${TMP}/Packages.wheezy_i386.bz2" |
- local tmp_package_list="${TMP}/Packages.wheezy_amd64" |
+ local package_list="${BUILD_DIR}/Packages.${DIST}_i386.bz2" |
+ local tmp_package_list="${BUILD_DIR}/Packages.${DIST}_amd64" |
DownloadOrCopy "${PACKAGE_LIST_I386}" "${package_list}" |
VerifyPackageListing "${PACKAGE_FILE_I386}" "${package_list}" |
ExtractPackageBz2 "$package_list" "$tmp_package_list" |
- |
GeneratePackageList "$tmp_package_list" "$output_file" "${DEBIAN_PACKAGES} |
- ${DEBIAN_PACKAGES_X86}" |
+ ${DEBIAN_PACKAGES_X86}" |
} |
GeneratePackageListARM() { |
local output_file="$1" |
- local package_list="${TMP}/Packages.wheezy_arm.bz2" |
- local tmp_package_list="${TMP}/Packages.wheezy_arm" |
+ local package_list="${BUILD_DIR}/Packages.${DIST}_arm.bz2" |
+ local tmp_package_list="${BUILD_DIR}/Packages.${DIST}_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}" |
} |
@@ -480,11 +325,11 @@ HacksAndPatchesARM() { |
InstallIntoSysroot() { |
Banner "Install Libs And Headers Into Jail" |
- mkdir -p ${TMP}/debian-packages |
+ mkdir -p ${BUILD_DIR}/debian-packages |
mkdir -p ${INSTALL_ROOT} |
while (( "$#" )); do |
local file="$1" |
- local package="${TMP}/debian-packages/${file##*/}" |
+ local package="${BUILD_DIR}/debian-packages/${file##*/}" |
shift |
local sha256sum="$1" |
shift |
@@ -494,7 +339,7 @@ InstallIntoSysroot() { |
fi |
Banner "Installing ${file}" |
- DownloadOrCopy ${DEBIAN_REPO}/pool/${file} ${package} |
+ DownloadOrCopy ${APT_REPO}/pool/${file} ${package} |
if [ ! -s "${package}" ] ; then |
echo |
echo "ERROR: bad package ${package}" |
@@ -504,7 +349,7 @@ InstallIntoSysroot() { |
SubBanner "Extracting to ${INSTALL_ROOT}" |
dpkg --fsys-tarfile ${package}\ |
- | tar -xvf - --exclude=./usr/share -C ${INSTALL_ROOT} |
+ | tar -xf - --exclude=./usr/share -C ${INSTALL_ROOT} |
done |
} |
@@ -558,12 +403,12 @@ CleanupJailSymlinks() { |
BuildSysrootAmd64() { |
CheckBuildSysrootArgs $@ |
ClearInstallDir |
- local package_file="$TMP/package_with_sha256sum_amd64" |
+ local package_file="$BUILD_DIR/package_with_sha256sum_amd64" |
GeneratePackageListAmd64 "$package_file" |
local files_and_sha256sums="$(cat ${package_file})" |
StripChecksumsFromPackageList "$package_file" |
VerifyPackageFilesMatch "$package_file" "$DEBIAN_DEP_LIST_AMD64" |
- InstallIntoSysroot "${files_and_sha256sums}" |
+ InstallIntoSysroot ${files_and_sha256sums} |
CleanupJailSymlinks |
HacksAndPatchesAmd64 |
CreateTarBall "$1" |
@@ -576,12 +421,12 @@ BuildSysrootAmd64() { |
BuildSysrootI386() { |
CheckBuildSysrootArgs $@ |
ClearInstallDir |
- local package_file="$TMP/package_with_sha256sum_i386" |
+ local package_file="$BUILD_DIR/package_with_sha256sum_i386" |
GeneratePackageListI386 "$package_file" |
local files_and_sha256sums="$(cat ${package_file})" |
StripChecksumsFromPackageList "$package_file" |
VerifyPackageFilesMatch "$package_file" "$DEBIAN_DEP_LIST_I386" |
- InstallIntoSysroot "${files_and_sha256sums}" |
+ InstallIntoSysroot ${files_and_sha256sums} |
CleanupJailSymlinks |
HacksAndPatchesI386 |
CreateTarBall "$1" |
@@ -594,12 +439,13 @@ BuildSysrootI386() { |
BuildSysrootARM() { |
CheckBuildSysrootArgs $@ |
ClearInstallDir |
- local package_file="$TMP/package_with_sha256sum_arm" |
+ local package_file="$BUILD_DIR/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}" |
+ APT_REPO=${APR_REPO_ARM:=$APT_REPO} |
+ InstallIntoSysroot ${files_and_sha256sums} |
CleanupJailSymlinks |
HacksAndPatchesARM |
CreateTarBall "$1" |
@@ -611,7 +457,7 @@ BuildSysrootARM() { |
# Make sure the Debian GPG keys exist. Otherwise print a helpful message. |
# |
CheckForDebianGPGKeyring() { |
- if [ ! -e "/usr/share/keyrings/debian-archive-keyring.gpg" ]; then |
+ if [ ! -e "$KEYRING_FILE" ]; then |
echo "Debian GPG keys missing. Install the debian-archive-keyring package." |
exit 1 |
fi |
@@ -625,16 +471,15 @@ CheckForDebianGPGKeyring() { |
VerifyPackageListing() { |
local file_path=$1 |
local output_file=$2 |
- local release_file="${TMP}/${RELEASE_FILE}" |
- local release_file_gpg="${TMP}/${RELEASE_FILE_GPG}" |
+ local release_file="${BUILD_DIR}/${RELEASE_FILE}" |
+ local release_file_gpg="${BUILD_DIR}/${RELEASE_FILE_GPG}" |
CheckForDebianGPGKeyring |
DownloadOrCopy ${RELEASE_LIST} ${release_file} |
DownloadOrCopy ${RELEASE_LIST_GPG} ${release_file_gpg} |
echo "Verifying: ${release_file} with ${release_file_gpg}" |
- gpgv --keyring /usr/share/keyrings/debian-archive-keyring.gpg \ |
- ${release_file_gpg} ${release_file} |
+ gpgv --keyring $KEYRING_FILE ${release_file_gpg} ${release_file} |
echo "Verifying: ${output_file}" |
local checksums=$(grep ${file_path} ${release_file} | cut -d " " -f 2) |
@@ -651,7 +496,7 @@ VerifyPackageListing() { |
# |
# GeneratePackageList |
# |
-# Looks up package names in ${TMP}/Packages and write list of URLs |
+# Looks up package names in ${BUILD_DIR}/Packages and write list of URLs |
# to output file. |
# |
GeneratePackageList() { |