From b5cec55835b2d6dca38c52a7786ecef79b448bd7 Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Thu, 23 Apr 2015 16:50:29 +0300 Subject: Moved functionality from __main__ to a function to make it callable. --- meson.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'meson.py') diff --git a/meson.py b/meson.py index d545a08ce..917840e61 100755 --- a/meson.py +++ b/meson.py @@ -88,7 +88,6 @@ class MesonApp(): raise RuntimeError('%s is not a directory' % dir1) if not stat.S_ISDIR(os.stat(ndir2).st_mode): raise RuntimeError('%s is not a directory' % dir2) - self.options = options if os.path.samefile(dir1, dir2): raise RuntimeError('Source and build directories must not be the same. Create a pristine build directory.') if self.has_build_file(ndir1): @@ -115,12 +114,12 @@ itself as required.''' return (src_dir, build_dir) def generate(self): - env = environment.Environment(self.source_dir, self.build_dir, self.meson_script_file, options) + env = environment.Environment(self.source_dir, self.build_dir, self.meson_script_file, self.options) mlog.initialize(env.get_log_dir()) mlog.log(mlog.bold('The Meson build system')) mlog.log('Version:', coredata.version) - mlog.log('Source dir:', mlog.bold(app.source_dir)) - mlog.log('Build dir:', mlog.bold(app.build_dir)) + mlog.log('Source dir:', mlog.bold(self.source_dir)) + mlog.log('Build dir:', mlog.bold(self.build_dir)) if env.is_cross_build(): mlog.log('Build type:', mlog.bold('cross build')) else: @@ -128,13 +127,13 @@ itself as required.''' b = build.Build(env) intr = interpreter.Interpreter(b) intr.run() - if options.backend == 'ninja': + if self.options.backend == 'ninja': import ninjabackend g = ninjabackend.NinjaBackend(b, intr) - elif options.backend == 'vs2010': + elif self.options.backend == 'vs2010': import vs2010backend g = vs2010backend.Vs2010Backend(b, intr) - elif options.backend == 'xcode': + elif self.options.backend == 'xcode': import xcodebackend g = xcodebackend.XCodeBackend(b, intr) else: @@ -144,8 +143,7 @@ itself as required.''' dumpfile = os.path.join(env.get_scratch_dir(), 'build.dat') pickle.dump(b, open(dumpfile, 'wb')) -if __name__ == '__main__': - args = sys.argv[:] +def run(args): if args[-1] == 'secret-handshake': args = args[:-1] handshake = True @@ -154,12 +152,12 @@ if __name__ == '__main__': options = parser.parse_args(args[1:]) if options.print_version: print(coredata.version) - sys.exit(0) + return 0 args = options.directories if len(args) == 0 or len(args) > 2: print('%s ' % sys.argv[0]) print('If you omit either directory, the current directory is substituted.') - sys.exit(1) + return 1 dir1 = args[0] if len(args) > 1: dir2 = args[1] @@ -172,6 +170,7 @@ if __name__ == '__main__': this_file = os.path.join(os.path.dirname(this_file), resolved) else: this_file = resolved + try: app = MesonApp(dir1, dir2, this_file, handshake, options) except Exception as e: @@ -179,7 +178,7 @@ if __name__ == '__main__': # to stdout. print('Error during basic setup:\n') print(e) - sys.exit(1) + return 1 try: app.generate() except Exception as e: @@ -191,5 +190,8 @@ if __name__ == '__main__': mlog.log(e) else: traceback.print_exc() - sys.exit(1) + return 1 + return 0 +if __name__ == '__main__': + sys.exit(run(sys.argv[:])) -- cgit v1.2.1