Source code support?
Does anyone know where the best place to ask about support building and modifying PrusaSlicer is? Is there a discord server with people who contribute to the software?
In this particular instance, my question is about building on macOS. It appears that the instructions for building for macOS are incomplete. Specifically, I've identified a whole set of additional dependencies that are needed:
boost cereal cgal glew ilmbase libjpeg libpng nlopt openvdb qhull tbb wxwidgets
However, it appears also that the recommended method for getting hold of dependencies (Homebrew) doesn't give you these dependencies in a working state. In the source's current state, it seems that while `cmake` succeeds, make fails due to libilmbase not being found. That appears to be caused by this error in a cmake script
--- a/cmake/modules/FindOpenVDB.cmake +++ b/cmake/modules/FindOpenVDB.cmake @@ -355,7 +355,7 @@ if (IlmBase_FOUND AND NOT TARGET IlmBase::Half) message(STATUS "Falling back to IlmBase found by pkg-config...") find_library(IlmHalf_LIBRARY NAMES Half) - if(IlmHalf_LIBRARY-NOTFOUND OR NOT IlmBase_INCLUDE_DIRS) + if("${IlmHalf_LIBRARY}" STREQUAL "IlmHalf_LIBRARY-NOTFOUND" OR NOT IlmBase_INCLUDE_DIRS) just_fail("IlmBase::Half can not be found!") endif()
This only gets you as far as `cmake` failing with a sensible error message:
CMake Warning at cmake/modules/FindOpenVDB.cmake:345 (message): IlmBase::Half can not be found! Call Stack (most recent call first): cmake/modules/FindOpenVDB.cmake:367 (just_fail) CMakeLists.txt:555 (find_package) CMake Error at CMakeLists.txt:560 (message): OpenVDB could not be found with the bundled find module. You can try to specify the find module location of your OpenVDB installation with the OPENVDB_FIND_MODULE_PATH cache variable.
There's also some issues with libjpeg not supporting JPEG extensions for adding alpha channel support. What this all adds up to to me is that I'm getting hold of dependencies in the "wrong" way, and that the guys at Prusa actually building this are likely getting hold of them in a different way. Does anyone have any idea what the right way to get things building on macOS is?
RE: Source code support?
I'm disappointed that this post hasn't been answered yet, because I'm having trouble building the current git repo in Linux. Where do the normal PrusaSlicer developers discuss issues?
[ 83%] Building CXX object OpenEXR/IlmImf/CMakeFiles/IlmImf.dir/ImfZip.cpp.o /home/ttabi/PrusaSlicer/deps/build/dep_OpenEXR-prefix/src/dep_OpenEXR/OpenEXR/IlmImf/ImfDwaCompressor.cpp: In member function ‘int Imf_2_5::DwaCompressor::compress(const char*, int, Imath_2_5::Box2i, const char*&)’: /home/ttabi/PrusaSlicer/deps/build/dep_OpenEXR-prefix/src/dep_OpenEXR/OpenEXR/IlmImf/ImfDwaCompressor.cpp:2180:26: error: ‘compressBound’ was not declared in this scope; did you mean ‘Compression’? 2180 | uLongf outSize = compressBound (inSize); | ^~~~~~~~~~~~~ | Compression /home/ttabi/PrusaSlicer/deps/build/dep_OpenEXR-prefix/src/dep_OpenEXR/OpenEXR/IlmImf/ImfDwaCompressor.cpp:2218:34: error: ‘compressBound’ was not declared in this scope; did you mean ‘Compression’? 2218 | uLongf destLen = compressBound ( | ^~~~~~~~~~~~~ | Compression /home/ttabi/PrusaSlicer/deps/build/dep_OpenEXR-prefix/src/dep_OpenEXR/OpenEXR/IlmImf/ImfDwaCompressor.cpp:2271:25: error: ‘compressBound’ was not declared in this scope; did you mean ‘Compression’? 2271 | uLongf dstLen = compressBound ((uLongf)*rleUncompressedSize); | ^~~~~~~~~~~~~ | Compression /home/ttabi/PrusaSlicer/deps/build/dep_OpenEXR-prefix/src/dep_OpenEXR/OpenEXR/IlmImf/ImfDwaCompressor.cpp: In member function ‘void Imf_2_5::DwaCompressor::initializeBuffers(size_t&)’: /home/ttabi/PrusaSlicer/deps/build/dep_OpenEXR-prefix/src/dep_OpenEXR/OpenEXR/IlmImf/ImfDwaCompressor.cpp:2973:48: error: ‘compressBound’ was not declared in this scope; did you mean ‘Compression’? 2973 | static_cast<Int64>(compressBound (maxLossyDctAcSize)) ); | ^~~~~~~~~~~~~ | Compression /home/ttabi/PrusaSlicer/deps/build/dep_OpenEXR-prefix/src/dep_OpenEXR/OpenEXR/IlmImf/ImfDwaCompressor.cpp:3010:44: error: ‘compressBound’ was not declared in this scope; did you mean ‘Compression’? 3010 | maxOutBufferSize += static_cast<Int64>(compressBound (rleBufferSize)); | ^~~~~~~~~~~~~ | Compression gmake[5]: [OpenEXR/IlmImf/CMakeFiles/IlmImf.dir/build.make:454: OpenEXR/IlmImf/CMakeFiles/IlmImf.dir/ImfDwaCompressor.cpp.o] Error 1 gmake[4]: [CMakeFiles/Makefile2:444: OpenEXR/IlmImf/CMakeFiles/IlmImf.dir/all] Error 2 gmake[3]: [Makefile:136: all] Error 2 make[2]: [CMakeFiles/dep_OpenEXR.dir/build.make:86: dep_OpenEXR-prefix/src/dep_OpenEXR-stamp/dep_OpenEXR-build] Error 2 make[1]: [CMakeFiles/Makefile2:367: CMakeFiles/dep_OpenEXR.dir/all] Error 2 make: [Makefile:91: all] Error 2
RE:
They use github, which is presumably where you got the source code from in the first place. Did you not notice the issues area when you grabbed the code ?
Just search one of the MANY issues around build problems. Remember to search both OPEN and CLOSED issues. If you cant find the answer already posted then open a new issue.
https://github.com/prusa3d/PrusaSlicer/issues
For example a quick search brought up this discussion which may be relevant https://github.com/prusa3d/PrusaSlicer/issues/7412