diff options
author | wm4 <wm4@nowhere> | 2015-06-30 15:56:26 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-06-30 15:56:26 +0200 |
commit | dbf21467f0da3d4906c6854fa7dd13190463c3c3 (patch) | |
tree | 6ba8fcba91c34525e13e4675e6cf468c7747cc7c | |
parent | bf739ca3248c2ce1b0f2ad7c46097c552676e2ba (diff) | |
download | mpv-dbf21467f0da3d4906c6854fa7dd13190463c3c3.tar.bz2 mpv-dbf21467f0da3d4906c6854fa7dd13190463c3c3.tar.xz |
build: always regenerate version hash
Until now, it only used the hash from the previous configure run,
instead of trying to get the latest hash. The "old" build system did
this correctly - we just have to use the existing logic in version.sh.
Since waf supports separate build dirs, extend version.sh with an
argument for setting the path of version.h.
-rwxr-xr-x | version.sh | 14 | ||||
-rw-r--r-- | waftools/generators/headers.py | 26 | ||||
-rw-r--r-- | wscript | 7 |
3 files changed, 17 insertions, 30 deletions
diff --git a/version.sh b/version.sh index 3eac7ef050..a3d753da44 100755 --- a/version.sh +++ b/version.sh @@ -2,16 +2,22 @@ export LC_ALL=C +version_h="version.h" + for ac_option do + ac_arg=$(echo $ac_option | cut -d '=' -f 2-) case "$ac_option" in --extra=*) - extra="-$option" + extra="-$ac_arg" + ;; + --versionh=*) + version_h="$ac_arg" ;; --print) print=yes ;; *) - echo "Unknown parameter: $option" >&2 + echo "Unknown parameter: $ac_option" >&2 exit 1 ;; @@ -42,12 +48,12 @@ if test "$print" = yes ; then fi NEW_REVISION="#define VERSION \"${VERSION}\"" -OLD_REVISION=$(head -n 1 version.h 2> /dev/null) +OLD_REVISION=$(head -n 1 "$version_h" 2> /dev/null) BUILDDATE="#define BUILDDATE \"$(date)\"" # Update version.h only on revision changes to avoid spurious rebuilds if test "$NEW_REVISION" != "$OLD_REVISION"; then - cat <<EOF > version.h + cat <<EOF > "$version_h" $NEW_REVISION $BUILDDATE EOF diff --git a/waftools/generators/headers.py b/waftools/generators/headers.py index 546dd0344d..dbedcc0865 100644 --- a/waftools/generators/headers.py +++ b/waftools/generators/headers.py @@ -4,37 +4,12 @@ def __cp_to_variant__(ctx, 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") @@ -58,4 +33,3 @@ def __add_mpv_defines__(ctx): def configure(ctx): __add_mpv_defines__(ctx) __write_config_h__(ctx) - __write_version_h__(ctx) @@ -911,6 +911,12 @@ def configure(ctx): ctx.store_dependencies_lists() +def __write_version__(ctx): + import subprocess + subprocess.call(["sh", "./version.sh", + "--versionh=" + ctx.bldnode.abspath() + "/version.h"], + cwd=ctx.srcnode.abspath()) + def build(ctx): if ctx.options.variant not in ctx.all_envs: from waflib import Errors @@ -918,6 +924,7 @@ def build(ctx): 'The project was not configured: run "waf --variant={0} configure" first!' .format(ctx.options.variant)) ctx.unpack_dependencies_lists() + __write_version__(ctx) ctx.load('wscript_build') def init(ctx): |