Set Chrome version/branch to 26.0.1410.28.
Change-Id: I316d4cc0e552a77fa607e1a65af559c0aa251065
diff --git a/chromeos-base/chromeos-chrome/chromeos-chrome-26.0.1410.4.ebuild b/chromeos-base/chromeos-chrome/chromeos-chrome-26.0.1410.28.ebuild
similarity index 100%
rename from chromeos-base/chromeos-chrome/chromeos-chrome-26.0.1410.4.ebuild
rename to chromeos-base/chromeos-chrome/chromeos-chrome-26.0.1410.28.ebuild
diff --git a/chromeos-base/chromeos-chrome/chromeos-chrome-26.0.1410.28_rc-r1.ebuild b/chromeos-base/chromeos-chrome/chromeos-chrome-26.0.1410.28_rc-r1.ebuild
deleted file mode 100644
index 69c4a7e..0000000
--- a/chromeos-base/chromeos-chrome/chromeos-chrome-26.0.1410.28_rc-r1.ebuild
+++ /dev/null
@@ -1,1022 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# Usage: by default, downloads chromium browser from the build server.
-# If CHROME_ORIGIN is set to one of {SERVER_SOURCE, LOCAL_SOURCE, LOCAL_BINARY},
-# the build comes from the chromimum source repository (gclient sync),
-# build server, locally provided source, or locally provided binary.
-# If you are using SERVER_SOURCE, a gclient template file that is in the files
-# directory which will be copied automatically during the build and used as
-# the .gclient for 'gclient sync'.
-# If building from LOCAL_SOURCE or LOCAL_BINARY specifying BUILDTYPE
-# will allow you to specify "Debug" or another build type; "Release" is
-# the default.
-# gclient is expected to be in ~/depot_tools if EGCLIENT is not set
-# to gclient path.
-
-EAPI="2"
-inherit autotest-deponly binutils-funcs eutils flag-o-matic git-2 multilib toolchain-funcs
-
-DESCRIPTION="Open-source version of Google Chrome web browser"
-HOMEPAGE="http://www.chromium.org/"
-SRC_URI=""
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 arm x86"
-IUSE="-asan +build_tests +chrome_remoting chrome_internal chrome_pdf +chrome_debug -chrome_debug_tests -chrome_media -clang -component_build -content_shell -drm +gold hardfp +highdpi +nacl neon -ninja -oem_wallpaper -pgo_use -pgo_generate +reorder +runhooks +verbose widevine_cdm"
-
-# Do not strip the nacl_helper_bootstrap binary because the binutils
-# objcopy/strip mangles the ELF program headers.
-# TODO(mcgrathr,vapier): This should be removed after portage's prepstrip
-# script is changed to use eu-strip instead of objcopy and strip.
-STRIP_MASK="*/nacl_helper_bootstrap"
-
-# When we get to EAPI=4
-# REQUIRED_USE=<pgo_generate and pgo_use are mutually exclusive>
-REORDER_SUBDIR="reorder"
-
-# Portage version without optional portage suffix.
-CHROME_VERSION="${PV/_*/}"
-
-CHROME_SRC="chrome-src"
-if use chrome_internal; then
- CHROME_SRC="${CHROME_SRC}-internal"
-fi
-
-# CHROME_CACHE_DIR is used for storing output artifacts, and is always a
-# regular directory inside the chroot (i.e. it's never mounted in, so it's
-# always safe to use cp -al for these artifacts).
-if [[ -z ${CHROME_CACHE_DIR} ]] ; then
- CHROME_CACHE_DIR="/var/cache/chromeos-chrome/${CHROME_SRC}"
-fi
-addwrite "${CHROME_CACHE_DIR}"
-
-# CHROME_DISTDIR is used for storing the source code, if any source code
-# needs to be unpacked at build time (e.g. in the SERVER_SOURCE scenario.)
-# It will be mounted into the chroot, so it is never safe to use cp -al
-# for these files.
-if [[ -z ${CHROME_DISTDIR} ]] ; then
- CHROME_DISTDIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/${CHROME_SRC}"
-fi
-addwrite "${CHROME_DISTDIR}"
-
-# chrome destination directory
-CHROME_DIR=/opt/google/chrome
-D_CHROME_DIR="${D}/${CHROME_DIR}"
-RELEASE_EXTRA_CFLAGS=()
-
-USE_TCMALLOC="linux_use_tcmalloc=1"
-
-# For compilation/local chrome
-BUILDTYPE="${BUILDTYPE:-Release}"
-BOARD="${BOARD:-${SYSROOT##/build/}}"
-BUILD_OUT="${BUILD_OUT:-out_${BOARD}}"
-# WARNING: We are using a symlink now for the build directory to work around
-# command line length limits. This will cause problems if you are doing
-# parallel builds of different boards/variants.
-# Unsetting BUILD_OUT_SYM will revert this behavior
-BUILD_OUT_SYM="c"
-
-PGO_SUFFIX=".pgo.tar.bz2"
-PGO_LOCATION="gs://chromeos-prebuilt/pgo-job/canonicals/"
-
-add_pgo_arches() {
- local file a
- for a in "$@" ; do
- file="chromeos-chrome-${a}-${PV}${PGO_SUFFIX}"
- SRC_URI+="pgo_use? ( ${a}? ( ${PGO_LOCATION}${file} ) ) "
- done
-}
-
-RESTRICT="mirror"
-add_pgo_arches x86 amd64 arm
-
-TEST_FILES=("video_decode_accelerator_unittest" "ppapi_example_video_decode")
-PPAPI_TEST_FILES=(
- lib{32,64}
- mock_nacl_gdb
- nacl_test_data
- ppapi_nacl_tests_{newlib,glibc}.nmf
- ppapi_nacl_tests_{newlib,glibc}_{x32,x64,arm}.nexe
- test_case.html
- test_case.html.mock-http-headers
- test_page.css
- test_url_loader_data
-)
-
-RDEPEND="${RDEPEND}
- app-arch/bzip2
- >=app-i18n/ibus-1.4.99
- arm? ( virtual/opengles )
- dev-libs/atk
- dev-libs/glib
- dev-libs/nspr
- >=dev-libs/nss-3.12.2
- dev-libs/libxml2
- dev-libs/dbus-glib
- x11-libs/cairo
- drm? ( x11-libs/libxkbcommon )
- x11-libs/libXScrnSaver
- x11-libs/pango
- >=media-libs/alsa-lib-1.0.19
- media-libs/fontconfig
- media-libs/freetype
- media-libs/libpng
- media-libs/mesa
- >=media-sound/adhd-0.0.1-r310
- net-misc/wget
- sys-fs/udev
- sys-libs/zlib
- x11-libs/libXcomposite
- x11-libs/libXcursor
- x11-libs/libXrandr
- x11-libs/libXScrnSaver
- chrome_remoting? ( x11-libs/libXtst )
- x11-apps/setxkbmap
- !arm? ( x11-libs/libva )"
-
-DEPEND="${DEPEND}
- ${RDEPEND}
- arm? ( x11-drivers/opengles-headers )
- chromeos-base/protofiles
- >=dev-util/gperf-3.0.3
- >=dev-util/pkgconfig-0.23
- net-wireless/bluez"
-
-PATCHES=()
-
-AUTOTEST_COMMON="src/chrome/test/chromeos/autotest/files"
-AUTOTEST_DEPS="${AUTOTEST_COMMON}/client/deps"
-AUTOTEST_DEPS_LIST="chrome_test pyauto_dep page_cycler_dep telemetry_dep"
-
-IUSE="${IUSE} +autotest"
-
-export CHROMIUM_HOME=/usr/$(get_libdir)/chromium-browser
-
-QA_TEXTRELS="*"
-QA_EXECSTACK="*"
-QA_PRESTRIPPED="*"
-
-use_nacl() {
- ! use asan && ! use component_build && ! use drm && use nacl
-}
-
-# Like the `usex` helper:
-# Usage: echox [int] [echo-if-true] [echo-if-false]
-# If [int] is 0, then echo the 2nd arg (default of yes), else
-# echo the 3rd arg (default of no).
-echox() {
- # Like the `usex` helper.
- [[ ${1:-$?} -eq 0 ]] && echo "${2:-yes}" || echo "${3:-no}"
-}
-echo10() { echox ${1:-$?} 1 0 ; }
-echotf() { echox ${1:-$?} true false ; }
-use10() { usex $1 1 0 ; }
-usetf() { usex $1 true false ; }
-set_build_defines() {
- # General build defines.
- # TODO(vapier): Check that this should say SYSROOT not ROOT
- BUILD_DEFINES=(
- "sysroot=${ROOT}"
- python_ver=2.6
- "linux_sandbox_path=${CHROME_DIR}/chrome-sandbox"
- "${EXTRA_BUILD_ARGS}"
- "system_libdir=$(get_libdir)"
- "pkg-config=$(tc-getPKG_CONFIG)"
- "use_xi2_mt=2"
- )
-
- BUILD_DEFINES+=(
- swig_defines=-DOS_CHROMEOS
- chromeos=1
- )
-
- if use pgo_generate ; then
- BUILD_DEFINES+=(
- libraries_for_target=-lgcov
- )
- RELEASE_EXTRA_CFLAGS+=(
- -DPGO_GENERATE
- -fprofile-generate
- -fprofile-dir=/tmp/pgo/chrome
- -Wno-error=maybe-uninitialized
- )
- fi
-
- # Set proper BUILD_DEFINES for the arch
- case "${ARCH}" in
- x86)
- BUILD_DEFINES+=( target_arch=ia32 enable_smooth_scrolling=1 )
- ;;
- arm)
- BUILD_DEFINES+=(
- target_arch=arm
- arm_float_abi=$(usex hardfp hard softfp)
- arm_neon=$(use10 neon)
- armv7=$([[ ${CHOST} == armv7* ]]; echo10)
- v8_can_use_unaligned_accesses=$([[ ${CHOST} == armv[67]* ]]; echotf)
- v8_can_use_vfp3_instructions=$([[ ${ARM_FPU} == *vfpv[34]* ]]; echotf)
- v8_use_arm_eabi_hardfloat=$(usetf hardfp)
- )
- if [[ -n "${ARM_FPU}" ]]; then
- BUILD_DEFINES+=( arm_fpu="${ARM_FPU}" )
- fi
- if use chrome_internal; then
- #http://code.google.com/p/chrome-os-partner/issues/detail?id=1142
- BUILD_DEFINES+=( internal_pdf=0 )
- fi
- ;;
- amd64)
- BUILD_DEFINES+=( target_arch=x64 enable_smooth_scrolling=1 )
- ;;
- *)
- die "Unsupported architecture: ${ARCH}"
- ;;
- esac
-
- use_nacl || BUILD_DEFINES+=( disable_nacl=1 )
-
- use drm && BUILD_DEFINES+=( use_drm=1 )
-
- # Control inclusion of optional chrome features.
- if use chrome_remoting; then
- BUILD_DEFINES+=( remoting=1 )
- else
- BUILD_DEFINES+=( remoting=0 )
- fi
-
- if use chrome_internal; then
- #Adding chrome branding specific variables and GYP_DEFINES
- BUILD_DEFINES+=( branding=Chrome buildtype=Official )
- export CHROMIUM_BUILD='_google_Chrome'
- export OFFICIAL_BUILD='1'
- export CHROME_BUILD_TYPE='_official'
-
- # For internal builds, don't remove webcore debug symbols by default.
- REMOVE_WEBCORE_DEBUG_SYMBOLS=${REMOVE_WEBCORE_DEBUG_SYMBOLS:-0}
- elif use chrome_media; then
- echo "Building Chromium with additional media codecs and containers."
- BUILD_DEFINES+=( ffmpeg_branding=ChromeOS proprietary_codecs=1 )
- fi
-
- # This saves time and bytes.
- if [[ "${REMOVE_WEBCORE_DEBUG_SYMBOLS:-1}" == "1" ]]; then
- BUILD_DEFINES+=( remove_webcore_debug_symbols=1 )
- fi
-
- if ! use chrome_debug_tests; then
- BUILD_DEFINES+=( strip_tests=1 )
- fi
-
- if use reorder && ! use clang; then
- BUILD_DEFINES+=( "order_text_section=${CHROME_DISTDIR}/${REORDER_SUBDIR}/section-ordering-files/orderfile" )
- fi
-
- if use clang; then
- if [[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]]; then
- BUILD_DEFINES+=( clang=1 clang_use_chrome_plugins=0 werror= )
- USE_TCMALLOC="linux_use_tcmalloc=0"
-
- # The chrome build system will add -m32 for 32bit arches, and
- # clang defaults to 64bit because our cros_sdk is 64bit default.
- export CC="clang" CXX="clang++"
- else
- die "Clang is not yet supported for ${ARCH}"
- fi
- fi
-
- if use asan; then
- if ! use clang; then
- eerror "Asan requires Clang to run."
- die "Please set USE=\"${USE} clang\" to enable Clang"
- fi
- BUILD_DEFINES+=( asan=1 )
- fi
-
- if use component_build; then
- BUILD_DEFINES+=( component=shared_library )
- fi
-
- BUILD_DEFINES+=( "${USE_TCMALLOC}" )
- BUILD_DEFINES+=( "use_cras=1" )
-
- # TODO(davidjames): Pass in all CFLAGS this way, once gyp is smart enough
- # to accept cflags that only apply to the target.
- if use chrome_debug; then
- RELEASE_EXTRA_CFLAGS+=(
- -g
- )
- fi
-
- if ! use chrome_pdf; then
- BUILD_DEFINES+=( internal_pdf=0 )
- fi
-
- if use oem_wallpaper; then
- BUILD_DEFINES+=( use_oem_wallpaper=1 )
- fi
-
- BUILD_DEFINES+=( "release_extra_cflags='${RELEASE_EXTRA_CFLAGS[*]}'" )
-
- export GYP_GENERATORS="$(usex ninja ninja make)"
- export GYP_DEFINES="${BUILD_DEFINES[*]}"
- export builddir_name="${BUILD_OUT}"
- # Prevents gclient from updating self.
- export DEPOT_TOOLS_UPDATE=0
- # Chrome's build overrides the Chrome OS build wrapper's addition
- # of -fstack-protector-strong, so re-add it to the end of the
- # command-line, since gcc uses "last flag wins" for stack protector.
- CXXFLAGS+=" -fstack-protector-strong"
- # Enable std::vector []-operator bounds checking.
- CXXFLAGS+=" -D__google_stl_debug_vector=1"
-}
-
-unpack_chrome() {
- local cmd=( "${CROS_WORKON_SRCROOT}"/chromite/bin/sync_chrome )
- use chrome_internal && cmd+=( --internal )
- use chrome_pdf && cmd+=( --pdf )
- if [[ -n "${CROS_SVN_COMMIT}" ]]; then
- cmd+=( --revision="${CROS_SVN_COMMIT}" )
- elif [[ "${CHROME_VERSION}" != "9999" ]]; then
- cmd+=( --tag="${CHROME_VERSION}" )
- fi
- # --reset tells sync_chrome to blow away local changes and to feel
- # free to delete any directories that get in the way of syncing. This
- # is needed for unattended operation.
- cmd+=( --reset --gclient="${EGCLIENT}" "${CHROME_DISTDIR}" )
- elog "${cmd[*]}"
- "${cmd[@]}" || die
-}
-
-decide_chrome_origin() {
- local chrome_workon="=chromeos-base/chromeos-chrome-9999"
- local cros_workon_file="${ROOT}etc/portage/package.keywords/cros-workon"
- if [[ -e "${cros_workon_file}" ]] && grep -q "${chrome_workon}" "${cros_workon_file}"; then
- # LOCAL_SOURCE is the default for cros_workon
- # Warn the user if CHROME_ORIGIN is already set
- if [[ -n "${CHROME_ORIGIN}" && "${CHROME_ORIGIN}" != LOCAL_SOURCE ]]; then
- ewarn "CHROME_ORIGIN is already set to ${CHROME_ORIGIN}."
- ewarn "This will prevent you from building from your local checkout."
- ewarn "Please run 'unset CHROME_ORIGIN' to reset Chrome"
- ewarn "to the default source location."
- fi
- : ${CHROME_ORIGIN:=LOCAL_SOURCE}
- else
- # By default, pull from server
- : ${CHROME_ORIGIN:=SERVER_SOURCE}
- fi
-}
-
-sandboxless_ensure_directory() {
- local dir
- for dir in "$@"; do
- if [[ ! -d "${dir}" ]] ; then
- # We need root access to create these directories, so we need to
- # use sudo. This implicitly disables the sandbox.
- sudo mkdir -p "${dir}" || die
- sudo chown "${PORTAGE_USERNAME}:portage" "${dir}" || die
- sudo chmod 0755 "${dir}" || die
- fi
- done
-}
-
-src_unpack() {
- tc-export CC CXX
- local WHOAMI=$(whoami)
- export EGCLIENT="${EGCLIENT:-/home/${WHOAMI}/depot_tools/gclient}"
- export ENINJA="${ENINJA:-/home/${WHOAMI}/depot_tools/ninja}"
- export DEPOT_TOOLS_UPDATE=0
-
- # Create storage directories.
- sandboxless_ensure_directory "${CHROME_DISTDIR}" "${CHROME_CACHE_DIR}"
-
- # Copy in credentials to fake home directory so that build process
- # can access svn and ssh if needed.
- mkdir -p ${HOME}
- SUBVERSION_CONFIG_DIR=/home/${WHOAMI}/.subversion
- if [[ -d ${SUBVERSION_CONFIG_DIR} ]]; then
- cp -rfp ${SUBVERSION_CONFIG_DIR} ${HOME} || die
- fi
- SSH_CONFIG_DIR=/home/${WHOAMI}/.ssh
- if [[ -d ${SSH_CONFIG_DIR} ]]; then
- cp -rfp ${SSH_CONFIG_DIR} ${HOME} || die
- fi
- NET_CONFIG=/home/${WHOAMI}/.netrc
- if [[ -f ${NET_CONFIG} ]]; then
- cp -fp ${NET_CONFIG} ${HOME} || die
- fi
-
- decide_chrome_origin
-
- case "${CHROME_ORIGIN}" in
- LOCAL_SOURCE|SERVER_SOURCE|LOCAL_BINARY|GERRIT_SOURCE)
- elog "CHROME_ORIGIN VALUE is ${CHROME_ORIGIN}"
- ;;
- *)
- die "CHROME_ORIGIN not one of LOCAL_SOURCE, SERVER_SOURCE, LOCAL_BINARY, GERRIT_SOURCE"
- ;;
- esac
-
- # Prepare and set CHROME_ROOT based on CHROME_ORIGIN.
- # CHROME_ROOT is the location where the source code is used for compilation.
- # If we're in SERVER_SOURCE mode, CHROME_ROOT is CHROME_DISTDIR. In LOCAL_SOURCE
- # mode, this directory may be set manually to any directory. It may be mounted
- # into the chroot, so it is not safe to use cp -al for these files.
- # These are set here because $(whoami) returns the proper user here,
- # but 'root' at the root level of the file
- case "${CHROME_ORIGIN}" in
- (SERVER_SOURCE)
- elog "Using CHROME_VERSION = ${CHROME_VERSION}"
- unpack_chrome
-
- elog "set the chrome source root to ${CHROME_DISTDIR}"
- elog "From this point onwards there is no difference between \
- SERVER_SOURCE and LOCAL_SOURCE, since the fetch is done"
- CHROME_ROOT=${CHROME_DISTDIR}
- ;;
- (GERRIT_SOURCE)
- CHROME_ROOT="/home/${WHOAMI}/trunk/chromium"
- # TODO(rcui): Remove all these addwrite hacks once we start
- # building off a copy of the source
- addwrite "${CHROME_ROOT}"
- # Addwrite to .repo because each project's .git directory links
- # to the .repo directory.
- addwrite "/home/${WHOAMI}/trunk/.repo/"
- # - Make the symlinks from chromium src tree to CrOS source tree
- # writeable so we can run hooks and reset the checkout.
- # - We need to explicitly do this because the symlink points to
- # outside of the CHROME_ROOT.
- # - We don't know which one is a symlink so do it for
- # all files/directories in src/third_party
- # - chrome_set_ver creates symlinks in src/third_party to simulate
- # the cros_deps checkout gclient does. For details, see
- # http://gerrit.chromium.org/gerrit/#change,5692.
- THIRD_PARTY_DIR="${CHROME_ROOT}/src/third_party"
- for f in `ls -1 ${THIRD_PARTY_DIR}`
- do
- addwrite "${THIRD_PARTY_DIR}/${f}"
- done
- ;;
- (LOCAL_SOURCE)
- : ${CHROME_ROOT:=/home/${WHOAMI}/chrome_root}
- if [[ ! -d "${CHROME_ROOT}/src" ]]; then
- die "${CHROME_ROOT} does not contain a valid chromium checkout!"
- fi
- addwrite "${CHROME_ROOT}"
- ;;
- esac
-
- case "${CHROME_ORIGIN}" in
- LOCAL_SOURCE|SERVER_SOURCE|GERRIT_SOURCE)
- set_build_defines
- ;;
- esac
-
- # FIXME: This is the normal path where ebuild stores its working data.
- # Chrome builds inside distfiles because of speed, so we at least make
- # a symlink here to add compatibility with autotest eclass which uses this.
- ln -sf "${CHROME_ROOT}" "${WORKDIR}/${P}"
-
- if use pgo_use && ! use clang; then
- local PROFILE_DIR="${WORKDIR}/pgo"
- mkdir "${PROFILE_DIR}"
- cd "${PROFILE_DIR}"
- unpack "chromeos-chrome-${ARCH}-${PV}${PGO_SUFFIX}"
- cd "${WORKDIR}"
- if [[ -d "${PROFILE_DIR}/chrome" ]]; then
- append-flags -fprofile-use \
- -fprofile-correction \
- -fprofile-dir="${PROFILE_DIR}/chrome"
-
- # This is required because gcc emits different warnings
- # for PGO vs. non-PGO. PGO may inline different
- # functions from non-PGO, leading to different warnings.
- # crbug.com/112908
- append-flags -Wno-error=maybe-uninitialized
- einfo "Using the PGO data"
- else
- einfo "USE=+pgo_use, but ${PROFILE_DIR}/chrome not "\
- "created from pgo.tar.bz2."
- die "PGO data supply failed"
- fi
- fi
-
- if use reorder && ! use clang; then
- EGIT_REPO_URI="http://git.chromium.org/chromiumos/profile/chromium.git"
- EGIT_COMMIT="88c20da2d91098449373f2e2f5cef35c193b8add"
- EGIT_PROJECT="${PN}-reorder"
- if grep -qs ${EGIT_COMMIT} "${CHROME_DISTDIR}/${REORDER_SUBDIR}/.git/HEAD"; then
- einfo "Reorder profile repo is up to date."
- else
- einfo "Reorder profile repo not up-to-date. Fetching..."
- EGIT_SOURCEDIR="${CHROME_DISTDIR}/${REORDER_SUBDIR}"
- rm -rf "${EGIT_SOURCEDIR}"
- git-2_src_unpack
- fi
- fi
-}
-
-src_prepare() {
- if [[ "${CHROME_ORIGIN}" != "LOCAL_SOURCE" &&
- "${CHROME_ORIGIN}" != "SERVER_SOURCE" &&
- "${CHROME_ORIGIN}" != "GERRIT_SOURCE" ]]; then
- return
- fi
-
- elog "${CHROME_ROOT} should be set here properly"
- cd "${CHROME_ROOT}/src" || die "Cannot chdir to ${CHROME_ROOT}"
-
- # We do symlink creation here if appropriate
- mkdir -p "${CHROME_CACHE_DIR}/src/${BUILD_OUT}"
- if [[ ! -z "${BUILD_OUT_SYM}" ]]; then
- rm -rf "${BUILD_OUT_SYM}" || die "Could not remove symlink"
- ln -sfT "${CHROME_CACHE_DIR}/src/${BUILD_OUT}" "${BUILD_OUT_SYM}" ||
- die "Could not create symlink for output directory"
- export builddir_name="${BUILD_OUT_SYM}"
- fi
-
-
- # Apply patches for non-localsource builds
- if [[ "${CHROME_ORIGIN}" == "SERVER_SOURCE" && ${#PATCHES[@]} -gt 0 ]]; then
- epatch "${PATCHES[@]}"
- fi
-
- # The chrome makefiles specify -O and -g flags already, so remove the
- # portage flags.
- filter-flags -g -O*
-
- local WHOAMI=$(whoami)
- # The hooks may depend on the environment variables we set in this
- # ebuild (i.e., GYP_DEFINES for gyp_chromium)
- ECHROME_SET_VER=${ECHROME_SET_VER:=/home/${WHOAMI}/trunk/chromite/bin/chrome_set_ver}
- einfo "Building Chrome with the following define options:"
- local opt
- for opt in "${BUILD_DEFINES[@]}"; do
- einfo "${opt}"
- done
-
- # Get credentials to fake home directory so that built chromium
- # can access Google services.
- # First check for Chrome credentials.
- if [[ ! -d google_apis/internal ]]; then
- # Then look for ChromeOS supplied credentials.
- local PRIVATE_OVERLAYS_DIR=/home/${WHOAMI}/trunk/src/private-overlays
- local GAPI_CONFIG_FILE=${PRIVATE_OVERLAYS_DIR}/chromeos-overlay/googleapikeys
- # RE to match the allowed names.
- local NRE="('google_(api_key|default_client_(id|secret))')"
- # RE to match whitespace.
- local WS="[[:space:]]*"
- # RE to match allowed values.
- local CRE="('[^\\\\']*')"
- # And combining them into one RE for describing the lines
- # we want to allow.
- local TRE="^${WS}${NRE}${WS}[:=]${WS}${CRE}.*"
- if [[ ! -f "${GAPI_CONFIG_FILE}" ]]; then
- # Then developer credentials.
- GAPI_CONFIG_FILE=/home/${WHOAMI}/.googleapikeys
- fi
- if [[ -f "${GAPI_CONFIG_FILE}" ]]; then
- mkdir "${HOME}"/.gyp
- cat <<-EOF >"${HOME}/.gyp/include.gypi"
- {
- 'variables': {
- $(sed -nr -e "/^${TRE}/{s//\1: \4,/;p;}" \
- "${GAPI_CONFIG_FILE}")
- }
- }
- EOF
- fi
- fi
-}
-
-src_configure() {
- tc-export CXX CC AR AS RANLIB
- export CC_host=$(tc-getBUILD_CC)
- export CXX_host=$(tc-getBUILD_CXX)
- export AR_host=$(tc-getBUILD_AR)
- if use gold ; then
- if [[ "${GOLD_SET}" != "yes" ]]; then
- export GOLD_SET="yes"
- einfo "Using gold from the following location: $(get_binutils_path_gold)"
- export CC="${CC} -B$(get_binutils_path_gold)"
- export CXX="${CXX} -B$(get_binutils_path_gold)"
- fi
- else
- ewarn "gold disabled. Using GNU ld."
- fi
-
- # Use g++ as the linker driver.
- export LD="${CXX}"
- export LD_host=$(tc-getBUILD_CXX)
-
- local build_tool_flags=()
- if use ninja; then
- build_tool_flags+=(
- "config=${BUILDTYPE}"
- "output_dir=${builddir_name}"
- )
- fi
- export GYP_GENERATOR_FLAGS="${build_tool_flags[*]}"
-
- # TODO(rcui): crosbug.com/20435. Investigate removal of runhooks
- # useflag when chrome build switches to Ninja inside the chroot.
- if use runhooks; then
- if [[ "${CHROME_ORIGIN}" == "GERRIT_SOURCE" ]]; then
- # Set the dependency repos to the revision specified in the
- # .DEPS.git file, and run the hooks in that file.
- "${ECHROME_SET_VER}" --runhooks || die
- else
- [[ -n "${EGCLIENT}" ]] || die EGCLIENT unset
- [[ -f "${EGCLIENT}" ]] || die EGCLIENT at "${EGCLIENT}" does not exist
- "${EGCLIENT}" runhooks --force || die "Failed to run ${EGCLIENT} runhooks"
- fi
- elif [[ "${CHROME_ORIGIN}" == "GERRIT_SOURCE" ]]; then
- "${ECHROME_SET_VER}" || die
- fi
-}
-
-chrome_make() {
- if use ninja; then
- PATH=${PATH}:/home/$(whoami)/depot_tools ${ENINJA} \
- ${MAKEOPTS} -C "${BUILD_OUT_SYM}/${BUILDTYPE}" $(usex verbose -v "") "$@" || die
- else
- emake -r $(usex verbose V=1 "") "BUILDTYPE=${BUILDTYPE}" "$@" || die
- fi
-}
-
-src_compile() {
- if [[ "${CHROME_ORIGIN}" != "LOCAL_SOURCE" &&
- "${CHROME_ORIGIN}" != "SERVER_SOURCE" &&
- "${CHROME_ORIGIN}" != "GERRIT_SOURCE" ]]; then
- return
- fi
-
- cd "${CHROME_ROOT}"/src || die "Cannot chdir to ${CHROME_ROOT}/src"
-
- local chrome_targets=()
-
- if [[ -n "${CHROME_TARGET_OVERRIDE}" ]]; then
- chrome_targets=( ${CHROME_TARGET_OVERRIDE} )
- einfo "Building custom targets: ${chrome_targets[*]}"
- elif use content_shell; then
- chrome_targets=( content_shell chrome_sandbox )
- einfo "Building content_shell"
- else
- chrome_targets=( chrome chrome_sandbox )
- if use build_tests; then
- chrome_targets+=( "${TEST_FILES[@]}"
- pyautolib
- peerconnection_server
- chromedriver
- browser_tests
- ffmpeg_tests
- sync_integration_tests )
- einfo "Building test targets: ${TEST_TARGETS[@]}"
- fi
-
- # The default_extensions target is a no-op for external builds, and is
- # broken with Ninja in this situation. For now, only enable it on
- # builds where it installs something.
- if use chrome_internal; then
- chrome_targets+=( default_extensions )
- fi
-
- if use_nacl; then
- chrome_targets+=( nacl_helper_bootstrap nacl_helper )
- fi
-
- if use drm; then
- chrome_targets+=( aura_demo ash_shell )
- else
- chrome_targets+=( libosmesa.so )
- fi
- fi
-
- chrome_make "${chrome_targets[@]}"
-
- if use build_tests; then
- install_chrome_test_resources "${WORKDIR}/test_src"
- install_pyauto_dep_resources "${WORKDIR}/pyauto_src"
- install_page_cycler_dep_resources "${WORKDIR}/page_cycler_src"
- install_telemetry_dep_resources "${WORKDIR}/telemetry_src"
-
- # NOTE: Since chrome is built inside distfiles, we have to get
- # rid of the previous instance first.
- # We remove only what we will overwrite with the mv below.
- local deps="${WORKDIR}/${P}/${AUTOTEST_DEPS}"
-
- rm -rf "${deps}/chrome_test/test_src"
- mv "${WORKDIR}/test_src" "${deps}/chrome_test/"
-
- rm -rf "${deps}/pyauto_dep/test_src"
- mv "${WORKDIR}/pyauto_src" "${deps}/pyauto_dep/test_src"
-
- rm -rf "${deps}/page_cycler_dep/test_src"
- mv "${WORKDIR}/page_cycler_src" "${deps}/page_cycler_dep/test_src"
-
- rm -rf "${deps}/telemetry_dep/test_src"
- mv "${WORKDIR}/telemetry_src" "${deps}/telemetry_dep/test_src"
-
- # HACK: It would make more sense to call autotest_src_prepare in
- # src_prepare, but we need to call install_chrome_test_resources first.
- autotest-deponly_src_prepare
-
- # Remove .svn dirs
- esvn_clean "${AUTOTEST_WORKDIR}"
- # Remove .git dirs
- find "${AUTOTEST_WORKDIR}" -type d -name .git -prune -exec rm -rf {} +
-
- autotest_src_compile
- fi
-}
-
-# Turn off the cp -l behavior in autotest, since the source dir and the
-# installation dir live on different bind mounts right now.
-fast_cp() {
- cp "$@"
-}
-
-install_test_resources() {
- # Install test resources from chrome source directory to destination.
- # We keep a cache of test resources inside the chroot to avoid copying
- # multiple times.
- local test_dir="${1}"
- shift
- local resource cache dest
- for resource in "$@"; do
- cache=$(dirname "${CHROME_CACHE_DIR}/src/${resource}")
- dest=$(dirname "${test_dir}/${resource}")
- mkdir -p "${cache}" "${dest}"
- rsync -a --delete --exclude=.svn --exclude=.git \
- "${CHROME_ROOT}/src/${resource}" "${cache}"
- cp -al "${CHROME_CACHE_DIR}/src/${resource}" "${dest}"
- done
-}
-
-install_chrome_test_resources() {
- # NOTE: This is a duplicate from src_install, because it's required here.
- local from="${CHROME_CACHE_DIR}/src/${BUILD_OUT}/${BUILDTYPE}"
- local test_dir="${1}"
-
- echo Copying Chrome tests into "${test_dir}"
- mkdir -p "${test_dir}/out/Release"
-
- # Even if chrome_debug_tests is enabled, we don't need to include detailed
- # debug info for tests in the binary package, so save some time by stripping
- # everything but the symbol names. Developers who need more detailed debug
- # info on the tests can use the original unstripped tests from the ${from}
- # directory.
- TEST_INSTALL_TARGETS=(
- "libppapi_tests.so"
- "browser_tests"
- "ffmpeg_tests"
- "peerconnection_server"
- "sync_integration_tests"
- "video_decode_accelerator_unittest" )
-
- for f in "${TEST_INSTALL_TARGETS[@]}"; do
- $(tc-getSTRIP) --strip-debug \
- --keep-file-symbols "${from}"/${f} \
- -o "${test_dir}/out/Release/$(basename ${f})"
- done
-
- # Copy over the test data directory; eventually 'all' non-static
- # Chrome test data will go in here.
- mkdir "${test_dir}"/out/Release/test_data
- cp -al "${from}"/test_data "${test_dir}"/out/Release/
-
- # Add the fake bidi locale
- mkdir "${test_dir}"/out/Release/pseudo_locales
- cp -al "${from}"/pseudo_locales/fake-bidi.pak \
- "${test_dir}"/out/Release/pseudo_locales
-
- for f in "${TEST_FILES[@]}"; do
- cp -al "${from}/${f}" "${test_dir}"
- done
-
- for f in "${PPAPI_TEST_FILES[@]}"; do
- cp -al "${from}/${f}" "${test_dir}/out/Release"
- done
-
- # Install Chrome test resources.
- install_test_resources "${test_dir}" \
- base/base_paths_posix.cc \
- chrome/test/data \
- chrome/test/functional \
- chrome/third_party/mock4js/mock4js.js \
- content/common/gpu/testdata \
- content/test/data \
- net/data/ssl/certificates \
- ppapi/tests/test_case.html \
- ppapi/tests/test_url_loader_data \
- third_party/bidichecker/bidichecker_packaged.js \
- third_party/WebKit/Tools/Scripts \
- third_party/WebKit/LayoutTests/http/tests/websocket/tests
-
- # Add pdf test data
- if use chrome_pdf; then
- install_test_resources "${test_dir}" pdf/test
- fi
-
- # Remove test binaries from other platforms
- if [[ -z "${E_MACHINE}" ]]; then
- echo E_MACHINE not defined!
- else
- cd "${test_dir}"/chrome/test
- rm -fv $( scanelf -RmyBF%a . | grep -v -e ^${E_MACHINE} )
- fi
-
- cp -a "${CHROME_ROOT}"/"${AUTOTEST_DEPS}"/chrome_test/setup_test_links.sh \
- "${test_dir}"/out/Release
- # Symlinks to resources in pyauto_dep will be created at runtime.
-}
-
-# Set up the PyAuto files also by copying out the files needed for that.
-# We create a separate dependency because the chrome_test one is about 350MB
-# and PyAuto is a svelte 30MB.
-install_pyauto_dep_resources() {
- # NOTE: This is a duplicate from src_install, because it's required here.
- local from="${CHROME_CACHE_DIR}/src/${BUILD_OUT}/${BUILDTYPE}"
- local test_dir="${1}"
-
- echo "Copying PyAuto framework into ${test_dir}"
-
- mkdir -p "${test_dir}/out/Release"
-
- cp -al "${from}"/pyproto "${test_dir}"/out/Release
- cp -al "${from}"/pyautolib.py "${test_dir}"/out/Release
-
- # Even if chrome_debug_tests is enabled, we don't need to include
- # detailed debug info for tests in the binary package, so save some
- # time by stripping everything but the symbol names. Developers who
- # need more detailed debug info on the tests can use the original
- # unstripped tests from the ${from} directory.
- $(tc-getSTRIP) --strip-debug \
- --keep-file-symbols "${from}"/_pyautolib.so \
- -o "${test_dir}"/out/Release/_pyautolib.so
- $(tc-getSTRIP) --strip-debug \
- --keep-file-symbols "${from}"/chromedriver \
- -o "${test_dir}"/out/Release/chromedriver
- if use component_build; then
- mkdir -p "${test_dir}/out/Release/lib.target"
- local src dst
- for src in "${from}"/lib.target/* ; do
- dst="${test_dir}/out/Release/${src#${from}}"
- $(tc-getSTRIP) --strip-debug --keep-file-symbols \
- "${src}" -o "${dst}"
- done
- fi
-
- cp -a "${CHROME_ROOT}"/"${AUTOTEST_DEPS}"/pyauto_dep/setup_test_links.sh \
- "${test_dir}"/out/Release
-
- # Copy PyAuto scripts and suppport libs.
- install_test_resources "${test_dir}" \
- chrome/browser/resources/gaia_auth \
- chrome/test/pyautolib \
- net/tools/testserver \
- third_party/pyftpdlib \
- third_party/pywebsocket \
- third_party/simplejson \
- third_party/tlslite \
- third_party/webdriver
-}
-
-install_page_cycler_dep_resources() {
- local test_dir="${1}"
-
- if [[ -r "${CHROME_ROOT}/src/data/page_cycler" ]]; then
- echo "Copying Page Cycler Data into ${test_dir}"
- mkdir -p "${test_dir}"
- install_test_resources "${test_dir}" \
- data/page_cycler
- fi
-}
-
-install_telemetry_dep_resources() {
- local test_dir="${1}"
-
- if [[ -r "${CHROME_ROOT}/src/tools/telemetry" ]]; then
- echo "Copying Telemetry Framework into ${test_dir}"
- mkdir -p "${test_dir}"
- DEPS_LIST=$(python ${FILESDIR}/get_telemetry_deps.py ${CHROME_ROOT} \
- chrome/test)
- install_test_resources "${test_dir}" $DEPS_LIST
- fi
-}
-
-src_install() {
- FROM="${CHROME_CACHE_DIR}/src/${BUILD_OUT}/${BUILDTYPE}"
-
- # Override default strip flags and lose the '-R .comment'
- # in order to play nice with the crash server.
- if [[ -z "${KEEP_CHROME_DEBUG_SYMBOLS}" ]]; then
- export PORTAGE_STRIP_FLAGS="--strip-unneeded"
- else
- export PORTAGE_STRIP_FLAGS="--strip-debug --keep-file-symbols"
- fi
-
- # First, things from the chrome build output directory
- dodir "${CHROME_DIR}"
- dodir "${CHROME_DIR}"/plugins
-
- exeinto "${CHROME_DIR}"
- doexe "${FROM}"/chrome
- doexe "${FROM}"/libffmpegsumo.so
- doexe "${FROM}"/libosmesa.so
- use content_shell && doexe "${FROM}"/content_shell
- use drm && doexe "${FROM}"/aura_demo
- use drm && doexe "${FROM}"/ash_shell
- if use chrome_internal && use chrome_pdf; then
- doexe "${FROM}"/libpdf.so
- fi
- if use chrome_internal && use widevine_cdm; then
- doexe "${FROM}"/libwidevinecdmadapter.so || die
- doexe "${FROM}"/libwidevinecdm.so || die
- fi
- exeopts -m4755 # setuid the sandbox
- newexe "${FROM}/chrome_sandbox" chrome-sandbox
- exeopts -m0755
-
- if use component_build; then
- dodir "${CHROME_DIR}/lib.target"
- exeinto "${CHROME_DIR}/lib.target"
- for f in "${FROM}"/lib.target/*.so; do
- doexe "${f}"
- done
- exeinto "${CHROME_DIR}"
- fi
-
- # enable the chromeos local account, if the environment dictates
- if [[ -n "${CHROMEOS_LOCAL_ACCOUNT}" ]]; then
- echo "${CHROMEOS_LOCAL_ACCOUNT}" > "${D_CHROME_DIR}/localaccount"
- fi
-
- # add executable NaCl binaries
- if use_nacl; then
- doexe "${FROM}"/libppGoogleNaClPluginChrome.so || die
- doexe "${FROM}"/nacl_helper_bootstrap || die
- fi
-
- insinto "${CHROME_DIR}"
- doins "${FROM}"/chrome-wrapper
- doins "${FROM}"/chrome.pak
- doins "${FROM}"/chrome_100_percent.pak
- use content_shell && doins "${FROM}"/content_shell.pak
- doins -r "${FROM}"/locales
- doins -r "${FROM}"/resources
- doins -r "${FROM}"/extensions
- doins "${FROM}"/resources.pak
- doins "${FROM}"/xdg-settings
- doins "${FROM}"/*.png
-
- # Add high DPI resources.
- if use highdpi; then
- doins "${FROM}"/chrome_200_percent.pak
- fi
-
- # add non-executable NaCl files
- if use_nacl; then
- doins "${FROM}"/nacl_irt_*.nexe || die
- doins "${FROM}"/nacl_helper || die
- fi
-
- # Copy input_methods.txt so that ibus-m17n can exclude unnnecessary
- # input methods based on the file.
- insinto /usr/share/chromeos-assets/input_methods
- INPUT_METHOD="${CHROME_ROOT}"/src/chrome/browser/chromeos/input_method
- doins "${INPUT_METHOD}"/input_methods.txt
-
- # Copy org.chromium.LibCrosService.conf, the D-Bus config file for the
- # D-Bus service exported by Chrome.
- insinto /etc/dbus-1/system.d
- DBUS="${CHROME_ROOT}"/src/chrome/browser/chromeos/dbus
- doins "${DBUS}"/org.chromium.LibCrosService.conf
-
- # Chrome test resources
- # Test binaries are only available when building chrome from source
- if use build_tests && [[ "${CHROME_ORIGIN}" == "LOCAL_SOURCE" ||
- "${CHROME_ORIGIN}" == "SERVER_SOURCE" ||
- "${CHROME_ORIGIN}" == "GERRIT_SOURCE" ]]; then
- autotest-deponly_src_install
- fi
- if use pgo_generate; then
- local pgo_file_dest="chromeos-chrome-${ARCH}-${PV}${PGO_SUFFIX}"
- echo "${PGO_LOCATION}${pgo_file_dest}" \
- > "${D_CHROME_DIR}/profilelocation"
- fi
-
- # Fix some perms
- chmod -R a+r "${D}"
- find "${D}" -perm /111 -print0 | xargs -0 chmod a+x
-
- # The following symlinks are needed in order to run chrome.
- dosym libnss3.so /usr/lib/libnss3.so.1d
- dosym libnssutil3.so.12 /usr/lib/libnssutil3.so.1d
- dosym libsmime3.so.12 /usr/lib/libsmime3.so.1d
- dosym libssl3.so.12 /usr/lib/libssl3.so.1d
- dosym libplds4.so /usr/lib/libplds4.so.0d
- dosym libplc4.so /usr/lib/libplc4.so.0d
- dosym libnspr4.so /usr/lib/libnspr4.so.0d
-}