| Index: native_client_sdk/src/tools/create_nmf.py
|
| diff --git a/native_client_sdk/src/tools/create_nmf.py b/native_client_sdk/src/tools/create_nmf.py
|
| index bf87979a6d4384aab0182525b48c69818b222004..de72408c4df141bbcac49f8255d724aa5f18beae 100755
|
| --- a/native_client_sdk/src/tools/create_nmf.py
|
| +++ b/native_client_sdk/src/tools/create_nmf.py
|
| @@ -9,9 +9,9 @@ As well as creating the nmf file this tool can also find and stage
|
| any shared libraries dependencies that the executables might have.
|
| """
|
|
|
| +import argparse
|
| import errno
|
| import json
|
| -import optparse
|
| import os
|
| import posixpath
|
| import shutil
|
| @@ -158,7 +158,7 @@ class ArchFile(object):
|
| self.path = path
|
| self.url = url
|
| self.arch = arch
|
| - if not arch:
|
| + if arch is None:
|
| self.arch = ParseElfHeader(path)[0]
|
|
|
| def __repr__(self):
|
| @@ -402,7 +402,7 @@ class NmfUtils(object):
|
|
|
| def GetManifest(self):
|
| """Returns a JSON-formatted dict containing the NaCl dependencies"""
|
| - if not self.manifest:
|
| + if self.manifest is None:
|
| if self.pnacl:
|
| self._GeneratePNaClManifest()
|
| else:
|
| @@ -541,60 +541,60 @@ def GetDefaultLibPath(config):
|
| return libpath
|
|
|
|
|
| -def main(argv):
|
| - parser = optparse.OptionParser(
|
| - usage='Usage: %prog [options] nexe [extra_libs...]', description=__doc__)
|
| - parser.add_option('-o', '--output', dest='output',
|
| - help='Write manifest file to FILE (default is stdout)',
|
| - metavar='FILE')
|
| - parser.add_option('-D', '--objdump', dest='objdump',
|
| - help='Override the default "objdump" tool used to find '
|
| - 'shared object dependencies',
|
| - metavar='TOOL')
|
| - parser.add_option('--no-default-libpath', action='store_true',
|
| - help="Don't include the SDK default library paths")
|
| - parser.add_option('--debug-libs', action='store_true',
|
| - help='Use debug library paths when constructing default '
|
| - 'library path.')
|
| - parser.add_option('-L', '--library-path', dest='lib_path',
|
| - action='append', default=[],
|
| - help='Add DIRECTORY to library search path',
|
| - metavar='DIRECTORY')
|
| - parser.add_option('-P', '--path-prefix', dest='path_prefix', default='',
|
| - help='Deprecated. An alias for --lib-prefix.',
|
| - metavar='DIRECTORY')
|
| - parser.add_option('-p', '--lib-prefix', dest='lib_prefix', default='',
|
| - help='A path to prepend to shared libraries in the .nmf',
|
| - metavar='DIRECTORY')
|
| - parser.add_option('-N', '--nexe-prefix', dest='nexe_prefix', default='',
|
| - help='A path to prepend to nexes in the .nmf',
|
| - metavar='DIRECTORY')
|
| - parser.add_option('-s', '--stage-dependencies', dest='stage_dependencies',
|
| - help='Destination directory for staging libraries',
|
| - metavar='DIRECTORY')
|
| - parser.add_option('--no-arch-prefix', action='store_true',
|
| - help='Don\'t put shared libraries in the lib32/lib64 '
|
| - 'directories. Instead, they will be put in the same '
|
| - 'directory as the .nexe that matches its architecture.')
|
| - parser.add_option('-t', '--toolchain', help='Legacy option, do not use')
|
| - parser.add_option('-n', '--name', dest='name',
|
| - help='Rename FOO as BAR',
|
| - action='append', default=[], metavar='FOO,BAR')
|
| - parser.add_option('-x', '--extra-files',
|
| - help=('Add extra key:file tuple to the "files"' +
|
| - ' section of the .nmf'),
|
| - action='append', default=[], metavar='FILE')
|
| - parser.add_option('-O', '--pnacl-optlevel',
|
| - help='Set the optimization level to N in PNaCl manifests',
|
| - metavar='N')
|
| - parser.add_option('--pnacl-debug-optlevel',
|
| - help='Set the optimization level to N for debugging '
|
| - 'sections in PNaCl manifests',
|
| - metavar='N')
|
| - parser.add_option('-v', '--verbose',
|
| - help='Verbose output', action='store_true')
|
| - parser.add_option('-d', '--debug-mode',
|
| - help='Debug mode', action='store_true')
|
| +def main(args):
|
| + parser = argparse.ArgumentParser(description=__doc__)
|
| + parser.add_argument('-o', '--output', dest='output',
|
| + help='Write manifest file to FILE (default is stdout)',
|
| + metavar='FILE')
|
| + parser.add_argument('-D', '--objdump', dest='objdump',
|
| + help='Override the default "objdump" tool used to find '
|
| + 'shared object dependencies',
|
| + metavar='TOOL')
|
| + parser.add_argument('--no-default-libpath', action='store_true',
|
| + help="Don't include the SDK default library paths")
|
| + parser.add_argument('--debug-libs', action='store_true',
|
| + help='Use debug library paths when constructing default '
|
| + 'library path.')
|
| + parser.add_argument('-L', '--library-path', dest='lib_path',
|
| + action='append', default=[],
|
| + help='Add DIRECTORY to library search path',
|
| + metavar='DIRECTORY')
|
| + parser.add_argument('-P', '--path-prefix', dest='path_prefix', default='',
|
| + help='Deprecated. An alias for --lib-prefix.',
|
| + metavar='DIRECTORY')
|
| + parser.add_argument('-p', '--lib-prefix', dest='lib_prefix', default='',
|
| + help='A path to prepend to shared libraries in the .nmf',
|
| + metavar='DIRECTORY')
|
| + parser.add_argument('-N', '--nexe-prefix', dest='nexe_prefix', default='',
|
| + help='A path to prepend to nexes in the .nmf',
|
| + metavar='DIRECTORY')
|
| + parser.add_argument('-s', '--stage-dependencies', dest='stage_dependencies',
|
| + help='Destination directory for staging libraries',
|
| + metavar='DIRECTORY')
|
| + parser.add_argument('--no-arch-prefix', action='store_true',
|
| + help='Don\'t put shared libraries in the lib32/lib64 '
|
| + 'directories. Instead, they will be put in the same '
|
| + 'directory as the .nexe that matches its architecture.')
|
| + parser.add_argument('-t', '--toolchain', help='Legacy option, do not use')
|
| + parser.add_argument('-n', '--name', dest='name',
|
| + help='Rename FOO as BAR',
|
| + action='append', default=[], metavar='FOO,BAR')
|
| + parser.add_argument('-x', '--extra-files',
|
| + help=('Add extra key:file tuple to the "files"' +
|
| + ' section of the .nmf'),
|
| + action='append', default=[], metavar='FILE')
|
| + parser.add_argument('-O', '--pnacl-optlevel',
|
| + help='Set the optimization level to N in PNaCl manifests',
|
| + metavar='N')
|
| + parser.add_argument('--pnacl-debug-optlevel',
|
| + help='Set the optimization level to N for debugging '
|
| + 'sections in PNaCl manifests',
|
| + metavar='N')
|
| + parser.add_argument('-v', '--verbose',
|
| + help='Verbose output', action='store_true')
|
| + parser.add_argument('-d', '--debug-mode',
|
| + help='Debug mode', action='store_true')
|
| + parser.add_argument('executables', metavar='EXECUTABLE', nargs='+')
|
|
|
| # To enable bash completion for this command first install optcomplete
|
| # and then add this line to your .bashrc:
|
| @@ -605,7 +605,7 @@ def main(argv):
|
| except ImportError:
|
| pass
|
|
|
| - options, args = parser.parse_args(argv)
|
| + options = parser.parse_args(args)
|
| if options.verbose:
|
| Trace.verbose = True
|
| if options.debug_mode:
|
| @@ -614,9 +614,6 @@ def main(argv):
|
| if options.toolchain is not None:
|
| sys.stderr.write('warning: option -t/--toolchain is deprecated.\n')
|
|
|
| - if len(args) < 1:
|
| - parser.error('No nexe files specified. See --help for more info')
|
| -
|
| canonicalized = ParseExtraFiles(options.extra_files, sys.stderr)
|
| if canonicalized is None:
|
| parser.error('Bad --extra-files (-x) argument syntax')
|
| @@ -661,7 +658,7 @@ def main(argv):
|
| nmf_root = os.path.dirname(options.output)
|
|
|
| nmf = NmfUtils(objdump=options.objdump,
|
| - main_files=args,
|
| + main_files=options.executables,
|
| lib_path=options.lib_path,
|
| extra_files=canonicalized,
|
| lib_prefix=options.lib_prefix,
|
|
|