1
0
Fork 0
chromiumos-builder/setup-root.sh

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