QEMU bundles a copy of dtc and keycodemapdb.  They both support meson,
so we can run their build system via subproject() instead of hardcoding
their contents.

In fact, now that QEMU's configure script knows how to install missing
Python dependencies, we can replace submodules altogether with .wrap
files, which have several advantages, either immediate or potential:

* 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, and can be a branch name or a version number as well

* 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.
  This is _not_ done in this patch series, but Marc-André has tried
  it before[1].

* we could also add .wrap files for other dependencies that are missing
  on the GCC compile farm machines.  People who build on Windows might also
  enjoy getting the mandatory dependencies (pixman, zlib, glib, possibly
  SDL?) via wraps.

It is possible to use subprojects also for berkeley-softfloat-3
and berkeley-testfloat-3.  This would require moving the corresponding
parts of tests/fp/meson.build to an overlay file.

Paolo

[1] 
https://patchew.org/QEMU/20230302131848.1527460-1-marcandre.lur...@redhat.com/20230302131848.1527460-5-marcandre.lur...@redhat.com/


Paolo Bonzini (6):
  remove remaining traces of meson submodule
  meson: simplify logic for -Dfdt
  meson: use subproject for internal libfdt
  meson: use subproject for keycodemapdb
  configure: rename --enable-pypi to --enable-download, control
    subprojects too
  meson: subprojects: replace submodules with wrap files

 .gitignore                          |  2 -
 .gitlab-ci.d/buildtest-template.yml |  5 +-
 .gitmodules                         |  9 ----
 configure                           | 71 ++++++-----------------------
 dtc                                 |  1 -
 meson.build                         | 56 ++++++-----------------
 meson_options.txt                   |  1 +
 scripts/archive-source.sh           | 11 ++++-
 scripts/make-release                |  5 ++
 subprojects/.gitignore              |  6 +++
 subprojects/dtc.wrap                |  4 ++
 subprojects/keycodemapdb.wrap       |  4 ++
 subprojects/libvfio-user            |  1 -
 subprojects/libvfio-user.wrap       |  4 ++
 ui/keycodemapdb                     |  1 -
 ui/meson.build                      |  8 ++--
 16 files changed, 68 insertions(+), 121 deletions(-)
 delete mode 160000 dtc
 create mode 100644 subprojects/.gitignore
 create mode 100644 subprojects/dtc.wrap
 create mode 100644 subprojects/keycodemapdb.wrap
 delete mode 160000 subprojects/libvfio-user
 create mode 100644 subprojects/libvfio-user.wrap
 delete mode 160000 ui/keycodemapdb

-- 
2.40.1


Reply via email to