Opened 4 years ago

Closed 3 years ago

Last modified 3 years ago

#62331 closed defect (wontfix)

mpi portgroup: gccdevel variant not available with mpich

Reported by: platipodium (Carsten Lemmen) Owned by: eborisch (Eric A. Borisch)
Priority: Normal Milestone:
Component: ports Version: 2.6.4
Keywords: Cc: tenomoto (Takeshi Enomoto), mascguy (Christopher Nielsen)
Port: netcdf-fortran

Description

With variant +mpich +gccdevel, netcdf-fortran wrongly requests libgcc10 (which conflicts with the installed libgccdevel)

$ sudo port install netcdf-fortran +gccdevel +mpich
--->  Computing dependencies for netcdf-fortran
Error: Can't install libgcc10 because conflicting ports are active: libgcc-devel
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
Error: Processing of port netcdf-fortran failed
$ port installed |grep mpich
  mpich-default @3.4.1_0+gccdevel (active)

Change History (11)

comment:1 Changed 4 years ago by mf2k (Frank Schima)

Something strange is going on:

the gccdevel variant does not appear here:

$ port info --variants netcdf-fortran +gccdevel +mpich
variants: g95, gcc10, gcc5, gcc6, gcc7, gcc8, gcc9, mpich, openmpi

But it does appear here:

$ port variants netcdf-fortran
netcdf-fortran has the variants:
   g95: Build using the g95 Fortran compiler
     * conflicts with gcc10 gcc44 gcc45 gcc46 gcc47 gcc48 gcc49 gcc5 gcc6 gcc7 gcc8 gcc9 gccdevel
[+]gcc10: Build using the MacPorts gcc 10 compiler
     * conflicts with g95 g95 gcc44 gcc45 gcc46 gcc47 gcc48 gcc49 gcc5 gcc6 gcc7 gcc8 gcc9 gccdevel
   gcc44: Build using the MacPorts gcc 4.4 compiler
     * conflicts with g95 g95 gcc10 gcc45 gcc46 gcc47 gcc48 gcc49 gcc5 gcc6 gcc7 gcc8 gcc9 gccdevel
   gcc45: Build using the MacPorts gcc 4.5 compiler
     * conflicts with g95 g95 gcc10 gcc44 gcc46 gcc47 gcc48 gcc49 gcc5 gcc6 gcc7 gcc8 gcc9 gccdevel
   gcc46: Build using the MacPorts gcc 4.6 compiler
     * conflicts with g95 g95 gcc10 gcc44 gcc45 gcc47 gcc48 gcc49 gcc5 gcc6 gcc7 gcc8 gcc9 gccdevel
   gcc47: Build using the MacPorts gcc 4.7 compiler
     * conflicts with g95 g95 gcc10 gcc44 gcc45 gcc46 gcc48 gcc49 gcc5 gcc6 gcc7 gcc8 gcc9 gccdevel
   gcc48: Build using the MacPorts gcc 4.8 compiler
     * conflicts with g95 g95 gcc10 gcc44 gcc45 gcc46 gcc47 gcc49 gcc5 gcc6 gcc7 gcc8 gcc9 gccdevel
   gcc49: Build using the MacPorts gcc 4.9 compiler
     * conflicts with g95 g95 gcc10 gcc44 gcc45 gcc46 gcc47 gcc48 gcc5 gcc6 gcc7 gcc8 gcc9 gccdevel
   gcc5: Build using the MacPorts gcc 5 compiler
     * conflicts with g95 g95 gcc10 gcc44 gcc45 gcc46 gcc47 gcc48 gcc49 gcc6 gcc7 gcc8 gcc9 gccdevel
   gcc6: Build using the MacPorts gcc 6 compiler
     * conflicts with g95 g95 gcc10 gcc44 gcc45 gcc46 gcc47 gcc48 gcc49 gcc5 gcc7 gcc8 gcc9 gccdevel
   gcc7: Build using the MacPorts gcc 7 compiler
     * conflicts with g95 g95 gcc10 gcc44 gcc45 gcc46 gcc47 gcc48 gcc49 gcc5 gcc6 gcc8 gcc9 gccdevel
   gcc8: Build using the MacPorts gcc 8 compiler
     * conflicts with g95 g95 gcc10 gcc44 gcc45 gcc46 gcc47 gcc48 gcc49 gcc5 gcc6 gcc7 gcc9 gccdevel
   gcc9: Build using the MacPorts gcc 9 compiler
     * conflicts with g95 g95 gcc10 gcc44 gcc45 gcc46 gcc47 gcc48 gcc49 gcc5 gcc6 gcc7 gcc8 gccdevel
   gccdevel: Build using the MacPorts gcc devel compiler
     * conflicts with g95 g95 gcc10 gcc44 gcc45 gcc46 gcc47 gcc48 gcc49 gcc5 gcc6 gcc7 gcc8 gcc9
   mpich: Build using the MPICH compiler
     * conflicts with openmpi
   openmpi: Build using the OpenMPI compiler
     * conflicts with mpich

comment:2 Changed 4 years ago by mf2k (Frank Schima)

Cc: tenomoto removed
Owner: set to tenomoto
Status: newassigned

comment:3 Changed 4 years ago by jmroot (Joshua Root)

Cc: tenomoto added
Keywords: libgcc netcdf dependency conflict removed
Owner: changed from tenomoto to eborisch
Summary: netcdf-fortran: wrong dependency to libgcc10 when gccdevel is requestedmpi portgroup: gccdevel variant not available with mpich

It's a bit confusing, but it seems to be deliberate that setting the mpich variant actually prevents the gccdevel variant from being created. This is because there was no mpich-gccdevel subport, but that was recently created in [e0ff7b8767aefa97bc7a2e12d96927af2d03cd09/macports-ports], so the mpi portgroup needs to be updated accordingly.

comment:4 Changed 4 years ago by eborisch (Eric A. Borisch)

comment:5 Changed 4 years ago by jmroot (Joshua Root)

Resolution: fixed
Status: assignedclosed

In 026664875e100d5ae5b157f95c30469eeacccc05/macports-ports (master):

mpi pg: fix supported compilers

Should have happened after e.g. e0ff7b8 and bb990ae.

Closes: https://github.com/macports/macports-ports/pull/10070
Closes: #62331

comment:6 Changed 3 years ago by platipodium (Carsten Lemmen)

Resolution: fixed
Status: closedreopened

I don't see this fixed. Occurs still with libmed or netcdf-fortran, when requesting +mpich+gccdevel. See deps/rdeps to show:

port deps libmed +gccdevel+mpich
Full Name: libmed @4.0.0_2+gfortran+mpich
Build Dependencies:   cmake, gcc11
Library Dependencies: hdf5, libgcc, mpich-default
port deps netcdf-fortran +gccdevel+mpich
Full Name: netcdf-fortran @4.5.3_0+gcc10+mpich
Build Dependencies:   gcc10, clang-12
Library Dependencies: netcdf, libgcc, libgcc10, mpich-gcc10, libgcc

But of course gccdvel prevents gcc10/gcc11 so this cannot work ...

comment:7 Changed 3 years ago by platipodium (Carsten Lemmen)

If I dig deeper, the dependencies are correct when requesting solely +gccdevel but are mixed up when requesting +mpich+gccdevel (btw, the same for openmpi.

 port rdeps netcdf-fortran +mpich+gccdevel
The following ports are dependencies of netcdf-fortran @4.5.3_0+gcc10+mpich:
  gcc10
    texinfo
      xz
        libiconv
          gperf
        gettext
          ncurses
      help2man
        perl5.30
          db48
          gdbm
            readline
        p5.30-locale-gettext
    cctools
    gmp
    isl
    ld64
      ld64-xcode
    libmpc
      mpfr
    zlib
    gcc_select
    libgcc10
      libgcc
        libgcc11
  clang-12
    cmake
      libcxx
      curl
        pkgconfig
        libidn2
          libunistring
            perl5
              perl5.28
            autoconf
              m4
            automake
            libtool
              xattr
                unzip
        libpsl
          python39
            bzip2
            expat
            libedit
            libffi
              expect
                tcl
              dejagnu
            openssl
            sqlite3
            python_select
            python3_select
        zstd
          lz4
        curl-ca-bundle
      libarchive
        libxml2
          icu
        lzo2
      libuv
    libomp
    llvm-12
      xar
      llvm_select
    clang_select
  netcdf
    mpich-default
      gcc-devel
        libgcc-devel
      hwloc
      mpi_select
      mpi-doc
    hdf5
  mpich-gcc10
Last edited 3 years ago by platipodium (Carsten Lemmen) (previous) (diff)

comment:8 Changed 3 years ago by mascguy (Christopher Nielsen)

Cc: mascguy added

comment:9 Changed 3 years ago by mascguy (Christopher Nielsen)

FYI, we specifically removed support for gccdevel from the MPI ports, to reduce the number of combinations we support. (Previously we had so many, that it was next to impossible to maintain them all.) Nor can we guarantee that they'll even work with an upstream compiler.

Hence the removal.

Last edited 3 years ago by mascguy (Christopher Nielsen) (previous) (diff)

comment:10 Changed 3 years ago by mascguy (Christopher Nielsen)

Resolution: wontfix
Status: reopenedclosed

comment:11 in reply to:  9 Changed 3 years ago by mascguy (Christopher Nielsen)

Replying to mascguy:

FYI, we specifically removed support for gccdevel from the MPI ports, to reduce the number of combinations we support. (Previously we had so many, that it was next to impossible to maintain them all.) Nor can we guarantee that they'll even work with an upstream compiler.

Hence the removal.

All that being said, we'll certainly try to help you if possible. Also of note, while openmpi is usable with gcc-11, mpich fails to build with it. And that's still on our to-do list: issue:63606

Note: See TracTickets for help on using tickets.