[libvirt] [jenkins-ci PATCH 0/3] Enable out-of-the-box parallel make

Andrea Bolognani (3): jobs: Enable parallel make everywhere guests: Set MAKEFLAGS for out-of-the-box parallel make jobs: Drop explicit parallel make usage guests/templates/bashrc | 2 ++ jobs/autotools.yaml | 10 +++++----- jobs/defaults.yaml | 1 - jobs/perl-makemaker.yaml | 8 ++++---- projects/libvirt.yaml | 4 ++-- projects/osinfo-db.yaml | 4 ++-- 6 files changed, 15 insertions(+), 14 deletions(-) -- 2.17.0

A few jobs were running serial make for no apparent reason. Since all Makefiles have been tested and found to work just fine even with parallel execution, make sure that's what's used everywhere. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- jobs/perl-makemaker.yaml | 2 +- projects/osinfo-db.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jobs/perl-makemaker.yaml b/jobs/perl-makemaker.yaml index 84b368e..f66fe21 100644 --- a/jobs/perl-makemaker.yaml +++ b/jobs/perl-makemaker.yaml @@ -43,7 +43,7 @@ perl Makefile.PL PREFIX="$VIRT_PREFIX" {global_env} {local_env} - $MAKE + $MAKE -j{smp} $MAKE -j{smp} install $MAKE -j{smp} manifest publishers: diff --git a/projects/osinfo-db.yaml b/projects/osinfo-db.yaml index 0d0a972..b30a541 100644 --- a/projects/osinfo-db.yaml +++ b/projects/osinfo-db.yaml @@ -8,7 +8,7 @@ parent_jobs: 'osinfo-db-tools-master-build' command: | $MAKE -j{smp} all - $MAKE install OSINFO_DB_TARGET="--system" + $MAKE -j{smp} install OSINFO_DB_TARGET="--system" - generic-check-job: parent_jobs: 'osinfo-db-master-build' command: | @@ -18,6 +18,6 @@ machines: '{rpm_machines}' command: | rm -f *.tar.xz - $MAKE osinfo-db.spec + $MAKE -j{smp} osinfo-db.spec perl -i -p -e 's/BuildRequires: osinfo-db-tools.*//' osinfo-db.spec - $MAKE rpm + $MAKE -j{smp} rpm -- 2.17.0

We know all jobs are compatible with parallel make, and we also know exactly how many vCPUs guests have, since we created them in the first place: that allows us to default to parallel make instead of making it opt-in. The main advantage of doing this is that it will make life more convenient for developers running one-off jobs or debugging interactively. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- guests/templates/bashrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/guests/templates/bashrc b/guests/templates/bashrc index 866087e..2b3542c 100644 --- a/guests/templates/bashrc +++ b/guests/templates/bashrc @@ -14,6 +14,8 @@ export PYTHONPATH="{{ PYTHONPATH }}" export MAKE="{{ make }}" export PYTHON="{{ python }}" +export MAKEFLAGS="-j{{ install_vcpus|int + 1 }}" + # Enable bash completion. Only needed on FreeBSD, the system-wide # shell profile will take care of it for us everywhere else bash_completion=/usr/local/share/bash-completion/bash_completion.sh -- 2.17.0

It's enabled by default through $MAKEFLAGS now, so enabling it explicitly in jobs is entirely unnecessary. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- jobs/autotools.yaml | 10 +++++----- jobs/defaults.yaml | 1 - jobs/perl-makemaker.yaml | 10 +++++----- projects/libvirt.yaml | 4 ++-- projects/osinfo-db.yaml | 10 +++++----- 5 files changed, 17 insertions(+), 18 deletions(-) diff --git a/jobs/autotools.yaml b/jobs/autotools.yaml index 9868573..a07d806 100644 --- a/jobs/autotools.yaml +++ b/jobs/autotools.yaml @@ -45,8 +45,8 @@ mkdir build cd build ../autogen.sh --prefix=$VIRT_PREFIX {autogen_args} - $MAKE -j{smp} - $MAKE -j{smp} install + $MAKE + $MAKE install publishers: - email: recipients: '{obj:spam}' @@ -85,7 +85,7 @@ {global_env} {local_env} cd build - $MAKE -j{smp} syntax-check + $MAKE syntax-check publishers: - email: recipients: '{obj:spam}' @@ -124,7 +124,7 @@ {global_env} {local_env} cd build - if ! $MAKE -j{smp} check + if ! $MAKE check then cat tests/test-suite.log || true exit 1 @@ -172,7 +172,7 @@ sed -i -e 's/BuildRequires: libvirt.*devel.*//' {name}.spec sed -i -e 's/BuildRequires: pkgconfig(libvirt.*).*//' {name}.spec rm -f *.tar.{archive_format} - $MAKE -j{smp} dist + $MAKE dist rpmbuild --define "_topdir `pwd`/rpmbuild" -ta {name}-*.tar.{archive_format} publishers: - email: diff --git a/jobs/defaults.yaml b/jobs/defaults.yaml index 45eedb7..de56226 100644 --- a/jobs/defaults.yaml +++ b/jobs/defaults.yaml @@ -32,5 +32,4 @@ export PKG_CONFIG_PATH="$VIRT_PREFIX/lib/pkgconfig" export PKG_CONFIG_LIBDIR="/usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig:/usr/x86_64-w64-mingw32/sys-root/mingw/share/pkgconfig" mingw64_autogen_args: --host=x86_64-w64-mingw32 - smp: 3 spam: ymankad@redhat.com libvirt-ci@redhat.com diff --git a/jobs/perl-makemaker.yaml b/jobs/perl-makemaker.yaml index f66fe21..14184cf 100644 --- a/jobs/perl-makemaker.yaml +++ b/jobs/perl-makemaker.yaml @@ -43,9 +43,9 @@ perl Makefile.PL PREFIX="$VIRT_PREFIX" {global_env} {local_env} - $MAKE -j{smp} - $MAKE -j{smp} install - $MAKE -j{smp} manifest + $MAKE + $MAKE install + $MAKE manifest publishers: - email: recipients: '{obj:spam}' @@ -85,7 +85,7 @@ - shell: | {global_env} {local_env} - $MAKE -j{smp} test {test_args} + $MAKE test {test_args} publishers: - email: recipients: '{obj:spam}' @@ -127,7 +127,7 @@ sed -i -e 's/BuildRequires: *perl-Sys-Virt.*//' *.spec sed -i -e 's/BuildRequires: *libvirt.*devel.*//' *.spec rm -f *.tar.{archive_format} - $MAKE -j{smp} dist + $MAKE dist rpmbuild --define "_topdir `pwd`/rpmbuild" -ta *.tar.{archive_format} publishers: - email: diff --git a/projects/libvirt.yaml b/projects/libvirt.yaml index 6f5464b..4bba21e 100644 --- a/projects/libvirt.yaml +++ b/projects/libvirt.yaml @@ -43,7 +43,7 @@ mkdir build cd build ../autogen.sh --without-libvirtd --without-macvtap - $MAKE -j{smp} -C docs/ - $MAKE -j{smp} dist + $MAKE -C docs/ + $MAKE dist machines: - libvirt-centos-6 diff --git a/projects/osinfo-db.yaml b/projects/osinfo-db.yaml index b30a541..9f52e9e 100644 --- a/projects/osinfo-db.yaml +++ b/projects/osinfo-db.yaml @@ -7,17 +7,17 @@ - generic-build-job: parent_jobs: 'osinfo-db-tools-master-build' command: | - $MAKE -j{smp} all - $MAKE -j{smp} install OSINFO_DB_TARGET="--system" + $MAKE all + $MAKE install OSINFO_DB_TARGET="--system" - generic-check-job: parent_jobs: 'osinfo-db-master-build' command: | - $MAKE -j{smp} check + $MAKE check - generic-rpm-job: parent_jobs: 'osinfo-db-master-check' machines: '{rpm_machines}' command: | rm -f *.tar.xz - $MAKE -j{smp} osinfo-db.spec + $MAKE osinfo-db.spec perl -i -p -e 's/BuildRequires: osinfo-db-tools.*//' osinfo-db.spec - $MAKE -j{smp} rpm + $MAKE rpm -- 2.17.0
participants (1)
-
Andrea Bolognani