mirror of
https://github.com/mpv-player/mpv
synced 2024-12-26 00:42:57 +00:00
8a4239e0c2
Starting to get tired of seeing the full config.h in verbose output every time. Make it slightly more elegant by outputting the list of satisfied dependencies instead.
62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
def __cp_to_variant__(ctx, variant, basename):
|
|
src = ctx.bldnode.search_node(basename).read()
|
|
node = ctx.bldnode.make_node("{0}/{1}".format(variant, basename))
|
|
node.parent.mkdir()
|
|
node.write(src)
|
|
|
|
def __get_version__(ctx):
|
|
import subprocess
|
|
process = subprocess.Popen(["sh", "./version.sh", "--print"],
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.PIPE,
|
|
cwd=ctx.srcnode.abspath())
|
|
(version, err) = process.communicate()
|
|
version = version.strip()
|
|
if not isinstance(version, str):
|
|
version = version.decode('utf-8')
|
|
return version
|
|
|
|
def __get_build_date__():
|
|
import time
|
|
return time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime())
|
|
|
|
def __write_config_h__(ctx):
|
|
ctx.start_msg("Writing configuration header:")
|
|
ctx.write_config_header('config.h')
|
|
__cp_to_variant__(ctx, ctx.options.variant, 'config.h')
|
|
ctx.end_msg("config.h", "PINK")
|
|
|
|
def __write_version_h__(ctx):
|
|
ctx.start_msg("Writing header:")
|
|
ctx.env.VERSION = __get_version__(ctx)
|
|
ctx.define("VERSION", ctx.env.VERSION)
|
|
ctx.define("BUILDDATE", __get_build_date__())
|
|
ctx.write_config_header("version.h")
|
|
__cp_to_variant__(ctx, ctx.options.variant, 'version.h')
|
|
ctx.end_msg("version.h", "PINK")
|
|
|
|
# Approximately escape the string as C string literal
|
|
def __escape_c_string(s):
|
|
return s.replace("\"", "\\\"").replace("\n", "\\n")
|
|
|
|
def __get_features_string__(ctx):
|
|
from inflectors import DependencyInflector
|
|
stuff = []
|
|
for dependency_identifier in ctx.satisfied_deps:
|
|
defkey = DependencyInflector(dependency_identifier).define_key()
|
|
if ctx.is_defined(defkey) and ctx.get_define(defkey) == "1":
|
|
stuff.append(dependency_identifier)
|
|
stuff.sort()
|
|
return " ".join(stuff)
|
|
|
|
def __add_mpv_defines__(ctx):
|
|
from sys import argv
|
|
ctx.define("CONFIGURATION", " ".join(argv))
|
|
ctx.define("MPV_CONFDIR", ctx.env.CONFDIR)
|
|
ctx.define("FULLCONFIG", __escape_c_string(__get_features_string__(ctx)))
|
|
|
|
def configure(ctx):
|
|
__add_mpv_defines__(ctx)
|
|
__write_config_h__(ctx)
|
|
__write_version_h__(ctx)
|