sys-apps/baselayout: Add build USE flag to avoid poking unwritable dirs

update_sdk_container_image fails to update baselayout because it touches
/sys, which is not allowed in an unprivileged docker build environment.

This roughly mirrors what Gentoo's baselayout does.

Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
This commit is contained in:
James Le Cuirot 2026-04-15 17:15:22 +01:00
parent a6b4348492
commit f0a1caf488
No known key found for this signature in database
GPG Key ID: 1226415D00DD3137
4 changed files with 17 additions and 12 deletions

View File

@ -530,7 +530,7 @@ start_image() {
trap "cleanup_mounts '${root_fs_dir}' && delete_prompt" EXIT
# First thing first, install baselayout to create a working filesystem.
emerge_to_image "${root_fs_dir}" --nodeps --oneshot sys-apps/baselayout
USE+=" build" emerge_to_image "${root_fs_dir}" --nodeps --oneshot sys-apps/baselayout
# FIXME(marineam): Work around glibc setting EROOT=$ROOT
# https://bugs.gentoo.org/show_bug.cgi?id=473728#c12

View File

@ -35,7 +35,7 @@ build_target_toolchain() {
# install baselayout first so we have the basic directory
# structure for libraries and binaries copied from sysroot
btt_emerge --oneshot --nodeps sys-apps/baselayout
USE+=" build" btt_emerge --oneshot --nodeps sys-apps/baselayout
# copy libraries, binaries and header files from sysroot to root -
# sysroot may be using split-usr, whereas root does not, so take

View File

@ -20,7 +20,7 @@ fi
LICENSE="GPL-2"
SLOT="0"
IUSE="cros_host"
IUSE="build cros_host"
# Make sure coreos-init is not installed in the SDK
RDEPEND="
@ -83,19 +83,24 @@ src_install() {
SYSTEMD_JOURNAL_GID=${ACCT_GROUP_SYSTEMD_JOURNAL_ID:-190} ROOT_UID=0 ROOT_GID=0 CORE_UID=500 CORE_GID=500 \
DESTDIR=${D} ./dumb-tmpfiles-proc.sh --exclude d "${ED}/usr/lib/tmpfiles.d" || die
insinto /usr/share/baselayout
doins Makefile
exeinto /usr/share/baselayout
doexe dumb-tmpfiles-proc.sh
if use build; then
insinto /usr/share/baselayout
doins Makefile
exeinto /usr/share/baselayout
doexe dumb-tmpfiles-proc.sh
fi
}
pkg_preinst() {
local libdirs
libdirs=$(get_all_libdirs)
emake -C "${ED}/usr/share/${PN}" DESTDIR="${EROOT}" LIBDIRS="${libdirs}" layout
SYSTEMD_JOURNAL_GID=${ACCT_GROUP_SYSTEMD_JOURNAL_ID:-190} ROOT_UID=0 ROOT_GID=0 CORE_UID=500 CORE_GID=500 \
DESTDIR=${D} "${ED}/usr/share/${PN}/dumb-tmpfiles-proc.sh" "${ED}/usr/lib/tmpfiles.d" || die
rm -f "${ED}/usr/share/${PN}/Makefile" "${ED}/usr/share/${PN}/dumb-tmpfiles-proc.sh" || die
if use build; then
emake -C "${ED}/usr/share/${PN}" DESTDIR="${EROOT}" LIBDIRS="${libdirs}" layout
SYSTEMD_JOURNAL_GID=${ACCT_GROUP_SYSTEMD_JOURNAL_ID:-190} ROOT_UID=0 ROOT_GID=0 CORE_UID=500 CORE_GID=500 \
DESTDIR=${ROOT} "${ED}/usr/share/${PN}/dumb-tmpfiles-proc.sh" --exclude CZL+ "${ED}/usr/lib/tmpfiles.d" || die
rm -f "${ED}/usr/share/${PN}/Makefile" "${ED}/usr/share/${PN}/dumb-tmpfiles-proc.sh" || die
fi
}
pkg_postinst() {

View File

@ -337,7 +337,7 @@ if [[ ${FLAGS_regen_configs} -eq ${FLAGS_FALSE} ]]; then
fi
info "Installing baselayout"
"${EMERGE_WRAPPER}" "${EMERGE_FLAGS[@]}" --nodeps sys-apps/baselayout
USE+=" build" "${EMERGE_WRAPPER}" "${EMERGE_FLAGS[@]}" --nodeps sys-apps/baselayout
if [[ "${FLAGS_usepkg}" -ne "${FLAGS_TRUE}" ||
"${FLAGS_getbinpkg}" -ne "${FLAGS_TRUE}" ]]