[libvirt] [jenkins-ci PATCH 00/17] Meson, more meson!

This patch series is fixing a few problems at the very same time. Would be better to split it and have a few series depending on each other? Maybe! Okay, the very first patch fixes teaches libvirt-jenkins-ci to deal with multilib path in systems where it matters as Meson uses it by default. The next 12 patches are basically adding the whole machinery we'll need to perform meson builds on OSes where we do not have Meson packaged at all or the Meson version is older than the minimum required by our projects which already adopted it (0.49.0). Next 3 patches build and test osinfo-db-tools, osinfo-db, and libosinfo on all supported machines as those now have the minimum requirements needed. Last patch in the series does the libvirt-dbus builds switch to using meson instead of autotools. Fabiano Fidêncio (17): guests: Deal with multilib path guests: CentOS7 provides python3 guests: Install EPEL on CentOS7 guests: Map python36-* CentOS7 packages mappings: Mark the OSes where meson is not supported guests: Add meson to the base project mappings: Add ninja guests: Add ninja to the base project Deal with ninja x ninja-build bin names guests: Keep base project's packages sorted mappings: Add python3-pip guests: Add pip to the base project guests: Install meson via pip osinfo-db-tools: Build again on all machines libosinfo: Build again on all machines osinfo-db: Build again on all machines Switch libvirt-dbus builds to meson guests/host_vars/libvirt-centos-7/main.yml | 2 ++ guests/host_vars/libvirt-debian-9/main.yml | 2 ++ guests/host_vars/libvirt-ubuntu-16/main.yml | 2 ++ guests/host_vars/libvirt-ubuntu-18/main.yml | 2 ++ guests/lcitool | 13 +++++++++ .../playbooks/build/jobs/meson-build-job.yml | 4 +-- .../playbooks/build/jobs/meson-check-job.yml | 2 +- guests/playbooks/build/jobs/meson-rpm-job.yml | 2 +- guests/playbooks/build/projects/libosinfo.yml | 12 +-------- .../playbooks/build/projects/libvirt-dbus.yml | 23 +++------------- .../build/projects/osinfo-db-tools.yml | 12 +-------- guests/playbooks/build/projects/osinfo-db.yml | 14 +--------- guests/playbooks/update/tasks/base.yml | 7 +++++ guests/playbooks/update/tasks/packages.yml | 8 ++++++ guests/playbooks/update/tasks/paths.yml | 15 +++++++++++ guests/playbooks/update/templates/bashrc.j2 | 18 +++++++++++++ guests/vars/mappings.yml | 27 ++++++++++++++----- guests/vars/projects/base.yml | 5 +++- guests/vars/projects/libosinfo+mingw32.yml | 1 - guests/vars/projects/libosinfo+mingw64.yml | 1 - guests/vars/projects/libosinfo.yml | 1 - .../vars/projects/osinfo-db-tools+mingw32.yml | 1 - .../vars/projects/osinfo-db-tools+mingw64.yml | 1 - guests/vars/projects/osinfo-db-tools.yml | 1 - jenkins/jobs/meson.yaml | 8 +++--- jenkins/projects/libosinfo.yaml | 8 +----- jenkins/projects/libvirt-dbus.yaml | 18 +++---------- jenkins/projects/osinfo-db-tools.yaml | 10 +------ jenkins/projects/osinfo-db.yaml | 10 +------ 29 files changed, 114 insertions(+), 116 deletions(-) -- 2.23.0

When building a project using Meson, the project will be installed respecting the multi-library path. In order to get the right path we should do: - Debian based machines: - Use the value of `dpkg-architecture -q DEB_TARGET_MULTIARCH` - RPM based machines: - Use the value of `rpm --eval '%{_lib}'` Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/playbooks/update/templates/bashrc.j2 | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/guests/playbooks/update/templates/bashrc.j2 b/guests/playbooks/update/templates/bashrc.j2 index 1f39cf2..794398c 100644 --- a/guests/playbooks/update/templates/bashrc.j2 +++ b/guests/playbooks/update/templates/bashrc.j2 @@ -14,6 +14,23 @@ export XDG_DATA_DIRS="$VIRT_PREFIX/share:/usr/share:/usr/local/share" export GI_TYPELIB_PATH="$VIRT_PREFIX/lib/girepository-1.0" export OSINFO_SYSTEM_DIR="$VIRT_PREFIX/share/osinfo" +# Add the multilib path to the LD_LIBRARY_PATH, PKG_CONFIG_PATH, and GI_TYPELIB_PATH +# The multilib path can be discovered either using `dpkg-architecture` (on Debian based +# machines) or by calling `rpm --eval '%{_lib}'` (on rpm based machines). + +package_format="{{ package_format }}" +if test "$package_format" = "deb"; then + multilib=$(dpkg-architecture -q DEB_TARGET_MULTIARCH) + export LD_LIBRARY_PATH="$VIRT_PREFIX/lib/$multilib:$LD_LIBRARY_PATH" + export PKG_CONFIG_PATH="$VIRT_PREFIX/lib/$multilib/pkgconfig:$PKG_CONFIG_PATH" + export GI_TYPELIB_PATH="$VIRT_PREFIX/lib/$multilib/girepository-1.0:$GI_TYPELIB_PATH" +elif test "$package_format" = "rpm"; then + multilib=$(rpm --eval '%{_lib}') + export LD_LIBRARY_PATH="$VIRT_PREFIX/$multilib:$LD_LIBRARY_PATH" + export PKG_CONFIG_PATH="$VIRT_PREFIX/$multilib/pkgconfig:$PKG_CONFIG_PATH" + export GI_TYPELIB_PATH="$VIRT_PREFIX/$multilib/girepository-1.0:$GI_TYPELIB_PATH" +fi + # We need to ask Perl for this information, since it's used to # construct installation paths plarch=$(perl -e 'use Config; print $Config{archname}') -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
+# Add the multilib path to the LD_LIBRARY_PATH, PKG_CONFIG_PATH, and GI_TYPELIB_PATH +# The multilib path can be discovered either using `dpkg-architecture` (on Debian based +# machines) or by calling `rpm --eval '%{_lib}'` (on rpm based machines).
This comment is a bit verbose and basically describes the code below step by step which is unnecessary, so I've rewritten it to read These search paths need to encode the OS architecture in some way in order to work, so use the appropriate tool to obtain this information and adjust them accordingly and pushed the patch with my Reviewed-by: Andrea Bolognani <abologna@redhat.com> I'll review the rest of the series as time permits. -- Andrea Bolognani / Red Hat / Virtualization

As latest CentOS7 release includes python3, let's update python3 mapping. Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/mappings.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/guests/vars/mappings.yml b/guests/vars/mappings.yml index bc6ea69..88a8350 100644 --- a/guests/vars/mappings.yml +++ b/guests/vars/mappings.yml @@ -810,7 +810,6 @@ mappings: python3: default: python3 - CentOS7: python3-dbus: default: python3-dbus -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
As latest CentOS7 release includes python3, let's update python3 mapping.
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/mappings.yml | 1 - 1 file changed, 1 deletion(-)
\o/ Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

EPEL will be needed in order to have both "ninja" and "python36-*" packages installed on CentOS7. Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/playbooks/update/tasks/base.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/guests/playbooks/update/tasks/base.yml b/guests/playbooks/update/tasks/base.yml index e0efe5d..15ffc07 100644 --- a/guests/playbooks/update/tasks/base.yml +++ b/guests/playbooks/update/tasks/base.yml @@ -9,6 +9,13 @@ - os_name == 'Fedora' - os_version == 'Rawhide' +- name: Enable EPEL + command: '{{ package_manager }} install epel-release -y' + args: + warn: no + when: + - os_name == 'CentOS' + - name: Update installed packages package: name: '*' -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
+- name: Enable EPEL + command: '{{ package_manager }} install epel-release -y' + args: + warn: no + when: + - os_name == 'CentOS' +
At this point in the playbook the package module has been properly bootstrapped (as evidenced by the fact that it's used immediately afterwards), so we can do this like - name: Enable EPEL repository package: name: epel-release state: latest when: - os_name == 'CentOS' With that changed, Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

Those are the python36-* packages which we depend on and are provided by EPEL repo*. *: https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/p/ Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/mappings.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/guests/vars/mappings.yml b/guests/vars/mappings.yml index 88a8350..2825b3e 100644 --- a/guests/vars/mappings.yml +++ b/guests/vars/mappings.yml @@ -814,11 +814,12 @@ mappings: python3-dbus: default: python3-dbus FreeBSD: py36-dbus - CentOS7: + CentOS7: python36-dbus python3-devel: deb: python3-dev pkg: python3 + CentOS7: python36-devel Fedora: python3-devel cross-policy-deb: foreign @@ -826,7 +827,7 @@ mappings: deb: python3-gi pkg: py36-gobject3 rpm: python3-gobject - CentOS7: + CentOS7: python36-gobject python3-libxml2: default: python3-libxml2 @@ -837,22 +838,22 @@ mappings: python3-lxml: default: python3-lxml FreeBSD: py36-lxml - CentOS7: + CentOS7: python36-lxml python3-nose: default: python3-nose FreeBSD: py36-nose - CentOS7: + CentOS7: python36-nose python3-pytest: default: python3-pytest FreeBSD: py36-pytest - CentOS7: + CentOS7: python36-pytest python3-requests: default: python3-requests FreeBSD: py36-requests - CentOS7: + CentOS7: python36-requests qemu-img: default: qemu-utils -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
+++ b/guests/vars/mappings.yml @@ -814,11 +814,12 @@ mappings: python3-devel: deb: python3-dev pkg: python3 + CentOS7: python36-devel Fedora: python3-devel
These are out of order: CentOS7 is more specific than Fedora, so it should go after it. Reviewed-by: Andrea Bolognani <abologna@redhat.com> with that changed. Also note that I'm reviewing all of this by only looking at the patches while tests are running in the background, so there's a chance I might come back and add comments to any of the patches at a later time O:-) -- Andrea Bolognani / Red Hat / Virtualization

Meson is not supported in the following OSes we support: - CentOS7: not packaged; - Debian9: packaged, but version is older than 0.49.0; - Ubuntu16: packaged, but version is older than 0.49.0; - Ubuntu18: packaged, but version is older than 0.49.0; Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/mappings.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/guests/vars/mappings.yml b/guests/vars/mappings.yml index 2825b3e..8daa65c 100644 --- a/guests/vars/mappings.yml +++ b/guests/vars/mappings.yml @@ -450,6 +450,10 @@ mappings: meson: default: meson + CentOS7: + Debian9: + Ubuntu16: + Ubuntu18: mingw32-curl: Fedora: mingw32-curl -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
+++ b/guests/vars/mappings.yml @@ -450,6 +450,10 @@ mappings:
meson: default: meson + CentOS7: + Debian9: + Ubuntu16: + Ubuntu18:
Mh, the original mapping means that we have already installed the old Meson from distro packages on Debian and Ubuntu... I'll make sure to clean up the guests by uninstalling it, just so that there's a single Meson binary per builder. Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

Together with this change, let's also remove meson as a dependency from the projects which are already depending on it. Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/projects/base.yml | 1 + guests/vars/projects/libosinfo+mingw32.yml | 1 - guests/vars/projects/libosinfo+mingw64.yml | 1 - guests/vars/projects/libosinfo.yml | 1 - guests/vars/projects/osinfo-db-tools+mingw32.yml | 1 - guests/vars/projects/osinfo-db-tools+mingw64.yml | 1 - guests/vars/projects/osinfo-db-tools.yml | 1 - 7 files changed, 1 insertion(+), 6 deletions(-) diff --git a/guests/vars/projects/base.yml b/guests/vars/projects/base.yml index 2a84029..be24e06 100644 --- a/guests/vars/projects/base.yml +++ b/guests/vars/projects/base.yml @@ -18,6 +18,7 @@ packages: - libtoolize - locales - lsof + - meson - net-tools - make - patch diff --git a/guests/vars/projects/libosinfo+mingw32.yml b/guests/vars/projects/libosinfo+mingw32.yml index 107ab20..5884a09 100644 --- a/guests/vars/projects/libosinfo+mingw32.yml +++ b/guests/vars/projects/libosinfo+mingw32.yml @@ -1,6 +1,5 @@ --- packages: - - meson - mingw32-glib2 - mingw32-libsoup - mingw32-libxml2 diff --git a/guests/vars/projects/libosinfo+mingw64.yml b/guests/vars/projects/libosinfo+mingw64.yml index 8ef9b4a..182c784 100644 --- a/guests/vars/projects/libosinfo+mingw64.yml +++ b/guests/vars/projects/libosinfo+mingw64.yml @@ -1,6 +1,5 @@ --- packages: - - meson - mingw64-glib2 - mingw64-libsoup - mingw64-libxml2 diff --git a/guests/vars/projects/libosinfo.yml b/guests/vars/projects/libosinfo.yml index c93b15e..dba691c 100644 --- a/guests/vars/projects/libosinfo.yml +++ b/guests/vars/projects/libosinfo.yml @@ -7,7 +7,6 @@ packages: - libsoup - libxml2 - libxslt - - meson - pci-ids - usb-ids - vala diff --git a/guests/vars/projects/osinfo-db-tools+mingw32.yml b/guests/vars/projects/osinfo-db-tools+mingw32.yml index d10f966..0952d09 100644 --- a/guests/vars/projects/osinfo-db-tools+mingw32.yml +++ b/guests/vars/projects/osinfo-db-tools+mingw32.yml @@ -1,6 +1,5 @@ --- packages: - - meson - mingw32-glib2 - mingw32-json-glib - mingw32-libarchive diff --git a/guests/vars/projects/osinfo-db-tools+mingw64.yml b/guests/vars/projects/osinfo-db-tools+mingw64.yml index 42dad20..5f099f0 100644 --- a/guests/vars/projects/osinfo-db-tools+mingw64.yml +++ b/guests/vars/projects/osinfo-db-tools+mingw64.yml @@ -1,6 +1,5 @@ --- packages: - - meson - mingw64-glib2 - mingw64-json-glib - mingw64-libarchive diff --git a/guests/vars/projects/osinfo-db-tools.yml b/guests/vars/projects/osinfo-db-tools.yml index 6b3707a..ad38a1f 100644 --- a/guests/vars/projects/osinfo-db-tools.yml +++ b/guests/vars/projects/osinfo-db-tools.yml @@ -6,7 +6,6 @@ packages: - libsoup - libxml2 - libxslt - - meson - python3 - python3-pytest - python3-requests -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
Together with this change, let's also remove meson as a dependency from the projects which are already depending on it.
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/projects/base.yml | 1 + guests/vars/projects/libosinfo+mingw32.yml | 1 - guests/vars/projects/libosinfo+mingw64.yml | 1 - guests/vars/projects/libosinfo.yml | 1 - guests/vars/projects/osinfo-db-tools+mingw32.yml | 1 - guests/vars/projects/osinfo-db-tools+mingw64.yml | 1 - guests/vars/projects/osinfo-db-tools.yml | 1 - 7 files changed, 1 insertion(+), 6 deletions(-)
Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

Although ninja is a meson dependency, some OSes do not have support to meson. Knowning that, let's explicitly add a "ninja" mapping so we get it installed even when "meson" is not supported. It'll help us, later on, when we install meson from pip. Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/mappings.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/guests/vars/mappings.yml b/guests/vars/mappings.yml index 8daa65c..10d0cb2 100644 --- a/guests/vars/mappings.yml +++ b/guests/vars/mappings.yml @@ -455,6 +455,10 @@ mappings: Ubuntu16: Ubuntu18: + ninja: + default: ninja-build + FreeBSD: ninja + mingw32-curl: Fedora: mingw32-curl -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
+++ b/guests/vars/mappings.yml @@ -455,6 +455,10 @@ mappings: + ninja: + default: ninja-build + FreeBSD: ninja
Doing this would be a good idea regardless, since we invoke ninja directly. Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/projects/base.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/guests/vars/projects/base.yml b/guests/vars/projects/base.yml index be24e06..b575079 100644 --- a/guests/vars/projects/base.yml +++ b/guests/vars/projects/base.yml @@ -20,6 +20,7 @@ packages: - lsof - meson - net-tools + - ninja - make - patch - perl -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/projects/base.yml | 1 + 1 file changed, 1 insertion(+)
Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

Different OSes have a different name for ninja binary. In some of them, it's called "ninja", in others "ninja-build". Let's allow both in the very same way we already deal with make x gmake and start using a NINJA environmnet variable instead of always relying on "ninja". Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/playbooks/build/jobs/meson-build-job.yml | 4 ++-- guests/playbooks/build/jobs/meson-check-job.yml | 2 +- guests/playbooks/build/jobs/meson-rpm-job.yml | 2 +- guests/playbooks/update/tasks/paths.yml | 15 +++++++++++++++ guests/playbooks/update/templates/bashrc.j2 | 1 + jenkins/jobs/meson.yaml | 8 ++++---- 6 files changed, 24 insertions(+), 8 deletions(-) diff --git a/guests/playbooks/build/jobs/meson-build-job.yml b/guests/playbooks/build/jobs/meson-build-job.yml index ddb94b6..0f53680 100644 --- a/guests/playbooks/build/jobs/meson-build-job.yml +++ b/guests/playbooks/build/jobs/meson-build-job.yml @@ -10,7 +10,7 @@ mkdir build cd build meson .. . --prefix=$VIRT_PREFIX {{ meson_args }} - ninja - ninja install + $NINJA + $NINJA install when: - inventory_hostname in machines diff --git a/guests/playbooks/build/jobs/meson-check-job.yml b/guests/playbooks/build/jobs/meson-check-job.yml index cf7a740..ac89cb0 100644 --- a/guests/playbooks/build/jobs/meson-check-job.yml +++ b/guests/playbooks/build/jobs/meson-check-job.yml @@ -7,7 +7,7 @@ {{ global_env }} {{ local_env }} cd build - if ! ninja test + if ! $NINJA test then cat meson-logs/testlog.txt || true exit 1 diff --git a/guests/playbooks/build/jobs/meson-rpm-job.yml b/guests/playbooks/build/jobs/meson-rpm-job.yml index f517214..ed75dfc 100644 --- a/guests/playbooks/build/jobs/meson-rpm-job.yml +++ b/guests/playbooks/build/jobs/meson-rpm-job.yml @@ -9,7 +9,7 @@ cd build {{ strip_buildrequires }} rm -f meson-dist/*.tar.{{ archive_format }} - ninja dist + $NINJA dist rpmbuild --clean --define "_topdir `pwd`/rpmbuild" -ta meson-dist/*.tar.{{ archive_format }} when: - inventory_hostname in machines diff --git a/guests/playbooks/update/tasks/paths.yml b/guests/playbooks/update/tasks/paths.yml index 08717ba..9aa8840 100644 --- a/guests/playbooks/update/tasks/paths.yml +++ b/guests/playbooks/update/tasks/paths.yml @@ -12,6 +12,8 @@ - gmake - java - make + - ninja + - ninja-build - su - name: 'Look for files' @@ -52,3 +54,16 @@ make: '{{ commands["make"] }}' when: - make is undefined + +# Prefer ninja-build, fall back to ninja +- name: 'Export paths' + set_fact: + ninja: '{{ commands["ninja-build"] }}' + when: + - commands["ninja-build"] != '' + +- name: 'Export paths' + set_fact: + ninja: '{{ commands["ninja"] }}' + when: + - ninja is undefined diff --git a/guests/playbooks/update/templates/bashrc.j2 b/guests/playbooks/update/templates/bashrc.j2 index 794398c..d286615 100644 --- a/guests/playbooks/update/templates/bashrc.j2 +++ b/guests/playbooks/update/templates/bashrc.j2 @@ -1,6 +1,7 @@ export PS1="[\u@\h \w]\$ " export MAKE="{{ make }}" +export NINJA="{{ ninja }}" export PYTHON="{{ ansible_python_interpreter }}" export MAKEFLAGS="-j{{ install_vcpus|int + 1 }}" diff --git a/jenkins/jobs/meson.yaml b/jenkins/jobs/meson.yaml index 102d0a4..4d84978 100644 --- a/jenkins/jobs/meson.yaml +++ b/jenkins/jobs/meson.yaml @@ -45,8 +45,8 @@ mkdir build cd build meson .. . --prefix=$VIRT_PREFIX {meson_args} - ninja - ninja install + $NINJA + $NINJA install publishers: - email: recipients: '{obj:spam}' @@ -85,7 +85,7 @@ {global_env} {local_env} cd build - if ! ninja test + if ! $NINJA test then cat meson-logs/testlog.txt || true exit 1 @@ -130,7 +130,7 @@ cd build {strip_buildrequires} rm -f meson-dist/*.tar.{archive_format} - ninja dist + $NINJA dist rpmbuild --clean --define "_topdir `pwd`/rpmbuild" -ta meson-dist/*.tar.{archive_format} publishers: - email: -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
+++ b/guests/playbooks/update/tasks/paths.yml +# Prefer ninja-build, fall back to ninja +- name: 'Export paths' + set_fact: + ninja: '{{ commands["ninja-build"] }}' + when: + - commands["ninja-build"] != '' + +- name: 'Export paths' + set_fact: + ninja: '{{ commands["ninja"] }}' + when: + - ninja is undefined
Ninja can be invoked as 'ninja' on all target platforms except for CentOS 7, and as 'ninja-build' on all RPM-based platforms, so we should invert this logic and prefer 'ninja' to 'ninja-build'. With that changed, Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/projects/base.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guests/vars/projects/base.yml b/guests/vars/projects/base.yml index b575079..f008de3 100644 --- a/guests/vars/projects/base.yml +++ b/guests/vars/projects/base.yml @@ -18,10 +18,10 @@ packages: - libtoolize - locales - lsof + - make - meson - net-tools - ninja - - make - patch - perl - pkg-config -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/projects/base.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

pip will be used to install meson on OSes which do not have support to the minimum required version of the project. Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/mappings.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/guests/vars/mappings.yml b/guests/vars/mappings.yml index 10d0cb2..d6fc540 100644 --- a/guests/vars/mappings.yml +++ b/guests/vars/mappings.yml @@ -787,6 +787,11 @@ mappings: rpm: perl-generators CentOS7: + pip: + CentOS7: python3-pip + Debian9: python3-pip + Ubuntu: python3-pip + pkg-config: default: pkgconf rpm: pkgconfig -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
+++ b/guests/vars/mappings.yml + pip: + CentOS7: python3-pip + Debian9: python3-pip + Ubuntu: python3-pip
Let's call the mapping 'python3-pip' to avoid any possible confusion. I'd also list Ubuntu16 and Ubuntu18 separately, with the expectation that Ubuntu 20.04 will include a suitable version of Meson and thus will not need to install it from pip. With the above changed, Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/vars/projects/base.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/guests/vars/projects/base.yml b/guests/vars/projects/base.yml index f008de3..e90d12e 100644 --- a/guests/vars/projects/base.yml +++ b/guests/vars/projects/base.yml @@ -24,6 +24,7 @@ packages: - ninja - patch - perl + - pip - pkg-config - rpmbuild - screen -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
+++ b/guests/vars/projects/base.yml @@ -24,6 +24,7 @@ packages: - ninja - patch - perl + - pip
With this changed to 'python3-pip' as per the comments on the previous patch, Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

Let's install meson via pip whenever meson is not available at all or does not match the minimum required version. Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/lcitool | 13 +++++++++++++ guests/playbooks/update/tasks/packages.yml | 8 ++++++++ 2 files changed, 21 insertions(+) diff --git a/guests/lcitool b/guests/lcitool index 5b5b622..6be396c 100755 --- a/guests/lcitool +++ b/guests/lcitool @@ -625,6 +625,11 @@ class Application: else: keys = base_keys + [self._native_arch + "-" + k for k in base_keys] + pip_install = [] + pip_mappings = { + "meson" : "meson==0.49.0", + } + # We need to add the base project manually here: the standard # machinery hides it because it's an implementation detail for project in projects + ["base"]: @@ -644,6 +649,8 @@ class Application: if package not in pkgs: continue + if package in pip_mappings and pkgs[package] is None: + pip_install += [pip_mappings[package]] if cross_policy == "foreign" and pkgs[package] is not None: cross_pkgs[package] = pkgs[package] if pkgs[package] is None or cross_policy in ["skip", "foreign"]: @@ -714,6 +721,12 @@ class Application: {package_manager} clean all -y """).format(**varmap)) + if pip_install: + varmap["pip_install"] = " ".join(sorted(pip_install)) + sys.stdout.write(textwrap.dedent(""" + RUN pip3 install {pip_install} + """).format(**varmap)) + def run(self): args = self._parser.parse_args() if args.debug: diff --git a/guests/playbooks/update/tasks/packages.yml b/guests/playbooks/update/tasks/packages.yml index ec8a4c4..f2603f8 100644 --- a/guests/playbooks/update/tasks/packages.yml +++ b/guests/playbooks/update/tasks/packages.yml @@ -100,3 +100,11 @@ package: name: '{{ flattened|sort }}' state: '{{ state }}' + +- name: '{{ project }}: Install meson from pip' + command: pip3 install meson==0.49.0 + args: + creates: /usr/local/bin/meson + when: + - temp["meson"] is defined + - temp["meson"] == None -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
+++ b/guests/lcitool + pip_install = [] + pip_mappings = { + "meson" : "meson==0.49.0", + }
This makes me think that perhaps we should have this information encoded in the mapping, eg. meson: default: meson CentOS7: pip3(meson==0.49.0) Of course then we'd be in the business of parsing that, which would not be too bad in Python but probably a fair amount of pain in the Ansible playbook... Maybe a reasonable compromise would be to have something like pip_mappings: meson: default: meson==0.49.0 in addition to the existing mappings, and that use that information as a fallback when a regular mapping is not available. Easier to parse, even though it's less explicit about what's going on behind the scenes, especially if you're only looking at the regular mapping. On the other hand, it would avoid hardcoding the Meson installation command in the Ansible playbook, which you're doing right now and is a bit unsavory. What do you think about the latter approach? It seems like it would be fairly easy to implement and, while far from perfect, a slight step up from what you currently have. [...]
+ if pip_install: + varmap["pip_install"] = " ".join(sorted(pip_install)) + sys.stdout.write(textwrap.dedent(""" + RUN pip3 install {pip_install} + """).format(**varmap))
It would be nice if we got the pip packages aligned nicely in the output, same as the native packages, but that's not a blocker :)
+++ b/guests/playbooks/update/tasks/packages.yml +- name: '{{ project }}: Install meson from pip' + command: pip3 install meson==0.49.0 + args: + creates: /usr/local/bin/meson + when: + - temp["meson"] is defined + - temp["meson"] == None
Ansible has a pip module[1] which we should probably use for this; on the other hand, from a quick look at the documentation I'm a bit unclear on the implications when it comes to the version of pip that would be invoked on each platform, so we can leave it be for now and switch in a follow-up patch. Incidentally, now that we are installing Python 3 on CentOS 7, we should be able to set ansible_python_interpreter: /usr/bin/python3 in its host_vars. I haven't made sure that would actually work, but it certainly would be nice to run everything on Python 3. [1] https://docs.ansible.com/ansible/latest/modules/pip_module.html -- Andrea Bolognani / Red Hat / Virtualization

As now we've the needed packages for building and testing osinfo-db-tools on all systems supported by libvirt-jenkins-ci, let's just build osinfo-db-tools everywhere. RPM build is still not possible in CentOS7 as it doesn't have the needed RPM macros for Meson. Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/host_vars/libvirt-centos-7/main.yml | 1 + guests/host_vars/libvirt-debian-9/main.yml | 1 + guests/host_vars/libvirt-ubuntu-16/main.yml | 1 + guests/host_vars/libvirt-ubuntu-18/main.yml | 1 + guests/playbooks/build/projects/osinfo-db-tools.yml | 12 +----------- jenkins/projects/osinfo-db-tools.yaml | 10 +--------- 6 files changed, 6 insertions(+), 20 deletions(-) diff --git a/guests/host_vars/libvirt-centos-7/main.yml b/guests/host_vars/libvirt-centos-7/main.yml index 6156414..17f3123 100644 --- a/guests/host_vars/libvirt-centos-7/main.yml +++ b/guests/host_vars/libvirt-centos-7/main.yml @@ -8,6 +8,7 @@ projects: - libvirt-perl - libvirt-python - osinfo-db + - osinfo-db-tools - virt-viewer package_format: 'rpm' diff --git a/guests/host_vars/libvirt-debian-9/main.yml b/guests/host_vars/libvirt-debian-9/main.yml index cb19395..ebec1b8 100644 --- a/guests/host_vars/libvirt-debian-9/main.yml +++ b/guests/host_vars/libvirt-debian-9/main.yml @@ -11,6 +11,7 @@ projects: - libvirt-sandbox - libvirt-tck - osinfo-db + - osinfo-db-tools - virt-manager - virt-viewer diff --git a/guests/host_vars/libvirt-ubuntu-16/main.yml b/guests/host_vars/libvirt-ubuntu-16/main.yml index 0407ae3..7fc7411 100644 --- a/guests/host_vars/libvirt-ubuntu-16/main.yml +++ b/guests/host_vars/libvirt-ubuntu-16/main.yml @@ -11,6 +11,7 @@ projects: - libvirt-sandbox - libvirt-tck - osinfo-db + - osinfo-db-tools - virt-viewer package_format: 'deb' diff --git a/guests/host_vars/libvirt-ubuntu-18/main.yml b/guests/host_vars/libvirt-ubuntu-18/main.yml index 4a95f45..9586baa 100644 --- a/guests/host_vars/libvirt-ubuntu-18/main.yml +++ b/guests/host_vars/libvirt-ubuntu-18/main.yml @@ -11,6 +11,7 @@ projects: - libvirt-sandbox - libvirt-tck - osinfo-db + - osinfo-db-tools - virt-manager - virt-viewer diff --git a/guests/playbooks/build/projects/osinfo-db-tools.yml b/guests/playbooks/build/projects/osinfo-db-tools.yml index 67e5f00..54b77fd 100644 --- a/guests/playbooks/build/projects/osinfo-db-tools.yml +++ b/guests/playbooks/build/projects/osinfo-db-tools.yml @@ -1,17 +1,7 @@ --- - set_fact: name: osinfo-db-tools - # osinfo-db-tools depends on meson 0.49.0, which is not available on - # CentOS 7, Debian 9, Ubuntu 18; - machines: - - libvirt-debian-10 - - libvirt-debian-sid - - libvirt-fedora-29 - - libvirt-fedora-30 - - libvirt-fedora-rawhide - - libvirt-freebsd-11 - - libvirt-freebsd-12 - - libvirt-freebsd-current + machines: '{{ all_machines }}' archive_format: xz git_url: '{{ git_urls["osinfo-db-tools"][git_remote] }}' diff --git a/jenkins/projects/osinfo-db-tools.yaml b/jenkins/projects/osinfo-db-tools.yaml index 8609b46..635b572 100644 --- a/jenkins/projects/osinfo-db-tools.yaml +++ b/jenkins/projects/osinfo-db-tools.yaml @@ -1,15 +1,7 @@ --- - project: name: osinfo-db-tools - # osinfo-db-tools requires meson 0.49.0, which is not available on - # CentOS 7 and Debian 9; - machines: - - libvirt-debian-10 - - libvirt-fedora-29 - - libvirt-fedora-30 - - libvirt-fedora-rawhide - - libvirt-freebsd-11 - - libvirt-freebsd-12 + machines: '{{ all_machines }}' title: osinfo database tools archive_format: xz git_url: '{git_urls[osinfo-db-tools][default]}' -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
As now we've the needed packages for building and testing osinfo-db-tools on all systems supported by libvirt-jenkins-ci, let's just build osinfo-db-tools everywhere.
RPM build is still not possible in CentOS7 as it doesn't have the needed RPM macros for Meson.
I think it would be a good idea to document this fact right in the corresponding file with a comment, same as we've done with other cases where we had to exclude a specific target platform from a build job for one reason or another.
+++ b/guests/host_vars/libvirt-centos-7/main.yml @@ -8,6 +8,7 @@ projects: - libvirt-perl - libvirt-python - osinfo-db + - osinfo-db-tools - virt-viewer
This (and the similar changes made to other files) will conflict with recent fixes I've pushed, but addressing that is trivial.
+++ b/jenkins/projects/osinfo-db-tools.yaml @@ -1,15 +1,7 @@ --- - project: name: osinfo-db-tools - # osinfo-db-tools requires meson 0.49.0, which is not available on - # CentOS 7 and Debian 9; - machines: - - libvirt-debian-10 - - libvirt-fedora-29 - - libvirt-fedora-30 - - libvirt-fedora-rawhide - - libvirt-freebsd-11 - - libvirt-freebsd-12 + machines: '{{ all_machines }}'
For the Jenkins part you need to use machines: '{all_machines}' or it won't work. With that fixed and a comment about RPM macros added, Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

As now we've the needed packages for building and testing libosinfo on all systems supported by libvirt-jenkins-ci, let's just build libosinfo everywhere. RPM build is still not possible in CentOS7 as it doesn't have the needed RPM macros for Meson. Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/host_vars/libvirt-centos-7/main.yml | 1 + guests/host_vars/libvirt-debian-9/main.yml | 1 + guests/host_vars/libvirt-ubuntu-16/main.yml | 1 + guests/host_vars/libvirt-ubuntu-18/main.yml | 1 + guests/playbooks/build/projects/libosinfo.yml | 12 +----------- jenkins/projects/libosinfo.yaml | 8 +------- 6 files changed, 6 insertions(+), 18 deletions(-) diff --git a/guests/host_vars/libvirt-centos-7/main.yml b/guests/host_vars/libvirt-centos-7/main.yml index 17f3123..94e29af 100644 --- a/guests/host_vars/libvirt-centos-7/main.yml +++ b/guests/host_vars/libvirt-centos-7/main.yml @@ -1,5 +1,6 @@ --- projects: + - libosinfo - libvirt - libvirt-cim - libvirt-dbus diff --git a/guests/host_vars/libvirt-debian-9/main.yml b/guests/host_vars/libvirt-debian-9/main.yml index ebec1b8..6b685a4 100644 --- a/guests/host_vars/libvirt-debian-9/main.yml +++ b/guests/host_vars/libvirt-debian-9/main.yml @@ -1,5 +1,6 @@ --- projects: + - libosinfo - libvirt - libvirt-dbus - libvirt-glib diff --git a/guests/host_vars/libvirt-ubuntu-16/main.yml b/guests/host_vars/libvirt-ubuntu-16/main.yml index 7fc7411..179dd03 100644 --- a/guests/host_vars/libvirt-ubuntu-16/main.yml +++ b/guests/host_vars/libvirt-ubuntu-16/main.yml @@ -1,5 +1,6 @@ --- projects: + - libosinfo - libvirt - libvirt-dbus - libvirt-glib diff --git a/guests/host_vars/libvirt-ubuntu-18/main.yml b/guests/host_vars/libvirt-ubuntu-18/main.yml index 9586baa..5b5bf0c 100644 --- a/guests/host_vars/libvirt-ubuntu-18/main.yml +++ b/guests/host_vars/libvirt-ubuntu-18/main.yml @@ -1,5 +1,6 @@ --- projects: + - libosinfo - libvirt - libvirt-dbus - libvirt-glib diff --git a/guests/playbooks/build/projects/libosinfo.yml b/guests/playbooks/build/projects/libosinfo.yml index f06dbb3..7a8303c 100644 --- a/guests/playbooks/build/projects/libosinfo.yml +++ b/guests/playbooks/build/projects/libosinfo.yml @@ -1,17 +1,7 @@ --- - set_fact: name: libosinfo - # libosinfo depends on meson 0.49.0, which is not available on - # CentOS 7, Debian 9, Ubuntu 18; - machines: - - libvirt-debian-10 - - libvirt-debian-sid - - libvirt-fedora-29 - - libvirt-fedora-30 - - libvirt-fedora-rawhide - - libvirt-freebsd-11 - - libvirt-freebsd-12 - - libvirt-freebsd-current + machines: '{{ all_machines }}' archive_format: xz git_url: '{{ git_urls["libosinfo"][git_remote] }}' diff --git a/jenkins/projects/libosinfo.yaml b/jenkins/projects/libosinfo.yaml index b38524e..50b2117 100644 --- a/jenkins/projects/libosinfo.yaml +++ b/jenkins/projects/libosinfo.yaml @@ -3,13 +3,7 @@ name: libosinfo # libosinfo depends on meson 0.49.0, which is not available on # CentOS 7, Debian 9, Ubuntu 18; - machines: - - libvirt-debian-10 - - libvirt-fedora-29 - - libvirt-fedora-30 - - libvirt-fedora-rawhide - - libvirt-freebsd-11 - - libvirt-freebsd-12 + machines: '{{ all_machines }}' title: libosinfo archive_format: xz git_url: '{git_urls[libosinfo][default]}' -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
As now we've the needed packages for building and testing libosinfo on all systems supported by libvirt-jenkins-ci, let's just build libosinfo everywhere.
RPM build is still not possible in CentOS7 as it doesn't have the needed RPM macros for Meson.
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/host_vars/libvirt-centos-7/main.yml | 1 + guests/host_vars/libvirt-debian-9/main.yml | 1 + guests/host_vars/libvirt-ubuntu-16/main.yml | 1 + guests/host_vars/libvirt-ubuntu-18/main.yml | 1 + guests/playbooks/build/projects/libosinfo.yml | 12 +----------- jenkins/projects/libosinfo.yaml | 8 +------- 6 files changed, 6 insertions(+), 18 deletions(-)
The same comments about merge conflicts and lack of comments made for the previous patch apply to this one as well. Additionally, the order in which you're restoring these jobs is arguably wrong: it should be osinfo-db-tools, osinfo-db and then libosinfo, not osinfo-db-tools, libosinfo and then osinfo-db. Easy enough to shuffle them around :)
+++ b/jenkins/projects/libosinfo.yaml @@ -3,13 +3,7 @@ name: libosinfo # libosinfo depends on meson 0.49.0, which is not available on # CentOS 7, Debian 9, Ubuntu 18; - machines: - - libvirt-debian-10 - - libvirt-fedora-29 - - libvirt-fedora-30 - - libvirt-fedora-rawhide - - libvirt-freebsd-11 - - libvirt-freebsd-12 + machines: '{{ all_machines }}'
You forgot to remove the comment here, and also once again got the Jenkins syntax wrong. With the issues highlighted above fixed, Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

As now we've the needed packages for building and testing osinfo-db on all systems supported by libvirt-jenkins-ci, let's just build osinfo-db everywhere. Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/playbooks/build/projects/osinfo-db.yml | 14 +------------- jenkins/projects/osinfo-db.yaml | 10 +--------- 2 files changed, 2 insertions(+), 22 deletions(-) diff --git a/guests/playbooks/build/projects/osinfo-db.yml b/guests/playbooks/build/projects/osinfo-db.yml index 856e478..d910575 100644 --- a/guests/playbooks/build/projects/osinfo-db.yml +++ b/guests/playbooks/build/projects/osinfo-db.yml @@ -13,19 +13,7 @@ $MAKE install OSINFO_DB_TARGET="--system" - include: '{{ playbook_base }}/jobs/generic-check-job.yml' vars: - # osinfo-db tests are Python 3 only, so they can't be ran on CentOS 7; - machines: - - libvirt-debian-9 - - libvirt-debian-10 - - libvirt-debian-sid - - libvirt-fedora-29 - - libvirt-fedora-30 - - libvirt-fedora-rawhide - - libvirt-freebsd-11 - - libvirt-freebsd-12 - - libvirt-freebsd-current - - libvirt-ubuntu-16 - - libvirt-ubuntu-18 + machines: '{{ all_machines }}' command: | $MAKE check - include: '{{ playbook_base }}/jobs/generic-rpm-job.yml' diff --git a/jenkins/projects/osinfo-db.yaml b/jenkins/projects/osinfo-db.yaml index 256c62d..678a464 100644 --- a/jenkins/projects/osinfo-db.yaml +++ b/jenkins/projects/osinfo-db.yaml @@ -13,15 +13,7 @@ $MAKE install OSINFO_DB_TARGET="--system" - generic-check-job: parent_jobs: 'osinfo-db-build' - # osinfo-db tests are Python 3 only, so they can't be ran on CentOS 7; - machines: - - libvirt-debian-9 - - libvirt-debian-10 - - libvirt-fedora-29 - - libvirt-fedora-30 - - libvirt-fedora-rawhide - - libvirt-freebsd-11 - - libvirt-freebsd-12 + machines: '{{ all_machines }}' command: | $MAKE check - generic-rpm-job: -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
As now we've the needed packages for building and testing osinfo-db on all systems supported by libvirt-jenkins-ci, let's just build osinfo-db everywhere.
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- guests/playbooks/build/projects/osinfo-db.yml | 14 +------------- jenkins/projects/osinfo-db.yaml | 10 +--------- 2 files changed, 2 insertions(+), 22 deletions(-)
Here you need to add osinfo-db back to the various guests/host_vars/*/main.yml because they have been, correctly, removed in the meantime.
+++ b/jenkins/projects/osinfo-db.yaml @@ -13,15 +13,7 @@ $MAKE install OSINFO_DB_TARGET="--system" - generic-check-job: parent_jobs: 'osinfo-db-build' - # osinfo-db tests are Python 3 only, so they can't be ran on CentOS 7; - machines: - - libvirt-debian-9 - - libvirt-debian-10 - - libvirt-fedora-29 - - libvirt-fedora-30 - - libvirt-fedora-rawhide - - libvirt-freebsd-11 - - libvirt-freebsd-12 + machines: '{{ all_machines }}'
Once again the syntax for the Jenkins part is wrong. Moreover, you're only changing the list of machines for the check job, but you should change the one in the top level instead, because now we can both build and check everywhere; notably, trying to do the latter without doing the former will certainly not work :) One last point: in the case of osinfo-db, which doesn't use Meson as its build system, we should now be able to build RPMs on all RPM-based operating systems. With all of the above addressed, Reviewed-by: Andrea Bolognani <abologna@redhat.com> Your series is missing one more patch after this one, which does the same as the last few patches but for virt-manager. I think the test suite still can't work on CentOS 7 because it uses python3-libxml2 which is not present there - maybe it should be ported to python3-lxml? - but we should be able to at least build on that target, and other targets that got their virt-manager jobs disabled only on account of not having libosinfo can now have them fully restored. -- Andrea Bolognani / Red Hat / Virtualization

Mind that check & syntax-check jobs have been merged as we dropped syntax-check target from our Meson builds. Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- .../playbooks/build/projects/libvirt-dbus.yml | 23 ++++--------------- jenkins/projects/libvirt-dbus.yaml | 18 +++------------ 2 files changed, 7 insertions(+), 34 deletions(-) diff --git a/guests/playbooks/build/projects/libvirt-dbus.yml b/guests/playbooks/build/projects/libvirt-dbus.yml index a6ff025..7624aea 100644 --- a/guests/playbooks/build/projects/libvirt-dbus.yml +++ b/guests/playbooks/build/projects/libvirt-dbus.yml @@ -18,12 +18,13 @@ git_url: '{{ git_urls["libvirt-dbus"][git_remote] }}' - include: '{{ playbook_base }}/jobs/prepare.yml' -- include: '{{ playbook_base }}/jobs/autotools-build-job.yml' -- include: '{{ playbook_base }}/jobs/autotools-syntax-check-job.yml' +- include: '{{ playbook_base }}/jobs/meson-build-job.yml' +- include: '{{ playbook_base }}/jobs/meson-check-job.yml' vars: # CentOS 7 doesn't include Python 3, while the versions of flake8 # and pyflakes currently available on FreeBSD (3.5.0 and 2.0.0 # respectively) are not compatible + # Python 3 version in Ubuntu 16.04 is too old machines: - libvirt-debian-9 - libvirt-debian-10 @@ -31,23 +32,7 @@ - libvirt-fedora-29 - libvirt-fedora-30 - libvirt-fedora-rawhide - - libvirt-ubuntu-16 - - libvirt-ubuntu-18 -- include: '{{ playbook_base }}/jobs/autotools-check-job.yml' - vars: - # CentOS 7 doesn't include Python 3 and the version in Ubuntu - # 16.04 is too old - machines: - - libvirt-debian-9 - - libvirt-debian-10 - - libvirt-debian-sid - - libvirt-fedora-29 - - libvirt-fedora-30 - - libvirt-fedora-rawhide - - libvirt-freebsd-11 - - libvirt-freebsd-12 - - libvirt-freebsd-current - libvirt-ubuntu-18 -- include: '{{ playbook_base }}/jobs/autotools-rpm-job.yml' +- include: '{{ playbook_base }}/jobs/meson-rpm-job.yml' vars: machines: '{{ rpm_machines }}' diff --git a/jenkins/projects/libvirt-dbus.yaml b/jenkins/projects/libvirt-dbus.yaml index 2b72fb4..0ddb0a9 100644 --- a/jenkins/projects/libvirt-dbus.yaml +++ b/jenkins/projects/libvirt-dbus.yaml @@ -14,9 +14,9 @@ archive_format: xz git_url: '{git_urls[libvirt-dbus][default]}' jobs: - - autotools-build-job: + - meson-build-job: parent_jobs: 'libvirt-glib-build' - - autotools-syntax-check-job: + - meson-check-job: parent_jobs: 'libvirt-dbus-build' # CentOS 7 doesn't include Python 3, while the versions of flake8 # and pyflakes currently available on FreeBSD (3.5.0 and 2.0.0 @@ -27,18 +27,6 @@ - libvirt-fedora-29 - libvirt-fedora-30 - libvirt-fedora-rawhide - - autotools-check-job: - parent_jobs: 'libvirt-dbus-syntax-check' - # CentOS 7 doesn't include Python 3 and the version in Ubuntu - # 16.04 is too old - machines: - - libvirt-debian-9 - - libvirt-debian-10 - - libvirt-fedora-29 - - libvirt-fedora-30 - - libvirt-fedora-rawhide - - libvirt-freebsd-11 - - libvirt-freebsd-12 - - autotools-rpm-job: + - meson-rpm-job: parent_jobs: 'libvirt-dbus-check' machines: '{rpm_machines}' -- 2.23.0

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
+++ b/guests/playbooks/build/projects/libvirt-dbus.yml +- include: '{{ playbook_base }}/jobs/meson-check-job.yml' vars: # CentOS 7 doesn't include Python 3, while the versions of flake8 # and pyflakes currently available on FreeBSD (3.5.0 and 2.0.0 # respectively) are not compatible + # Python 3 version in Ubuntu 16.04 is too old
The part of the comment talking about CentOS 7 is clearly no longer accurate, so we either need to enable this job on the target or leave it disabled but update the comment to point out the current reason we need to do so.
+++ b/jenkins/projects/libvirt-dbus.yaml + - meson-check-job: parent_jobs: 'libvirt-dbus-build' # CentOS 7 doesn't include Python 3, while the versions of flake8 # and pyflakes currently available on FreeBSD (3.5.0 and 2.0.0
The comments has not been updated here. I know that mentioning Ubuntu is technically not necessary here because we don't (yet) have any Ubuntu builder in our CentOS CI environment, but despite that I prefer keeping everything, even the comments, in sync between the Ansible and Jenkins parts. With the comment fixed and propagated to the Jenkins part, Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

On Tue, 2019-10-01 at 16:28 +0200, Fabiano Fidêncio wrote:
guests: CentOS7 provides python3 guests: Install EPEL on CentOS7 guests: Map python36-* CentOS7 packages mappings: Mark the OSes where meson is not supported guests: Add meson to the base project mappings: Add ninja guests: Add ninja to the base project Deal with ninja x ninja-build bin names guests: Keep base project's packages sorted
I'm going to push these patches (2-10) right away with the changes I suggested squashed in, since they're not controversial and strictly improve on the current situation. -- Andrea Bolognani / Red Hat / Virtualization
participants (2)
-
Andrea Bolognani
-
Fabiano Fidêncio