This reverts commit ab78ac76f44a1241e76fd32d248df62d83f1ea58. The change to create the version header in meson.build loses the dependency needed for the header file to be built when it doesn't exist. This means that:
* if you delete the build/qemu-version.h file, an incremental rebuild fails, rather than recreating it * if you do an incremental rebuild from a build tree that pre-dates ab78ac76f44a, it doesn't have qemu-version.h, and the rebuild fails Revert the commit so we can think about how we want to address this. Signed-off-by: Peter Maydell <[email protected]> --- meson.build | 29 +++++++++-------------------- include/qemu/version.h | 8 -------- scripts/qemu-version.h.in | 1 - scripts/qemu-version.sh | 25 +++++++++++++++++++++++++ 4 files changed, 34 insertions(+), 29 deletions(-) delete mode 100644 scripts/qemu-version.h.in create mode 100755 scripts/qemu-version.sh diff --git a/meson.build b/meson.build index d7bcb581c18..93da3e6f2bd 100644 --- a/meson.build +++ b/meson.build @@ -78,7 +78,6 @@ have_user = have_linux_user or have_bsd_user ############ sh = find_program('sh') -git = find_program('git', required: false) python = import('python').find_installation() cc = meson.get_compiler('c') @@ -3561,25 +3560,15 @@ tracetool_depends = files( 'scripts/tracetool/__init__.py', ) -qemu_pkgversion = get_option('pkgversion') -git_describe_version = [git, 'describe', '--match', 'v*', '--dirty'] -if qemu_pkgversion == '' and git.found() and fs.exists('.git') and \ - run_command(git_describe_version, check: false).returncode() == 0 - # Refresh the version at build time, so that "make" after a commit updates it. - qemu_version = vcs_tag(input: 'scripts/qemu-version.h.in', - output: 'qemu-version.h', - command: git_describe_version, - fallback: '') -else - # Unlike vcs_tag(), which always defines QEMU_PKGVERSION, leave it out if - # empty. include/qemu/version.h then omits the parentheses from - # QEMU_FULL_VERSION. - qemu_version_data = configuration_data() - if qemu_pkgversion != '' - qemu_version_data.set_quoted('QEMU_PKGVERSION', qemu_pkgversion) - endif - qemu_version = configure_file(output: 'qemu-version.h', configuration: qemu_version_data) -endif +qemu_version_cmd = [find_program('scripts/qemu-version.sh'), + meson.current_source_dir(), + get_option('pkgversion'), meson.project_version()] +qemu_version = custom_target('qemu-version.h', + output: 'qemu-version.h', + command: qemu_version_cmd, + capture: true, + build_by_default: true, + build_always_stale: true) genh += qemu_version hxdep = [] diff --git a/include/qemu/version.h b/include/qemu/version.h index dd0f937f30c..38405495c0e 100644 --- a/include/qemu/version.h +++ b/include/qemu/version.h @@ -7,14 +7,6 @@ #ifndef QEMU_VERSION_H #define QEMU_VERSION_H -/* qemu-version.h defines QEMU_PKGVERSION only if it is not empty. */ #include "qemu-version.h" -#ifdef QEMU_PKGVERSION -#define QEMU_FULL_VERSION QEMU_VERSION " (" QEMU_PKGVERSION ")" -#else -#define QEMU_PKGVERSION "" -#define QEMU_FULL_VERSION QEMU_VERSION -#endif - #endif diff --git a/scripts/qemu-version.h.in b/scripts/qemu-version.h.in deleted file mode 100644 index b62d4c22652..00000000000 --- a/scripts/qemu-version.h.in +++ /dev/null @@ -1 +0,0 @@ -#define QEMU_PKGVERSION "@VCS_TAG@" diff --git a/scripts/qemu-version.sh b/scripts/qemu-version.sh new file mode 100755 index 00000000000..3f6e7e6d41d --- /dev/null +++ b/scripts/qemu-version.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +set -eu + +dir="$1" +pkgversion="$2" +version="$3" + +if [ -z "$pkgversion" ]; then + cd "$dir" + if [ -e .git ]; then + pkgversion=$(git describe --match 'v*' --dirty) || : + fi +fi + +if [ -n "$pkgversion" ]; then + fullversion="$version ($pkgversion)" +else + fullversion="$version" +fi + +cat <<EOF +#define QEMU_PKGVERSION "$pkgversion" +#define QEMU_FULL_VERSION "$fullversion" +EOF -- 2.43.0
