summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-06-30 15:56:26 +0200
committerwm4 <wm4@nowhere>2015-06-30 15:56:26 +0200
commitdbf21467f0da3d4906c6854fa7dd13190463c3c3 (patch)
tree6ba8fcba91c34525e13e4675e6cf468c7747cc7c
parentbf739ca3248c2ce1b0f2ad7c46097c552676e2ba (diff)
downloadmpv-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-xversion.sh14
-rw-r--r--waftools/generators/headers.py26
-rw-r--r--wscript7
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)
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):