Merge pull request #3769 from xclaesse/command-line-step2

Command line step2
pull/3998/head
Xavier Claessens 7 years ago committed by GitHub
commit 3f3ae097d5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      mesonbuild/coredata.py
  2. 30
      mesonbuild/interpreter.py
  3. 5
      mesonbuild/mconf.py
  4. 12
      mesonbuild/mesonmain.py
  5. 3
      mesonbuild/mintro.py
  6. 3
      mesonbuild/mlog.py
  7. 4
      mesonbuild/wrap/wraptool.py

@ -19,6 +19,7 @@ from pathlib import PurePath
from collections import OrderedDict
from .mesonlib import MesonException
from .mesonlib import default_libdir, default_libexecdir, default_prefix
from .wrap import WrapMode
import ast
import argparse
@ -222,7 +223,7 @@ class CoreData:
self.base_options = {}
self.external_preprocess_args = {} # CPPFLAGS only
self.cross_file = self.__load_cross_file(options.cross_file)
self.wrap_mode = options.wrap_mode
self.wrap_mode = options.wrap_mode if options.wrap_mode is not None else WrapMode.default
self.compilers = OrderedDict()
self.cross_compilers = OrderedDict()
self.deps = OrderedDict()

@ -2279,21 +2279,19 @@ external dependencies (including libraries) must go to "dependencies".''')
return self.subprojects[dirname]
def get_option_internal(self, optname):
# Some base options are not defined in some environments, return the
# default value from compilers.base_options in that case.
for d in [self.coredata.base_options, compilers.base_options,
self.coredata.builtins, self.coredata.compiler_options]:
try:
return d[optname]
except KeyError:
pass
raw_optname = optname
try:
return self.coredata.base_options[optname]
except KeyError:
pass
try:
return self.coredata.builtins[optname]
except KeyError:
pass
try:
return self.coredata.compiler_options[optname]
except KeyError:
pass
if not coredata.is_builtin_option(optname) and self.is_subproject():
if self.is_subproject():
optname = self.subproject + ':' + optname
try:
opt = self.coredata.user_options[optname]
if opt.yielding and ':' in optname and raw_optname in self.coredata.user_options:
@ -2313,11 +2311,7 @@ external dependencies (including libraries) must go to "dependencies".''')
return opt
except KeyError:
pass
# Some base options are not defined in some environments, return the default value.
try:
return compilers.base_options[optname]
except KeyError:
pass
raise InterpreterException('Tried to access unknown option "%s".' % optname)
@stringArgs

@ -13,7 +13,6 @@
# limitations under the License.
import os
import sys
import argparse
from . import (coredata, mesonlib, build)
@ -172,7 +171,3 @@ def run(args):
print('Meson configurator encountered an error:')
raise e
return 0
if __name__ == '__main__':
sys.exit(run(sys.argv[1:]))

@ -36,7 +36,7 @@ def create_parser():
p.add_argument('-v', '--version', action='version',
version=coredata.version)
# See the mesonlib.WrapMode enum for documentation
p.add_argument('--wrap-mode', default=WrapMode.default,
p.add_argument('--wrap-mode', default=None,
type=wrapmodetype, choices=WrapMode,
help='Special wrap mode to use')
p.add_argument('--profile-self', action='store_true', dest='profile',
@ -71,18 +71,18 @@ class MesonApp:
if not os.path.exists(ndir2):
os.makedirs(ndir2)
if not stat.S_ISDIR(os.stat(ndir1).st_mode):
raise RuntimeError('%s is not a directory' % dir1)
raise MesonException('%s is not a directory' % dir1)
if not stat.S_ISDIR(os.stat(ndir2).st_mode):
raise RuntimeError('%s is not a directory' % dir2)
raise MesonException('%s is not a directory' % dir2)
if os.path.samefile(dir1, dir2):
raise RuntimeError('Source and build directories must not be the same. Create a pristine build directory.')
raise MesonException('Source and build directories must not be the same. Create a pristine build directory.')
if self.has_build_file(ndir1):
if self.has_build_file(ndir2):
raise RuntimeError('Both directories contain a build file %s.' % environment.build_filename)
raise MesonException('Both directories contain a build file %s.' % environment.build_filename)
return ndir1, ndir2
if self.has_build_file(ndir2):
return ndir2, ndir1
raise RuntimeError('Neither directory contains a build file %s.' % environment.build_filename)
raise MesonException('Neither directory contains a build file %s.' % environment.build_filename)
def validate_dirs(self, dir1, dir2, handshake):
(src_dir, build_dir) = self.validate_core_dirs(dir1, dir2)

@ -249,6 +249,3 @@ def run(args):
print('No command specified')
return 1
return 0
if __name__ == '__main__':
sys.exit(run(sys.argv[1:]))

@ -59,9 +59,12 @@ def set_timestamp_start(start):
def shutdown():
global log_file
if log_file is not None:
path = log_file.name
exception_around_goer = log_file
log_file = None
exception_around_goer.close()
return path
return None
class AnsiDecorator:
plain_code = "\033[0m"

@ -213,6 +213,4 @@ def run(args):
add_arguments(parser)
options = parser.parse_args(args)
options.wrap_func(options)
if __name__ == '__main__':
sys.exit(run(sys.argv[1:]))
return 0

Loading…
Cancel
Save