> On Aug 27, 2021, at 1:53 PM, Jag Raman <jag.ra...@oracle.com> wrote: > > add the libvfio-user library as a submodule. build it as a cmake > subproject. > > Signed-off-by: Elena Ufimtseva <elena.ufimts...@oracle.com> > Signed-off-by: John G Johnson <john.g.john...@oracle.com> > Signed-off-by: Jagannathan Raman <jag.ra...@oracle.com> > --- > configure | 11 +++++++++++ > meson.build | 28 ++++++++++++++++++++++++++++ > .gitmodules | 3 +++ > MAINTAINERS | 7 +++++++ > hw/remote/meson.build | 2 ++ > subprojects/libvfio-user | 1 + > 6 files changed, 52 insertions(+) > create mode 160000 subprojects/libvfio-user > > diff --git a/configure b/configure > index 9a79a00..794e900 100755 > --- a/configure > +++ b/configure > @@ -4291,6 +4291,17 @@ but not implemented on your system" > fi > > ########################################## > +# check for multiprocess > + > +case "$multiprocess" in > + auto | enabled ) > + if test "$git_submodules_action" != "ignore"; then > + git_submodules="${git_submodules} libvfio-user" > + fi > + ;; > +esac > + > +########################################## > # End of CC checks > # After here, no more $cc or $ld runs > > diff --git a/meson.build b/meson.build > index bf63784..2b2d5c2 100644 > --- a/meson.build > +++ b/meson.build > @@ -1898,6 +1898,34 @@ if get_option('cfi') and slirp_opt == 'system' > + ' Please configure with --enable-slirp=git') > endif > > +vfiouser = not_found > +if have_system and multiprocess_allowed > + have_internal = fs.exists(meson.current_source_dir() / > 'subprojects/libvfio-user/Makefile') > + > + if not have_internal > + error('libvfio-user source not found - please pull git submodule') > + endif > + > + json_c = dependency('json-c', required: false) > + if not json_c.found() > + json_c = dependency('libjson-c') > + endif
One of the things we’re wondering is about this json-c package that we need to build libvfio-user library. The gitlab runners typically don’t have this package installed, as such the gitlab builds fail. Wondering if there's a way to install this package for all QEMU builds? We checked out the various jobs defined in “.gitlab-ci.d/buildtest.yml” - there is a “before_script” keyword which we could use to install this package. The “before_script” keyword appears to be run every time before a job’s script is executed. But this option appears to be per job/build. Wondering if there's a distro-independent global way to install a required package for all builds. Thank you! -- Jag > + > + cmake = import('cmake') > + > + vfiouser_subproj = cmake.subproject('libvfio-user') > + > + vfiouser_sl = vfiouser_subproj.dependency('vfio-user-static') > + > + # Although cmake links the json-c library with vfio-user-static > + # target, that info is not available to meson via cmake.subproject. > + # As such, we have to separately declare the json-c dependency here. > + # This appears to be a current limitation of using cmake inside meson. > + # libvfio-user is planning a switch to meson in the future, which > + # would address this item automatically. > + vfiouser = declare_dependency(dependencies: [vfiouser_sl, json_c]) > +endif > + > fdt = not_found > fdt_opt = get_option('fdt') > if have_system > diff --git a/.gitmodules b/.gitmodules > index 08b1b48..cfeea7c 100644 > --- a/.gitmodules > +++ b/.gitmodules > @@ -64,3 +64,6 @@ > [submodule "roms/vbootrom"] > path = roms/vbootrom > url = https://gitlab.com/qemu-project/vbootrom.git > +[submodule "subprojects/libvfio-user"] > + path = subprojects/libvfio-user > + url = https://github.com/nutanix/libvfio-user.git > diff --git a/MAINTAINERS b/MAINTAINERS > index 4039d3c..0c5a18e 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -3361,6 +3361,13 @@ F: semihosting/ > F: include/semihosting/ > F: tests/tcg/multiarch/arm-compat-semi/ > > +libvfio-user Library > +M: Thanos Makatos <thanos.maka...@nutanix.com> > +M: John Levon <john.le...@nutanix.com> > +T: https://github.com/nutanix/libvfio-user.git > +S: Maintained > +F: subprojects/libvfio-user/* > + > Multi-process QEMU > M: Elena Ufimtseva <elena.ufimts...@oracle.com> > M: Jagannathan Raman <jag.ra...@oracle.com> > diff --git a/hw/remote/meson.build b/hw/remote/meson.build > index e6a5574..fb35fb8 100644 > --- a/hw/remote/meson.build > +++ b/hw/remote/meson.build > @@ -7,6 +7,8 @@ remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: > files('remote-obj.c')) > remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('proxy.c')) > remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('iohub.c')) > > +remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: vfiouser) > + > specific_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('memory.c')) > specific_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: > files('proxy-memory-listener.c')) > > diff --git a/subprojects/libvfio-user b/subprojects/libvfio-user > new file mode 160000 > index 0000000..647c934 > --- /dev/null > +++ b/subprojects/libvfio-user > @@ -0,0 +1 @@ > +Subproject commit 647c9341d2e06266a710ddd075f69c95dd3b8446 > -- > 1.8.3.1 >