[Rpm-maint] [PATCH] Evaluate the spec file before making the build tree

Panu Matilainen pmatilai at laiskiainen.org
Tue Oct 12 09:20:59 UTC 2010


On Mon, 11 Oct 2010, James Leddy wrote:

> Patch attached, commit msg:
>
>
> Certain macros such as %{name} are defined in the spec file. Since the
> build tree is created before the spec file today, you can't use a
> definition like
>
> %_rpmtopdir     %{_topdir}/%{name}/%{version}-%{release}
>
> in your rpm macros, because even though rpm -i succeeds, the rpmbuild
> does not, unless the relevant directories are created.

The patch doesn't do what it claims to do: it still creates the build-tree 
before the spec is parsed. A rebase thinko perhaps?

The other problem is that moving the build-tree creation later breaks 
tar-builds when the tree doesn't already exist (from "make check"):

  ...
  53: rpmbuild -tb <tar with bad spec>                FAILED 
(rpmbuild.at:97)
  54: rpmbuild -tb                                    FAILED 
(rpmbuild.at:114)
  ...

Might be solvable by stuffing the tar-extracted spec to %{_tmppath} and 
using that to parse the spec (and only then copy the spec to its expected 
place), but I might be forgetting some corner case.

The whole build-tree generation is ridiculously complex and fragile with 
all sorts of relative/absolute path, macros-from-spec vs otherwise etc 
issues :-/

 	- Panu -


More information about the Rpm-maint mailing list