diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-07-04 18:02:44 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-07-04 18:02:44 +0300 |
commit | 65be7a9ab746285c41b7ff7b0744fdeda0b02f2b (patch) | |
tree | ed79fb757f9d9b30a83a0ab5be1bb383b906c5e1 | |
parent | c0c2c35496f2832fee7623ec268e87e23b58a33f (diff) | |
download | meson-65be7a9ab746285c41b7ff7b0744fdeda0b02f2b.zip meson-65be7a9ab746285c41b7ff7b0744fdeda0b02f2b.tar.gz meson-65be7a9ab746285c41b7ff7b0744fdeda0b02f2b.tar.bz2 |
A few Fedora fixes.
-rw-r--r-- | backends.py | 5 | ||||
-rw-r--r-- | environment.py | 20 | ||||
-rwxr-xr-x | run_tests.py | 9 |
3 files changed, 30 insertions, 4 deletions
diff --git a/backends.py b/backends.py index 8b859aa..0c8266e 100644 --- a/backends.py +++ b/backends.py @@ -834,8 +834,11 @@ class NinjaBackend(Backend): default = 'default all\n\n' outfile.write(default) + ninja_command = environment.detect_ninja() + if ninja_command is None: + raise RuntimeError('Could not detect ninja command') elem = NinjaBuildElement('clean', 'CUSTOM_COMMAND', '') - elem.add_item('COMMAND', ['ninja', '-t', 'clean']) + elem.add_item('COMMAND', [ninja_command, '-t', 'clean']) elem.add_item('description', 'Cleaning') if self.environment.coredata.coverage: self.generate_gcov_clean(outfile) diff --git a/environment.py b/environment.py index 3253295..f7f42e1 100644 --- a/environment.py +++ b/environment.py @@ -532,6 +532,26 @@ def is_osx(): def is_windows(): return platform.system().lower() == 'windows' +def is_debianlike(): + try: + open('/etc/debian_version', 'r') + return True + except FileNotFoundError: + return False + +def detect_ninja(): + for n in ['ninja', 'ninja-build']: + # Plain 'ninja' or 'ninja -h' yields an error + # code. Thanks a bunch, guys. + try: + p = subprocess.Popen([n, '-t', 'list'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + except FileNotFoundError: + continue + p.communicate() + if p.returncode == 0: + return n + + header_suffixes = ['h', 'hh', 'hpp', 'hxx', 'H'] cpp_suffixes = ['cc', 'cpp', 'cxx', 'hh', 'hpp', 'hxx'] c_suffixes = ['c'] diff --git a/run_tests.py b/run_tests.py index e89346e..158aadd 100755 --- a/run_tests.py +++ b/run_tests.py @@ -23,9 +23,12 @@ install_dir = os.path.join(os.path.split(os.path.abspath(__file__))[0], 'install meson_command = './meson.py' if True: # Currently we have only one backend. backend_flags = [] - compile_commands = ['ninja'] - test_commands = ['ninja', 'test'] - install_commands = ['ninja', 'install'] + ninja_command = environment.detect_ninja() + if ninja_command is None: + raise RuntimeError('Could not find Ninja executable.') + compile_commands = [ninja_command] + test_commands = [ninja_command, 'test'] + install_commands = [ninja_command, 'install'] def run_test(testdir): shutil.rmtree(test_build_dir) |