fix option handling in acprep
Both the `--local` option and the default to build local if no build
directory exists did not work, because `build_directory()` uses
`self.options.build_dir`, but the default and the `--local` option used
`self.build_dir`.
I changed the code to always use `self.options` for options/flags.
Now `self.options` is set to the default values of OptParser and is
updated when `parse_args` is called in `run`.
After this commit ledger will be built in:
* The directory specified using `--output=`
* Else in a subdirectory of `./build` or `~/Products` if one of those
directories exist and `--local` is not used.
* Else inside the source tree (default).
This commit is contained in:
parent
45ebed0fd5
commit
5ee03de0ad
1 changed files with 14 additions and 19 deletions
33
acprep
33
acprep
|
|
@ -101,13 +101,6 @@ class CommandLineApp(object):
|
|||
log_handler = None
|
||||
boost_major = "1_50"
|
||||
|
||||
options = {
|
||||
'debug': False,
|
||||
'verbose': False,
|
||||
'logfile': False,
|
||||
'loglevel': False
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
"Initialize CommandLineApp."
|
||||
# Create the logger
|
||||
|
|
@ -137,7 +130,8 @@ class CommandLineApp(object):
|
|||
op.add_option('', '--loglevel', metavar='LEVEL',
|
||||
type='string', action='store', dest='loglevel',
|
||||
default=False, help='set log level: DEBUG, INFO, WARNING, ERROR, CRITICAL')
|
||||
return
|
||||
|
||||
self.options = op.get_default_values()
|
||||
|
||||
def main(self, *args):
|
||||
"""Main body of your application.
|
||||
|
|
@ -167,7 +161,7 @@ class CommandLineApp(object):
|
|||
Process options and execute callback functions as needed. This method
|
||||
should not need to be overridden, if the main() method is defined."""
|
||||
# Process the options supported and given
|
||||
self.options, main_args = self.option_parser.parse_args()
|
||||
self.options, main_args = self.option_parser.parse_args(values=self.options)
|
||||
|
||||
if self.options.logfile:
|
||||
fh = logging.handlers.RotatingFileHandler(self.options.logfile,
|
||||
|
|
@ -238,9 +232,7 @@ class PrepareBuild(CommandLineApp):
|
|||
self.current_ver = None
|
||||
#self.current_flavor = 'default'
|
||||
self.current_flavor = 'debug'
|
||||
self.prefix_dir = None
|
||||
self.products_dir = None
|
||||
self.build_dir = self.source_dir
|
||||
self.configure_args = []
|
||||
self.CXXFLAGS = []
|
||||
self.LDFLAGS = []
|
||||
|
|
@ -264,7 +256,7 @@ class PrepareBuild(CommandLineApp):
|
|||
products = self.default_products_directory()
|
||||
if (exists(products) and isdir(products)) or \
|
||||
(exists('build') and isdir('build')):
|
||||
self.build_dir = None
|
||||
self.options.build_dir = None
|
||||
|
||||
def __init__(self):
|
||||
CommandLineApp.__init__(self)
|
||||
|
|
@ -272,8 +264,6 @@ class PrepareBuild(CommandLineApp):
|
|||
|
||||
self.source_dir = os.getcwd()
|
||||
|
||||
self.initialize()
|
||||
|
||||
op = self.option_parser
|
||||
|
||||
op.add_option('', '--help', action="callback",
|
||||
|
|
@ -321,11 +311,16 @@ class PrepareBuild(CommandLineApp):
|
|||
dest="option_products",
|
||||
help='Collect all build products in this directory')
|
||||
op.add_option('', '--output', metavar='DIR', action="store",
|
||||
default=self.source_dir,
|
||||
dest="build_dir", help='Build in the specified directory')
|
||||
op.add_option('', '--local', action="callback",
|
||||
callback=self.option_local,
|
||||
help='Build directly within the source tree (default)')
|
||||
|
||||
self.options = op.get_default_values()
|
||||
|
||||
self.initialize()
|
||||
|
||||
def main(self, *args):
|
||||
if args and args[0] in ['default', 'debug', 'opt', 'gcov', 'gprof']:
|
||||
self.current_flavor = args[0]
|
||||
|
|
@ -740,7 +735,7 @@ class PrepareBuild(CommandLineApp):
|
|||
|
||||
def option_local(self, option=None, opt_str=None, value=None, parser=None):
|
||||
self.log.debug('Saw option --local')
|
||||
self.build_dir = self.source_dir
|
||||
self.options.build_dir = self.source_dir
|
||||
|
||||
def option_help(self, option=None, opt_str=None, value=None, parser=None):
|
||||
self.phase_help()
|
||||
|
|
@ -841,7 +836,7 @@ class PrepareBuild(CommandLineApp):
|
|||
try:
|
||||
os.chdir(build_dir)
|
||||
|
||||
need_to_config = not isfile('Makefile')
|
||||
need_to_config = not isfile('rules.ninja' if self.options.use_ninja else 'Makefile')
|
||||
if need_to_config:
|
||||
self.log.debug('Source => ' + self.source_dir)
|
||||
self.log.debug('Build => ' + build_dir)
|
||||
|
|
@ -945,10 +940,10 @@ class PrepareBuild(CommandLineApp):
|
|||
#########################################################################
|
||||
|
||||
def configure_flavor(self, flavor, reset=True):
|
||||
self.initialize() # reset everything
|
||||
self.build_dir = None # use the build/ tree
|
||||
self.initialize() # reset everything
|
||||
self.current_flavor = flavor
|
||||
self.prefix_dir = None
|
||||
self.options.build_dir = None # use the build/ tree
|
||||
self.options.prefix_dir = None
|
||||
|
||||
if reset and exists(self.build_directory()) and \
|
||||
isdir(self.build_directory()):
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue