[MacPorts] #65404: gate @8.2_2+geant4105: error: "ROOT requires support for C++14 or higher."

MacPorts noreply at macports.org
Thu Jul 14 22:15:39 UTC 2022


#65404: gate @8.2_2+geant4105: error: "ROOT requires support for C++14 or higher."
---------------------+----------------------
  Reporter:  lv0021  |      Owner:  mojca
      Type:  defect  |     Status:  assigned
  Priority:  Normal  |  Milestone:
 Component:  ports   |    Version:  2.7.2
Resolution:          |   Keywords:
      Port:  gate    |
---------------------+----------------------

Old description:

> Following the command {{{port install gate}}} I receive a build error.
>
> {{{--->  Building gate }}}
> {{{Error: Failed to build gate: command execution failed}}}
>
> The main.log file is attached. I'm using osx monterey 12.4.
>
> There is a previous entry for gate (from 2 years ago) but no solution is
> proposed. I'm new to macports so the solution may be simple

New description:

 Following the command {{{port install gate}}} I receive a build error.

 {{{
 --->  Building gate
 Error: Failed to build gate: command execution failed
 }}}

 The main.log file is attached. I'm using osx monterey 12.4.

 There is a previous entry for gate (from 2 years ago) but no solution is
 proposed. I'm new to macports so the solution may be simple

--

Comment (by ryandesign):

 Has duplicate #65486.

 The simple solution I was envisioning was

 * using `compiler.cxx_standard 2014` to get MacPorts to pick a
 C++14-capable compiler, and
 * using `configure.cxxflags-append -std=c++14` to tell the compiler to use
 C++14 mode.

 But I envisioned that before looking at the Portfile, and I now see that
 it

 * uses `compiler.blacklist` and `compiler.whitelist` to, according to a
 comment, force the same compiler as root6, yet this code does not match
 what is currently in the root6 portfile, and
 * uses a patch and reinplace to replace the `-std=c++11` flag hardcoded in
 the CMakeLists.txt with `-std=c++17`.

 Usually the use of `compiler.whitelist` is not desired because it
 overrides anything in `compiler.blacklist`, and `compiler.blacklist`
 should usually be avoided in favor of `compiler.cxx_standard` if all
 you're doing is requesting a compiler supporting a particular C++
 standard.

 It's unclear to me why the `-std=c++17` flag isn't actually being used
 then since the CMakeLists.txt says to use it. In fact it is being used,
 but two `-std=c++11` flags are also being used, one before and one after
 `-std=c++17`, and the last one wins. I'm not sure where those `-std=c++11`
 flags are coming from. Possibly from geant4.10.5.

 The root6 portfile currently contains code that uses C++17 on macOS 10.14
 and later and C++14 otherwise. If that distinction is necessary, then
 maybe the gate port should do the same, but it's not ideal for the gate
 port (and any other ports that use root6) to have to duplicate this
 compiler-selection-and-flag-setting code and keep it in sync with the
 root6 portfile.

-- 
Ticket URL: <https://trac.macports.org/ticket/65404#comment:2>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list