mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-28 19:20:35 +00:00
1f4380ac0a
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.
89 lines
2.6 KiB
Python
Executable file
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)
|