howto push dependencies into sub packages

Peter Robinson pbrobinson at gmail.com
Wed Jul 2 11:03:20 UTC 2008


Hi Nils,

>> For example with a package I maintain called geoclue I have two
>> subpackages called geoclue-gypsy and geoclue-gpsd to try and keep the
>> deps down (gypsy and gpsd essentially do the same thing) but if you
>> just install geoclue without any of the sub packages it will still
>> pull in both gpsd and gypsy as deps. This is what I want to avoid. A
>> yum output eg below.
>>
>> Cheers,
>> Peter
>>
>> [root at euuklonw7300b1n ~]# yum install geoclue
>> Loaded plugins: refresh-packagekit, refresh-updatesd
>> Setting up Install Process
>> Parsing package install arguments
>> Resolving Dependencies
>> --> Running transaction check
>> ---> Package geoclue.x86_64 0:0.11.1-9.fc9 set to be updated
>> --> Processing Dependency: libgypsy.so.0()(64bit) for package: geoclue
>> --> Processing Dependency: libgps.so.17()(64bit) for package: geoclue
>
> This suggests that geoclue (the main package) has files which link
> directly to the gypsy and gps libs respectively; rpmbuild detects this
> and sets automatic dependencies.
>
> >From looking at your spec file, you include the
> %{_libexecdir}/geoclue-{gpsd,gypsy} files not only in their subpackages
> but also in the main package (by way of "%{_libexecdir}/geoclue-*"). To
> avoid that, you should either list all other files in that directory for
> the main package or use this construct:
>
> %files
> ...
> %{_libexecdir}/geoclue-*
> %exclude %{_libexecdir}/geoclue-gpsd
> %exclude %{_libexecdir}/geoclue-gypsy

Thanks for pointing that out, I was under the misguided impression
that if it was listed in the subpackage that it wouldn't be picked up
in the main package. I should have actually done a rpm -ql on the
package to see for myself. I also noticed a couple of other related
files that should have been put in the subpackage as well.

Looks like I have now fixed the issue. Thanks for your help!

Peter




More information about the fedora-devel-list mailing list