diff options
Diffstat (limited to 'build')
-rwxr-xr-x | build/android/buildbot_functions.sh | 4 | ||||
-rwxr-xr-x | build/android/envsetup.sh | 4 | ||||
-rwxr-xr-x | build/install-build-deps-android-sdk.sh | 161 | ||||
-rwxr-xr-x | build/install-build-deps-android.sh | 168 |
4 files changed, 206 insertions, 131 deletions
diff --git a/build/android/buildbot_functions.sh b/build/android/buildbot_functions.sh index 9ad5d49..bb7f6f4 100755 --- a/build/android/buildbot_functions.sh +++ b/build/android/buildbot_functions.sh @@ -22,11 +22,11 @@ function bb_setup_environment { } # Install the build deps by running -# build/install-build-deps-android.sh. This may update local tools. +# build/install-build-deps-android-sdk.sh. This may update local tools. # $1: source root. function bb_install_build_deps { echo "@@@BUILD_STEP install build deps android@@@" - local script="$1/build/install-build-deps-android.sh" + local script="$1/build/install-build-deps-android-sdk.sh" if [[ -f "$script" ]]; then "$script" else diff --git a/build/android/envsetup.sh b/build/android/envsetup.sh index 49990fb..3f4df52 100755 --- a/build/android/envsetup.sh +++ b/build/android/envsetup.sh @@ -19,7 +19,7 @@ if [ ! -d "${ANDROID_NDK_ROOT}" ]; then echo "ANDROID_NDK_ROOT must be set to the path of Android NDK, Revision 6b." \ >& 2 echo "which could be installed by" >& 2 - echo "<chromium_tree>/src/build/install-build-deps-android.sh" >& 2 + echo "<chromium_tree>/src/build/install-build-deps-android-sdk.sh" >& 2 return 1 fi @@ -27,7 +27,7 @@ if [ ! -d "${ANDROID_SDK_ROOT}" ]; then echo "ANDROID_SDK_ROOT must be set to the path of Android SDK, Android 3.2." \ >& 2 echo "which could be installed by" >& 2 - echo "<chromium_tree>/src/build/install-build-deps-android.sh" >& 2 + echo "<chromium_tree>/src/build/install-build-deps-android-sdk.sh" >& 2 return 1 fi diff --git a/build/install-build-deps-android-sdk.sh b/build/install-build-deps-android-sdk.sh new file mode 100755 index 0000000..1709845 --- /dev/null +++ b/build/install-build-deps-android-sdk.sh @@ -0,0 +1,161 @@ +#!/bin/bash + +# Copyright (c) 2012 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. + +set -e + +# The script is to install Android SDK, NDK for build chromium on Android, and +# doesn't need to run as root. + +# Using Android 4.0, API Level: 14 (ice cream sandwich). The SDK package is +# about 25M. +SDK_FILE_NAME="android-sdk_r16-linux.tgz" +SDK_DOWNLOAD_URL="http://dl.google.com/android/${SDK_FILE_NAME}" +SDK_MD5SUM="3ba457f731d51da3741c29c8830a4583" + +# Using "ANDROID_SDK_ROOT/tools/android list targets" to get the matching target +# id which will be loaded in simulator for testing. +# For example: the output of the listed the target could be below, and the +# 'android-13' is the SDK_TARGET_ID in this case. +# id: 9 or "android-13" +# Name: Android 3.2 +# Type: Platform +# API level: 13 +# Revision: 1 +# Skins: WXGA (default) +SDK_TARGET_ID=android-14 + +# Using NDK r7; The package is about 64M. +# *** DO NOT UPDATE THE NDK without updating the 64-bit linker changes *** +# *** at the end of this file *** +NDK_FILE_NAME="android-ndk-r7-linux-x86.tar.bz2" +NDK_DOWNLOAD_URL="http://dl.google.com/android/ndk/${NDK_FILE_NAME}" +NDK_MD5SUM="bf15e6b47bf50824c4b96849bf003ca3" + +# The temporary directory used to store the downloaded file. +TEMPDIR=$(mktemp -d) +cleanup() { + local status=${?} + trap - EXIT + rm -rf "${TEMPDIR}" + exit ${status} +} +trap cleanup EXIT + +########################################################## +# Download and install a tgz package by wget and tar -xvf. +# The current directory is changed in this function. +# Arguments: +# local_file_name, the name of downloaded file. +# download_url, the url to download the package. +# md5, the package's md5 which could be found in download page. +# install_path, where the package should be installed. +# Returns: +# None +########################################################## +install_dev_kit() { + local local_file_name="${1}" + local download_url="${2}" + local md5="${3}" + local install_path="${4}" + + cd "${TEMPDIR}" + wget "${download_url}" + + local computed_md5=$(md5sum "${local_file_name}" | cut -d' ' -f1) + if [[ "${computed_md5}" != "${md5}" ]]; then + echo "Downloaded ${local_file_name} has bad md5sum, which is expected" >& 2 + echo "to be ${md5} but was ${computed_md5}" >& 2 + exit 1 + fi + + echo "Install ${local_file_name}" + mv "${local_file_name}" "${install_path}" + cd "${install_path}" + tar -xvf "${local_file_name}" +} + +if [[ -z "${ANDROID_SDK_ROOT}" ]]; then + echo "Please set ANDROID_SDK_ROOT to where they should installed to." >& 2 + echo "For example: /usr/local/android-sdk-linux_x86" >& 2 + exit 1 +fi + +if [[ -z "${ANDROID_NDK_ROOT}" ]]; then + echo "Please set ANDROID_NDK_ROOT to where they should installed to." >& 2 + echo "For example: /usr/local/android-ndk-r6b" >& 2 + exit 1 +fi + +# Install Android SDK if it doesn't exist. +if [[ ! -d "${ANDROID_SDK_ROOT}" ]]; then + echo 'Install ANDROID SDK ...' + (install_dev_kit "${SDK_FILE_NAME}" "${SDK_DOWNLOAD_URL}" "${SDK_MD5SUM}" \ + $(dirname "${ANDROID_SDK_ROOT}")) +fi + +# Install the target if it doesn't exist. The package installed above contains +# no platform, platform-tool or tool, all those should be installed by +# ${ANDROID_SDK_ROOT}/tools/android. +found=$("${ANDROID_SDK_ROOT}/tools/android" list targets \ + | grep "${SDK_TARGET_ID}" | wc -l) +if [[ "$found" = "0" ]]; then + # Updates the SDK by installing the necessary components. + # From current configuration, all android platforms will be installed. + # This will take a little bit long time. + echo "Install platform, platform-tool and tool ..." + + "${ANDROID_SDK_ROOT}"/tools/android update sdk -o --no-ui \ + --filter platform,platform-tool,tool,system-image +fi + +# Create a Android Virtual Device named 'buildbot' with default hardware +# configuration and override the existing one, since there is no easy way to +# check whether current AVD has correct configuration and it takes almost no +# time to create a new one. +"${ANDROID_SDK_ROOT}/tools/android" --silent create avd --name buildbot \ + --target ${SDK_TARGET_ID} --force <<< "no" + +# Install Android NDK if it doesn't exist. +if [[ ! -d "${ANDROID_NDK_ROOT}" ]]; then + echo 'Install ANDROID NDK ...' + (install_dev_kit "${NDK_FILE_NAME}" "${NDK_DOWNLOAD_URL}" "${NDK_MD5SUM}" \ + $(dirname "${ANDROID_NDK_ROOT}")) +fi + +# Install the 64-bit linker if needed. +ROOT=$(cd "$(dirname $0)/.."; pwd) +LINKER_DIR_PREFIX="$ANDROID_NDK_ROOT/toolchains/\ +arm-linux-androideabi-4.4.3/prebuilt/linux-x86" +LINKER_DIRNAME_1="$LINKER_DIR_PREFIX/bin" +LINKER_BASENAME_1=arm-linux-androideabi-ld +LINKER_DIRNAME_2="$LINKER_DIR_PREFIX/arm-linux-androideabi/bin" +LINKER_BASENAME_2=ld +NEW_LINKER=arm-linux-androideabi-ld.e4df3e0a5bb640ccfa2f30ee67fe9b3146b152d6 + +# $1: destination directory +# $2: destination binary +function replace_linker { + local linker_dirname=$1 + local linker_basename=$2 + if [[ -f "$ROOT/third_party/aosp/$NEW_LINKER" ]]; then + if [[ -d "$linker_dirname" ]]; then + if [[ ! -f "$linker_dirname/$NEW_LINKER" ]]; then + echo "Installing linker in $linker_dirname" + cp $ROOT/third_party/aosp/$NEW_LINKER "$linker_dirname/$NEW_LINKER" + mv "$linker_dirname/$linker_basename" \ + "$linker_dirname/$linker_basename.orig" + ( cd "$linker_dirname" ; ln -s "$NEW_LINKER" "$linker_basename" ) + fi + if [[ ! -f "$linker_dirname/$NEW_LINKER" ]]; then + echo "Could not copy linker" + exit 1 + fi + fi + fi +} + +replace_linker $LINKER_DIRNAME_1 $LINKER_BASENAME_1 +replace_linker $LINKER_DIRNAME_2 $LINKER_BASENAME_2 diff --git a/build/install-build-deps-android.sh b/build/install-build-deps-android.sh index 1709845..8077e8ea 100755 --- a/build/install-build-deps-android.sh +++ b/build/install-build-deps-android.sh @@ -1,38 +1,31 @@ -#!/bin/bash +#!/bin/bash -e # Copyright (c) 2012 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. -set -e - -# The script is to install Android SDK, NDK for build chromium on Android, and -# doesn't need to run as root. - -# Using Android 4.0, API Level: 14 (ice cream sandwich). The SDK package is -# about 25M. -SDK_FILE_NAME="android-sdk_r16-linux.tgz" -SDK_DOWNLOAD_URL="http://dl.google.com/android/${SDK_FILE_NAME}" -SDK_MD5SUM="3ba457f731d51da3741c29c8830a4583" - -# Using "ANDROID_SDK_ROOT/tools/android list targets" to get the matching target -# id which will be loaded in simulator for testing. -# For example: the output of the listed the target could be below, and the -# 'android-13' is the SDK_TARGET_ID in this case. -# id: 9 or "android-13" -# Name: Android 3.2 -# Type: Platform -# API level: 13 -# Revision: 1 -# Skins: WXGA (default) -SDK_TARGET_ID=android-14 - -# Using NDK r7; The package is about 64M. -# *** DO NOT UPDATE THE NDK without updating the 64-bit linker changes *** -# *** at the end of this file *** -NDK_FILE_NAME="android-ndk-r7-linux-x86.tar.bz2" -NDK_DOWNLOAD_URL="http://dl.google.com/android/ndk/${NDK_FILE_NAME}" -NDK_MD5SUM="bf15e6b47bf50824c4b96849bf003ca3" +# Script to install everything needed to build chromium on android that +# requires sudo privileges. +# See http://code.google.com/p/chromium/wiki/AndroidBuildInstructions + +DOWNLOAD_URL="http://ftp.us.debian.org/debian/pool/non-free/s/sun-java6" + +BIN_FILE_NAME="sun-java6-bin_6.26-0squeeze1_amd64.deb" +JRE_FILE_NAME="sun-java6-jre_6.26-0squeeze1_all.deb" +JDK_FILE_NAME="sun-java6-jdk_6.26-0squeeze1_amd64.deb" + +if ! uname -m | egrep -q "i686|x86_64"; then + echo "Only x86 architectures are currently supported" >&2 + exit +fi + +if [ "x$(id -u)" != x0 ]; then + echo "Running as non-root user." + echo "You might have to enter your password one or more times for 'sudo'." + echo +fi + +sudo apt-get update # The temporary directory used to store the downloaded file. TEMPDIR=$(mktemp -d) @@ -45,117 +38,38 @@ cleanup() { trap cleanup EXIT ########################################################## -# Download and install a tgz package by wget and tar -xvf. +# Download (i.e. wget) and install debian package. # The current directory is changed in this function. # Arguments: -# local_file_name, the name of downloaded file. -# download_url, the url to download the package. -# md5, the package's md5 which could be found in download page. -# install_path, where the package should be installed. +# file_name # Returns: # None ########################################################## -install_dev_kit() { - local local_file_name="${1}" - local download_url="${2}" - local md5="${3}" - local install_path="${4}" +install_deb_pkg() { + local file_name="${1}" + local download_url="${DOWNLOAD_URL}/${file_name}" cd "${TEMPDIR}" wget "${download_url}" - local computed_md5=$(md5sum "${local_file_name}" | cut -d' ' -f1) - if [[ "${computed_md5}" != "${md5}" ]]; then - echo "Downloaded ${local_file_name} has bad md5sum, which is expected" >& 2 - echo "to be ${md5} but was ${computed_md5}" >& 2 - exit 1 - fi - - echo "Install ${local_file_name}" - mv "${local_file_name}" "${install_path}" - cd "${install_path}" - tar -xvf "${local_file_name}" + echo "Install ${file_name}" + sudo dpkg -i "${file_name}" } -if [[ -z "${ANDROID_SDK_ROOT}" ]]; then - echo "Please set ANDROID_SDK_ROOT to where they should installed to." >& 2 - echo "For example: /usr/local/android-sdk-linux_x86" >& 2 - exit 1 -fi -if [[ -z "${ANDROID_NDK_ROOT}" ]]; then - echo "Please set ANDROID_NDK_ROOT to where they should installed to." >& 2 - echo "For example: /usr/local/android-ndk-r6b" >& 2 - exit 1 -fi +# Install ant +sudo apt-get install python-pexpect ant -# Install Android SDK if it doesn't exist. -if [[ ! -d "${ANDROID_SDK_ROOT}" ]]; then - echo 'Install ANDROID SDK ...' - (install_dev_kit "${SDK_FILE_NAME}" "${SDK_DOWNLOAD_URL}" "${SDK_MD5SUM}" \ - $(dirname "${ANDROID_SDK_ROOT}")) -fi +# Install sun-java6-bin +install_deb_pkg "${BIN_FILE_NAME}" -# Install the target if it doesn't exist. The package installed above contains -# no platform, platform-tool or tool, all those should be installed by -# ${ANDROID_SDK_ROOT}/tools/android. -found=$("${ANDROID_SDK_ROOT}/tools/android" list targets \ - | grep "${SDK_TARGET_ID}" | wc -l) -if [[ "$found" = "0" ]]; then - # Updates the SDK by installing the necessary components. - # From current configuration, all android platforms will be installed. - # This will take a little bit long time. - echo "Install platform, platform-tool and tool ..." - - "${ANDROID_SDK_ROOT}"/tools/android update sdk -o --no-ui \ - --filter platform,platform-tool,tool,system-image -fi +# Install sun-java6-jre +install_deb_pkg "${JRE_FILE_NAME}" -# Create a Android Virtual Device named 'buildbot' with default hardware -# configuration and override the existing one, since there is no easy way to -# check whether current AVD has correct configuration and it takes almost no -# time to create a new one. -"${ANDROID_SDK_ROOT}/tools/android" --silent create avd --name buildbot \ - --target ${SDK_TARGET_ID} --force <<< "no" - -# Install Android NDK if it doesn't exist. -if [[ ! -d "${ANDROID_NDK_ROOT}" ]]; then - echo 'Install ANDROID NDK ...' - (install_dev_kit "${NDK_FILE_NAME}" "${NDK_DOWNLOAD_URL}" "${NDK_MD5SUM}" \ - $(dirname "${ANDROID_NDK_ROOT}")) -fi +# Install sun-java6-jdk +install_deb_pkg "${JDK_FILE_NAME}" -# Install the 64-bit linker if needed. -ROOT=$(cd "$(dirname $0)/.."; pwd) -LINKER_DIR_PREFIX="$ANDROID_NDK_ROOT/toolchains/\ -arm-linux-androideabi-4.4.3/prebuilt/linux-x86" -LINKER_DIRNAME_1="$LINKER_DIR_PREFIX/bin" -LINKER_BASENAME_1=arm-linux-androideabi-ld -LINKER_DIRNAME_2="$LINKER_DIR_PREFIX/arm-linux-androideabi/bin" -LINKER_BASENAME_2=ld -NEW_LINKER=arm-linux-androideabi-ld.e4df3e0a5bb640ccfa2f30ee67fe9b3146b152d6 - -# $1: destination directory -# $2: destination binary -function replace_linker { - local linker_dirname=$1 - local linker_basename=$2 - if [[ -f "$ROOT/third_party/aosp/$NEW_LINKER" ]]; then - if [[ -d "$linker_dirname" ]]; then - if [[ ! -f "$linker_dirname/$NEW_LINKER" ]]; then - echo "Installing linker in $linker_dirname" - cp $ROOT/third_party/aosp/$NEW_LINKER "$linker_dirname/$NEW_LINKER" - mv "$linker_dirname/$linker_basename" \ - "$linker_dirname/$linker_basename.orig" - ( cd "$linker_dirname" ; ln -s "$NEW_LINKER" "$linker_basename" ) - fi - if [[ ! -f "$linker_dirname/$NEW_LINKER" ]]; then - echo "Could not copy linker" - exit 1 - fi - fi - fi -} +# Switch version of Java to java-6-sun +sudo update-java-alternatives -s java-6-sun -replace_linker $LINKER_DIRNAME_1 $LINKER_BASENAME_1 -replace_linker $LINKER_DIRNAME_2 $LINKER_BASENAME_2 +echo "install-build-deps-android.sh complete." |