mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 00:36:51 +00:00
fda8379411
This is useful to check that a build didn't result in changes in the code/generated files This will be used to check that the plugins documentation cache file is properly commited, and that necessary workaround for particular case are adopted.
82 lines
2.5 KiB
Python
Executable file
82 lines
2.5 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
"""Script for generating the Makefiles."""
|
|
|
|
import argparse
|
|
import os
|
|
import sys
|
|
import shutil
|
|
import subprocess
|
|
|
|
from scripts.common import get_meson
|
|
from scripts.common import accept_command
|
|
|
|
|
|
PROJECTNAME = "GStreamer build"
|
|
|
|
ROOTDIR = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
|
|
class GstBuildConfigurer:
|
|
|
|
def __init__(self, options, args):
|
|
self.options = options
|
|
self.args = args
|
|
|
|
def get_configs(self):
|
|
if self.options.werror:
|
|
return ['--werror']
|
|
return []
|
|
|
|
def configure_meson(self):
|
|
if not self.options.reconfigure:
|
|
if os.path.exists(ROOTDIR + "/build/build.ninja"):
|
|
print("Not reconfiguring")
|
|
return True
|
|
|
|
try:
|
|
meson = get_meson()
|
|
except RuntimeError:
|
|
print("Install mesonbuild to build %s: http://mesonbuild.com/\n"
|
|
"You can simply install it with:\n"
|
|
" $ sudo pip3 install meson" % PROJECTNAME)
|
|
return False
|
|
|
|
ninja = accept_command(["ninja", "ninja-build"])
|
|
if not ninja:
|
|
print("Install ninja-build to build %s: https://ninja-build.org/"
|
|
% PROJECTNAME)
|
|
return False
|
|
|
|
build_dir = os.path.join(ROOTDIR, "build")
|
|
shutil.rmtree(build_dir, True)
|
|
os.mkdir(build_dir)
|
|
|
|
try:
|
|
subprocess.check_call(meson + ["../"] + self.args + self.get_configs(),
|
|
cwd=build_dir)
|
|
print("\nYou can now build GStreamer and its various subprojects running:\n"
|
|
" $ {} -C {!r}".format(os.path.basename(ninja), build_dir))
|
|
except subprocess.CalledProcessError:
|
|
return False
|
|
|
|
return True
|
|
|
|
def setup(self):
|
|
return self.configure_meson()
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description='Process some integers.')
|
|
parser.add_argument("--reconfigure", action='store_true',
|
|
default=False, help='Force a full reconfiguration'
|
|
' meaning the build/ folder is removed.'
|
|
' You can also use `ninja reconfigure` to just'
|
|
' make sure meson is rerun but the build folder'
|
|
' is kept.')
|
|
parser.add_argument("--werror", action='store_true',
|
|
default=False, help="Do not error out on warnings")
|
|
|
|
options, args = parser.parse_known_args()
|
|
configurer = GstBuildConfigurer(options, args)
|
|
exit(not configurer.setup())
|