[petsc-dev] why does the Ubuntu PETSc package install coarray Fortran?
Drew Parsons
dparsons at debian.org
Sun May 31 23:06:19 CDT 2020
On 2020-06-01 10:48, Satish Balay wrote:
> This is likely a dependency of a dependency.
>
> In rpm world - you can do something like:
>
> [root at sb ~]# repoquery --whatrequires SuperLU.x86_64
> Last metadata expiration check: 0:07:55 ago on Sun 31 May 2020 09:38:39
> PM CDT.
> SuperLU-devel-0:5.2.1-8.fc32.x86_64
> SuperLU-doc-0:5.2.1-8.fc32.x86_64
> armadillo-0:9.860.1-1.fc32.x86_64
> armadillo-0:9.880.1-1.fc32.x86_64
> freefem++-0:4.4.2-2.fc32.x86_64
> freefem++-0:4.6-1.fc32.x86_64
> hypre-0:2.18.1-2.fc32.x86_64
> mld2p4-serial-0:2.2.1-5.fc32.x86_64
> octave-iso2mesh-0:1.9.1-5.fc32.x86_64
> petsc-0:3.12.3-2.fc32.x86_64
>
> I don't know what the equivalent in deb world is.
>
> So I would manually check on some of the petsc dependencies
>
> apt install libblas-dev
>
> apt install libsuitesparse-dev
>
> etc..
>
> cc: Drew, perhaps has a better answer.
>
> Satish
>
>
>
> On Sun, 31 May 2020, Jeff Hammond wrote:
>
>> I understand a lot of these but how does PETSc depend on OpenCoarrays?
>>
>> Obviously, I do not fault the PETSc developers for this, because I
>> know
>> they are not using coarray Fortran, but maybe somebody on this list
>> knows
>> who is creating the Ubuntu packages for PETSc.
>>
>> If there is a simple way to understand this using Apt, please share.
>> I ran
>> apt-rdepend but do not see any reference to the coarrays stuff, so I
>> don't
>> know how it is getting included here.
>>
>> Jeff
>>
>> $ sudo apt-get install petsc-dev
>> [sudo] password for jrhammon:
>> Reading package lists... Done
>> Building dependency tree
>> Reading state information... Done
>> The following additional packages will be installed:
>> ksh libaec-dev libaec0 libamd2 libblas-dev libbtf1 *libcaf-openmpi-3
>> *libcamd2
>> libccolamd2 libcholmod3 *libcoarrays-openmpi-dev* libcolamd2
tl;dr: "apt-cache rdepends", "apt-rdepends -r"
Needed library dependencies get embedded in the shared libraries and can
be read with objdump,
$objdump -p
/usr/lib/petscdir/petsc3.12/x86_64-linux-gnu-real/lib/libpetsc_real.so.3.12.4
But you're asking at package level for the reverse dependencies of a
package, which other packages depend on a given package. There are a
couple of tools for that.
apt-cache from the apt package is short and simple, using the rdepends
action
$ apt-cache rdepends libcoarrays-openmpi-dev libcamd2 libcaf-openmpi-3
libcoarrays-openmpi-dev
Reverse Depends:
libopenmpi-dev
libcamd2
Reverse Depends:
libsuitesparse-dev
libcholmod3
libcaf-openmpi-3
Reverse Depends:
libcoarrays-openmpi-dev
"apt-cache show <pkg>" prints the description for the package, including
its Dependencies. Handy for double-checking that rdepends is giving you
reverse-dependencies, not dependencies (it's easy to forget if you're
looking forwards or backwards).
apt-rdepends (in the apt-rdepends package) gives the whole chain right
to the end, possibly Too Much Information. Despite the name,
"apt-rdepends libcamd2" actually gives forward dependencies (what
libcamd2 depends on) (in apt-rdepends it's r for recursive, not
reverse). To find the chain of reverse dependencies in the opposite
direction, use "apt-rdepends -r libcamd2".
"apt-rdepend -b" generates the list of build-dependencies that the
package needs to build it (sadly "apt-rdepends -b -r" does not work, so
it's less straightforward to know which other packages use it as a
Reverse-Dependency)
apt-rdepends and apt-cache might miss some references (e.g. Suggests
rather than Depends). This search from Rebecca Palmer can be useful for
those cases
pkg=libcamd2; grep-dctrl -w -F Pre-Depends,Depends,Recommends,Suggests
-s Source "$pkg"
/var/lib/apt/lists/*_debian_dists_unstable_main_binary-amd64_Packages ;
grep-dctrl -w -s Package "$pkg"
/var/lib/apt/lists/*_debian_dists_unstable_main_source_Sources
"apt-rdepends -r" libcamd2 tells us the chain is petsc - libcholmod3 -
libcamd2
libcaf-openmpi-3 is needed by libcoarrays-openmpi-dev
libcoarrays-openmpi-dev is not a dependency for any package. It might be
a build dependency for something, or possibly it's simply not used yet.
Just an OpenMPI tool available for use.
In short, libcholmod3 from suitesparse uses libcamd2.
More information about the petsc-dev
mailing list