<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    <br>
    <div class="moz-cite-prefix">On 02.07.2015 09:00, Thierry Vignaud
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAONrEtYigcGLgWVGiJH9R13zoRNvS5Ap9_y6gQHAFuR_7vqowA@mail.gmail.com"
      type="cite">
      <pre wrap="">Just tell in mpo.attr what files are of interest for you and write a
script that compute the additional deps that are missing by rpmdeps
with default attr files
You've to write a script that will actually output the
"libfoo.so()(64bit)(mpich-x86_64)" requires/provides you want.
You must _NOT_ call rpmdeps.
Rpmdeps is just the high level program that collects the deps computed
by the various *.prov/*.req scripts according to *.attr rules.

So according to your links,
mpi.prov should do sg like

"if the path of the library starts with $MPI_LIB, append the
(openmpi) resp (mpich) to the provides string"

mpi.req should do sg like:
"if the path of the scanned object starts with $MPI_LIB and the
required library exists in $MPI_LIB, add (openmpi) resp (mpich) to the
requires string"</pre>
    </blockquote>
    Ok, by simply calling elfdeps (whose existence I hadn't noticed
    previously) I solved the endless loop issue and the scripts [1] now
    behave as desired.<br>
    <blockquote
cite="mid:CAONrEtYigcGLgWVGiJH9R13zoRNvS5Ap9_y6gQHAFuR_7vqowA@mail.gmail.com"
      type="cite">
      <pre wrap="">

You'll still got the generic "libfoo.so()(64bit)" provides but as
you'll provides & requires additional tags.</pre>
    </blockquote>
    This is the last hurdle I'm facing: an elf binary in an $MPI_HOME
    subfolder will now trigger both the elf as well as the mpi
    dependency generator, resulting in i.e. both<br>
    <br>
    <pre wrap="">libfoo.so()(64bit)
libfoo.so()(64bit)(openmpi-x86_64)

being generated for /usr/lib64/openmpi/lib/libfoo.so. For the problem I'm trying to solve [*], my goal is to only have libfoo.so()(64bit)(openmpi-x86_64). The only solution which comes to mind is adding

%__elf_exclude_path     ^%{_prefix}/lib(64)/(openmpi|mpich)/.*$

to elf.attr. This is somewhat hacky, but is there a cleaner approach?

Thanks,
Sandro <title>Konsole output</title><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Konsole output</title><meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
</pre>

[1] <a class="moz-txt-link-freetext" href="https://smani.fedorapeople.org/rpm-mpi-hooks/">https://smani.fedorapeople.org/rpm-mpi-hooks/</a>
[*] Namely that if both libfoo and libfoo-openmpi provide libfoo.so, DNF can end up installing libfoo-openmpi for a non-mpi package bar which has a requires on libfoo (whereas YUM used to pick the providing package with the shorter name - the change in behavior in DNF is the reason this is suddenly a "problem").

</body></html>