| #!/bin/bash |
| |
| # This script builds Skia for ChromeOS by mounting the Skia checkout inside a |
| # chroot contained within an existing ChromeOS checkout, entering the chroot, |
| # and running the build_skia_in_chroot script. |
| |
| SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" |
| |
| if [ $(uname) != "Linux" ]; then |
| echo "ERROR: Can only build for ChromeOS on Linux." |
| exit 1 |
| fi |
| |
| |
| makeVars="" |
| deviceID="" |
| |
| while (( "$#" )); do |
| |
| if [[ $(echo "$1" | grep "^-d$") != "" ]]; |
| then |
| deviceID="$2" |
| shift |
| else |
| makeVars="$makeVars $1" |
| fi |
| |
| shift |
| done |
| |
| if [[ -z "${deviceID}" ]]; then |
| echo "You must provide a deviceID with -d." |
| exit 1 |
| fi |
| |
| CHROMEOS_CHROOT="${SCRIPT_DIR}/../toolchain" |
| |
| # Get the required SDK version. |
| # TODO(borenet): Should we instead get the latest from GS? |
| #SDK_VERSION=$(gsutil cat gs://chromeos-image-archive/${deviceID}-release/LATEST-master) |
| #SDK_VERSION=${SDK_VERSION:4} |
| SDK_VERSION="4279.0.0" |
| mkdir -p "${CHROMEOS_CHROOT}/src/chromeos" |
| echo -n ${SDK_VERSION} > "${CHROMEOS_CHROOT}/src/chromeos/CHROMEOS_LKGM" |
| |
| # Download the toolchain tarball if needed. |
| # TODO(borenet): Let chrome-sdk take care of this once it works with external |
| # boards. |
| if ! [[ -d "${CHROMEOS_CHROOT}/.cros_cache" ]]; then |
| TARBALL="cros_toolchain.tgz" |
| gsutil cp gs://chromium-skia-gm/chromeos-toolchains/${TARBALL} ${CHROMEOS_CHROOT} |
| if [ "$?" != "0" ] |
| then |
| exit 1; |
| fi |
| pushd "${CHROMEOS_CHROOT}" > /dev/null |
| tar -zxvf ${TARBALL} |
| popd > /dev/null |
| rm ${CHROMEOS_CHROOT}/${TARBALL} |
| fi |
| |
| # Put a fake .gclient file in the toolchain directory so that the cros tool |
| # thinks we're in a Chrome checkout. |
| echo "Delete me!" > "${CHROMEOS_CHROOT}/.gclient" |
| |
| # We may also need a .git directory. |
| GIT_DIR="${CHROMEOS_CHROOT}/src/third_party/chromite/.git" |
| if ! [[ -d "${GIT_DIR}" ]]; then |
| mkdir -p ${GIT_DIR} |
| fi |
| |
| # Where the Skia code will pretend to live inside the chroot. |
| SKIA_TOP_DIR="${SCRIPT_DIR}/../../.." |
| |
| pushd ${CHROMEOS_CHROOT} |
| cros chrome-sdk --nogoma --board ${deviceID} --debug -- /bin/sh -c "cd ${SKIA_TOP_DIR}; platform_tools/chromeos/bin/build_skia_in_chroot ${makeVars}" |
| popd > /dev/null |
| |
| # Clean up |
| rm ${CHROMEOS_CHROOT}/.gclient |
| |
| if [ -f .cros_build_successful ]; then |
| rm -rf .cros_build_successful |
| exit 0 |
| fi |
| |
| exit 1 |