Archive:PackagingDrafts/MakeInstall

From FedoraProject

Jump to: navigation, search

The packaging guidelines are not clear in explaining why %makeinstall ought to be avoided. Here's a proposed update:

Why the %makeinstall macro should not be used

Fedora's RPM includes a %makeinstall macro but it must NOT be used when make install DESTDIR=%{buildroot} works. %makeinstall is a kludge that can work with Makefiles that don't make use of the DESTDIR variable but it has the following potential issues:

  • %makeinstall overrides a set of Make variables during "make install" and prepends the %{buildroot} path. I.e. it performs make prefix="%{buildroot}%{_prefix}" libdir="%{buildroot}%{_libdir} ...".
  • It is error-prone and can have unexpected effects when run against less than perfect Makefiles, e.g. the buildroot path may be included in installed files where variables are substituted at install-time.
  • It can trigger unnecessary and wrong rebuilds when executing "make install", since the Make variables have different values compared with the %build section.
  • If a package contains libtool archives, it can cause broken *.la files to be installed.

Instead, Fedora packages should use: make DESTDIR=%{buildroot} install or make DESTDIR=$RPM_BUILD_ROOT install