aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2021-02-28 21:39:01 -0800
committerZac Medico <zmedico@gentoo.org>2021-03-02 00:56:46 -0800
commit3253686e9438a918b104089b6e2f8d4e8d9eb4a7 (patch)
tree73caeed4435b8d0d875eb6211ad4b45054ac5205
parentsetup.py: change default sdist format to xz (diff)
downloadportage-3253686e9438a918b104089b6e2f8d4e8d9eb4a7.tar.gz
portage-3253686e9438a918b104089b6e2f8d4e8d9eb4a7.tar.bz2
portage-3253686e9438a918b104089b6e2f8d4e8d9eb4a7.zip
emerge: make --binpkg-respect-use=y imply --autounmask-use=n
If --binpkg-respect-use=y is given explicitly, then it implies --autounmask-use=n, because these options naturally oppose eachother. Bug: https://bugs.gentoo.org/773469 Signed-off-by: Zac Medico <zmedico@gentoo.org>
-rw-r--r--lib/_emerge/create_depgraph_params.py22
-rw-r--r--lib/portage/tests/resolver/test_useflags.py20
-rw-r--r--man/emerge.19
3 files changed, 31 insertions, 20 deletions
diff --git a/lib/_emerge/create_depgraph_params.py b/lib/_emerge/create_depgraph_params.py
index 25dd2a1b4..267600fb6 100644
--- a/lib/_emerge/create_depgraph_params.py
+++ b/lib/_emerge/create_depgraph_params.py
@@ -41,12 +41,22 @@ def create_depgraph_params(myopts, myaction):
# binpkg_changed_deps: reject binary packages with outdated deps
myparams = {"recurse" : True}
+ binpkg_respect_use = myopts.get("--binpkg-respect-use")
+ if binpkg_respect_use is not None:
+ myparams["binpkg_respect_use"] = binpkg_respect_use
+ elif "--usepkgonly" not in myopts:
+ # If --binpkg-respect-use is not explicitly specified, we enable
+ # the behavior automatically (like requested in bug #297549), as
+ # long as it doesn't strongly conflict with other options that
+ # have been specified.
+ myparams["binpkg_respect_use"] = "auto"
+
autounmask_keep_keywords = myopts.get("--autounmask-keep-keywords")
autounmask_keep_masks = myopts.get("--autounmask-keep-masks")
autounmask = myopts.get("--autounmask")
autounmask_license = myopts.get('--autounmask-license', 'y' if autounmask is True else 'n')
- autounmask_use = myopts.get('--autounmask-use')
+ autounmask_use = 'n' if myparams.get('binpkg_respect_use') == 'y' else myopts.get('--autounmask-use')
if autounmask == 'n':
autounmask = False
else:
@@ -153,16 +163,6 @@ def create_depgraph_params(myopts, myaction):
'--update' in myopts:
myparams['rebuilt_binaries'] = True
- binpkg_respect_use = myopts.get('--binpkg-respect-use')
- if binpkg_respect_use is not None:
- myparams['binpkg_respect_use'] = binpkg_respect_use
- elif '--usepkgonly' not in myopts:
- # If --binpkg-respect-use is not explicitly specified, we enable
- # the behavior automatically (like requested in bug #297549), as
- # long as it doesn't strongly conflict with other options that
- # have been specified.
- myparams['binpkg_respect_use'] = 'auto'
-
binpkg_changed_deps = myopts.get('--binpkg-changed-deps')
if binpkg_changed_deps is not None:
myparams['binpkg_changed_deps'] = binpkg_changed_deps
diff --git a/lib/portage/tests/resolver/test_useflags.py b/lib/portage/tests/resolver/test_useflags.py
index d66da0866..b799e62ff 100644
--- a/lib/portage/tests/resolver/test_useflags.py
+++ b/lib/portage/tests/resolver/test_useflags.py
@@ -46,15 +46,23 @@ class UseFlagsTestCase(TestCase):
success = True,
mergelist = ["dev-libs/A-1"]),
- # In the unit test case for bug 773469, the --autounmask-backtrack option
- # is needed in order to trigger the --binpkg-respect-use=y behavior that
- # appears confusingly similar to --binpkg-respect-use=n behavior.
+ # For bug 773469, we wanted --binpkg-respect-use=y to trigger a
+ # slot collision. Instead, a combination of default --autounmask-use
+ # combined with --autounmask-backtrack=y from EMERGE_DEFAULT_OPTS
+ # triggered this behavior which appeared confusingly similar to
+ #--binpkg-respect-use=n behavior.
+ #ResolverPlaygroundTestCase(
+ # ["dev-libs/C", "dev-libs/D"],
+ # options={"--usepkg": True, "--binpkg-respect-use": "y", "--autounmask-backtrack": "y"},
+ # success=True,
+ # use_changes={"dev-libs/C-1": {"abi_x86_32": True}},
+ # mergelist=["[binary]dev-libs/C-1", "[binary]dev-libs/D-1"],
ResolverPlaygroundTestCase(
["dev-libs/C", "dev-libs/D"],
options={"--usepkg": True, "--binpkg-respect-use": "y", "--autounmask-backtrack": "y"},
- success=True,
- use_changes={"dev-libs/C-1": {"abi_x86_32": True}},
- mergelist=["[binary]dev-libs/C-1", "[binary]dev-libs/D-1"],
+ success=False,
+ slot_collision_solutions=[{"dev-libs/C-1": {"abi_x86_32": True}}],
+ mergelist=["dev-libs/C-1", "[binary]dev-libs/D-1"],
),
#--binpkg-respect-use=n: use binpkgs with different use flags
diff --git a/man/emerge.1 b/man/emerge.1
index d9efc74cf..ad7f81ae7 100644
--- a/man/emerge.1
+++ b/man/emerge.1
@@ -1,4 +1,4 @@
-.TH "EMERGE" "1" "Feb 2021" "Portage VERSION" "Portage"
+.TH "EMERGE" "1" "Mar 2021" "Portage VERSION" "Portage"
.SH "NAME"
emerge \- Command\-line interface to the Portage system
.SH "SYNOPSIS"
@@ -417,7 +417,8 @@ Allow autounmask package.license changes.
.TP
.BR "\-\-autounmask\-use < y | n >"
Allow autounmask package.use changes. This option is enabled by default
-(either \fB\-\-autounmask=n\fR or \fB\-\-autounmask\-use=n\fR disables
+(any of \fB\-\-autounmask=n\fR, \fB\-\-autounmask\-use=n\fR,
+or \fB\-\-binpkg-\-respect\-use=y\fR disables
it). The \fBEMERGE_DEFAULT_OPTS\fR variable may be used to
disable this option by default in \fBmake.conf\fR(5).
.TP
@@ -448,7 +449,9 @@ Tells emerge to ignore binary packages if their USE flags
don't match the current configuration. In order to help avoid issues
with resolving inconsistent USE flag settings, this option is
automatically enabled unless the \fB\-\-usepkgonly\fR option
-is enabled.
+is enabled. If \fB\-\-binpkg\-respect\-use\fR is given explicitly,
+then it implies \fB\-\-autounmask\-use=n\fR, because these options
+naturally oppose eachother.
.TP
.BR "\-\-buildpkg [ y | n ]" ", " \-b
Tells emerge to build binary packages for all ebuilds processed in