Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#56582 closed defect (fixed)

mpich-default @3.2.1: Error: Dependency 'gfortran' not found.

Reported by: lpn25 Owned by: eborisch (Eric A. Borisch)
Priority: Normal Milestone:
Component: ports Version: 2.5.0
Keywords: Cc: SpikeLightfoot, seanfarley (Sean Farley), MarcusCalhoun-Lopez (Marcus Calhoun-Lopez), Schamschula (Marius Schamschula), neilt (Neil Tiffin), dbl001 (dbl), mndavidoff (Monte Davidoff), gallafent, diochnos, dliessi (Davide Liessi), saherr1969 (Stephen H), dstrubbe (David Strubbe), jmroot (Joshua Root)
Port: mpich-default

Description

When trying to update octave from 4.2.2_1 to 4.4.0_1 I get the following:

Warning: No port gfortran found in the index.
--->  Fetching archive for mpi_select
--->  Attempting to fetch mpi_select-0.0_3.darwin_16.noarch.tbz2 from https://packages.macports.org/mpi_select
--->  Attempting to fetch mpi_select-0.0_3.darwin_16.noarch.tbz2.rmd160 from https://packages.macports.org/mpi_select
--->  Installing mpi_select @0.0_3
--->  Activating mpi_select @0.0_3
--->  Cleaning mpi_select
--->  Fetching archive for mpi-doc
--->  Attempting to fetch mpi-doc-3.2_0.darwin_16.noarch.tbz2 from https://packages.macports.org/mpi-doc
--->  Attempting to fetch mpi-doc-3.2_0.darwin_16.noarch.tbz2.rmd160 from https://packages.macports.org/mpi-doc
--->  Installing mpi-doc @3.2_0
--->  Activating mpi-doc @3.2_0
--->  Cleaning mpi-doc
--->  Computing dependencies for mpich-default
Error: Dependency 'gfortran' not found.
Error: Problem while installing mpich-default
Error: Follow https://guide.macports.org/#project.tickets to report a bug.

and it can't update octave. During the installation, it installs/updates a lot of ports including gcc7:

--->  Computing dependencies for gcc7
--->  Fetching archive for gcc7
--->  Attempting to fetch gcc7-7.3.0_1.darwin_16.x86_64.tbz2 from https://packages.macports.org/gcc7
--->  Attempting to fetch gcc7-7.3.0_1.darwin_16.x86_64.tbz2.rmd160 from https://packages.macports.org/gcc7
--->  Installing gcc7 @7.3.0_1
--->  Activating gcc7 @7.3.0_1
--->  Cleaning gcc7

Change History (32)

comment:1 Changed 6 years ago by SpikeLightfoot

Cc: SpikeLightfoot added

comment:2 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: seanfarley MarcusCalhoun-Lopez added
Keywords: octave gfortran removed
Owner: changed from mcalhoun@… to eborisch
Port: mpich-default added; octave removed
Summary: gfortran not found when updating octavempich-default @3.2.1: Error: Dependency 'gfortran' not found.

comment:3 Changed 6 years ago by Schamschula (Marius Schamschula)

Cc: Schamschula added

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

The output of port installed mpich\* would likely be helpful, as there are a lot of different subports and variants.

comment:5 Changed 6 years ago by SpikeLightfoot

% port installed mpich\*
None of the specified ports are installed.
Last edited 6 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:6 Changed 6 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Cc: neilt added

Adding reporter of duplicate bug #56592.

comment:7 Changed 6 years ago by Schamschula (Marius Schamschula)

Cc: dbl001 added

comment:8 Changed 6 years ago by mndavidoff (Monte Davidoff)

Cc: mndavidoff added

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

Perhaps related? #56577 #56596 #56551

I can't reproduce, (I can install mpich-default) but I'm running the latest (prerelease) version of port, so perhaps the noted recent change fixed it?

Last edited 6 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:10 Changed 6 years ago by jmroot (Joshua Root)

I don't see why the cxx_stdlib would cause a dependency on a nonexistent port to be added.

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

Agreed, but running the latest port is the only thing I can point to currently as to why I can’t reproduce.

If you just try installing ‘mpich-default’ directly (not when it gets pulled in by octave) does it work? How about a log from that if it doesn’t?

This is likely somewhere in the compilers port group that something is confused; hopefully Sean will have a chance to take a look (he authored it, if I recall correctly.)

comment:12 Changed 6 years ago by mndavidoff (Monte Davidoff)

I was able to install octave after upgrading to MacPorts 2.5.1.

$ port installed "mpich*" octave
The following ports are currently installed:
  mpich-default @3.2.1_3+gcc7 (active)
  octave @4.4.0_2+accelerate+app+docs+gfortran+graphicsmagick+qt5+sound (active)
Last edited 6 years ago by mndavidoff (Monte Davidoff) (previous) (diff)

comment:13 in reply to:  11 Changed 6 years ago by jwhowarth

Replying to eborisch:

Agreed, but running the latest port is the only thing I can point to currently as to why I can’t reproduce.

If you just try installing ‘mpich-default’ directly (not when it gets pulled in by octave) does it work? How about a log from that if it doesn’t?

This is likely somewhere in the compilers port group that something is confused; hopefully Sean will have a chance to take a look (he authored it, if I recall correctly.)

Oddly that works. Whereas under the current port 2.5.1 release, the simple 'sudo port upgrade outdated' failed with...

Warning: No port gfortran found in the index.
--->  Computing dependencies for mpich-default
Error: Dependency 'gfortran' not found.
Error: Problem while installing mpich-default
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
Last edited 6 years ago by jwhowarth (previous) (diff)

comment:14 Changed 6 years ago by gallafent

Cc: gallafent added

comment:15 in reply to:  12 Changed 6 years ago by lpn25

Replying to mndavidoff:

I was able to install octave after upgrading to MacPorts 2.5.1.

$ port installed "mpich*" octave
The following ports are currently installed:
  mpich-default @3.2.1_3+gcc7 (active)
  octave @4.4.0_2+accelerate+app+docs+gfortran+graphicsmagick+qt5+sound (active)

After upgrading mpich-default by itself and upgrading to Macports 2.5.1, running

sudo port upgrade octave

failed (it was installed as @4.2.2_1+accelerate+app+docs+fltk+gfortran+graphicsmagick+qt4+sound). However installing octave @4.4.0_2+accelerate+app+docs+gfortran+graphicsmagick+qt5+sound worked.

comment:16 Changed 6 years ago by neilt (Neil Tiffin)

I was also able to get it installed using the following procedure.

  1. Update to MacPorts 2.5.1
  2. Manually install mpich-default
  3. port upgrade octave.
Last edited 6 years ago by neilt (Neil Tiffin) (previous) (diff)

comment:17 Changed 6 years ago by SpikeLightfoot

Here's what I tried after successfully installing mpich-default::

jeff% sudo port selfupdate ; port echo outdated ; sudo port upgrade outdated
Password:
--->  Updating MacPorts base sources using rsync
MacPorts base version 2.5.1 installed,
MacPorts base version 2.5.2 downloaded.
--->  Updating the ports tree
--->  MacPorts base is outdated, installing new version 2.5.2
Installing new MacPorts release in /opt/local as root:admin; permissions 0755

The ports tree has been updated. To upgrade your installed ports, you should run
  port upgrade outdated
octave                         @4.2.2_1+accelerate+app+docs+fltk+gfortran+graphicsmagick+qt4+sound 
octave-general                 @2.1.0_0 
octave-io                      @2.4.11_0 
octave-miscellaneous           @1.2.1_3 
octave-optim                   @1.5.2_3+gcc6 
octave-struct                  @1.0.15_0 
--->  Computing dependencies for octave
--->  Fetching archive for octave
--->  Attempting to fetch octave-4.4.0_2+accelerate+app+docs+gfortran+graphicsmagick+qt4+sound.darwin_17.x86_64.tbz2 from https://packages.macports.org/octave
--->  Attempting to fetch octave-4.4.0_2+accelerate+app+docs+gfortran+graphicsmagick+qt4+sound.darwin_17.x86_64.tbz2 from http://sea.us.packages.macports.org/macports/packages/octave
--->  Attempting to fetch octave-4.4.0_2+accelerate+app+docs+gfortran+graphicsmagick+qt4+sound.darwin_17.x86_64.tbz2 from http://ywg.ca.packages.macports.org/mirror/macports/packages/octave
--->  Fetching distfiles for octave
--->  Verifying checksums for octave
--->  Extracting octave
--->  Applying patches to octave
--->  Configuring octave
--->  Building octave
--->  Staging octave into destroot
Error: Failed to destroot octave: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave/octave/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets to report a bug.

The log file says:

...
:info:destroot QSqlDatabase: QSQLITE driver not loaded
:info:destroot QSqlDatabase: available drivers: 
:info:destroot Cannot open data base file /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave/octave/work/octave-4.4.0/doc/interpreter/octave_interpreter.qch!
:info:destroot make[2]: *** [doc/interpreter/octave_interpreter.qhc] Error 255
:info:destroot make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave/octave/work/octave-4.4.0'
:info:destroot make[1]: *** [install-recursive] Error 1
:info:destroot make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave/octave/work/octave-4.4.0'
:info:destroot make: *** [install] Error 2
:info:destroot make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave/octave/work/octave-4.4.0'
:info:destroot Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave/octave/work/octave-4.4.0" && /usr/bin/make -w install DESTDIR=/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave/octave/work/destroot 
:info:destroot Exit code: 2
:error:destroot Failed to destroot octave: command execution failed
:debug:destroot Error code: CHILDSTATUS 25754 2
:debug:destroot Backtrace: command execution failed
:debug:destroot     while executing
:debug:destroot "system {*}$notty {*}$nice $fullcmdstring"
:debug:destroot     invoked from within
:debug:destroot "command_exec destroot"
:debug:destroot     (procedure "portdestroot::destroot_main" line 2)
:debug:destroot     invoked from within
:debug:destroot "$procedure $targetname"
:error:destroot See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave/octave/main.log for details.

Any ideas here?

comment:18 Changed 6 years ago by diochnos

Cc: diochnos added

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

Resolution: wontfix
Status: assignedclosed

Please open a new ticket for octave compilation (destroot) failing. I see some recent commits fixing up some missing dependencies for Qt5; perhaps they are still missing for Qt4? If you don't need +qt4, perhaps change to +qt5, while you're at it.

I'm closing this ticket; some things seem to be working, while some may still be broken, but I can't reproduce the issue. We've gone through two point releases that complicate the matter. If users are still having issues running 'sudo port install mpich' please open a new ticket.

comment:20 Changed 6 years ago by jmroot (Joshua Root)

Resolution: wontfix
Status: closedreopened

The problem hasn't gone away:

% port lint mpich-default +gfortran    
--->  Verifying Portfile for mpich-default
Error: Unknown dependency: gfortran
--->  1 errors and 0 warnings found.

% port deps mpich-default +gfortran    
Full Name: mpich-default @3.2.1_3
Build Dependencies:   pkgconfig
Library Dependencies: libxml2, gfortran
Runtime Dependencies: mpi_select, mpi-doc

Interesting in that it doesn't even have a variant of that name. Something somewhere is probably using variant_isset but not checking whether the variant exists.

comment:21 Changed 6 years ago by dliessi (Davide Liessi)

Cc: dliessi added

comment:22 Changed 6 years ago by dliessi (Davide Liessi)

Maybe a bug in fortran_variant_isset or fortran_variant_name in the compilers Portgroup?

comment:23 Changed 6 years ago by saherr1969 (Stephen H)

Yesterday I ran:

port selfupdate && port installed outdated && port upgrade outdated && port -q reclaim

Like others, it failed with:

--->  Computing dependencies for mpich-default
Error: Dependency 'gfortran' not found.

I then followed mndavidoff's suggestion of installing mpich-default as a requested port. This was successful.

When I re-ran port selfupdate && port upgrade outdated it ran through the octave build until it ran into the destroot error. This suggests that the maintainers of mpich-default need to modify their portfile somehow to allow this to be correctly processed as a dependency of octave.

--->  Staging octave into destroot
Error: Failed to destroot octave: command execution failed

Like previously reported, the log file contains:

:info:destroot   GEN      doc/interpreter/octave_interpreter.qhc
:info:destroot QSqlDatabase: QSQLITE driver not loaded
:info:destroot QSqlDatabase: available drivers:
:info:destroot Cannot open data base file /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_octave/octave/work/octave-4.4.0/doc/interpreter/octave_interpreter.qch!
:info:destroot make[2]: *** [doc/interpreter/octave_interpreter.qhc] Error 255
:info:destroot make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_octave/octave/work/octave-4.4.0'
:info:destroot make[1]: *** [install-recursive] Error 1
:info:destroot make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_octave/octave/work/octave-4.4.0'
:info:destroot make: *** [install] Error 2
:info:destroot make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_octave/octave/work/octave-4.4.0'
:info:destroot Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_octave/octave/work/octave-4.4.0" && /usr/bin/make -w install DESTDIR=/opt/loca
:info:destroot Exit code: 2
:error:destroot Failed to destroot octave: command execution failed
:debug:destroot Error code: CHILDSTATUS 98573 2
:debug:destroot Backtrace: command execution failed
:debug:destroot     while executing
:debug:destroot "system {*}$notty {*}$nice $fullcmdstring"
:debug:destroot     invoked from within
:debug:destroot "command_exec destroot"
:debug:destroot     (procedure "portdestroot::destroot_main" line 2)
:debug:destroot     invoked from within
:debug:destroot "$procedure $targetname"
:error:destroot See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_octave/octave/main.log for details.

A web search showed that QSqlDatabase is Qt's SQL Database class. Using port search for QSqlDatabase and QSQLITE provided no insight. So I then ran port search --line Qt | grep -i sqlite which revealed qt4 and qt5 plugins. Because the MacPorts Portfiles web page lists qt5-sqlite-plugin, I installed that, successfully, and then retried the port upgrade outdated command to upgrade octave. Again it failed during the destroot processing.

I reviewed the log file a bit higher and found:

:debug:clean Searching for dependency: qt4-mac
:debug:clean Found Dependency: receipt exists for qt4-mac
:debug:clean Searching for dependency: qscintilla-qt4
:debug:clean Found Dependency: receipt exists for qscintilla-qt4

The qt4 items suggested I needed qt4 and not qt5 sqlite plugin. Proceeded to:

  1. port uninstall qt5-sqlite-plugin (successful)
  2. port install qt4-mac-sqlite3-plugin (successful)
  3. port upgrade outdated (SUCCESSFUL)!!!!!!

Looking at the "source" for the portfile and found:

variant qt4 conflicts qt5 description {build the GUI using Qt4} {
    PortGroup qt4 1.0
    depends_lib-append port:qscintilla-qt4
    configure.args-replace --without-qt --with-qt=4
}

variant qt5 conflicts qt4 description {build the GUI using Qt5} {
    PortGroup qt5 1.0
    qt5.depends_component qttools sqlite-plugin
    depends_lib-append port:qscintilla-qt5
...

This suggests the fix for the destroot issue is to add a dependency check for qt4-mac-sqlite3-plugin.

I have no clue how to do this so hopefully the maintainers of octave can add this.

comment:24 Changed 6 years ago by saherr1969 (Stephen H)

Cc: saherr1969 added

comment:25 in reply to:  20 Changed 6 years ago by eborisch (Eric A. Borisch)

Cc: dstrubbe jmroot added

Replying to jmroot:

The problem hasn't gone away:

% port lint mpich-default +gfortran    
--->  Verifying Portfile for mpich-default
Error: Unknown dependency: gfortran
--->  1 errors and 0 warnings found.

% port deps mpich-default +gfortran    
Full Name: mpich-default @3.2.1_3
Build Dependencies:   pkgconfig
Library Dependencies: libxml2, gfortran
Runtime Dependencies: mpi_select, mpi-doc

Interesting in that it doesn't even have a variant of that name. Something somewhere is probably using variant_isset but not checking whether the variant exists.

It's something with the compilers portgroup. Tagging recent committers to the portgroup to see if they can look into that portion of it.

It appears that 'port install mpich-default +gfortran' (even though 'gfortran' appears nowhere in the mpich-default Portfile) is tripping some switches in compilers-1.0.tcl that are then being evaluated with (guessing here) inaccurate assumptions.

comment:26 Changed 6 years ago by kencu (Ken)

The error disappears if you comment out the following depends_lib-append line in the mpich-default Portfile:

# at least currently, the Fortran variants gccX and g95 match the name of the ports
depends_lib-append      port:[fortran_variant_name]

gfortran doesn't match a port name.

Last edited 6 years ago by kencu (Ken) (previous) (diff)

comment:27 Changed 6 years ago by jmroot (Joshua Root)

But it does match a variant name that the compilers portgroup can provide, though not one that mpich-default has enabled. Certainly fortran_variant_name is returning an incorrect result here.

comment:28 Changed 6 years ago by kencu (Ken)

Well, you know more than me, but fortran_variant_name is returning gfortran, which seems correct to me.

It's just that this line is now an error with that value, because there is no such port as gfortran

depends_lib-append      port:gfortran

It would seem that part of the Portfile logic needs to be reworked.

Last edited 6 years ago by kencu (Ken) (previous) (diff)

comment:29 Changed 6 years ago by jmroot (Joshua Root)

It's not correct because gfortran is not the active fortran variant. It can't be because it doesn't exist in this port. If there was such a variant, then yes I would agree the code adding the dependency would be incorrect.

comment:30 Changed 6 years ago by kencu (Ken)

I was looking at this from the point of view of the gfortran variant being set by the octave update request and then carrying over into the update of this port.

comment:31 Changed 6 years ago by jmroot (Joshua Root)

Resolution: fixed
Status: reopenedclosed

In 02845d3303cf3ec8f62be0ab4d2e764e431692d0/macports-ports (master):

compilers portgroup: update compilers.fortran_variants

compilers.setup changes compilers.variants based on which compilers have
been chosen, but it neglected to also update compilers.fortran_variants
in the same way. This led to incorrect information being returned by at
least the fortran_variant_name proc, in the case that a variant was
requested but didn't actually exist in the port.

Fixes: #56582

comment:32 Changed 6 years ago by saherr1969 (Stephen H)

Ticket #56653 created for destroot error associated with +qt4 variant of octave.

Last edited 6 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)
Note: See TracTickets for help on using tickets.