James Morris <jmorris@xxxxxxxxx> wrote: > I'm not sure if this is the best way to do this, but it seems to work. > > ---- > > Enable parallel compilation of the repository when running the autobuild > script and/or via rpmbuild. > > --- > > autobuild.sh | 15 ++++++++++++++- > libvirt.spec.in | 2 +- > 2 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/autobuild.sh b/autobuild.sh > index 7ae5d1e..1a5413b 100755 > --- a/autobuild.sh > +++ b/autobuild.sh > @@ -21,7 +21,20 @@ rm -rf coverage > --with-lxc \ > --with-xen-proxy > > -make > +# from the gdc spec file > +# if RPM_BUILD_NCPUS unset, set it > +if [ -z "$RPM_BUILD_NCPUS" ] ; then > + if [ -x /usr/bin/getconf ] ; then > + RPM_BUILD_NCPUS=$(/usr/bin/getconf _NPROCESSORS_ONLN) > + if [ $RPM_BUILD_NCPUS -eq 0 ]; then > + RPM_BUILD_NCPUS=1 > + fi > + else > + RPM_BUILD_NCPUS=1 > + fi > +fi Good idea. I'll be happy to commit it with something like the following in place of the above: # If the MAKEFLAGS envvar does not yet include a -j option, # add -jN where N depends on the number of processors. case $MAKEFLAGS in *-j*) ;; *) n=$(getconf _NPROCESSORS_ONLN 2> /dev/null) test "$n" -gt 0 || n=1 n=`expr $n + 1` MAKEFLAGS="$MAKEFLAGS -j$n" export MAKEFLAGS ;; esac Then you don't have to change the make invocation below, and it won't interfere if someone has already set MAKEFLAGS. Also, not using an absolute path to getconf lets that program work even also when it's installed in a different location. Finally, I prefer to use N_CPUS+1 as the -j option, here. (personally, I use 2*$N_CPUS+1, but that's probably too aggressive) Ok? > +make -j$RPM_BUILD_NCPUS > make install > > set -o pipefail Here's the patch I tested: diff --git a/autobuild.sh b/autobuild.sh index ce12692..cb6101f 100755 --- a/autobuild.sh +++ b/autobuild.sh @@ -21,6 +21,18 @@ rm -rf coverage --with-lxc \ --with-xen-proxy +# If the MAKEFLAGS envvar does not yet include a -j option, +# add -jN where N depends on the number of processors. +case $MAKEFLAGS in + *-j*) ;; + *) n=$(getconf _NPROCESSORS_ONLN 2> /dev/null) + test "$n" -gt 0 || n=1 + n=`expr $n + 1` + MAKEFLAGS="$MAKEFLAGS -j$n" + export MAKEFLAGS + ;; +esac + make make install diff --git a/libvirt.spec.in b/libvirt.spec.in index 4aff4a5..7c151ef 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -157,7 +157,7 @@ of recent versions of Linux (and other OSes). --with-init-script=redhat \ --with-qemud-pid-file=%{_localstatedir}/run/libvirt_qemud.pid \ --with-remote-file=%{_localstatedir}/run/libvirtd.pid -make +make %{?_smp_mflags} %install rm -fr %{buildroot} -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list