Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide package config symlinks for mpi.pc, mpi-c.pc, mpi-cxx.pc, and mpi-fort.pc #137

Open
1 task done
robertmaynard opened this issue Jan 2, 2024 · 2 comments
Open
1 task done

Comments

@robertmaynard
Copy link

Solution to issue cannot be found in the documentation.

  • I checked the documentation.

Issue

Build systems such as CMake rely on the generalized/meta name to search for what MPI is installed on a machine.
That way they can support all MPI distributions without the user knowing what specific version is installed on each machine a project is built on.

It looks like conda doesn't install / symlink the installed package config files to the more general names resulting in CMake and other package config users to fail when requesting details on the installed mpi version.

Proposal:
Have the openmpi-cxx and other language packages provide the 'normalized' name package config file as well

Prior art:
ubuntu etc-alternatives map mpi.pc, mpi-c.pc, mpi-cxx.pc, and mpi-fort.pc to the active MPI implementation.

Installed packages

_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
binutils                  2.40                 hdd6e379_0    conda-forge
binutils_impl_linux-64    2.40                 hf600244_0    conda-forge
binutils_linux-64         2.40                 hbdbef99_2    conda-forge
bzip2                     1.0.8                hd590300_5    conda-forge
c-ares                    1.24.0               hd590300_0    conda-forge
c-compiler                1.7.0                hd590300_0    conda-forge
ca-certificates           2023.11.17           hbcca054_0    conda-forge
cmake                     3.28.1               hcfe8598_0    conda-forge
cxx-compiler              1.7.0                h00ab1b0_0    conda-forge
gcc                       12.3.0               h8d2909c_2    conda-forge
gcc_impl_linux-64         12.3.0               he2b93b0_3    conda-forge
gcc_linux-64              12.3.0               h76fc315_2    conda-forge
gxx                       12.3.0               h8d2909c_2    conda-forge
gxx_impl_linux-64         12.3.0               he2b93b0_3    conda-forge
gxx_linux-64              12.3.0               h8a814eb_2    conda-forge
icu                       73.2                 h59595ed_0    conda-forge
kernel-headers_linux-64   2.6.32              he073ed8_16    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
krb5                      1.21.2               h659d440_0    conda-forge
ld_impl_linux-64          2.40                 h41732ed_0    conda-forge
libcurl                   8.5.0                hca28451_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 hd590300_2    conda-forge
libevent                  2.1.12               hf998b51_1    conda-forge
libexpat                  2.5.0                hcb278e6_1    conda-forge
libgcc-devel_linux-64     12.3.0             h8bca6fd_103    conda-forge
libgcc-ng                 13.2.0               h807b86a_3    conda-forge
libgfortran-ng            13.2.0               h69a702a_3    conda-forge
libgfortran5              13.2.0               ha4646dd_3    conda-forge
libgomp                   13.2.0               h807b86a_3    conda-forge
libhwloc                  2.9.3           default_h554bfaf_1009    conda-forge
libiconv                  1.17                 hd590300_2    conda-forge
libnghttp2                1.58.0               h47da74e_1    conda-forge
libnl                     3.9.0                hd590300_0    conda-forge
libsanitizer              12.3.0               h0f45ef3_3    conda-forge
libssh2                   1.11.0               h0841786_0    conda-forge
libstdcxx-devel_linux-64  12.3.0             h8bca6fd_103    conda-forge
libstdcxx-ng              13.2.0               h7e041cc_3    conda-forge
libuv                     1.46.0               hd590300_0    conda-forge
libxml2                   2.11.6               h232c23b_0    conda-forge
libzlib                   1.2.13               hd590300_5    conda-forge
mpi                       1.0                     openmpi    conda-forge
ncurses                   6.4                  h59595ed_2    conda-forge
openmpi                   5.0.1              hb0ee255_100    conda-forge
openmpi-mpicxx            5.0.1              h00ab1b0_100    conda-forge
openssl                   3.2.0                hd590300_1    conda-forge
pkg-config                0.29.2            h36c2ea0_1008    conda-forge
rhash                     1.4.4                hd590300_0    conda-forge
sysroot_linux-64          2.12                he073ed8_16    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
zstd                      1.5.5                hfc55251_0    conda-forge

Environment info

active environment : openmpi_test
    active env location : /home/rmaynard/miniconda3/envs/openmpi_test
            shell level : 1
       user config file : /home/rmaynard/.condarc
 populated config files : /home/rmaynard/.condarc
          conda version : 23.9.0
    conda-build version : 3.27.0
         python version : 3.11.4.final.0
       virtual packages : __archspec=1=x86_64
                          __cuda=12.0=0
                          __glibc=2.31=0
                          __linux=5.4.0=0
                          __unix=0=0
       base environment : /home/rmaynard/miniconda3  (writable)
      conda av data dir : /home/rmaynard/miniconda3/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /home/rmaynard/miniconda3/pkgs
                          /home/rmaynard/.conda/pkgs
       envs directories : /home/rmaynard/miniconda3/envs
                          /home/rmaynard/.conda/envs
               platform : linux-64
             user-agent : conda/23.9.0 requests/2.31.0 CPython/3.11.4 Linux/5.4.0-169-generic ubuntu/20.04.6 glibc/2.31 solver/libmamba conda-libmamba-solver/23.7.0 libmambapy/1.4.1
                UID:GID : 1000:1000
             netrc file : None
           offline mode : False
@leofang
Copy link
Member

leofang commented Jan 4, 2024

I am clueless where these symlinks should live (or where the .pc files currently are), but if there's an easy fix we'll be happy to take it!

@minrk
Copy link
Member

minrk commented Jun 11, 2024

I've been exploring these files for #161, and it appears they are based on openmpi's practices - openmpi installs all of these files, just with a leading o, so it should just be ln -s ompi-c.pc mpi-c.pc etc.

mpich doesn't do anything like that, so would need more help. It's not so complex, though, I think.

@minrk minrk added enhancement and removed bug labels Jun 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants