# Copyright 1999-2011 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 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 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 \ "--newuse" in myopts or \ "--reinstall" in myopts or \ "--noreplace" in myopts 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' 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) if '--debug' in myopts: writemsg_level('\n\nmyparams %s\n\n' % myparams, noiselevel=-1, level=logging.DEBUG) return myparams