Hi Gurucharan, I've tried to do the same with Fedora's spec but the time to run "make check" when doing frequent builds is considerable.
I had quite a few false-positives during parallel execution of "make check" and that breaks the entire rpm construction. I believe most of developers are running "make check". At least I know Ben does :-) So, having this during package building process doesn't seem to buy us anything. Perhaps invert the default to not do that, but if someone wants to do it, then pass rpmbuild -D "make_check true" Anyway, if you still want to go ahead with this, I suggest to use rpmbuild --with/without options instead. In the snipped below, the default is to not do it. But you can force to run make check by running: # rpmbuild -bb --with make_check <specfile> or force to not run by running: # rpmbuild -bb --without make_check <specfile> This would be the rpm spec part: %define _default_make_check 0 %if %{?_with_make_check: 1}%{!?_with_make_check: 0} %define with_make_check 1 %else %define with_make_check %{?_without_make_check: 0}%{!?_without_make_check: %{_default_make_check}} %endif ... %build ... %if %{with_make_check} if make check TESTSUITEFLAGS='%{_smp_mflags}' || make check TESTSUITEFLAGS='--recheck'; then :; else cat tests/testsuite.log exit 1 fi %endif More info: http://www.rpm.org/wiki/PackagerDocs/ConditionalBuilds http://rpm5.org/docs/api/conditionalbuilds.html Thanks! fbl On Mon, Jun 30, 2014 at 01:10:44PM -0700, Gurucharan Shetty wrote: > For RHEL, Fedora and Xenserver, run unit tests while > building rpms. This may catch some cross-platform bugs. > > The commit also allows the users to optionally skip unit tests. > (On debian, the default is to run unit tests. For consistency, > do the same for rpms.) > > VMware-BZ: 1267127 > > CC: Flavio Leitner <f...@redhat.com> > CC: Ben Pfaff <b...@nicira.com> > Signed-off-by: Gurucharan Shetty <gshe...@nicira.com> > --- > INSTALL.Fedora | 5 +++++ > INSTALL.RHEL | 5 +++++ > INSTALL.XenServer | 5 +++++ > rhel/openvswitch-fedora.spec.in | 19 +++++++++++++++++++ > rhel/openvswitch.spec.in | 19 +++++++++++++++++++ > xenserver/openvswitch-xen.spec.in | 20 ++++++++++++++++++++ > 6 files changed, 73 insertions(+) > > diff --git a/INSTALL.Fedora b/INSTALL.Fedora > index d711e24..bc4c5d8 100644 > --- a/INSTALL.Fedora > +++ b/INSTALL.Fedora > @@ -45,6 +45,11 @@ $HOME/rpmbuild/SOURCES. > > This produces one RPM: "openvswitch". > > + The above command automatically runs the Open vSwitch unit tests. > + To disable the unit tests, run: > + > + rpmbuild -D "make_check false" -bb rhel/openvswitch-fedora.spec > + > 5. On Fedora 17, to build the Open vSwitch kernel module, run: > > rpmbuild -bb rhel/openvswitch-kmod-fedora.spec > diff --git a/INSTALL.RHEL b/INSTALL.RHEL > index de85199..685b535 100644 > --- a/INSTALL.RHEL > +++ b/INSTALL.RHEL > @@ -94,6 +94,11 @@ $HOME/rpmbuild/SOURCES. > > This produces two RPMs: "openvswitch" and "openvswitch-debuginfo". > > + The above command automatically runs the Open vSwitch unit tests. > + To disable the unit tests, run: > + > + rpmbuild -D "make_check false" -bb rhel/openvswitch.spec > + > If the build fails with "configure: error: source dir > /lib/modules/2.6.32-279.el6.x86_64/build doesn't exist" or similar, > then the kernel-devel package is missing or buggy. Go back to step > diff --git a/INSTALL.XenServer b/INSTALL.XenServer > index ba25e43..5177ef8 100644 > --- a/INSTALL.XenServer > +++ b/INSTALL.XenServer > @@ -36,6 +36,11 @@ RPMs for Citrix XenServer is the DDK VM available from > Citrix. > "openvswitch", "openvswitch-modules-xen", and > "openvswitch-debuginfo". > > + The above command automatically runs the Open vSwitch unit tests. > + To disable the unit tests, run: > + > + rpmbuild -D "make_check false" -bb rhel/openvswitch-xen.spec > + > Build Parameters > ---------------- > > diff --git a/rhel/openvswitch-fedora.spec.in b/rhel/openvswitch-fedora.spec.in > index 44cd7b9..3fb8dd2 100644 > --- a/rhel/openvswitch-fedora.spec.in > +++ b/rhel/openvswitch-fedora.spec.in > @@ -6,6 +6,10 @@ > # are permitted in any medium without royalty provided the copyright > # notice and this notice are preserved. This file is offered as-is, > # without warranty of any kind. > +# > +# When building, if tests have to be skipped, define the variable > 'make_check'. > +# For example: > +# rpmbuild -D "make_check false" -bb rhel/openvswitch.spec > > #%define kernel 2.6.40.4-5.fc15.x86_64 > > @@ -26,6 +30,11 @@ Requires(post): systemd-units > Requires(preun): systemd-units > Requires(postun): systemd-units > > +%if %{?make_check:0}%{!?make_check:1} > +# %{make_check} is not defined > +%define make_check true > +%endif > + > %description > Open vSwitch provides standard network bridging functions augmented with > support for the OpenFlow protocol for remote per-flow control of > @@ -74,6 +83,16 @@ install -d -m 755 $RPM_BUILD_ROOT/var/lib/openvswitch > # Get rid of stuff we don't want to make RPM happy. > (cd "$RPM_BUILD_ROOT" && rm -f usr/lib/lib*) > > +%check > +%if "%{make_check}" != "false" > + if make check TESTSUITEFLAGS='%{_smp_mflags}' || > + make check TESTSUITEFLAGS='--recheck'; then :; > + else > + cat tests/testsuite.log > + exit 1 > + fi > +%endif > + > %clean > rm -rf $RPM_BUILD_ROOT > > diff --git a/rhel/openvswitch.spec.in b/rhel/openvswitch.spec.in > index 18bc10c..da526ac 100644 > --- a/rhel/openvswitch.spec.in > +++ b/rhel/openvswitch.spec.in > @@ -6,6 +6,10 @@ > # are permitted in any medium without royalty provided the copyright > # notice and this notice are preserved. This file is offered as-is, > # without warranty of any kind. > +# > +# When building, if tests have to be skipped, define the variable > 'make_check'. > +# For example: > +# rpmbuild -D "make_check false" -bb rhel/openvswitch.spec > > Name: openvswitch > Summary: Open vSwitch daemon/database/utilities > @@ -21,6 +25,11 @@ Buildroot: /tmp/openvswitch-rpm > Requires: openvswitch-kmod, logrotate, python > BuildRequires: openssl-devel > > +%if %{?make_check:0}%{!?make_check:1} > +# %{make_check} is not defined > +%define make_check true > +%endif > + > %description > Open vSwitch provides standard network bridging functions and > support for the OpenFlow protocol for remote per-flow control of > @@ -67,6 +76,16 @@ rm \ > > install -d -m 755 $RPM_BUILD_ROOT/var/lib/openvswitch > > +%check > +%if "%{make_check}" != "false" > + if make check TESTSUITEFLAGS='%{_smp_mflags}' || > + make check TESTSUITEFLAGS='--recheck'; then :; > + else > + cat tests/testsuite.log > + exit 1 > + fi > +%endif > + > %clean > rm -rf $RPM_BUILD_ROOT > > diff --git a/xenserver/openvswitch-xen.spec.in > b/xenserver/openvswitch-xen.spec.in > index ae29649..06c8742 100644 > --- a/xenserver/openvswitch-xen.spec.in > +++ b/xenserver/openvswitch-xen.spec.in > @@ -17,6 +17,11 @@ > # -D "kernel_version 2.6.32.12-0.7.1.xs5.6.100.323.170596" > # -D "kernel_flavor xen" > # -bb /usr/src/redhat/SPECS/openvswitch-xen.spec > +# > +# To disable unit test run, define "make_check" as "false". > +# for example: > +# > +# rpmbuild -D "make_check false" -bb xenserver/openvswitch-xen.spec > > %if %{?openvswitch_version:0}%{!?openvswitch_version:1} > %define openvswitch_version @VERSION@ > @@ -37,6 +42,11 @@ > # build-supplemental-pack.sh requires this naming for kernel module packages > %define module_package modules-%{kernel_flavor}-%{kernel_version} > > +%if %{?make_check:0}%{!?make_check:1} > +# %{make_check} is not defined > +%define make_check true > +%endif > + > Name: openvswitch > Summary: Open vSwitch daemon/database/utilities > Group: System Environment/Daemons > @@ -134,6 +144,16 @@ rm \ > > install -d -m 755 $RPM_BUILD_ROOT/var/lib/openvswitch > > +%check > +%if "%{make_check}" != "false" > + if make check TESTSUITEFLAGS='%{_smp_mflags}' || > + make check TESTSUITEFLAGS='--recheck'; then :; > + else > + cat tests/testsuite.log > + exit 1 > + fi > +%endif > + > %clean > rm -rf $RPM_BUILD_ROOT > > -- > 1.7.9.5 > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev