The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.3 KiB
65 lines
2.3 KiB
# Copyright 2016 The Meson development team |
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
# you may not use this file except in compliance with the License. |
|
# You may obtain a copy of the License at |
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0 |
|
|
|
# Unless required by applicable law or agreed to in writing, software |
|
# distributed under the License is distributed on an "AS IS" BASIS, |
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
# See the License for the specific language governing permissions and |
|
# limitations under the License. |
|
|
|
# ignore all lints for this file, since it is run by python2 as well |
|
|
|
# type: ignore |
|
# pylint: disable=deprecated-module |
|
|
|
import json, os, subprocess, sys |
|
from compileall import compile_file |
|
|
|
quiet = int(os.environ.get('MESON_INSTALL_QUIET', 0)) |
|
|
|
def compileall(files): |
|
for f in files: |
|
# f is prefixed by {py_xxxxlib}, both variants are 12 chars |
|
# the key is the middle 10 chars of the prefix |
|
key = f[1:11].upper() |
|
f = f[12:] |
|
|
|
ddir = None |
|
fullpath = os.environ['MESON_INSTALL_DESTDIR_'+key] + f |
|
f = os.environ['MESON_INSTALL_'+key] + f |
|
|
|
if fullpath != f: |
|
ddir = os.path.dirname(f) |
|
|
|
if os.path.isdir(fullpath): |
|
for root, _, files in os.walk(fullpath): |
|
if ddir is not None: |
|
ddir = root.replace(fullpath, f, 1) |
|
for dirf in files: |
|
if dirf.endswith('.py'): |
|
fullpath = os.path.join(root, dirf) |
|
compile_file(fullpath, ddir, force=True, quiet=quiet) |
|
else: |
|
compile_file(fullpath, ddir, force=True, quiet=quiet) |
|
|
|
def run(manifest): |
|
data_file = os.path.join(os.path.dirname(__file__), manifest) |
|
with open(data_file, 'rb') as f: |
|
dat = json.load(f) |
|
compileall(dat) |
|
|
|
if __name__ == '__main__': |
|
manifest = sys.argv[1] |
|
run(manifest) |
|
if len(sys.argv) > 2: |
|
optlevel = int(sys.argv[2]) |
|
# python2 only needs one or the other |
|
if optlevel == 1 or (sys.version_info >= (3,) and optlevel > 0): |
|
subprocess.check_call([sys.executable, '-O'] + sys.argv[:2]) |
|
if optlevel == 2: |
|
subprocess.check_call([sys.executable, '-OO'] + sys.argv[:2])
|
|
|