Opened 2 years ago

Last modified 23 months ago

#65377 reopened defect

Volk 2.5.1 Broken on <= 10.14, needs std::filesystem

Reported by: michaelld (Michael Dickens) Owned by: michaelld (Michael Dickens)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: ra1nb0w, tehcog (tehcog), larryv (Lawrence Velázquez)
Port: volk

Description (last modified by michaelld (Michael Dickens))

I totally messed up the Volk 2.5.1 update commit ... will fix ASAP! Fixed that but then Volk 2.5 requires C++17 std::filesystem so need to deal with that now!

Change History (14)

comment:1 Changed 2 years ago by ra1nb0w

maybe, doing a revert.

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

Description: modified (diff)

comment:3 Changed 2 years ago by michaelld (Michael Dickens)

I'll be working on this issue today. Major difficulty today is time (so many meetings) rather than the actual issue(s) ... but I'll get it done one way or the other!

comment:4 Changed 2 years ago by tehcog (tehcog)

Cc: tehcog added

comment:5 Changed 2 years ago by michaelld (Michael Dickens)

Owner: set to michaelld
Resolution: fixed
Status: newclosed

In 415d0cc2bc47ea704dfb678fb1fa9475f1d3ad73/macports-ports (master):

volk: fix 2.5.1 build

Closes: #65377

comment:6 Changed 2 years ago by ra1nb0w

macOS =< 10.14 don't have c++17 filesystem api

Run Build Command(s):/usr/bin/make -f Makefile cmTC_72415/fast && /Library/Developer/CommandLineTools/usr/bin/make  -f CMakeFiles/cmTC_72415.dir/build.make CMakeFiles/cmTC_72415.dir/build
Building CXX object CMakeFiles/cmTC_72415.dir/CheckIncludeFile.cxx.o
/usr/bin/clang++   -pipe -I/opt/local/libexec/boost/1.76/include -Os -DNDEBUG -I/opt/local/libexec/boost/1.76/include -stdlib=libc++ -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk -Wall  -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk -mmacosx-version-min=10.14 -std=gnu++17 -MD -MT CMakeFiles/cmTC_72415.dir/CheckIncludeFile.cxx.o -MF CMakeFiles/cmTC_72415.dir/CheckIncludeFile.cxx.o.d -o CMakeFiles/cmTC_72415.dir/CheckIncludeFile.cxx.o -c /opt/local/var/macports/build/_Users_rainbow_sources_github_macports-ports_science_volk/volk/work/build/CMakeFiles/CMakeTmp/CheckIncludeFile.cxx
/opt/local/var/macports/build/_Users_rainbow_sources_github_macports-ports_science_volk/volk/work/build/CMakeFiles/CMakeTmp/CheckIncludeFile.cxx:1:10: fatal error: 'filesystem' file not found
#include <filesystem>
         ^~~~~~~~~~~~
1 error generated.

Therefore it doesn't configure anymore.

Log https://build.macports.org/builders/ports-10.14_x86_64-builder/builds/131525/steps/install-port/logs/stdio

comment:7 Changed 2 years ago by ra1nb0w

Note from version 2.5.1

In the past, we relied on Boost for several tasks in volk_profile. For years, we minimized Boost usage to boost::filesystem. We mostly switched to C++17 std::filesystem years ago. The last distribution in our CI system that required Boost to build VOLK, was Ubuntu 14.04. Thus, now is the time to remove the Boost dependency completely and rely on C++17 features.

comment:8 Changed 2 years ago by michaelld (Michael Dickens)

Description: modified (diff)
Resolution: fixed
Status: closedreopened
Summary: Volk 2.5.1 BrokenVolk 2.5.1 Broken on <= 10.14, needs std::filesystem

Well crap

comment:9 Changed 2 years ago by michaelld (Michael Dickens)

comment:10 Changed 2 years ago by michaelld (Michael Dickens)

In 6cb7f281b76f2379d54b8e27aeef71a4d180d658/macports-ports (master):

volk: revert to 2.5.0

Requires std::filesystem via C++17, but that feature isn't easily available on OSX 10.[7-12]

Ref: #65377
Ref: https://github.com/macports/macports-ports/pull/15205

comment:11 Changed 2 years ago by michaelld (Michael Dickens)

OK so now Volk is back to 2.5.0 & should be more universally buildable. What to do here? I'd love a more universal solution for the libc++ issues. We have this Volk one (std::filesystem) as well as the recent Doxygen one (https://trac.macports.org/ticket/65314). We can try static linking of MP-libc++.a, but that will currently be a one-off solution for each port. It'd be great if we could somehow just move MP to use the MP-libc++.dylib ... @kencu is probably the most knowledgable about this! Do we have a MP ticket up for this discussion already? If so then we can tag it here & close this issue.

comment:12 Changed 2 years ago by ra1nb0w

Probably, to avoid unexpected crash/link issues the solution is to use https://github.com/gulrak/filesystem and finding a simple way to overwrite the namespace. Patching is tedious but generally the filesystem calls are very few.

comment:13 Changed 2 years ago by michaelld (Michael Dickens)

If I'm going to do a patch anyway, then I'll just do it to Volk straight up to re-allow dynamic picking of std::filesystem and boost::filesystem. I'm going to track down the commit we put in place & just create a reverse patch ... just for MacPorts needs. That way we can keep everything in 1 place & not change dependencies. And, Volk can remain as-is; no need to fix it up!

comment:14 Changed 23 months ago by larryv (Lawrence Velázquez)

Cc: larryv added
Note: See TracTickets for help on using tickets.