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
|
# Copyright 1999-2014 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
#
# 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
# 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.
# with_test_deps: pull in test deps for packages matched by arguments
# changed_deps: rebuild installed packages with outdated deps
# binpkg_changed_deps: reject binary packages with outdated deps
myparams = {"recurse" : True}
bdeps = myopts.get("--with-bdeps")
if bdeps is not None:
myparams["bdeps"] = bdeps
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")
if dynamic_deps is not None:
myparams["dynamic_deps"] = dynamic_deps
if myaction == "remove":
myparams["remove"] = True
myparams["complete"] = True
myparams["selective"] = True
return myparams
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
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 \
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
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
|