Opened 3 years ago

Closed 3 years ago

#61583 closed defect (fixed)

py38-graph-tool @2.33_0 +openmp Build Failure

Reported by: bakergilx (Dennis Baker) Owned by: essandess (Steve Smith)
Priority: Normal Milestone:
Component: ports Version: 2.6.4
Keywords: bigsur Cc:
Port: py-graph-tool

Description

Failed to build py38-graph-tool: command execution failed

on MacOS 11.0.1 and Xcode 12.2. See attached log file

Attachments (1)

main.log (230.6 KB) - added by bakergilx (Dennis Baker) 3 years ago.
main.log

Download all attachments as: .zip

Change History (14)

Changed 3 years ago by bakergilx (Dennis Baker)

Attachment: main.log added

main.log

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

Keywords: bigsur added; Big Sur removed
Port: py-graph-tool added; py38-graph-tool removed

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

Error appears to be:

:info:build   "typeinfo for graph_tool::ValueException", referenced from:
:info:build       betweenness(graph_tool::GraphInterface&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&, boost::any, boost::any, boost::any) in graph_betweenness.o
:info:build       norm_betweenness(graph_tool::GraphInterface&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&, boost::any, boost::any) in graph_betweenness.o
:info:build       eigentrust(graph_tool::GraphInterface&, boost::any, boost::any, double, unsigned long) in graph_eigentrust.o
:info:build       eigenvector(graph_tool::GraphInterface&, boost::any, boost::any, double, unsigned long) in graph_eigenvector.o
:info:build       hits(graph_tool::GraphInterface&, boost::any, boost::any, boost::any, double, unsigned long) in graph_hits.o
:info:build       katz(graph_tool::GraphInterface&, boost::any, boost::any, boost::any, long double, double, unsigned long) in graph_katz.o
:info:build       pagerank(graph_tool::GraphInterface&, boost::any, boost::any, boost::any, double, double, unsigned long) in graph_pagerank.o
:info:build       ...
:info:build ld: symbol(s) not found for architecture x86_64
:info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)

comment:3 Changed 3 years ago by bakergilx (Dennis Baker)

Owner: set to count0
Status: newassigned

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

Owner: count0 deleted

comment:5 Changed 3 years ago by ceandrade (Carlos Eduardo de Andrade)

It also fails for py39 and boost +python39 in the same platform.

comment:6 Changed 3 years ago by essandess (Steve Smith)

Same error for version 1.37, in addition to other link errors. Also please see https://git.skewed.de/count0/graph-tool/-/issues/702.

:info:build   CXXLD    libgraph_tool_centrality.la
…
:info:build Undefined symbols for architecture x86_64:
:info:build   "graph_tool::ActionNotFound::ActionNotFound(std::type_info const&, std::__1::vector<std::type_info const*, std::__1::allocator<std::type_info const*> > const&)", referenced from:
:info:build       betweenness(graph_tool::GraphInterface&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&, boost::any, boost::any, boost::any) in graph_betweenness.o
:info:build       norm_betweenness(graph_tool::GraphInterface&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&, boost::any, boost::any) in graph_betweenness.o
:info:build       central_point(graph_tool::GraphInterface&, boost::any) in graph_betweenness.o
:info:build       do_get_closeness(graph_tool::GraphInterface&, boost::any, boost::any, bool, bool) in graph_closeness.o
:info:build       eigentrust(graph_tool::GraphInterface&, boost::any, boost::any, double, unsigned long) in graph_eigentrust.o
:info:build       eigenvector(graph_tool::GraphInterface&, boost::any, boost::any, double, unsigned long) in graph_eigenvector.o
:info:build       hits(graph_tool::GraphInterface&, boost::any, boost::any, boost::any, double, unsigned long) in graph_hits.o
:info:build       ...

comment:7 Changed 3 years ago by essandess (Steve Smith)

This issue also exists with boost version 1.76.0. (See https://github.com/macports/macports-ports/pull/11272.)

comment:8 Changed 3 years ago by essandess (Steve Smith)

I believe that I've isolated the cause: the environment variable MACOSX_DEPLOYMENT_TARGET set during configurations causes this issue.

When not set, graph-tool builds correctly, shown using the MWE build below.

I'll post a PR with a graph-tool update.

Is there a quick way of preventing the environment variable MACOSX_DEPLOYMENT_TARGET from being set?

MWE graph-tool build:

export CC=/opt/local/bin/clang-mp-9.0
export CXX=/opt/local/bin/clang++-mp-9.0
export CC_PRINT_OPTIONS='YES' CC_PRINT_OPTIONS_FILE='./.CC_PRINT_OPTIONS'
export CFLAGS='-pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk -arch x86_64'
export CPATH='/opt/local/include'
export CXXFLAGS='-pipe -isystem/opt/local/libexec/boost/1.76/include -Os -stdlib=libc++ -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk -arch x86_64'
export INSTALL='/usr/bin/install -c'
export LDFLAGS='-L/opt/local/libexec/boost/1.76/lib -L/opt/local/lib -Wl,-headerpad_max_install_names -L/opt/local/lib -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk -arch x86_64'
export LIBRARY_PATH='/opt/local/lib'
export PYTHON='/opt/local/Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9'
export PYTHON_CPPFLAGS='-I/opt/local/Library/Frameworks/Python.framework/Versions/3.9/include/python3.9'
export PYTHON_EXTRA_LDFLAGS='-L/opt/local/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/.. -lpython3.9'
export PYTHON_LDFLAGS='-L/opt/local/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/.. -lpython3.9'
export PYTHON_VERSION='3.9'
export DEVELOPER_DIR='/Library/Developer/CommandLineTools'
export SDKROOT='/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk'
# export MACOSX_DEPLOYMENT_TARGET='11.0'

./configure --prefix=/opt/local --with-boost=/opt/local/libexec/boost/1.71 --with-boost-python=boost_python39-mt --with-boost-coroutine=boost_coroutine-mt --exec-prefix=/opt/local/Library/Frameworks/Python.framework/Versions/3.9 --with-expat=yes --with-expat-inc=/opt/local/include --with-expat-lib="-L/opt/local/lib -lexpat" --enable-openmp

make

comment:9 Changed 3 years ago by kencu (Ken)

Even if unsetting MACOSX_DEPLOYMENT_TARGET hacks around the build error, it is very hard to imagine that being a proper fix to put into the MacPorts repo.

comment:11 in reply to:  9 Changed 3 years ago by essandess (Steve Smith)

Replying to kencu:

Even if unsetting MACOSX_DEPLOYMENT_TARGET hacks around the build error, it is very hard to imagine that being a proper fix to put into the MacPorts repo.

For posterity, upstream disagrees: https://git.skewed.de/count0/graph-tool/-/issues/702#note_3858

I'm not sure where the issue lies, I'm just glad to have a working graph-tool port again.

comment:12 Changed 3 years ago by kencu (Ken)

I see. I wish I understood better why setting it fails, and why clearing it works, but if it works it works.

Steve, thank you for taking the time to (at least try) to see what upstream thought about it. That is a gold star event!

comment:13 Changed 3 years ago by essandess (Steve Smith)

Owner: set to essandess
Resolution: fixed
Status: assignedclosed

In 8e708d5e0ca881c8d911e1568e6382ab0f6c2175/macports-ports (master):

py-graph-tool: Update to version 2.37, portgroup boost, bugfixes

  • Update to version 2.37
  • Use PG boost
  • Fixes: #61583
Note: See TracTickets for help on using tickets.