142 lines
5.6 KiB
Bash
Executable File
142 lines
5.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
SUDO_USER=chronos
|
|
|
|
CHROOT_TRUNK_DIR=/home/chronos/trunk
|
|
DEPOT_TOOLS_DIR=/home/chronos/depot_tools
|
|
SRC_ROOT=${CHROOT_TRUNK_DIR}/src
|
|
SCRIPT_ROOT=${SRC_ROOT}/scripts
|
|
|
|
# ADDITIONAL
|
|
mkdir -p /var/cache/chromeos-cache/distfiles/{host,target}
|
|
|
|
# https://chromium.googlesource.com/chromiumos/platform/crosutils/+/73fc534b0d6aa8fc45520b3b50be2c0654fcc24c/sdk_lib/make_chroot.sh#13
|
|
. "${SCRIPT_ROOT}/common.sh" || exit 1
|
|
|
|
# https://chromium.googlesource.com/chromiumos/platform/crosutils/+/73fc534b0d6aa8fc45520b3b50be2c0654fcc24c/sdk_lib/make_chroot.sh#473
|
|
CHROOT_TRUNK="${CHROOT_TRUNK_DIR}"
|
|
PORTAGE="${SRC_ROOT}/third_party/portage"
|
|
OVERLAY="${SRC_ROOT}/third_party/chromiumos-overlay"
|
|
CONFIG_DIR="${OVERLAY}/chromeos/config"
|
|
CHROOT_CONFIG="${CHROOT_TRUNK_DIR}/src/third_party/chromiumos-overlay/chromeos/config"
|
|
OVERLAYS_ROOT="/usr/local/portage"
|
|
ECLASS_OVERLAY="${OVERLAYS_ROOT}/eclass-overlay"
|
|
PORTAGE_STABLE_OVERLAY="${OVERLAYS_ROOT}/stable"
|
|
CROSSDEV_OVERLAY="${OVERLAYS_ROOT}/crossdev"
|
|
CHROOT_OVERLAY="${OVERLAYS_ROOT}/chromiumos"
|
|
|
|
# https://chromium.googlesource.com/chromiumos/platform/crosutils/+/73fc534b0d6aa8fc45520b3b50be2c0654fcc24c/sdk_lib/make_chroot.sh#513
|
|
rm -f "/etc/"make.{globals,conf.user}
|
|
|
|
# https://chromium.googlesource.com/chromiumos/platform/crosutils/+/73fc534b0d6aa8fc45520b3b50be2c0654fcc24c/sdk_lib/make_chroot.sh#188
|
|
mkdir -p -m 755 "/usr" \
|
|
"${OVERLAYS_ROOT}" \
|
|
"${CROSSDEV_OVERLAY}/metadata"
|
|
cat <<EOF > "${CROSSDEV_OVERLAY}/metadata/layout.conf"
|
|
# Autogenerated and managed by crossdev
|
|
# Delete the above line if you want to manage this file yourself
|
|
masters = portage-stable chromiumos
|
|
repo-name = crossdev
|
|
use-manifests = true
|
|
thin-manifests = true
|
|
EOF
|
|
ln -sf "${CHROOT_TRUNK_DIR}/src/third_party/eclass-overlay" \
|
|
"${ECLASS_OVERLAY}"
|
|
ln -sf "${CHROOT_TRUNK_DIR}/src/third_party/chromiumos-overlay" \
|
|
"${CHROOT_OVERLAY}"
|
|
ln -sf "${CHROOT_TRUNK_DIR}/src/third_party/portage-stable" \
|
|
"${PORTAGE_STABLE_OVERLAY}"
|
|
ln -sfT /proc/mounts "/etc/mtab"
|
|
mkdir -p "/etc/sudoers.d"
|
|
load_environment_whitelist
|
|
bash "${SCRIPT_ROOT}/chroot_version_hooks.d/153_rewrite_sudoers.d" \
|
|
/ "${SUDO_USER}" "${ENVIRONMENT_WHITELIST[@]}"
|
|
find "/etc/"sudoers* -type f -exec chmod 0440 {} +
|
|
chown -R root:root "/etc/"sudoers*
|
|
rm -f /etc/{,portage/}make.{conf,profile}{,.catalyst}
|
|
mkdir -p "/etc/portage"
|
|
ln -sf "${CHROOT_CONFIG}/make.conf.amd64-host" \
|
|
"/etc/make.conf"
|
|
ln -sf "${CHROOT_OVERLAY}/profiles/default/linux/amd64/10.0/sdk" \
|
|
"/etc/portage/make.profile"
|
|
touch /etc/make.conf.user
|
|
chmod 0644 /etc/make.conf.user
|
|
mkdir -p -m 775 "/var/lib/portage/pkgs" \
|
|
"/var/cache/"chromeos-{cache,chrome} \
|
|
"/etc/profile.d"
|
|
echo "export CHROMEOS_CACHEDIR=/var/cache/chromeos-cache" > \
|
|
"/etc/profile.d/chromeos-cachedir.sh"
|
|
chmod 0644 "/etc/profile.d/chromeos-cachedir.sh"
|
|
rm -rf "/var/cache/distfiles"
|
|
ln -s chromeos-cache/distfiles "/var/cache/distfiles"
|
|
chown "${SUDO_USER}:portage" /var/cache/chromeos-chrome
|
|
ln -s ../../cache/chromeos-cache/distfiles/host \
|
|
"/var/lib/portage/distfiles"
|
|
ln -s ../../cache/chromeos-cache/distfiles/target \
|
|
"/var/lib/portage/distfiles-target"
|
|
target="/etc/env.d/99chromiumos"
|
|
cat <<EOF > "${target}"
|
|
PATH="${CHROOT_TRUNK_DIR}/chromite/bin:${DEPOT_TOOLS_DIR}:$PATH"
|
|
CROS_WORKON_SRCROOT="${CHROOT_TRUNK_DIR}"
|
|
PORTAGE_USERNAME="${SUDO_USER}"
|
|
EOF
|
|
env-update
|
|
ls -l /etc/make.conf /etc/portage/make.profile \
|
|
/usr/local/portage/chromiumos/profiles/default/linux/amd64/10.0
|
|
target="/etc/profile.d"
|
|
mkdir -p "${target}"
|
|
cat << EOF > "${target}/chromiumos-niceties.sh"
|
|
# Niceties for interactive logins. (cr) denotes this is a chroot, the
|
|
# __git_branch_ps1 prints current git branch in ./ . The $r behavior is to
|
|
# make sure we don't reset the previous $? value which later formats in
|
|
# $PS1 might rely on.
|
|
PS1='\$(r=\$?; __git_branch_ps1 "(%s) "; exit \$r)'"\${PS1}"
|
|
PS1="(cr) \${PS1}"
|
|
EOF
|
|
localegen="/etc/locale.gen"
|
|
if ! grep -q -v -e '^#' -e '^$' "${localegen}" ; then
|
|
cat <<EOF >> "${localegen}"
|
|
en_US ISO-8859-1
|
|
en_US.UTF-8 UTF-8
|
|
EOF
|
|
fi
|
|
echo 'cd ${CHROOT_CWD:-${SCRIPTS_ROOT}}' \
|
|
| user_append "/home/${SUDO_USER}/.bash_profile"
|
|
echo ". ${SCRIPTS_ROOT}/bash_completion" \
|
|
| user_append "/home/${SUDO_USER}/.bashrc"
|
|
|
|
# https://chromium.googlesource.com/chromiumos/platform/crosutils/+/73fc534b0d6aa8fc45520b3b50be2c0654fcc24c/sdk_lib/make_chroot.sh#576
|
|
eselect python update --ignore "3*"
|
|
emerge -uNv --quiet portage
|
|
if [[ -e "/usr/share/openrc" ]]; then
|
|
env CLEAN_DELAY=0 emerge -qC sys-apps/openrc
|
|
emerge -uNvq sys-apps/baselayout
|
|
fi
|
|
for python_path in "/usr/lib/"python2.*; do
|
|
python_path+="/site-packages"
|
|
mkdir -p "${python_path}"
|
|
ln -s -fT "${CHROOT_TRUNK_DIR}"/chromite "${python_path}"/chromite
|
|
done
|
|
emerge -uNvq sys-libs/ncurses
|
|
emerge -uNv ${USEPKG} --select ${EMERGE_JOBS} \
|
|
sys-apps/sandbox '>=sys-devel/patch-2.7' sys-devel/automake sys-devel/bison
|
|
if [[ ! -e "/usr/bin/crossdev" ]]; then
|
|
emerge -uNv crossdev
|
|
fi
|
|
# https://chromium.googlesource.com/chromiumos/platform/crosutils/+/73fc534b0d6aa8fc45520b3b50be2c0654fcc24c/sdk_lib/make_chroot.sh#619
|
|
TOOLCHAIN_ARGS=( --deleteold )
|
|
"${CHROOT_TRUNK_DIR}/chromite/bin/cros_setup_toolchains" \
|
|
--hostonly "${TOOLCHAIN_ARGS[@]}"
|
|
emerge -uNv $USEPKG --select $EMERGE_JOBS \
|
|
pbzip2 dev-libs/openssl net-misc/curl sudo app-portage/gentoolkit
|
|
set -e
|
|
"${CHROOT_TRUNK_DIR}/src/scripts/build_library/perl_rebuild.sh"
|
|
#sudo -u "${SUDO_USER}" run_chroot_version_hooks --init_latest
|
|
source /etc/env.d/99chromiumos
|
|
sudo -u "${SUDO_USER}" run_chroot_version_hooks
|
|
UPDATE_ARGS=( --skip_toolchain_update --nousepkg )
|
|
sudo -u "${SUDO_USER}" "${CHROOT_TRUNK_DIR}/src/scripts/update_chroot" "${UPDATE_ARGS[@]}"
|
|
java-config --set-system-vm 1
|