[Rpm-maint] [PATCH 5/5] Add a generic plugin for use by simple Collections

Panu Matilainen pmatilai at laiskiainen.org
Wed Jun 23 13:15:25 UTC 2010


On Wed, 23 Jun 2010, Steve Lawrence wrote:

> On Wed, 2010-06-23 at 14:40 +0300, Panu Matilainen wrote:
>> On Fri, 18 Jun 2010, Panu Matilainen wrote:
>>>
>>>> +rpmRC COLLHOOK_POST_ANY_FUNC(rpmts ts, const char * collname, const char *
>>>> options)
>>>> +{
>>>> +	int rc = RPMRC_FAIL;
>>>> +
>>>> +	if (rpmChrootSet(rpmtsRootDir(ts)) || rpmChrootIn()) {
>>>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> [snip]
>>>> +	if (rpmChrootOut() || rpmChrootSet(NULL)) {
>>>                           ^^^^^^^^^^^^^^^^^^^^^
>>>
>>> These look highly suspect, rpmChrootSet() is done already from rpmtsSetup()
>>> and rpmtsFinish(), everything between those shouldn't need anything more than
>>> just rpmChrootIn() and rpmChrootOut(). Calling rpmChrootSet(NULL) makes it
>>> forget the cwd so further rpmChrootIn/Out calls will fail.
>>
>> Eek... I just realized why you were needing the rpmChrootSet():
>>
>> exec_la_SOURCES = collection.h ../lib/rpmchroot.c exec.c
>>
>> So the plugin is using a private copy of rpmchroot and thus doesn't share
>> the librpm internal state. Obviously enough this is because rpmChrootFoo()
>> are RPM_GNUC_INTERNAL and so aren't usable for the plugin otherwise...
>>
>> The chroot interface would logically belong to librpmio but as nothing was
>> needing it outside of librpm, I thought to keep it private at least until
>> the API has seen enough shakedown to be considered stable.
>>
>> For now, I'll just drop the RPM_GNUC_INTERNAL from rpmChrootIn() and
>> rpmChrootOut() so the plugins are able to use the librpm code instead of
>> carrying their private chroot state. Do you think you'll need
>> rpmChrootDone() too in the SELinux plugin?
>>
>
> Yep, the selinux plugin does need rpmChrootDone().

Should've guessed that much and done it along rpmChrootIn/Out() .. oh 
well, one more commit doesn't hurt. rpmChrootDone() exported too now.

 	- Panu -


More information about the Rpm-maint mailing list