From 4dc0e601c77ef4dfa89e14816f15c1aaca661c6b Mon Sep 17 00:00:00 2001 From: Pavel Hrdina Date: Thu, 25 Jun 2020 14:31:59 +0200 Subject: [PATCH] meson: docs: build api XML files Signed-off-by: Pavel Hrdina Reviewed-by: Peter Krempa Reviewed-by: Neal Gompa --- docs/Makefile.am | 55 --------------------------------------------- docs/meson.build | 31 +++++++++++++++++++++++++ scripts/apibuild.py | 26 +++++++++++++-------- src/meson.build | 16 +++++++++---- 4 files changed, 60 insertions(+), 68 deletions(-) diff --git a/docs/Makefile.am b/docs/Makefile.am index 6d97ed55c5..1237b4c47c 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -297,13 +297,6 @@ dot_html = \ htmldir = $(HTML_DIR) html_DATA = $(dot_html) -apidir = $(pkgdatadir)/api -api_DATA = \ - libvirt-api.xml \ - libvirt-qemu-api.xml \ - libvirt-lxc-api.xml \ - libvirt-admin-api.xml - schemadir = $(pkgdatadir)/schemas schema_DATA = $(wildcard $(srcdir)/schemas/*.rng) @@ -392,51 +385,3 @@ check-html: $(XMLLINT) --nonet --noout html/*.html check-local: check-html - -python_generated_files = $(api_DATA) - -APIBUILD=$(top_srcdir)/scripts/apibuild.py -APIBUILD_STAMP=apibuild.py.stamp - -$(python_generated_files): $(APIBUILD_STAMP) - -$(APIBUILD_STAMP): $(top_srcdir)/scripts/apibuild.py \ - $(top_srcdir)/include/libvirt/libvirt.h \ - $(top_srcdir)/include/libvirt/libvirt-common.h.in \ - $(top_srcdir)/include/libvirt/libvirt-domain-checkpoint.h \ - $(top_srcdir)/include/libvirt/libvirt-domain-snapshot.h \ - $(top_srcdir)/include/libvirt/libvirt-domain.h \ - $(top_srcdir)/include/libvirt/libvirt-event.h \ - $(top_srcdir)/include/libvirt/libvirt-host.h \ - $(top_srcdir)/include/libvirt/libvirt-interface.h \ - $(top_srcdir)/include/libvirt/libvirt-network.h \ - $(top_srcdir)/include/libvirt/libvirt-nodedev.h \ - $(top_srcdir)/include/libvirt/libvirt-nwfilter.h \ - $(top_srcdir)/include/libvirt/libvirt-secret.h \ - $(top_srcdir)/include/libvirt/libvirt-storage.h \ - $(top_srcdir)/include/libvirt/libvirt-stream.h \ - $(top_srcdir)/include/libvirt/libvirt-lxc.h \ - $(top_srcdir)/include/libvirt/libvirt-qemu.h \ - $(top_srcdir)/include/libvirt/libvirt-admin.h \ - $(top_srcdir)/include/libvirt/virterror.h \ - $(top_srcdir)/src/libvirt.c \ - $(top_srcdir)/src/libvirt-domain-checkpoint.c \ - $(top_srcdir)/src/libvirt-domain-snapshot.c \ - $(top_srcdir)/src/libvirt-domain.c \ - $(top_srcdir)/src/libvirt-host.c \ - $(top_srcdir)/src/libvirt-interface.c \ - $(top_srcdir)/src/libvirt-network.c \ - $(top_srcdir)/src/libvirt-nodedev.c \ - $(top_srcdir)/src/libvirt-nwfilter.c \ - $(top_srcdir)/src/libvirt-secret.c \ - $(top_srcdir)/src/libvirt-storage.c \ - $(top_srcdir)/src/libvirt-stream.c \ - $(top_srcdir)/src/libvirt-lxc.c \ - $(top_srcdir)/src/libvirt-qemu.c \ - $(top_srcdir)/src/admin/libvirt-admin.c \ - $(top_srcdir)/src/util/virerror.c \ - $(top_srcdir)/src/util/virevent.c \ - $(top_srcdir)/src/util/virtypedparam-public.c - $(AM_V_GEN)srcdir=$(srcdir) builddir=$(builddir) \ - $(RUNUTF8) $(PYTHON) $(APIBUILD) - touch $@ diff --git a/docs/meson.build b/docs/meson.build index 529a1c003a..9bd4e19b3f 100644 --- a/docs/meson.build +++ b/docs/meson.build @@ -28,3 +28,34 @@ docs_assets = [ ] install_data(docs_assets, install_dir: docs_html_dir) + +docs_api_generated = custom_target( + 'generate-api', + output: [ + 'libvirt-api.xml', + 'libvirt-lxc-api.xml', + 'libvirt-qemu-api.xml', + 'libvirt-admin-api.xml', + ], + command: [ + meson_python_prog, python3_prog.path(), apibuild_prog.path(), + meson.current_source_dir(), + meson.current_build_dir(), + ], + install: true, + install_dir: pkgdatadir / 'api', + depend_files: [ + libvirt_common_h_in, + libvirt_include, + driver_sources, + libvirt_qemu_sources, + libvirt_lxc_sources, + admin_sources, + util_public_sources, + ], +) + +docs_api_xml = docs_api_generated[0] +docs_lxc_api_xml = docs_api_generated[1] +docs_qemu_api_xml = docs_api_generated[2] +docs_admin_api_xml = docs_api_generated[3] diff --git a/scripts/apibuild.py b/scripts/apibuild.py index 7cac9b136b..58ae76d29c 100755 --- a/scripts/apibuild.py +++ b/scripts/apibuild.py @@ -12,6 +12,7 @@ import os import sys import glob import re +import argparse quiet = True warnings = 0 @@ -2404,13 +2405,11 @@ class app: warnings = warnings + 1 print(msg) - def rebuild(self, name): + def rebuild(self, name, srcdir, builddir): if name not in ["libvirt", "libvirt-qemu", "libvirt-lxc", "libvirt-admin"]: self.warning("rebuild() failed, unknown module %s" % name) return None builder = None - srcdir = os.path.abspath((os.environ["srcdir"])) - builddir = os.path.abspath((os.environ["builddir"])) if glob.glob(srcdir + "/../src/libvirt.c") != []: if not quiet: print("Rebuilding API description for %s" % name) @@ -2438,15 +2437,24 @@ class app: if __name__ == "__main__": + parser = argparse.ArgumentParser(description="XML API builder") + parser.add_argument("srcdir", type=str, help="path to docs source dir") + parser.add_argument("builddir", type=str, help="path to docs build dir") + parser.add_argument("-d", "--debug", type=str, help="path to source file") + + args = parser.parse_args() + app = app() - if len(sys.argv) > 1: + + if args.debug: debug = 1 - app.parse(sys.argv[1]) + app.parse(args.debug) else: - app.rebuild("libvirt") - app.rebuild("libvirt-qemu") - app.rebuild("libvirt-lxc") - app.rebuild("libvirt-admin") + app.rebuild("libvirt", args.srcdir, args.builddir) + app.rebuild("libvirt-qemu", args.srcdir, args.builddir) + app.rebuild("libvirt-lxc", args.srcdir, args.builddir) + app.rebuild("libvirt-admin", args.srcdir, args.builddir) + if warnings > 0: sys.exit(2) else: diff --git a/src/meson.build b/src/meson.build index d23f46b689..d56e36b31d 100644 --- a/src/meson.build +++ b/src/meson.build @@ -277,7 +277,7 @@ subdir('vmware') subdir('vz') -driver_sources = [ +driver_sources = files( 'driver.c', 'libvirt.c', 'libvirt-domain.c', @@ -291,7 +291,7 @@ driver_sources = [ 'libvirt-secret.c', 'libvirt-storage.c', 'libvirt-stream.c', -] + ) driver_headers = [ 'driver-hypervisor.h', @@ -428,9 +428,13 @@ libvirt_qemu_syms_flags = '@0@@1@'.format( libvirt_qemu_syms_path, ) +libvirt_qemu_sources = files( + 'libvirt-qemu.c', +) + libvirt_qemu_lib = shared_library( 'virt-qemu', - 'libvirt-qemu.c', + libvirt_qemu_sources, dependencies: [ src_dep, ], @@ -478,9 +482,13 @@ libvirt_lxc_syms_flags = '@0@@1@'.format( libvirt_lxc_syms_path, ) +libvirt_lxc_sources = files( + 'libvirt-lxc.c', +) + libvirt_lxc_lib = shared_library( 'virt-lxc', - 'libvirt-lxc.c', + libvirt_lxc_sources, dependencies: [ apparmor_dep, selinux_dep,