Opened 3 months ago

Last modified 4 weeks ago

#70477 closed defect

qt5-qtlocation @5.15.12_0 build failure — at Version 27

Reported by: mhanmore Owned by: MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Priority: Normal Milestone:
Component: ports Version: 2.9.3
Keywords: sonoma arm64 Cc: AgilentGCMS, markemer (Mark Anderson), ddrum2000, M-Rick, reneeotten (Renee Otten), MarcelSwart, jcm36
Port: qt5-qtlocation

Description (last modified by ryandesign (Ryan Carsten Schmidt))

I have hit this error both late in a (very long!!) build of QGIS3 and also in a fresh environment after sudo port uninstall installed. Both times with the same error:

--->  Building qt5-qtlocation
Error: Failed to build qt5-qtlocation: command execution failed
Error: See /opt/macports-test/var/macports/logs/_opt_macports-test_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_aqua_qt5/qt5-qtlocation/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug.
Error: Processing of port qt5-qtlocation failed

Full log from the clean install of just sudo port install qt5-qtlocation attached.

(Both are running on a fresh macports installation on an alternative path macports-test as per 2.2.4. Install Multiple MacPorts Copies)

Change History (29)

Changed 3 months ago by mhanmore

Attachment: macports_system_info.log added

System details log

comment:1 Changed 3 months ago by jmroot (Joshua Root)

Cc: MarcusCalhoun-Lopez removed
Keywords: sonoma added; sonomna removed
Milestone: MacPorts 2.10.0
Owner: set to MarcusCalhoun-Lopez
Port: qgis3 removed
Status: newassigned
Summary: qt5-qtlocation: Failed to build qt5-qtlocation: command execution failedqt5-qtlocation @5.15.12_0 build failure
:info:build In file included from src/mbgl/annotation/annotation_manager.cpp:1:
:info:build In file included from src/mbgl/annotation/annotation_manager.hpp:4:
:info:build In file included from src/mbgl/annotation/symbol_annotation_impl.hpp:24:
:info:build In file included from deps/boost/1.65.1/include/boost/geometry.hpp:17:
:info:build In file included from deps/boost/1.65.1/include/boost/geometry/geometry.hpp:43:
:info:build In file included from deps/boost/1.65.1/include/boost/geometry/core/radian_access.hpp:26:
:info:build In file included from deps/boost/1.65.1/include/boost/numeric/conversion/cast.hpp:33:
:info:build In file included from deps/boost/1.65.1/include/boost/numeric/conversion/converter.hpp:13:
:info:build In file included from deps/boost/1.65.1/include/boost/numeric/conversion/conversion_traits.hpp:13:
:info:build In file included from deps/boost/1.65.1/include/boost/numeric/conversion/detail/conversion_traits.hpp:18:
:info:build In file included from deps/boost/1.65.1/include/boost/numeric/conversion/detail/int_float_mixture.hpp:19:
:info:build In file included from deps/boost/1.65.1/include/boost/mpl/integral_c.hpp:32:
:info:build deps/boost/1.65.1/include/boost/mpl/aux_/integral_wrapper.hpp:73:31: error: integer value -1 is outside the valid range of values [0, 3] for this enumeration type [-Wenum-constexpr-conversion]
:info:build     typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
:info:build                               ^
:info:build deps/boost/1.65.1/include/boost/mpl/aux_/static_cast.hpp:24:47: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST'
:info:build #   define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
:info:build                                               ^

Changed 3 months ago by jmroot (Joshua Root)

Attachment: main.log.bz2 added

comment:2 Changed 3 months ago by ryandesign (Ryan Carsten Schmidt)

See #67324.

comment:3 Changed 3 months ago by M-Rick

I have the same build failure in Sonoma arm64, with a custom path as well. I used /opt/local/qgis. I already manage to build it one year ago with the same custom path /opt/local/qgis.

comment:4 Changed 3 months ago by M-Rick

I found how to resolve the bug. It needs to install boost181 first and the build of qt5-qtlocation will succeed. boost181 is already a dependency, but it is not build before qt5-qtlocation… That's why it's not working.

comment:5 Changed 2 months ago by jwhowse4

I have the package boost181 installed and qt5-qtlocation 5.15.12 still does not build for me under Sonoma 14.6.1. The same error occurs while trying to build qt5-qtlocation 5.15.15. Perhaps the question is how to get qt5-qtlocation to use boost 1.81 rather than boost 1.65.

comment:6 Changed 2 months ago by reneeotten (Renee Otten)

Cc: AgilentGCMS added

has duplicate 70696

comment:7 Changed 2 months ago by reneeotten (Renee Otten)

there are a few upstream bug reports on this, but with no clear solution - the issues appears to be in Boost.

See: QTBUG-116652, QTBUG-125709, and QTBUG-125862

I am not completely sure how just installing a newer, MacPorts provided boost helps here as you would still somehow need to make sure that it will not build the internal, vendored old boost165 version...

comment:8 Changed 2 months ago by AgilentGCMS

On #70477, it was suggested that I try building in trace mode with -t. However, that resulted in the following error:

port -t install py311-matplotlib +qt5
--->  Computing dependencies for py311-matplotlib
The following dependencies will be installed:
 flite
 py311-pyqt5
 qt5
 qt5-qtlocation
 qt5-qtmultimedia
 qt5-qtspeech
 qt5-qttranslations
 qt5-qtwebchannel
 qt5-qtwebsockets
 qt5-sqlite-plugin
Continue? [Y/n]:
Error: user "macports" doesn't exist
Error: See /Users/sbasu1/packages/macports/sonoma/var/macports/logs/_Users_sbasu1_Downloads_sources_macports-ports_aqua_qt5/qt5-qtlocation/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug.
Error: Processing of port py311-matplotlib failed

This error does not occur if I do not specify -t.

In #70477 I was asked why I was using a custom prefix. I have to install in a custom prefix because my mac is administered by my work and I don't have write permissions to system folders. Also, I seem to have a couple of different versions of boost installed.

$ port installed | grep boost
  boost176 @1.76.0_10+no_single+no_static+python312 (active)
  boost181 @1.81.0_10+no_single+no_static+python312 (active)
  poppler @24.04.0_1+boost (active)

comment:9 Changed 2 months ago by ptoshkov

I was able to build qt5-qtlocation on an Intel Macintosh running Sonoma 14.6.1.

I had to install CLT v15.1 from here: https://developer.apple.com/download/all/

Then immediately build qt5-qtlocation (don't run software update).

Thanks to Andrew Janke for the fix: https://github.com/octave-app/octave-app/issues/266

comment:10 Changed 2 months ago by markemer (Mark Anderson)

I have this same issue on arm64, macOS 15 Sequoia

comment:11 Changed 2 months ago by jwhowarth

It appears that this Xcode 15.4 and Xcode 16 compile failure can be eliminated if we add -Wno-enum-constexpr-conversion to the compile flags.

--- src/3rdparty/mapbox-gl-native/mapbox-gl-native.pro.orig	2024-09-17 20:54:13
+++ src/3rdparty/mapbox-gl-native/mapbox-gl-native.pro	2024-09-17 20:58:59
@@ -19,7 +19,8 @@
     -O3 \
     -ftemplate-depth=1024 \
     -fvisibility-inlines-hidden \
-    -fvisibility=hidden
+    -fvisibility=hidden \
+    -Wno-enum-constexpr-conversion
Last edited 2 months ago by jwhowarth (previous) (diff)

comment:12 in reply to:  11 Changed 2 months ago by reneeotten (Renee Otten)

Replying to jwhowarth:

It appears that this Xcode 15.4 and Xcode 16 compile failure can be eliminated if we add -Wno-enum-constexpr-conversion to the compile flags.

--- src/3rdparty/mapbox-gl-native/mapbox-gl-native.pro.orig	2024-09-17 20:54:13
+++ src/3rdparty/mapbox-gl-native/mapbox-gl-native.pro	2024-09-17 20:58:59
@@ -19,7 +19,8 @@
     -O3 \
     -ftemplate-depth=1024 \
     -fvisibility-inlines-hidden \
-    -fvisibility=hidden
+    -fvisibility=hidden \
+    -Wno-enum-constexpr-conversion

ah, I tried setting that as a configure.arg at the top-level build but that didn't work. I guess patching it directly in the source there is the way to go.

I just updated to Sequoia so will need to rebuild all my ports first before checking that this indeed results in a working install.

comment:13 Changed 8 weeks ago by ddrum2000

Cc: ddrum2000 added

comment:14 Changed 8 weeks ago by MarcelSwart

I've gotten the same problem on MacOS Sequoia. And the problem is localized:

:info:archivefetch --->  qt5-qtlocation-5.15.15_0.darwin_24.arm64.tbz2 doesn't seem to exist in /opt/local/var/macports/incoming/verified
:msg:archivefetch --->  Attempting to fetch qt5-qtlocation-5.15.15_0.darwin_24.arm64.tbz2 from https://packages.macports.org/qt5-qtlocation
:debug:archivefetch Fetching archive failed: The requested URL returned error: 404
:msg:archivefetch --->  Attempting to fetch qt5-qtlocation-5.15.15_0.darwin_24.arm64.tbz2 from https://lis.pt.packages.macports.org/qt5-qtlocation
:debug:archivefetch Fetching archive failed: The requested URL returned error: 404
:msg:archivefetch --->  Attempting to fetch qt5-qtlocation-5.15.15_0.darwin_24.arm64.tbz2 from https://nue.de.packages.macports.org/qt5-qtlocation

I've checked these places, and the Sequoia files are simply not yet there. Using the darwin_23 file seems to work.

Last edited 8 weeks ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:15 in reply to:  4 ; Changed 8 weeks ago by ryandesign (Ryan Carsten Schmidt)

Cc: M-Rick reneeotten MarcelSwart added

Replying to M-Rick:

I found how to resolve the bug. It needs to install boost181 first and the build of qt5-qtlocation will succeed. boost181 is already a dependency, but it is not build before qt5-qtlocation… That's why it's not working.

boost181 is not listed as a dependency of qt5-qtlocation, and neither is any other version of boost. From comment:1 we can see that qt5-qtlocation includes a bundled copy of boost 1.65.1 which is an old version that has a bug when building with new compilers. If qt5-qtlocation uses boost181 if it is found and then builds successfully, then that is a bug in the qt5-qtlocation port, such as that the boost181 dependency should be added to it and its revision should be increased.

Replying to reneeotten:

there are a few upstream bug reports on this, but with no clear solution - the issues appears to be in Boost.

I already provided the clear solution in comment:2, showing that we fixed the bug in the MacPorts boost ports so the solution is to either make qt5-qtlocation use a MacPorts boost port or apply the patch to qt5-qtlocation's bundled copy of boost. There have been several other MacPorts tickets about this boost bug if you need more information about how to fix it.

Replying to MarcelSwart:

I've checked these places, and the Sequoia files are simply not yet there.

There are no prebuilt archives for Sequoia for any port yet. I have not set up the build machines yet. This is irrelevant; if I were to set up the build machines, they would fail to build the port with the same error you get. The problem has to be fixed in the affected port first.

comment:16 in reply to:  15 Changed 8 weeks ago by ryandesign (Ryan Carsten Schmidt)

Replying to ryandesign:

the boost181 dependency should be added to it and its revision should be increased.

If using MacPorts boost is a viable solution and if that is the solution we want to use, then instead of just adding the dependency, the boost portgroup should be used and told which version of boost to use because we offer several different versions of boost in MacPorts and we want qtlocation to use the one we specify.

comment:17 Changed 7 weeks ago by MarcelSwart

This is not irrelevant. Like I said: copying the file from the previous OS solved the problem. It’s not about boost181. Pymol works again as it should.

comment:18 Changed 7 weeks ago by ryandesign (Ryan Carsten Schmidt)

Marcel, the fact that binaries are not available for Sequoia is irrelevant to this bug report. Binaries cannot be available for this port for Sequoia until this bug is fixed and I set up the build machines. The lack of a binary archive is not to be considered a bug; see #60756.

MacPorts doesn't offer a way for you to use the Sonoma binary on Sequoia and you should not make any attempt to do so. The whole reason why MacPorts offers separate binaries for each OS version is that they sometimes differ.

M-Rick said using boost181 fixed their problem so I was responding to that.

comment:19 Changed 7 weeks ago by markemer (Mark Anderson)

Cc: ddrum2000 M-Rick reneeotten MarcelSwart removed

You we could also require boost and boost176 to be installed on macOS 15, that fixed if for me. If we're not covering up a real bug by suppressing that warning, patching would work too.

comment:20 Changed 7 weeks ago by markemer (Mark Anderson)

I'm thinking maybe we should use the boost portgroup as well, so we never use the included version of boost, which is very old and will likely cause us a lot of build trouble moving forward.

comment:21 Changed 7 weeks ago by markemer (Mark Anderson)

Cc: markemer added

comment:22 in reply to:  19 ; Changed 7 weeks ago by reneeotten (Renee Otten)

Cc: ddrum2000 M-Rick reneeotten MarcelSwart added

Replying to markemer: do not remove people that were CCed to this ticket.

comment:23 in reply to:  22 Changed 7 weeks ago by markemer (Mark Anderson)

Replying to reneeotten:

Replying to markemer: do not remove people that were CCed to this ticket.

Sorry, I don't even know how I did that.

comment:24 in reply to:  9 Changed 7 weeks ago by AgilentGCMS

Replying to ptoshkov:

I was able to build qt5-qtlocation on an Intel Macintosh running Sonoma 14.6.1.

I had to install CLT v15.1 from here: https://developer.apple.com/download/all/

Then immediately build qt5-qtlocation (don't run software update).

I have CLT 15.3 installed. Are you saying I need to downgrade to 15.1?

comment:25 in reply to:  15 Changed 7 weeks ago by AgilentGCMS

Replying to ryandesign:

Replying to M-Rick:

I found how to resolve the bug. It needs to install boost181 first and the build of qt5-qtlocation will succeed. boost181 is already a dependency, but it is not build before qt5-qtlocation… That's why it's not working.

boost181 is not listed as a dependency of qt5-qtlocation, and neither is any other version of boost. From comment:1 we can see that qt5-qtlocation includes a bundled copy of boost 1.65.1 which is an old version that has a bug when building with new compilers. If qt5-qtlocation uses boost181 if it is found and then builds successfully, then that is a bug in the qt5-qtlocation port, such as that the boost181 dependency should be added to it and its revision should be increased.

What I'm getting from the discussion is that if boost181 is installed, then qt5-qtlocation should build successfully. However, I do have boost181 installed, and I still have this error. I suspect that is because qt5-qtlocation is trying to use the bundled boost and not the already installed boost181. How do I tell it to do otherwise?

comment:26 Changed 7 weeks ago by jcm36

Cc: jcm36 added

comment:27 Changed 7 weeks ago by ryandesign (Ryan Carsten Schmidt)

Description: modified (diff)
Note: See TracTickets for help on using tickets.