From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-1246642-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by finch.gentoo.org (Postfix) with ESMTPS id 5D91C1382C5
	for <garchives@archives.gentoo.org>; Fri, 29 Jan 2021 23:50:54 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 0F374E0AB0;
	Fri, 29 Jan 2021 23:50:53 +0000 (UTC)
Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id 83402E0AAF
	for <gentoo-commits@lists.gentoo.org>; Fri, 29 Jan 2021 23:50:52 +0000 (UTC)
Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id E18BD340FE7
	for <gentoo-commits@lists.gentoo.org>; Fri, 29 Jan 2021 23:50:50 +0000 (UTC)
Received: from localhost.localdomain (localhost [IPv6:::1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id 3E5874A7
	for <gentoo-commits@lists.gentoo.org>; Fri, 29 Jan 2021 23:50:49 +0000 (UTC)
From: "Matt Turner" <mattst88@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: 8bit
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Matt Turner" <mattst88@gentoo.org>
Message-ID: <1611418747.b3f782a0725da0f4858cba3e887f973e324755c7.mattst88@gentoo>
Subject: [gentoo-commits] proj/catalyst:wip/mattst88 commit in: targets/stage1/
X-VCS-Repository: proj/catalyst
X-VCS-Files: targets/stage1/chroot.sh
X-VCS-Directories: targets/stage1/
X-VCS-Committer: mattst88
X-VCS-Committer-Name: Matt Turner
X-VCS-Revision: b3f782a0725da0f4858cba3e887f973e324755c7
X-VCS-Branch: wip/mattst88
Date: Fri, 29 Jan 2021 23:50:49 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply
X-Archives-Salt: f4f44cc0-3791-4160-a8c5-4598caee7c87
X-Archives-Hash: 6ea42dee5943344468d48e749d006480
Message-ID: <20210129235049.u_ayl1nrgRLINkmRkJTrMZD7YkPk94EZqr0Uni8giTA@z>

commit:     b3f782a0725da0f4858cba3e887f973e324755c7
Author:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 17 23:29:05 2021 +0000
Commit:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Sat Jan 23 16:19:07 2021 +0000
URL:        https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=b3f782a0

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 <AT> gentoo.org>

 targets/stage1/chroot.sh | 2 ++
 1 file changed, 2 insertions(+)

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