[Fedora-packaging] Re: Refining today's "don't touch system fs" guideline

Ralf Corsepius rc040203 at freenet.de
Fri Oct 13 08:25:36 UTC 2006


On Fri, 2006-10-13 at 09:33 +0200, Axel Thimm wrote: 
> On Fri, Oct 13, 2006 at 06:06:11AM +0200, Ralf Corsepius wrote:
> >  E.g. there exist packages, which want/need to be built "multi-staged",
> > with %build containing (often: temporary) installs to %{buildroot}.
> > In some (very rare) occasions, packages even require "building" inside
> > of %buildroot.
> 
> These are exactly the broken packages that I want to cater with the
> proposed changes!
There ain't anything broken with these packages ;)

They do not leave files around, nor do they do anything harmful. They
simply do not fit into the constraints you are trying to set up.

> If you want to do staged installs during build time you *HAVE* to do
> so in builddir, not buildroot.
Why? rpmbuild and the spec have full access to both directories and can
read/write to both.

Whether a package does a

%build
make something
make install-something DESTDIR=$RPM_BUILD_ROOT
export LD_LIBRARY_PATH=$RPM_BUILD_ROOT%{_lib}
make all
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT

or a 

%build
make something
make install-something DESTDIR=$(PWD)/tmp
export LD_LIBRARY_PATH=(PWD)/tmp%{_lib}
make all
%install
rm -rf $(PWD)/tmp
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT

doesn't make a real difference.

To the contrary, the later is sightly more error-prone.

> >  The constraint you're adding above, would (IMO: unnecessarily) close
> > out these packages from being packaged, or force packagers to resort to
> > move "building" to %install.
> 
> Nope, both ways are a sloppy way of packaging. It should be
> forbidden. Stage your builds in %build/%{builddir}, don't build in
> %install and don't touch %{buildroot} in %prep/%build. This should be
> carved in stone.
<sigh/> IMO, you are trying to overengineer something.

Ralf





More information about the Fedora-packaging mailing list