summary refs log tree commit diff stats
path: root/scripts/make-release
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2023-05-18 16:50:00 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2023-06-06 16:30:01 +0200
commit2019cabfee08dd49c28359b6fd0bac63fb12df9b (patch)
tree97d332166364fecde526bf2729119dd4e7b3781b /scripts/make-release
parentd120116b5d6e81831332f807028a29c5e5815a6a (diff)
downloadfocaccia-qemu-2019cabfee08dd49c28359b6fd0bac63fb12df9b.tar.gz
focaccia-qemu-2019cabfee08dd49c28359b6fd0bac63fb12df9b.zip
meson: subprojects: replace submodules with wrap files
Compared to submodules, .wrap files have several advantages:

* option parsing and downloading is delegated to meson

* the commit is stored in a text file instead of a magic entry in the
  git tree object

* we could stop shipping external dependencies that are only used as a
  fallback, but not break compilation on platforms that lack them.
  For example it may make sense to download dtc at build time, controlled
  by --enable-download, even when building from a tarball.  Right now,
  this patch does the opposite: make-release treats dtc like libvfio-user
  (which is not stable API and therefore hasn't found its way into any
  distros) and keycodemap (which is a copylib, for better or worse).

dependency() can fall back to a wrap automatically.  However, this
is only possible for libraries that come with a .pc file, and this
is not very common for libfdt even though the upstream project in
principle provides it; it also removes the control that we provide with
--enable-fdt={system,internal}.  Therefore, the logic to pick system
vs. internal libfdt is left untouched.

--enable-fdt=git is removed; it was already a synonym for
--enable-fdt=internal.

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'scripts/make-release')
-rwxr-xr-xscripts/make-release5
1 files changed, 5 insertions, 0 deletions
diff --git a/scripts/make-release b/scripts/make-release
index 44a9d86a04..0604e61b81 100755
--- a/scripts/make-release
+++ b/scripts/make-release
@@ -16,6 +16,9 @@ if [ $# -ne 2 ]; then
     exit 0
 fi
 
+# Only include wraps that are invoked with subproject()
+SUBPROJECTS="dtc libvfio-user keycodemapdb"
+
 src="$1"
 version="$2"
 destination=qemu-${version}
@@ -26,6 +29,8 @@ git clone --single-branch -b "v${version}" -c advice.detachedHead=false \
 pushd ${destination}
 
 git submodule update --init --single-branch
+meson subprojects download $SUBPROJECTS
+
 (cd roms/seabios && git describe --tags --long --dirty > .version)
 (cd roms/skiboot && ./make_version.sh > .version)
 # Fetch edk2 submodule's submodules, since it won't have access to them via