[PATCH] emerge: add --autounmask-keep-keywords option (bug 622480)

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] emerge: add --autounmask-keep-keywords option (bug 622480)

Zac Medico-2
The option prevents --autounmask from making changes to
package.accept_keywords. This option does not imply
--autounmask-keep-masks, so --autounmask is still allowed
to create package.unmask changes unless the
--autounmask-keep-masks is also specified.

X-Gentoo-bug: 622480
X-Gentoo-bug-url: https://bugs.gentoo.org/622480
---
 man/emerge.1                                       |  7 +++
 pym/_emerge/depgraph.py                            | 12 ++--
 pym/_emerge/main.py                                |  9 +++
 .../resolver/test_autounmask_keep_keywords.py      | 68 ++++++++++++++++++++++
 4 files changed, 92 insertions(+), 4 deletions(-)
 create mode 100644 pym/portage/tests/resolver/test_autounmask_keep_keywords.py

diff --git a/man/emerge.1 b/man/emerge.1
index ffb453efb..12a0db166 100644
--- a/man/emerge.1
+++ b/man/emerge.1
@@ -395,6 +395,13 @@ using the \'=\' operator will be written. With this
 option, \'>=\' operators will be used whenever possible.
 USE and license changes always use the latter behavior.
 .TP
+.BR "\-\-autounmask\-keep\-keywords [ y | n ]"
+If \-\-autounmask is enabled, no package.accept_keywords changes will
+be created. This leads to unsatisfied dependencies if any keyword
+changes are required. This option does not imply \-\-autounmask\-keep\-masks,
+so \-\-autounmask is still allowed to create package.unmask changes unless
+the \-\-autounmask\-keep\-masks is also specified.
+.TP
 .BR "\-\-autounmask\-keep\-masks [ y | n ]"
 If \-\-autounmask is enabled, no package.unmask or ** keyword changes
 will be created. This leads to unsatisfied dependencies if
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index abe2cb1bd..b4fc5f297 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -5707,6 +5707,7 @@ class depgraph(object):
  if self._dynamic_config._autounmask is not True:
  return
 
+ autounmask_keep_keywords = self._frozen_config.myopts.get("--autounmask-keep-keywords", "n") != "n"
  autounmask_keep_masks = self._frozen_config.myopts.get("--autounmask-keep-masks", "n") != "n"
  autounmask_level = self._AutounmaskLevel()
 
@@ -5716,14 +5717,16 @@ class depgraph(object):
  autounmask_level.allow_license_changes = True
  yield autounmask_level
 
- autounmask_level.allow_unstable_keywords = True
- yield autounmask_level
-
- if not autounmask_keep_masks:
+ if not autounmask_keep_keywords:
+ autounmask_level.allow_unstable_keywords = True
+ yield autounmask_level
 
+ if not (autounmask_keep_keywords or autounmask_keep_masks):
+ autounmask_level.allow_unstable_keywords = True
  autounmask_level.allow_missing_keywords = True
  yield autounmask_level
 
+ if not autounmask_keep_masks:
  # 4. USE + license + masks
  # Try to respect keywords while discarding
  # package.mask (see bug #463394).
@@ -5732,6 +5735,7 @@ class depgraph(object):
  autounmask_level.allow_unmasks = True
  yield autounmask_level
 
+ if not (autounmask_keep_keywords or autounmask_keep_masks):
  autounmask_level.allow_unstable_keywords = True
 
  for missing_keyword, unmask in ((False, True), (True, True)):
diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py
index 2132aa63c..d3a415b91 100644
--- a/pym/_emerge/main.py
+++ b/pym/_emerge/main.py
@@ -129,6 +129,7 @@ def insert_optional_args(args):
  '--autounmask'           : y_or_n,
  '--autounmask-continue'  : y_or_n,
  '--autounmask-only'      : y_or_n,
+ '--autounmask-keep-keywords' : y_or_n,
  '--autounmask-keep-masks': y_or_n,
  '--autounmask-unrestricted-atoms' : y_or_n,
  '--autounmask-write'     : y_or_n,
@@ -348,6 +349,11 @@ def parse_opts(tmpcmdline, silent=False):
  "choices" : true_y_or_n
  },
 
+ "--autounmask-keep-keywords": {
+ "help"    : "don't add package.accept_keywords entries",
+ "choices" : true_y_or_n
+ },
+
  "--autounmask-keep-masks": {
  "help"    : "don't add package.unmask entries",
  "choices" : true_y_or_n
@@ -797,6 +803,9 @@ def parse_opts(tmpcmdline, silent=False):
  if myoptions.autounmask_unrestricted_atoms in true_y:
  myoptions.autounmask_unrestricted_atoms = True
 
+ if myoptions.autounmask_keep_keywords in true_y:
+ myoptions.autounmask_keep_keywords = True
+
  if myoptions.autounmask_keep_masks in true_y:
  myoptions.autounmask_keep_masks = True
 
diff --git a/pym/portage/tests/resolver/test_autounmask_keep_keywords.py b/pym/portage/tests/resolver/test_autounmask_keep_keywords.py
new file mode 100644
index 000000000..c551e958d
--- /dev/null
+++ b/pym/portage/tests/resolver/test_autounmask_keep_keywords.py
@@ -0,0 +1,68 @@
+# Copyright 2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+from portage.tests import TestCase
+from portage.tests.resolver.ResolverPlayground import ResolverPlayground, ResolverPlaygroundTestCase
+
+class AutounmaskKeepKeywordsTestCase(TestCase):
+
+ def testAutounmaskKeepKeywordsTestCase(self):
+ ebuilds = {
+ "app-misc/A-2": {
+ "EAPI": "6",
+ "RDEPEND": "app-misc/B",
+ },
+ "app-misc/A-1": {
+ "EAPI": "6",
+ "RDEPEND": "app-misc/C[foo]",
+ },
+ "app-misc/B-1": {
+ "EAPI": "6",
+ "KEYWORDS": "~x86",
+ },
+ "app-misc/C-1": {
+ "EAPI": "6",
+ "IUSE": "foo",
+ },
+ }
+ installed = {
+ }
+
+ test_cases = (
+ ResolverPlaygroundTestCase(
+ ['app-misc/A'],
+ success = False,
+ options = {
+ '--autounmask-keep-keywords': 'n',
+ },
+ mergelist = [
+    'app-misc/B-1',
+    'app-misc/A-2',
+ ],
+ unstable_keywords={'app-misc/B-1'},
+ ),
+ # --autounmask-keep-keywords prefers app-misc/A-1 because
+ # it can be installed without accepting unstable
+ # keywords
+ ResolverPlaygroundTestCase(
+ ['app-misc/A'],
+ success = False,
+ options = {
+ "--autounmask-keep-keywords": 'y',
+ },
+ mergelist = [
+    'app-misc/C-1',
+    'app-misc/A-1',
+ ],
+ use_changes = {'app-misc/C-1': {'foo': True}},
+ ),
+ )
+
+ playground = ResolverPlayground(ebuilds=ebuilds, debug=False)
+ try:
+ for test_case in test_cases:
+ playground.run_TestCase(test_case)
+ self.assertEqual(test_case.test_success, True, test_case.fail_msg)
+ finally:
+ playground.debug = False
+ playground.cleanup()
--
2.13.0


Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] emerge: add --autounmask-keep-keywords option (bug 622480)

M. J. Everitt
On 12/08/17 19:08, Zac Medico wrote:

> The option prevents --autounmask from making changes to
> package.accept_keywords. This option does not imply
> --autounmask-keep-masks, so --autounmask is still allowed
> to create package.unmask changes unless the
> --autounmask-keep-masks is also specified.
>
> X-Gentoo-bug: 622480
> X-Gentoo-bug-url: https://bugs.gentoo.org/622480
> ---
>  man/emerge.1                                       |  7 +++
>  pym/_emerge/depgraph.py                            | 12 ++--
>  pym/_emerge/main.py                                |  9 +++
>  .../resolver/test_autounmask_keep_keywords.py      | 68 ++++++++++++++++++++++
>  4 files changed, 92 insertions(+), 4 deletions(-)
>  create mode 100644 pym/portage/tests/resolver/test_autounmask_keep_keywords.py
>
> diff --git a/man/emerge.1 b/man/emerge.1
> index ffb453efb..12a0db166 100644
> --- a/man/emerge.1
> +++ b/man/emerge.1
> @@ -395,6 +395,13 @@ using the \'=\' operator will be written. With this
>  option, \'>=\' operators will be used whenever possible.
>  USE and license changes always use the latter behavior.
>  .TP
> +.BR "\-\-autounmask\-keep\-keywords [ y | n ]"
> +If \-\-autounmask is enabled, no package.accept_keywords changes will
> +be created. This leads to unsatisfied dependencies if any keyword
> +changes are required. This option does not imply \-\-autounmask\-keep\-masks,
> +so \-\-autounmask is still allowed to create package.unmask changes unless
> +the \-\-autounmask\-keep\-masks is also specified.
> +.TP
>  .BR "\-\-autounmask\-keep\-masks [ y | n ]"
>  If \-\-autounmask is enabled, no package.unmask or ** keyword changes
>  will be created. This leads to unsatisfied dependencies if
> diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
> index abe2cb1bd..b4fc5f297 100644
> --- a/pym/_emerge/depgraph.py
> +++ b/pym/_emerge/depgraph.py
> @@ -5707,6 +5707,7 @@ class depgraph(object):
>   if self._dynamic_config._autounmask is not True:
>   return
>  
> + autounmask_keep_keywords = self._frozen_config.myopts.get("--autounmask-keep-keywords", "n") != "n"
>   autounmask_keep_masks = self._frozen_config.myopts.get("--autounmask-keep-masks", "n") != "n"
>   autounmask_level = self._AutounmaskLevel()
>  
> @@ -5716,14 +5717,16 @@ class depgraph(object):
>   autounmask_level.allow_license_changes = True
>   yield autounmask_level
>  
> - autounmask_level.allow_unstable_keywords = True
> - yield autounmask_level
> -
> - if not autounmask_keep_masks:
> + if not autounmask_keep_keywords:
> + autounmask_level.allow_unstable_keywords = True
> + yield autounmask_level
>  
> + if not (autounmask_keep_keywords or autounmask_keep_masks):
> + autounmask_level.allow_unstable_keywords = True
>   autounmask_level.allow_missing_keywords = True
>   yield autounmask_level
>  
> + if not autounmask_keep_masks:
>   # 4. USE + license + masks
>   # Try to respect keywords while discarding
>   # package.mask (see bug #463394).
> @@ -5732,6 +5735,7 @@ class depgraph(object):
>   autounmask_level.allow_unmasks = True
>   yield autounmask_level
>  
> + if not (autounmask_keep_keywords or autounmask_keep_masks):
>   autounmask_level.allow_unstable_keywords = True
>  
>   for missing_keyword, unmask in ((False, True), (True, True)):
> diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py
> index 2132aa63c..d3a415b91 100644
> --- a/pym/_emerge/main.py
> +++ b/pym/_emerge/main.py
> @@ -129,6 +129,7 @@ def insert_optional_args(args):
>   '--autounmask'           : y_or_n,
>   '--autounmask-continue'  : y_or_n,
>   '--autounmask-only'      : y_or_n,
> + '--autounmask-keep-keywords' : y_or_n,
>   '--autounmask-keep-masks': y_or_n,
>   '--autounmask-unrestricted-atoms' : y_or_n,
>   '--autounmask-write'     : y_or_n,
> @@ -348,6 +349,11 @@ def parse_opts(tmpcmdline, silent=False):
>   "choices" : true_y_or_n
>   },
>  
> + "--autounmask-keep-keywords": {
> + "help"    : "don't add package.accept_keywords entries",
> + "choices" : true_y_or_n
> + },
> +
>   "--autounmask-keep-masks": {
>   "help"    : "don't add package.unmask entries",
>   "choices" : true_y_or_n
> @@ -797,6 +803,9 @@ def parse_opts(tmpcmdline, silent=False):
>   if myoptions.autounmask_unrestricted_atoms in true_y:
>   myoptions.autounmask_unrestricted_atoms = True
>  
> + if myoptions.autounmask_keep_keywords in true_y:
> + myoptions.autounmask_keep_keywords = True
> +
>   if myoptions.autounmask_keep_masks in true_y:
>   myoptions.autounmask_keep_masks = True
>  
> diff --git a/pym/portage/tests/resolver/test_autounmask_keep_keywords.py b/pym/portage/tests/resolver/test_autounmask_keep_keywords.py
> new file mode 100644
> index 000000000..c551e958d
> --- /dev/null
> +++ b/pym/portage/tests/resolver/test_autounmask_keep_keywords.py
> @@ -0,0 +1,68 @@
> +# Copyright 2017 Gentoo Foundation
> +# Distributed under the terms of the GNU General Public License v2
> +
> +from portage.tests import TestCase
> +from portage.tests.resolver.ResolverPlayground import ResolverPlayground, ResolverPlaygroundTestCase
> +
> +class AutounmaskKeepKeywordsTestCase(TestCase):
> +
> + def testAutounmaskKeepKeywordsTestCase(self):
> + ebuilds = {
> + "app-misc/A-2": {
> + "EAPI": "6",
> + "RDEPEND": "app-misc/B",
> + },
> + "app-misc/A-1": {
> + "EAPI": "6",
> + "RDEPEND": "app-misc/C[foo]",
> + },
> + "app-misc/B-1": {
> + "EAPI": "6",
> + "KEYWORDS": "~x86",
> + },
> + "app-misc/C-1": {
> + "EAPI": "6",
> + "IUSE": "foo",
> + },
> + }
> + installed = {
> + }
> +
> + test_cases = (
> + ResolverPlaygroundTestCase(
> + ['app-misc/A'],
> + success = False,
> + options = {
> + '--autounmask-keep-keywords': 'n',
> + },
> + mergelist = [
> +    'app-misc/B-1',
> +    'app-misc/A-2',
> + ],
> + unstable_keywords={'app-misc/B-1'},
> + ),
> + # --autounmask-keep-keywords prefers app-misc/A-1 because
> + # it can be installed without accepting unstable
> + # keywords
> + ResolverPlaygroundTestCase(
> + ['app-misc/A'],
> + success = False,
> + options = {
> + "--autounmask-keep-keywords": 'y',
> + },
> + mergelist = [
> +    'app-misc/C-1',
> +    'app-misc/A-1',
> + ],
> + use_changes = {'app-misc/C-1': {'foo': True}},
> + ),
> + )
> +
> + playground = ResolverPlayground(ebuilds=ebuilds, debug=False)
> + try:
> + for test_case in test_cases:
> + playground.run_TestCase(test_case)
> + self.assertEqual(test_case.test_success, True, test_case.fail_msg)
> + finally:
> + playground.debug = False
> + playground.cleanup()
OK, considering the proposal patch I put together for
-[autounmask]-use-only .. how does this/these [other] patch[es] compare?

My use-case consists of the scenario where I do not *ever* wish Portage
to modify my /etc/portage/package.<anything> files, preferring to do
this myself manually with a personal naming scheme which defines which
target packages are causing dependency issues. This would be a rather
cool feature-request for portage itself, but I don't see it being
implemented Any Time Soon™.

This was why I have enforced --autounmask=n in my EMERGE_DEFAULT_OPTS as
often it causes more harm than good if 'random' entries in
/etc/portage/<anything> starts to cause later issues with updated
library packages (read Perl, Python and any other dev-lang nasties here).

Thanks in anticipation!

Michael.


signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] emerge: add --autounmask-keep-keywords option (bug 622480)

Zac Medico-2
On 08/13/2017 04:37 PM, M. J. Everitt wrote:

> On 12/08/17 19:08, Zac Medico wrote:
>> The option prevents --autounmask from making changes to
>> package.accept_keywords. This option does not imply
>> --autounmask-keep-masks, so --autounmask is still allowed
>> to create package.unmask changes unless the
>> --autounmask-keep-masks is also specified.
>>
>> X-Gentoo-bug: 622480
>> X-Gentoo-bug-url: https://bugs.gentoo.org/622480
>> ---
>>  man/emerge.1                                       |  7 +++
>>  pym/_emerge/depgraph.py                            | 12 ++--
>>  pym/_emerge/main.py                                |  9 +++
>>  .../resolver/test_autounmask_keep_keywords.py      | 68 ++++++++++++++++++++++
>>  4 files changed, 92 insertions(+), 4 deletions(-)
>>  create mode 100644 pym/portage/tests/resolver/test_autounmask_keep_keywords.py
>>
>> diff --git a/man/emerge.1 b/man/emerge.1
>> index ffb453efb..12a0db166 100644
>> --- a/man/emerge.1
>> +++ b/man/emerge.1
>> @@ -395,6 +395,13 @@ using the \'=\' operator will be written. With this
>>  option, \'>=\' operators will be used whenever possible.
>>  USE and license changes always use the latter behavior.
>>  .TP
>> +.BR "\-\-autounmask\-keep\-keywords [ y | n ]"
>> +If \-\-autounmask is enabled, no package.accept_keywords changes will
>> +be created. This leads to unsatisfied dependencies if any keyword
>> +changes are required. This option does not imply \-\-autounmask\-keep\-masks,
>> +so \-\-autounmask is still allowed to create package.unmask changes unless
>> +the \-\-autounmask\-keep\-masks is also specified.
>> +.TP
>
> OK, considering the proposal patch I put together for
> -[autounmask]-use-only .. how does this/these [other] patch[es] compare?

You'll get the same result as --autounmask-use-only if you use
--autounmask-keep-keywords together with --autounmask-keep-masks.

This way, we can also add --autounmask-keep-license and
--autounmask-keep-use options if we want, and the meaning is very easy
to explain. The meaning of --autounmask-use-only would have required
more explanation, since it allowed license changes in addition to USE
changes.
--
Thanks,
Zac

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] emerge: add --autounmask-keep-keywords option (bug 622480)

M. J. Everitt
On 14/08/17 01:19, Zac Medico wrote [excerpted]:
> You'll get the same result as --autounmask-use-only if you use
> --autounmask-keep-keywords together with --autounmask-keep-masks.
>
> This way, we can also add --autounmask-keep-license and
> --autounmask-keep-use options if we want, and the meaning is very easy
> to explain. The meaning of --autounmask-use-only would have required
> more explanation, since it allowed license changes in addition to USE
> changes.
I guess that's the more flexible option, and logical to all users of all
locales ;)

Does portage ignore missing command-line options, if I set them in my
make.conf in anticipation!?!?!

Thanks for the clear explanation, extra coding, and look forward to the
push to 'live' :)

Michael.


signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] emerge: add --autounmask-keep-keywords option (bug 622480)

Zac Medico-2
On 08/13/2017 05:23 PM, M. J. Everitt wrote:

> On 14/08/17 01:19, Zac Medico wrote [excerpted]:
>> You'll get the same result as --autounmask-use-only if you use
>> --autounmask-keep-keywords together with --autounmask-keep-masks.
>>
>> This way, we can also add --autounmask-keep-license and
>> --autounmask-keep-use options if we want, and the meaning is very easy
>> to explain. The meaning of --autounmask-use-only would have required
>> more explanation, since it allowed license changes in addition to USE
>> changes.
> I guess that's the more flexible option, and logical to all users of all
> locales ;)
>
> Does portage ignore missing command-line options, if I set them in my
> make.conf in anticipation!?!?!

No, unrecognized options are a fatal error. That's intentional, because
having your settings ignored can harmful in some situations.

> Thanks for the clear explanation, extra coding, and look forward to the
> push to 'live' :)

It's released in portage-2.3.7, so you can try it now.
--
Thanks,
Zac

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] emerge: add --autounmask-keep-keywords option (bug 622480)

Duncan-42
In reply to this post by M. J. Everitt
M. J. Everitt posted on Mon, 14 Aug 2017 00:37:45 +0100 as excerpted:

> My use-case consists of the scenario where I do not *ever* wish Portage
> to modify my /etc/portage/package.<anything> files, preferring to do
> this myself manually with a personal naming scheme which defines which
> target packages are causing dependency issues. This would be a rather
> cool feature-request for portage itself, but I don't see it being
> implemented Any Time Soon™.
>
> This was why I have enforced --autounmask=n in my EMERGE_DEFAULT_OPTS as
> often it causes more harm than good if 'random' entries in
> /etc/portage/<anything> starts to cause later issues with updated
> library packages (read Perl, Python and any other dev-lang nasties
> here).

FWIW, my use-case is similar.  I don't /ever/ want portage doing
automated portage-config changes, because I have my own organization, and
I comment every change so I know when, what, why, and there's no way an
automated tool (well, perhaps some IBM or Google AI, but...) is going to
be able to get that even close to correct enough for my satisfaction.[1]

However, I've found the /suggestions/ portage makes with auto-unmask
useful, as long as they remain just that, *suggestions*, that I can
decide on and write up as I wish.

And --autounmask-write=n gets me the best of both worlds.  Portage
doesn't write changes but still suggests them.

If you've not tried it, I suggest you do.  Works great for me! =:^)

---
[1]  Besides, doing it manually means I remember the details I did /not/
put down much more readily, once prompted by the ones I did.  Even if an
automated version could do it it'd need to write paragraphs in ordered to
allow me to make sense of it a year or whatever later, compared to my
single line when done manually.

--
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman


Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] emerge: add --autounmask-keep-keywords option (bug 622480)

M. J. Everitt
On 14/08/17 02:55, Duncan wrote:

> M. J. Everitt posted on Mon, 14 Aug 2017 00:37:45 +0100 as excerpted:
>
>> My use-case consists of the scenario where I do not *ever* wish Portage
>> to modify my /etc/portage/package.<anything> files, preferring to do
>> this myself manually with a personal naming scheme which defines which
>> target packages are causing dependency issues. This would be a rather
>> cool feature-request for portage itself, but I don't see it being
>> implemented Any Time Soon™.
>>
>> This was why I have enforced --autounmask=n in my EMERGE_DEFAULT_OPTS as
>> often it causes more harm than good if 'random' entries in
>> /etc/portage/<anything> starts to cause later issues with updated
>> library packages (read Perl, Python and any other dev-lang nasties
>> here).
> FWIW, my use-case is similar.  I don't /ever/ want portage doing
> automated portage-config changes, because I have my own organization, and
> I comment every change so I know when, what, why, and there's no way an
> automated tool (well, perhaps some IBM or Google AI, but...) is going to
> be able to get that even close to correct enough for my satisfaction.[1]
>
> However, I've found the /suggestions/ portage makes with auto-unmask
> useful, as long as they remain just that, *suggestions*, that I can
> decide on and write up as I wish.
>
> And --autounmask-write=n gets me the best of both worlds.  Portage
> doesn't write changes but still suggests them.
>
> If you've not tried it, I suggest you do.  Works great for me! =:^)
>
> ---
> [1]  Besides, doing it manually means I remember the details I did /not/
> put down much more readily, once prompted by the ones I did.  Even if an
> automated version could do it it'd need to write paragraphs in ordered to
> allow me to make sense of it a year or whatever later, compared to my
> single line when done manually.
>
Interesting .. I'm sure I shied away from that option for some reason
... wonder if zmedico can shed some light on the difference between the
new options and the old, apart from some added flexibility ...


signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] emerge: add --autounmask-keep-keywords option (bug 622480)

Zac Medico-2
On 08/13/2017 07:00 PM, M. J. Everitt wrote:
> Interesting .. I'm sure I shied away from that option for some reason
> ... wonder if zmedico can shed some light on the difference between the
> new options and the old, apart from some added flexibility ...

The --autounmask-keep-keywords option allows you to adjust the the way
that decisions are made during dependency resolution. It's like a
selective version of --autounmask=n that targets decisions involving
dependencies that cannot be satisfied without changes to
package.accept_keywords.

Changes in decision making behavior have a large impact on the resulting
dependency calculation. It can mean the difference between a successful
calculation, and one that produces useless results.

The --autounmask-write=n option has no influence on the decisions made,
so it --autounmask was making a bunch of keyword changes that you didn't
want, then your only choice was to use --autounmask=n if it was causing
the dependency calculation was going too far off course.

The --autounmask-keep-keywords option gives finer-grained control. This
finer-grained control is only useful in cases where --autounmask=n would
prevent useful configuration changes from being made.
--
Thanks,
Zac

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] emerge: add --autounmask-keep-keywords option (bug 622480)

Duncan-42
Zac Medico posted on Sun, 13 Aug 2017 19:27:53 -0700 as excerpted:

> On 08/13/2017 07:00 PM, M. J. Everitt wrote:
>> Interesting .. I'm sure I shied away from that option for some reason
>> ... wonder if zmedico can shed some light on the difference between the
>> new options and the old, apart from some added flexibility ...
>
> The --autounmask-keep-keywords option allows you to adjust the the way
> that decisions are made during dependency resolution.

> Changes in decision making behavior have a large impact on the resulting
> dependency calculation. It can mean the difference between a successful
> calculation, and one that produces useless results.
>
> The --autounmask-write=n option has no influence on the decisions made,

> The --autounmask-keep-keywords option gives finer-grained control. This
> finer-grained control is only useful in cases where --autounmask=n would
> prevent useful configuration changes from being made.

Thanks.  Clear and succinct.

That improved my own understanding as well, particularly the distinction
between changing the decisions made, and not changing them, but simply
preventing them being automatically written, allowing the user direct
control over what's actually written and how. =:^)

--
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman