From 45e21cba91318dd00b93aebfeafe86e4e836743a Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 1 Aug 2009 19:58:52 +0000 Subject: Add support for --usepkg=n so that it's possible to disable it on the command line after it's been enabled in EMERGE_DEFAULT_OPTS. Also do the same for --usepkgonly, --getbinpkg, and --getbinpkgonly. svn path=/main/trunk/; revision=13873 --- pym/_emerge/help.py | 8 +++--- pym/_emerge/main.py | 74 +++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 73 insertions(+), 9 deletions(-) (limited to 'pym/_emerge') diff --git a/pym/_emerge/help.py b/pym/_emerge/help.py index 4c4525a4d..448ef1adf 100644 --- a/pym/_emerge/help.py +++ b/pym/_emerge/help.py @@ -338,13 +338,13 @@ def help(myopts, havecolor=1): print " Same as --fetchonly except that all package files, including those" print " not required to build the package, will be processed." print - print " "+green("--getbinpkg")+" ("+green("-g")+" short option)" + print " "+green("--getbinpkg")+ "[=%s]" % turquoise("n") + " ("+green("-g")+" short option)" print " Using the server and location defined in PORTAGE_BINHOST, portage" print " will download the information from each binary file there and it" print " will use that information to help build the dependency list. This" print " option implies '-k'. (Use -gK for binary-only merging.)" print - print " "+green("--getbinpkgonly")+" ("+green("-G")+" short option)" + print " "+green("--getbinpkgonly")+ "[=%s]" % turquoise("n") + " ("+green("-G")+" short option)" print " This option is identical to -g, as above, except it will not use" print " ANY information from the local machine. All binaries will be" print " downloaded from the remote server without consulting packages" @@ -492,7 +492,7 @@ def help(myopts, havecolor=1): print " a package's dependencies follow the package. Only really useful" print " in combination with --emptytree, --update or --deep." print - print " "+green("--usepkg")+" ("+green("-k")+" short option)" + print " "+green("--usepkg")+ "[=%s]" % turquoise("n") + " ("+green("-k")+" short option)" print " Tell emerge to use binary packages (from $PKGDIR) if they are" print " available, thus possibly avoiding some time-consuming compiles." print " This option is useful for CD installs; you can export" @@ -500,7 +500,7 @@ def help(myopts, havecolor=1): print " emerge \"pull\" binary packages from the CD in order to satisfy" print " dependencies." print - print " "+green("--usepkgonly")+" ("+green("-K")+" short option)" + print " "+green("--usepkgonly")+ "[=%s]" % turquoise("n") + " ("+green("-K")+" short option)" print " Like --usepkg above, except this only allows the use of binary" print " packages, and it will abort the emerge if the package is not" print " available at the time of dependency calculation." diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py index fbdcc58f5..ca3857051 100644 --- a/pym/_emerge/main.py +++ b/pym/_emerge/main.py @@ -52,7 +52,6 @@ options=[ "--digest", "--emptytree", "--fetchonly", "--fetch-all-uri", -"--getbinpkg", "--getbinpkgonly", "--ignore-default-opts", "--keep-going", "--noconfmem", @@ -65,7 +64,6 @@ options=[ "--skipfirst", "--tree", "--update", -"--usepkg", "--usepkgonly", "--verbose", ] @@ -77,9 +75,7 @@ shortmapping={ "d":"--debug", "e":"--emptytree", "f":"--fetchonly", "F":"--fetch-all-uri", -"g":"--getbinpkg", "G":"--getbinpkgonly", "h":"--help", -"k":"--usepkg", "K":"--usepkgonly", "l":"--changelog", "n":"--noreplace", "N":"--newuse", "o":"--onlydeps", "O":"--nodeps", @@ -386,8 +382,12 @@ def insert_optional_args(args): '--deep' : valid_integers, '--deselect' : ('n',), '--binpkg-respect-use' : ('n', 'y',), + '--getbinpkg' : ('n',), + '--getbinpkgonly' : ('n',), '--jobs' : valid_integers, '--root-deps' : ('rdeps',), + '--usepkg' : ('n',), + '--usepkgonly' : ('n',), } short_arg_opts = { @@ -395,6 +395,15 @@ def insert_optional_args(args): 'j' : valid_integers, } + # Don't make things like "-kn" expand to "-k n" + # since existence of -n makes it too ambiguous. + short_arg_opts_n = { + 'g' : ('n',), + 'G' : ('n',), + 'k' : ('n',), + 'K' : ('n',), + } + arg_stack = args[:] arg_stack.reverse() while arg_stack: @@ -420,6 +429,12 @@ def insert_optional_args(args): match = k break + if match is None: + for k, arg_choices in short_arg_opts_n.iteritems(): + if k in arg: + match = k + break + if match is None: new_args.append(arg) continue @@ -441,7 +456,7 @@ def insert_optional_args(args): saved_opts = None if arg[1:2] == match: - if arg[2:] in arg_choices: + if match not in short_arg_opts_n and arg[2:] in arg_choices: opt_arg = arg[2:] else: saved_opts = arg[2:] @@ -551,6 +566,20 @@ def parse_opts(tmpcmdline, silent=False): "choices" : ("True", "y", "n") }, + "--getbinpkg": { + "shortopt" : "-g", + "help" : "fetch binary packages", + "type" : "choice", + "choices" : ("True", "n") + }, + + "--getbinpkgonly": { + "shortopt" : "-G", + "help" : "fetch binary packages only", + "type" : "choice", + "choices" : ("True", "n") + }, + "--root": { "help" : "specify the target root filesystem for merging packages", "action" : "store" @@ -561,6 +590,21 @@ def parse_opts(tmpcmdline, silent=False): "type" : "choice", "choices" :("True", "rdeps") }, + + "--usepkg": { + "shortopt" : "-k", + "help" : "use binary packages", + "type" : "choice", + "choices" : ("True", "n") + }, + + "--usepkgonly": { + "shortopt" : "-K", + "help" : "use only binary packages", + "type" : "choice", + "choices" : ("True", "n") + }, + } from optparse import OptionParser @@ -606,6 +650,16 @@ def parse_opts(tmpcmdline, silent=False): else: myoptions.complete_graph = None + if myoptions.getbinpkg in ("True",): + myoptions.getbinpkg = True + else: + myoptions.getbinpkg = None + + if myoptions.getbinpkgonly in ("True",): + myoptions.getbinpkgonly = True + else: + myoptions.getbinpkgonly = None + if myoptions.root_deps == "True": myoptions.root_deps = True @@ -660,6 +714,16 @@ def parse_opts(tmpcmdline, silent=False): myoptions.load_average = load_average + if myoptions.usepkg in ("True",): + myoptions.usepkg = True + else: + myoptions.usepkg = None + + if myoptions.usepkgonly in ("True",): + myoptions.usepkgonly = True + else: + myoptions.usepkgonly = None + for myopt in options: v = getattr(myoptions, myopt.lstrip("--").replace("-", "_")) if v: -- cgit v1.2.3-1-g7c22