On Tue, Aug 26, 2008 at 1:47 PM, Axel Thimm <Axel.Thimm(a)atrpms.net> wrote:
On Tue, Aug 26, 2008 at 01:39:00PM -0400, Michel Salim wrote:
> On Tue, Aug 26, 2008 at 7:46 AM, Rex Dieter <rdieter(a)math.unl.edu> wrote:
> > Michel Salim wrote:
> >>
> >> At the risk of asking the obvious, why does this fail:
> >>
> >> %define nunitver %(gacutil -l nunit.core | tail -n 2 | grep nunit.core
> >> | cut -d "=" -f 2 | cut -
> >> d "," -f 1)
> >>
> >> Requires: mono(nunit.core) = %{nunitver}
> >
> > I'll venture because our buildsys needs to (re)generate the srpm, and at
> > that time, no BR's are installed and gacutil isn't available =>
failure.
> > To protect against that, do something like:
> >
> > %define nunitver %(gacutil -l nunit.core 2>& /dev/null | ...)
> >
> > %if "x%{?nunitver}" != "x"
> > Requires: mono(nunit.core) = %{nunitver}
> > %endif
> >
> Axel: It fails by being empty.
>
> Tom, Rex: as Rex said, it is because BRs are not installed when the
> SRPM is regenerated (perhaps we need a different directive, like
> PreBuildRequires: ? Hmm)
>
> So in this case, nunitver will *always* be empty, so I'm not sure how
> the test will help.
This idiom is often used with perl/python/php etc. The first phase
creating the src.rpm will be giving you some warnings, but the second
phase, the actual building of the binaries will have the bits in place
due to the BuildRequires, so it will not be empty then.
Aha! Yes, cute. The Requires: that end up in the binary package will
actually be the proper values, then, not the values that end up in the
source RPM?
--
Michel Salim
http://hircus.jaiku.com/