Gentoo Archives: gentoo-portage-dev

From: Brian Dolbec <dolsen@g.o>
To: gentoo-portage-dev@l.g.o
Subject: Re: [gentoo-portage-dev] [PATCH] emerge: add --onlydeps-with-rdeps=<y|n> option (bug 294719)
Date: Sun, 14 May 2017 13:30:54
Message-Id: 20170514063053.1356d27d.dolsen@gentoo.org
In Reply to: [gentoo-portage-dev] [PATCH] emerge: add --onlydeps-with-rdeps= option (bug 294719) by Zac Medico
1 On Thu, 11 May 2017 12:01:18 -0700
2 Zac Medico <zmedico@g.o> wrote:
3
4 > From: William Throwe <wtt6@×××××××.edu>
5 >
6 > Add --onlydeps-with-rdeps=n option in order to omit pure
7 > run-time dependencies with --onlydeps. The dependencies
8 > that get pulled in are those that are necessary for the
9 > equivalent --buildpkgonly command to succeed. The default
10 > --onlydeps behavior remains unchanged.
11 >
12 > X-Gentoo-bug: 294719
13 > X-Gentoo-bug-url: https://bugs.gentoo.org/show_bug.cgi?id=294719
14 > ---
15 > man/emerge.1 | 5 +++
16 > pym/_emerge/depgraph.py | 5 +++
17 > pym/_emerge/main.py | 6 +++
18 > .../tests/resolver/test_onlydeps_minimal.py | 47
19 > ++++++++++++++++++++++ 4 files changed, 63 insertions(+)
20 > create mode 100644
21 > pym/portage/tests/resolver/test_onlydeps_minimal.py
22 >
23 > diff --git a/man/emerge.1 b/man/emerge.1
24 > index f1a9d4f..c172c5e 100644
25 > --- a/man/emerge.1
26 > +++ b/man/emerge.1
27 > @@ -716,6 +716,11 @@ it possible for \fB\-\-deep\fR to be disabled by
28 > default. Only merge (or pretend to merge) the dependencies of the
29 > packages specified, not the packages themselves.
30 > .TP
31 > +.BR "\-\-onlydeps\-with\-rdeps < y | n >"
32 > +Include run time dependencies when \fB\-\-onlydeps\fR is specified.
33 > +When this is disabled only build time dependencies are included. This
34 > +option is enabled by default.
35 > +.TP
36 > .BR "\-\-package\-moves [ y | n ]"
37 > Perform package moves when necessary. This option is enabled
38 > by default. Package moves are typically applied immediately
39 > diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
40 > index e1119af..a76a196 100644
41 > --- a/pym/_emerge/depgraph.py
42 > +++ b/pym/_emerge/depgraph.py
43 > @@ -3064,6 +3064,11 @@ class depgraph(object):
44 > edepend["RDEPEND"] = ""
45 > edepend["PDEPEND"] = ""
46 >
47 > + if pkg.onlydeps and \
48 > +
49 > self._frozen_config.myopts.get("--onlydeps-with-rdeps") == 'n':
50 > + edepend["RDEPEND"] = ""
51 > + edepend["PDEPEND"] = ""
52 > +
53 > ignore_build_time_deps = False
54 > if pkg.built and not removal_action:
55 > if
56 > self._dynamic_config.myparams.get("bdeps") in ("y", "auto"): diff
57 > --git a/pym/_emerge/main.py b/pym/_emerge/main.py index
58 > 76e963a..fda0323 100644 --- a/pym/_emerge/main.py
59 > +++ b/pym/_emerge/main.py
60 > @@ -147,6 +147,7 @@ def insert_optional_args(args):
61 > '--jobs' : valid_integers,
62 > '--keep-going' : y_or_n,
63 > '--load-average' : valid_floats,
64 > + '--onlydeps-with-rdeps' : y_or_n,
65 > '--package-moves' : y_or_n,
66 > '--quiet' : y_or_n,
67 > '--quiet-build' : y_or_n,
68 > @@ -559,6 +560,11 @@ def parse_opts(tmpcmdline, silent=False):
69 > "action" : "append",
70 > },
71 >
72 > + "--onlydeps-with-rdeps": {
73 > + "help" : "modify interpretation of
74 > depedencies",
75 > + "choices" : true_y_or_n
76 > + },
77 > +
78 > "--rebuild-exclude": {
79 > "help" :"A space separated list of package
80 > names or slot atoms. " + \ "Emerge will not rebuild these packages
81 > due to the " + \ diff --git
82 > a/pym/portage/tests/resolver/test_onlydeps_minimal.py
83 > b/pym/portage/tests/resolver/test_onlydeps_minimal.py new file mode
84 > 100644 index 0000000..13c79ed --- /dev/null
85 > +++ b/pym/portage/tests/resolver/test_onlydeps_minimal.py
86 > @@ -0,0 +1,47 @@
87 > +# Copyright 2017 Gentoo Foundation
88 > +# Distributed under the terms of the GNU General Public License v2
89 > +
90 > +from portage.tests import TestCase
91 > +from portage.tests.resolver.ResolverPlayground import
92 > ResolverPlayground, ResolverPlaygroundTestCase +
93 > +class OnlydepsMinimalTestCase(TestCase):
94 > +
95 > + def testOnlydepsMinimal(self):
96 > + ebuilds = {
97 > + "dev-libs/A-1": { "DEPEND": "dev-libs/B",
98 > + "RDEPEND": "dev-libs/C",
99 > + "PDEPEND": "dev-libs/D" },
100 > + "dev-libs/B-1": { },
101 > + "dev-libs/C-1": { },
102 > + "dev-libs/D-1": { },
103 > + }
104 > + installed = {
105 > + }
106 > +
107 > + test_cases = (
108 > + ResolverPlaygroundTestCase(
109 > + ["dev-libs/A"],
110 > + all_permutations = True,
111 > + success = True,
112 > + options = { "--onlydeps": True,
113 > + "--onlydeps-with-rdeps":
114 > "y" },
115 > + mergelist = ["dev-libs/B-1",
116 > + "dev-libs/C-1",
117 > + "dev-libs/D-1"]),
118 > + ResolverPlaygroundTestCase(
119 > + ["dev-libs/A"],
120 > + all_permutations = True,
121 > + success = True,
122 > + options = { "--onlydeps": True,
123 > + "--onlydeps-with-rdeps":
124 > "n" },
125 > + mergelist = ["dev-libs/B-1"]),
126 > + )
127 > +
128 > + playground = ResolverPlayground(ebuilds=ebuilds,
129 > + installed=installed, debug=False)
130 > + try:
131 > + for test_case in test_cases:
132 > + playground.run_TestCase(test_case)
133 > +
134 > self.assertEqual(test_case.test_success, True, test_case.fail_msg)
135 > + finally:
136 > + playground.cleanup()
137
138 looks fine
139
140 --
141 Brian Dolbec <dolsen>

Replies