def ParseCommandLine(self): """ Parse command line arguments, including the binary/options to log. @return tuple with: @return - options dictionary @return - parser for command line """ version = '$Revision: 1.23 $' version = version.replace(' ', '') ver = version.replace(' $', '') us, desc = self.GetHelpParams() parser = optparse.OptionParser( usage=us, description=desc, version=ver, formatter=cmd_options.BlankLinesIndentedHelpFormatter()) # Define the command line options which control the behavior of the # script. Some of these methods take a 2nd argument which is the empty # string ''. If the script uses option groups, then this parameter is # the group. However, this script does not use option groups, so the # argument is empty. # drd_util.debug(parser) cmd_options.arch(parser, '') cmd_options.config_file(parser) cmd_options.log_file(parser) cmd_options.mp_type(parser, '') cmd_options.pid(parser) cmd_options.pin_options(parser) cmd_options.pintool_help(parser) cmd_options.pintool_options(parser) cmd_options.pintool(parser) cmd_options.single_thread(parser) cmd_options.verbose(parser) # import pdb; pdb.set_trace() (options, args) = parser.parse_args() # Read in configuration files and set global variables. # No requirment to read in a config file, but it's OK # to give one. # config_obj = config.ConfigClass() config_obj.GetCfgGlobals(options, False) # No, don't need required parameters if not options.single_thread: if options.mp_type == 'mpi': opt_mode = config.MPI_MT_MODE elif options.mp_type == 'mp': opt_mode = config.MP_MT_MODE else: opt_mode = config.MT_MODE else: if options.mp_type == 'mpi': opt_mode = config.MPI_MODE elif options.mp_type == 'mp': opt_mode = config.MP_MODE else: opt_mode = config.ST_MODE setattr(options, 'mode', opt_mode) # If user just wants 'pintool_help', don't look for command line # but instead return from this function. # if not (hasattr(options, 'pintool_help') and options.pintool_help): # Get the binary and arguments to run in 'options.command' # self.GetArgs(args, parser, options) return options, parser
def ParseCommandLine(self): """ Parse command line arguments and check to make sure all required options were given. @return List of options """ # command line options for the driver # version = '$Revision: 1.14 $' version = version.replace(' ', '') ver = version.replace(' $', '') us = '%prog [options] --mode MODE binary args' desc = 'Runs binary with the logger Pintool and generates whole program '\ 'pinballs. Required arguments include:\n'\ ' 1) Binary to run and it\'s arguments.\n'\ ' 2) Mode of the binary using \'--mode MODE\'.\n'\ 'If the option \'--log_file\' is not given, the default pinball name is \'log\'.' util.CheckNonPrintChar(sys.argv) parser = optparse.OptionParser( usage=us, version=ver, description=desc, formatter=cmd_options.BlankLinesIndentedHelpFormatter()) # Define the command line options which control the behavior of the # script. Some of these methods take a 2nd argument which is the empty # string ''. If the script uses option groups, then this parameter is # the group. However, this script does not use option groups, so the # argument is empty. # cmd_options.arch(parser, '') cmd_options.compressed(parser, '') cmd_options.config_file(parser) cmd_options.debug(parser) cmd_options.global_file(parser) cmd_options.log_file(parser) cmd_options.log_options(parser) cmd_options.mode(parser, '') cmd_options.mpi_options(parser, '') cmd_options.msgfile_ext(parser) cmd_options.no_log(parser) cmd_options.no_print_cmd(parser) cmd_options.pid(parser) cmd_options.pinplayhome(parser, '') cmd_options.pintool(parser) cmd_options.pintool_help(parser) cmd_options.pin_options(parser) cmd_options.save_global(parser) cmd_options.sdehome(parser, '') cmd_options.verbose(parser) # import pdb; pdb.set_trace() (options, args) = parser.parse_args() # Added method cbsp() to 'options' to check if running CBSP. # util.AddMethodcbsp(options) # Translate the 'arch' string given by the user into # the internal arch type used by the scripts. # util.SetArch(options) # If user just wants pintool_help, return # if (hasattr(options, 'pintool_help') and options.pintool_help): return options # Read in configuration files and set global variables. # No requirment to read in a config file, but it's OK # to give one. # config_obj = config.ConfigClass() config_obj.GetCfgGlobals(options, False) # No, don't need required parameters # Make sure user gave an application mode # if options.mode: options.mode = util.ParseMode(options.mode) else: parser.error("Application mode was not given.\n" \ "Need to use option --mode MODE. Choose MODE from: 'st', 'mt', 'mpi', 'mpi_mt', 'mp', 'mp_mt'") # Get the application command line # # import pdb; pdb.set_trace() cmd_line = " ".join(args) if not options.pid: if cmd_line: setattr(options, 'command', cmd_line) else: parser.error('no program command line specified.\n' 'Need to add binary and it\'s arguments.') return options
def ParseCommandLine(self): """ Parse command line arguments and returns pin and tools options and app command line. @return List containing: options """ # command line options for the driver # version = '$Revision: 1.81 $' version = version.replace('$Revision: ', '') ver = version.replace(' $', '') us = '%prog [options] --mode MODE --log_file FILE binary args' desc = 'Runs binary with the logger Pintool and generates whole program '\ 'pinballs. Required arguments include:\n'\ ' 1) Binary to run and it\'s arguments.\n'\ ' 2) Name for the log file (pinball) using \'--log_file FILE\'\n'\ ' Name can include a dir as well as a file.\n' \ ' 3) Mode of the binary using \'--mode MODE\'.' util.CheckNonPrintChar(sys.argv) parser = optparse.OptionParser( usage=us, description=desc, version=ver, formatter=cmd_options.BlankLinesIndentedHelpFormatter()) # Define the command line options which control the behavior of the # script. Some of these methods take a 2nd argument which is the empty # string ''. If the script uses option groups, then this parameter is # the group. However, this script does not use option groups, so the # argument is empty. # cmd_options.compressed(parser, '') cmd_options.config_file(parser) cmd_options.debug(parser) cmd_options.global_file(parser) cmd_options.list(parser, '') cmd_options.log_file(parser) cmd_options.log_options(parser) cmd_options.mode(parser, '') cmd_options.mpi_options(parser, '') cmd_options.msgfile_ext(parser) cmd_options.no_log(parser) cmd_options.num_proc(parser, '') cmd_options.pid(parser) cmd_options.pinplayhome(parser, '') cmd_options.pintool(parser) cmd_options.pin_options(parser) cmd_options.save_global(parser) cmd_options.sdehome(parser, '') cmd_options.verbose(parser) # import pdb; pdb.set_trace() (options, args) = parser.parse_args() # Read in configuration files and set global variables. # No need to read in a config file. # config_obj = config.ConfigClass() config_obj.GetCfgGlobals(options, False) # No, don't need required parameters # Make sure user gave an application mode # if options.mode: options.mode = util.ParseMode(options.mode) else: parser.error( "Application mode was not given.\n" "Need to use option --mode MODE. Choose MODE from: 'st', 'mt', 'mpi', 'mpi_mt', 'mp', 'mp_mt'," ) # Log file name must be given. # # import pdb; pdb.set_trace() if options.log_file == '': parser.error('Log file basename was not given.\n' \ 'Must give basename with option: --log_file FILE') # Get the application command line # # import pdb; pdb.set_trace() cmd_line = " ".join(args) if not options.pid: if cmd_line: setattr(options, 'command', cmd_line) else: parser.error('no program command line specified.\n' 'Need to add binary and it\'s arguments.') return options