Dependency generator hooks and extending default requires/provides

Jeffrey Johnson n3npq at me.com
Thu Jul 2 01:39:10 UTC 2015



Sent from my iPhone

> On Jul 1, 2015, at 18:27, Sandro Mani <manisandro at gmail.com> wrote:
> 
> Hello
> 
> I'm looking at extending the requires and provides strings returned by rpmdeps (background: [1]), and it was suggested to me to use dependency generator hooks to accomplish this [2].
> 
> My initial experiment is
> 
> $ cat /usr/lib/rpm/fileattrs/mpi.attrs
> # the path to your provides generating script
> %__mpi_provides %{_rpmconfigdir}/mpi.prov
> # the path to your requires generating script
> %__mpi_requires %{_rpmconfigdir}/mpi.req
> # a regular expression that paths in an RPM
> # must match to trigger the generator
> %__mpi_path ^%{_prefix}/lib(64)/(openmpi|mpich)/.*$
> 
> $ cat /usr/lib/rpm/mpi.prov
> #!/bin/sh
> /usr/lib/rpm/rpmdeps --provides
> 
> $ cat /usr/lib/rpm/mpi.req
> #!/bin/sh
> /usr/lib/rpm/rpmdeps --requires
> 
> This however triggers what appears to be an endless recursion of calls mpi.prov -> rpmdeps -> mpi.prov -> rpmdeps -> etc
> 
> (Trivial packages which demostrate this issue (rpmbuild & install rpm-mpi-hooks, then rpmbuild mpihooktest):
> https://smani.fedorapeople.org/rpm-mpi-hooks-1.0-1.fc23.src.rpm
> https://smani.fedorapeople.org/mpihooktest-1.0-1.fc23.src.rpm
> )
> 
> 
> Without any knowledge of the rpm codebase, I figure what is happening is that rpmdeps internally honours %__mpi_provides, which causes the endless loop.
> 

Yes.

> So my question: is there any way to write dependency generator hooks which take the output of stock rpmdeps --requires resp. --provides and extend it with some additional text?
> 

You can replace and post-process append additional dependencies.

But you can also rewrite your __mpi_{prov,req} to not invoke rpmdeps.

hth

73 de Jeff


> Thanks,
> Sandro
> 
> 
> [1] https://fedoraproject.org/wiki/Changes/RpmMPIReqProv
> [2] https://lists.fedoraproject.org/pipermail/devel/2015-June/211570.html
> _______________________________________________
> Rpm-list mailing list
> Rpm-list at lists.rpm.org
> http://lists.rpm.org/mailman/listinfo/rpm-list


More information about the Rpm-list mailing list