Odd mock build problem

Dan Williams dcbw at redhat.com
Wed Mar 1 19:09:36 UTC 2006


On Wed, 2006-03-01 at 19:24 +0100, Oliver Andrich wrote:
> On Tue, Feb 28, 2006 at 10:19:50PM -0600, Rex Dieter wrote:
> > > Unfortunately it's not empty:
> > > 
> > > Requires:       %{ruby_sitelib}
> > > 
> > > or, more precisely, it's only showing up as empty because ruby isn't
> > > there.
> > 
> > It *is* empty during the first run to create the srpm.
> > 
> > Here's a trick I've been thinking about using to work around the same
> > problem when building maxima to make a dependancy against the version of
> > sbcl used to build it:
> > 
> > # maxima requires the *same* version it was built against
> > # this hack should work, even in mock (-: -- Rex
> > %global sbcl_ver %(sbcl --version 2>/dev/null | cut -d' ' -f2)
> > %if "%{?sbcl_ver}" >= "0.9"
> > %define sbcl_ver2 = %{sbcl_ver}
> > %endif
> > Requires: sbcl %{?sbcl_ver2}
> > 
> > You'll need to do something similar.
> 
> Hi,
> 
> let me comment on this as I am the author of this SRPM, which builds
> without any problem on my FC4 and my FC5Test3 system. I think, this is
> an obvious bug in the mock stuff, cause without mock everything works as
> expected. I think, we should file a bug report about this, cause casting
> some mighty rpm spec file shell magic like above can't be a solution to
> satisfy mock. :)

No, the point is that you're attempting to use ruby in the specfile
before you even know ruby is installed!  You have to start with the
assumption that only a few packages (ie, glibc, coreutils, etc) will be
installed, and you _cannot_ depend on packages other than this set this
early in the specfile.

When mock attempts to determine the packages that the SRPM (which you're
trying to build) requires in addition to the buildroot, it must evaluate
the specfile.  But at this point, you have no buildroot.  Therefore, you
cannot do any magic here, because there is no ruby.  Obviously it works
on your box, because you already have ruby installed.  The buildsystem
doesn't.

Ruby almost 100% isn't going to get into the buildgroups file, which
composes the initial buildroot, because its certainly not a core package
of the minimal package set.

Dan





More information about the fedora-extras-list mailing list