coreos-devel/board-packages: Drop the OEM sysext dependencies

It is no longer necessary to include these as they are explicitly built
with --onlydeps in build_sysext_packages().

This new approach allows a package to be installed to both /usr and
sysexts with conflicting USE flags. Portage would normally refuse to do
this because it would "break" what is already installed to the board
root, but --ignore-world forces the breakage. It is safe in this context
because the board root is not used for execution, and affected packages
will be automatically rebuilt as needed, e.g. the next time you run
build_packages.

Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
This commit is contained in:
James Le Cuirot 2026-01-27 16:37:30 +00:00
parent 14b1bdce75
commit bd92821131
No known key found for this signature in database
GPG Key ID: 1226415D00DD3137
4 changed files with 17 additions and 41 deletions

View File

@ -312,13 +312,17 @@ build_sysext_packages() {
eclean_excludes+=( ${package_atoms} )
for package in $package_atoms; do
# --buildpkgonly does not install dependencies, so we install them
# separately before building the binary package
# separately before building the binary package. --ignore-world is needed
# to allow packages to be installed to both /usr and sysexts with
# conflicting USE flags. This will "break" the board root, but it's not
# used for execution, and affected packages will be rebuilt as needed.
sudo --preserve-env=MODULES_SIGN_KEY,MODULES_SIGN_CERT \
env USE="$useflags" FEATURES="-ebuild-locks binpkg-multi-instance" "${EMERGE_CMD[@]}" \
"${EMERGE_FLAGS[@]}" \
--quiet \
--onlydeps \
--binpkg-respect-use=y \
--ignore-world=y \
"${package}"
sudo --preserve-env=MODULES_SIGN_KEY,MODULES_SIGN_CERT \
@ -327,6 +331,7 @@ build_sysext_packages() {
--quiet \
--buildpkgonly \
--binpkg-respect-use=y \
--ignore-world=y \
"${package}"
done
unset IFS
@ -378,10 +383,10 @@ if [[ "${FLAGS_usepkgonly}" -eq "${FLAGS_FALSE}" ]]; then
fi
fi
eclean-"$BOARD" --deep --exclude-file=<(qatom -F "%{CATEGORY}/%{PN}" "${eclean_excludes[@]}") packages
eclean-"$BOARD" --deep --exclude-file=<(qatom -F "%{CATEGORY}/%{PN}" "${eclean_excludes[@]}") packages --unique-use
# run eclean again, this time without the --deep option, to clean old versions
# of sysext packages (those, for which .ebuild file no longer exists)
eclean-"$BOARD" packages
eclean-"$BOARD" packages --unique-use
info "Checking build root"
test_image_content "${BOARD_ROOT}"

View File

@ -23,13 +23,12 @@ gets built into a developer image and is not OEM specific.
gets built into the Container Linux SDK.
`coreos-devel/board-packages` is everything that could be built into a
development or production image, plus any OEM specific packages.
development or production image.
`coreos-base/oem-*` are the OEM specific packages. They mostly install things
that belong in the OEM partition. Any RDEPENDS from these packages should
be copied to the RDEPENDS in `board-packages` to ensure they are built.
that belong in the OEM partition.
`coreos-base/coreos-oem-*` are metapackages for OEM specific ACIs.
`coreos-base/coreos-oem-*` are metapackages for OEM specific ACIs.
# Updating

View File

@ -2,47 +2,19 @@
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI=7
EAPI=8
DESCRIPTION="Meta ebuild for building all binary packages."
HOMEPAGE="http://coreos.com/docs/sdk/"
SRC_URI=""
DESCRIPTION="Meta ebuild for building all binary packages"
HOMEPAGE="https://www.flatcar.org/"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""
# Depend on everything OEMs need, but not the OEMs themselves.
# This makes the built packages available for image_vm_util.sh but
# avoids copying the oem specific files (e.g. grub configs) before
# the oem partition is set up.
DEPEND=""
RDEPEND="
amd64? (
app-emulation/google-compute-engine
app-emulation/open-vm-tools
coreos-base/nova-agent-container
coreos-base/nova-agent-watcher
)
coreos-base/coreos
coreos-base/coreos-dev
sys-boot/grub
sys-boot/shim
sys-boot/shim-signed
app-containers/containerd
app-containers/docker
app-containers/docker-buildx
app-containers/docker-cli
app-containers/incus
app-emulation/amazon-ssm-agent
app-emulation/hv-daemons
app-emulation/wa-linux-agent
coreos-base/coreos
coreos-base/coreos-dev
coreos-base/flatcar-eks
net-misc/chrony
sys-fs/zfs
app-containers/podman
net-misc/passt
dev-lang/python
dev-python/pip
"
"