[th] rpm.spec - packaging problem

Patryk Zawadzki patrys at pld-linux.org
Fri Nov 9 17:29:19 CET 2007


2007/11/9, Jakub Bogusz <qboosh at pld-linux.org>:
> On Fri, Nov 09, 2007 at 03:06:23PM +0100, Patryk Zawadzki wrote:
> > Last year rpm switched the /etc/rpm/sysinfo syntax. Now it expects
> > /etc/rpm/sysinfo to be a directory with following files inside:
> >
> >     "Providename",
> >     "Requirename",
> >     "Conflictname",
> >     "Obsoletename",
> >     "Dirnames",
> >     "Filelinktos"
> >
> > (Taken from rpm/lib/rpmds.c)
> >
> > In PLD we still provide it as a file which limits its use (the
> > fallback treats everything in the file as Providename).
> >
> > After doing:
> >
> > mv /etc/rpm/sysinfo{,.old}
> > mkdir /etc/rpm/sysinfo
> > mv /etc/rpm/sysinfo{.old,/Filelinktos}
> >
> > We can do useful stuff like:
> >
> > echo "foo >= 0.2" >> /etc/rpm/sysinfo/Requirename
> >
> > to pin a certain package a'la Gentoo's world package. Both sysadmins
> > and poldek could benefit from this feature (poldek would need a helper
> > binary called via sudo to alter the contents but it uses sudo for rpm
> > anyway).
> >
> > Therefore I propose fixing the packaging to adapt the new upstream format.
>
> Uhm, could it be /etc/rpm/sysinfo.d/* ?
> Switching a name between being file and directory is PITA with rpm.

The default (rpm/lib/rpmds.c ~ 1546) is:
#define _ETC_RPM_SYSINFO        SYSCONFIGDIR "/sysinfo"

We can patch either that line or just override the macro used to get
the path later (same file ~ 1571):
        rpmExpand("%{?_rpmds_sysinfo_path}", NULL)

The function rpmdsSysinfo is always called with NULL as filename so it
always resorts to evaluating that macro.

-- 
Patryk Zawadzki
PLD Linux Distribution


More information about the pld-devel-en mailing list