gstreamer/configure
Scott D Phillips 1f4380ac0a Windows fixes for scripts
subprocess.call runs programs directly when shell=False and can't
take advantage of the association that makes python scripts
executable in shells, so explicitly add the interpreter to the
args for call.

Run the windows command prompt by default in gst-uninstalled.
2016-10-20 08:55:06 -03:00

89 lines
2.6 KiB
Python
Executable file

#!/usr/bin/env python3
"""Script for generating the Makefiles."""
import argparse
import os
import sys
import shutil
import subprocess
from common import git
from common import Colors
PROJECTNAME = "GStreamer 'all'"
ROOTDIR = os.path.abspath(os.path.dirname(__file__))
def get_meson(update_meson):
meson = os.path.join(ROOTDIR, 'meson', 'meson.py')
if update_meson or not os.path.exists(meson):
print("Updating meson submodule... ", end='')
sys.stdout.flush()
git('submodule', 'update', '--init', repository_path=ROOTDIR)
print("DONE")
return meson
def accept_command(commands):
"""Checks if @command --version works."""
for command in commands:
try:
subprocess.check_output([command, "--version"])
return command
except FileNotFoundError:
pass
return None
def get_configs(meson):
return ['-D', 'werror=true']
def configure_meson(args, options):
"""Configures meson and generate the Makefile."""
meson = get_meson(options.update_meson)
if not meson:
print("Install mesonbuild to build %s: http://mesonbuild.com/\n"
"You can simply install it with:\n"
" $ sudo pip3 install meson" % PROJECTNAME)
exit(1)
ninja = accept_command(["ninja", "ninja-build"])
if not ninja:
print("Install ninja-build to build %s: https://ninja-build.org/"
% PROJECTNAME)
exit(1)
build_dir = os.path.join(ROOTDIR, "build")
shutil.rmtree(build_dir, True)
os.mkdir(build_dir)
try:
subprocess.check_call([sys.executable, meson, "../"] + args, cwd=build_dir)
subprocess.check_call([sys.executable, os.path.join(ROOTDIR, 'meson', 'mesonconf.py')]
+ get_configs(meson), cwd=build_dir)
except subprocess.CalledProcessError as e:
print("EXIT meson return %s" % e.returncode)
exit(1)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("--no-reconfigure", action='store_true',
default=False, help='Avoid removing the build dir'
' if not necessary.')
parser.add_argument("-u", "--update-meson", action='store_true',
default=False, help='Do not update meson')
options, args = parser.parse_known_args()
if options.no_reconfigure:
if os.path.exists(
ROOTDIR + "/build/build.ninja") and os.path.exists(
ROOTDIR + "/Makefile"):
print("Not reconfiguring")
exit(0)
configure_meson(args, options)