aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gentoo.org>2021-01-17 18:29:05 -0500
committerMatt Turner <mattst88@gentoo.org>2021-01-23 11:19:07 -0500
commitb3f782a0725da0f4858cba3e887f973e324755c7 (patch)
tree802f20a300951275b022ef8f2fd94eda052d9944
parenttargets: Update BINPKG_COMPRESS to new zstd default (diff)
downloadcatalyst-b3f782a0.tar.gz
catalyst-b3f782a0.tar.bz2
catalyst-b3f782a0.zip
targets: Update the @changed-subslot set by default
In portage commit 1789fdf2ee81 (Add @changed-subslot package set) I added this: the set of upgradable packages for which the highest visible version has a different subslot than the currently installed version. Updating the entire stage is expensive and unnecessary (since we're going to build the latest packages in stage1 and then rebuild everything in stage3). What we definitely do need to update in the original stage3 however, is any package that would trigger a subslot rebuild. For example: gcc links with libmpfr.so from dev-libs/mpfr. mpfr's SONAME changes from libmpfr.so.4 (SLOT="0/4") to libmpfr.so.6 (SLOT="0/6"). If the seed stage's dev-libs/mpfr is not updated before emerging gcc, gcc will link with libmpfr.so.4, but the latest version of dev-libs/mpfr will be built and libmpfr.so.6 included into the stage1. Since the old libmpfr.so.4 is not included in the stage1, gcc will not work, breaking subsequent stage builds. Our current options to update the seed are too large a hammer (e.g., "--update --deep --newuse @world" or "--update --deep --newuse --complete-graph --rebuild-if-new-ver gcc") and spend too much time updating seed stages for no gain beyond updating only packages for whom the subslot has changed. Bug: https://bugs.gentoo.org/739004 Signed-off-by: Matt Turner <mattst88@gentoo.org>
-rwxr-xr-xtargets/stage1/chroot.sh2
1 files changed, 2 insertions, 0 deletions
diff --git a/targets/stage1/chroot.sh b/targets/stage1/chroot.sh
index 9b34ced8..08b9da46 100755
--- a/targets/stage1/chroot.sh
+++ b/targets/stage1/chroot.sh
@@ -37,6 +37,8 @@ if [ -n "${clst_update_seed}" ]; then
echo "Updating seed stage..."
if [ -n "${clst_update_seed_command}" ]; then
ROOT=/ run_merge --buildpkg=n "${clst_update_seed_command}"
+ elif grep -q '^\[changed-subslot\]' /usr/share/portage/config/sets/portage.conf; then
+ ROOT=/ run_merge --ignore-built-slot-operator-deps y @changed-subslot
else
ROOT=/ run_merge --update --deep --newuse --complete-graph --rebuild-if-new-ver gcc
fi