Copy some Portage configuration from overlays to /etc/portage

Portage configuration can package mask per repo, but profiles cannot.

Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
This commit is contained in:
James Le Cuirot 2025-12-03 10:04:06 +00:00
parent d154e3ed27
commit 0832382db8
No known key found for this signature in database
GPG Key ID: 1226415D00DD3137
3 changed files with 31 additions and 14 deletions

View File

@ -0,0 +1,4 @@
This directory is for Portage configuration that cannot be applied using
profiles. Files here are automatically symlinked to /etc/portage. For example,
package.mask can include repository references like `::coreos-overlay` when
placed under /etc/portage but not when part of a profile.

View File

@ -166,8 +166,6 @@ fi
get_board_and_variant $FLAGS_board $FLAGS_variant
# Locations we will need
COREOS_OVERLAY="${REPO_ROOT}/src/third_party/coreos-overlay"
COREOS_CONFIG="${COREOS_OVERLAY}/coreos/config"
BOARD_ROOT="/build/${BOARD_VARIANT}"
BOARD_ETC="${BOARD_ROOT}/etc"
BOARD_ARCH=$(get_board_arch "$BOARD")
@ -248,6 +246,17 @@ sudo mkdir -p "${BOARD_ETC}/portage/"{profile,repos.conf}
sudo ln -sfT "$(portageq get_repo_path / coreos-overlay)/coreos/user-patches" \
"${BOARD_ETC}/portage/patches"
sudo cp /etc/portage/repos.conf/* "${BOARD_ETC}"/portage/repos.conf/
for REPO_NAME in $(cat "${REPO_ROOT}"/src/third_party/*/profiles/repo_name); do
[[ ${REPO_NAME} == prefix ]] && continue # Ignore for now.
for CONF in "${REPO_ROOT}/src/third_party/${REPO_NAME}"/coreos/config/portage/*; do
[[ ${CONF} == *.md || ! -e ${CONF} ]] && continue
sudo mkdir -p "${BOARD_ETC}/portage/${CONF##*/}"
sudo ln -snf "${CONF}" "${BOARD_ETC}/portage/${CONF##*/}/${REPO_NAME}.conf"
done
done
# set PORTAGE_CONFIGROOT to tell eselect to modify the profile inside
# /build/<arch>-usr, but set ROOT to /, so eselect will actually find
# the profile which is outside /build/<arch>-usr, set SYSROOT to / as

View File

@ -61,10 +61,7 @@ if [[ -n "${FLAGS_dev_builds_sdk}" ]]; then
FLATCAR_DEV_BUILDS_SDK="${FLAGS_dev_builds_sdk}"
fi
PORTAGE_STABLE_OVERLAY="${REPO_ROOT}/src/third_party/portage-stable"
CROSSDEV_OVERLAY="/usr/local/portage/crossdev"
COREOS_OVERLAY="${REPO_ROOT}/src/third_party/coreos-overlay"
COREOS_CONFIG="${COREOS_OVERLAY}/coreos/config"
PORTAGE_BINHOST="$FLAGS_binhost $(get_sdk_binhost)"
# PORTAGE_USERNAME may already be in the env but set just to be safe.
@ -103,17 +100,24 @@ EMERGE_DEFAULT_OPTS="--verbose --oneshot"
source "/etc/portage/make.conf.user"
EOF
sudo_clobber "/etc/portage/repos.conf/portage-stable.conf" <<EOF
for REPO_NAME in $(cat "${REPO_ROOT}"/src/third_party/*/profiles/repo_name); do
[[ ${REPO_NAME} == prefix ]] && continue # Ignore for now.
for CONF in "${REPO_ROOT}/src/third_party/${REPO_NAME}"/coreos/config/portage/*; do
[[ ${CONF} == *.md || ! -e ${CONF} ]] && continue
sudo mkdir -p "/etc/portage/${CONF##*/}"
sudo ln -snf "${CONF}" "/etc/portage/${CONF##*/}/${REPO_NAME}.conf"
done
sudo_clobber "/etc/portage/repos.conf/${REPO_NAME}.conf" <<EOF
[${REPO_NAME}]
location = ${REPO_ROOT}/src/third_party/${REPO_NAME}
EOF
done
sudo_append "/etc/portage/repos.conf/portage-stable.conf" <<EOF
[DEFAULT]
main-repo = portage-stable
[portage-stable]
location = ${PORTAGE_STABLE_OVERLAY}
EOF
sudo_clobber "/etc/portage/repos.conf/coreos-overlay.conf" <<EOF
[coreos-overlay]
location = ${COREOS_OVERLAY}
EOF
# Automatically symlink any provided portage repo configurations into