From 0832382db879fea4613906fa7f2e46edeb0742d0 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Wed, 3 Dec 2025 10:04:06 +0000 Subject: [PATCH] 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 --- .../coreos/config/portage/README.md | 4 +++ setup_board | 13 +++++++-- update_chroot | 28 +++++++++++-------- 3 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos/config/portage/README.md diff --git a/sdk_container/src/third_party/coreos-overlay/coreos/config/portage/README.md b/sdk_container/src/third_party/coreos-overlay/coreos/config/portage/README.md new file mode 100644 index 0000000000..248bfb9c7e --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos/config/portage/README.md @@ -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. diff --git a/setup_board b/setup_board index c1acdc1f25..3924776ca8 100755 --- a/setup_board +++ b/setup_board @@ -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/-usr, but set ROOT to /, so eselect will actually find # the profile which is outside /build/-usr, set SYSROOT to / as diff --git a/update_chroot b/update_chroot index f64005c965..b3dfdfe638 100755 --- a/update_chroot +++ b/update_chroot @@ -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" <