1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
import logging
from portage.util import writemsg_level
def create_depgraph_params(myopts, myaction):
#configure emerge engine parameters
#
# autounmask: enable autounmask
# autounmask_keep_keywords: prevent autounmask changes to package.accept_keywords
# autounmask_keep_license: prevent autounmask changes to package.license
# autounmask_keep_masks: prevent autounmask changes to package.mask
# autounmask_keep_use: prevent autounmask changes to package.use
# self: include _this_ package regardless of if it is merged.
# selective: exclude the package if it is merged
# recurse: go into the dependencies
# deep: go into the dependencies of already merged packages
# empty: pretend nothing is merged
# complete: completely account for all known dependencies
# bdeps: satisfy build time dependencies of packages that are
# already built, even though they are not strictly required
# remove: build graph for use in removing packages
# rebuilt_binaries: replace installed packages with rebuilt binaries
# rebuild_if_new_slot: rebuild or reinstall packages when
# slot/sub-slot := operator dependencies can be satisfied by a newer
# slot/sub-slot, so that older packages slots will become eligible for
# removal by the --depclean action as soon as possible
# ignore_built_slot_operator_deps: ignore the slot/sub-slot := operator parts
# of dependencies that have been recorded when packages where built
# ignore_soname_deps: ignore the soname dependencies of built
# packages, so that they do not trigger dependency resolution
# failures, or cause packages to be rebuilt or replaced.
# ignore_world: ignore the @world package set and its dependencies
# implicit_system_deps: Assume that packages may have implicit dependencies
# on packages which belong to the @system set.
# with_test_deps: pull in test deps for packages matched by arguments
# changed_deps: rebuild installed packages with outdated deps
# changed_deps_report: report installed packages with outdated deps
# changed_slot: rebuild installed packages with outdated SLOT metadata
# binpkg_changed_deps: reject binary packages with outdated deps
myparams = {"recurse" : True}
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')
autounmask_use = myopts.get('--autounmask-use')
if autounmask == 'n':
autounmask = False
else:
if autounmask is None:
if autounmask_use in (None, 'y'):
autounmask = True
elif autounmask_license in (None, 'y'):
autounmask = True
# Do not enable package.accept_keywords or package.mask
# changes by default.
if autounmask_keep_keywords is None:
autounmask_keep_keywords = True
if autounmask_keep_masks is None:
autounmask_keep_masks = True
else:
autounmask = True
myparams['autounmask'] = autounmask
myparams['autounmask_keep_use'] = True if autounmask_use == 'n' else False
myparams['autounmask_keep_license'] = True if autounmask_license == 'n' else False
myparams['autounmask_keep_keywords'] = False if autounmask_keep_keywords in (None, 'n') else True
myparams['autounmask_keep_masks'] = False if autounmask_keep_masks in (None, 'n') else True
bdeps = myopts.get("--with-bdeps")
if bdeps is not None:
myparams["bdeps"] = bdeps
elif myaction == "remove" or (
myopts.get("--with-bdeps-auto") != "n" and "--usepkg" not in myopts):
myparams["bdeps"] = "auto"
ignore_built_slot_operator_deps = myopts.get("--ignore-built-slot-operator-deps")
if ignore_built_slot_operator_deps is not None:
myparams["ignore_built_slot_operator_deps"] = ignore_built_slot_operator_deps
myparams["ignore_soname_deps"] = myopts.get(
"--ignore-soname-deps", "y")
dynamic_deps = myopts.get("--dynamic-deps", "y") != "n" and "--nodeps" not in myopts
if dynamic_deps:
myparams["dynamic_deps"] = True
myparams["implicit_system_deps"] = myopts.get("--implicit-system-deps", "y") != "n"
if myaction == "remove":
myparams["remove"] = True
myparams["complete"] = True
myparams["selective"] = True
return myparams
if myopts.get('--ignore-world') is True:
myparams['ignore_world'] = True
rebuild_if_new_slot = myopts.get('--rebuild-if-new-slot')
if rebuild_if_new_slot is not None:
myparams['rebuild_if_new_slot'] = rebuild_if_new_slot
changed_slot = myopts.get('--changed-slot') is True
if changed_slot:
myparams["changed_slot"] = True
if "--update" in myopts or \
"--newrepo" in myopts or \
"--newuse" in myopts or \
"--reinstall" in myopts or \
"--noreplace" in myopts or \
myopts.get("--changed-deps", "n") != "n" or \
changed_slot or \
myopts.get("--selective", "n") != "n":
myparams["selective"] = True
deep = myopts.get("--deep")
if deep is not None and deep != 0:
myparams["deep"] = deep
complete_if_new_use = \
myopts.get("--complete-graph-if-new-use")
if complete_if_new_use is not None:
myparams["complete_if_new_use"] = complete_if_new_use
complete_if_new_ver = \
myopts.get("--complete-graph-if-new-ver")
if complete_if_new_ver is not None:
myparams["complete_if_new_ver"] = complete_if_new_ver
if ("--complete-graph" in myopts or "--rebuild-if-new-rev" in myopts or
"--rebuild-if-new-ver" in myopts or "--rebuild-if-unbuilt" in myopts):
myparams["complete"] = True
if "--emptytree" in myopts:
myparams["empty"] = True
myparams["deep"] = True
myparams.pop("selective", None)
if "--nodeps" in myopts:
myparams.pop("recurse", None)
myparams.pop("deep", None)
myparams.pop("complete", None)
rebuilt_binaries = myopts.get('--rebuilt-binaries')
if rebuilt_binaries is True or \
rebuilt_binaries != 'n' and \
'--usepkgonly' in myopts and \
myopts.get('--deep') is True and \
'--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
elif '--usepkgonly' not in myopts:
# In order to avoid dependency resolution issues due to changed
# dependencies, enable this automatically, as long as it doesn't
# strongly conflict with other options that have been specified.
myparams['binpkg_changed_deps'] = 'auto'
changed_deps = myopts.get('--changed-deps')
if changed_deps is not None:
myparams['changed_deps'] = changed_deps
changed_deps_report = myopts.get('--changed-deps-report', 'n') == 'y'
if changed_deps_report:
myparams['changed_deps_report'] = True
if myopts.get("--selective") == "n":
# --selective=n can be used to remove selective
# behavior that may have been implied by some
# other option like --update.
myparams.pop("selective", None)
with_test_deps = myopts.get("--with-test-deps")
if with_test_deps is not None:
myparams["with_test_deps"] = with_test_deps
if '--debug' in myopts:
writemsg_level('\n\nmyparams %s\n\n' % myparams,
noiselevel=-1, level=logging.DEBUG)
return myparams
|