From dbf21467f0da3d4906c6854fa7dd13190463c3c3 Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 30 Jun 2015 15:56:26 +0200 Subject: 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. --- version.sh | 14 ++++++++++---- waftools/generators/headers.py | 26 -------------------------- 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 < version.h + cat < "$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) diff --git a/wscript b/wscript index a5566d782f..68c06fb627 100644 --- a/wscript +++ b/wscript @@ -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): -- cgit v1.2.3