Bug 1843142
| Summary: | F33FailsToInstall: slic3r | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Igor Raits <igor.raits> |
| Component: | slic3r | Assignee: | Jonathan Wakely <jwakely> |
| Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | rawhide | CC: | jwakely, mhroncok, perl-devel |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | slic3r-1.3.0-14.fc33 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2020-06-02 23:13:27 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 1803234, 1803235 | ||
|
Description
Igor Raits
2020-06-02 17:43:01 UTC
I never got a slic3r fails to build with new boost heads up :/ Trying now, but I kinda suspect it will fail as prusa-slicer did. g++ -I/usr/lib/perl5/CORE -fPIC -xc++ -Isrc/libslic3r -D_GLIBCXX_USE_C99 -DHAS_BOOL -DNOGDI -DSLIC3RXS -DBOOST_ASIO_DISABLE_KQUEUE -Dexprtk_disable_rtl_io_file -Dexprtk_disable_return_statement -Dexprtk_disable_rtl_vecops -Dexprtk_disable_string_capabilities -Dexprtk_disable_enhanced_features -U__STRICT_ANSI__ -std=c++11 -DBOOST_LIBS -DNDEBUG -O -Wno-undefined-var-template -Isrc -Ibuildtmp -c -D_REENTRANT -D_GNU_SOURCE -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m32 -march=i686 -mtune=generic -msse2 -mfpmath=sse -mstackrealign -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fwrapv -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -o src/libslic3r/GCode/CoolingBuffer.o src/libslic3r/GCode/CoolingBuffer.cpp
In file included from src/libslic3r/TriangleMesh.hpp:5,
from src/libslic3r/Model.hpp:9,
from src/libslic3r/Print.hpp:14,
from src/libslic3r/GCode.hpp:11,
from src/libslic3r/GCode/CoolingBuffer.hpp:5,
from src/libslic3r/GCode/CoolingBuffer.cpp:1:
src/admesh/stl.h:29:10: fatal error: boost/detail/endian.hpp: No such file or directory
29 | #include <boost/detail/endian.hpp>
| ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
In file included from src/admesh/stl.h:29,
from src/libslic3r/TriangleMesh.hpp:5,
from src/libslic3r/Model.hpp:9,
from src/libslic3r/Print.hpp:14,
from src/libslic3r/PrintRegion.cpp:1:
/usr/include/boost/endian/endian.hpp:14:3: error: #error "<boost/endian/endian.hpp> is deprecated. Define BOOST_ENDIAN_DEPRECATED_NAMES to use."
14 | # error "<boost/endian/endian.hpp> is deprecated. Define BOOST_ENDIAN_DEPRECATED_NAMES to use."
| ^~~~~
So even if I replace:
#include <boost/detail/endian.hpp>
With:
#define BOOST_ENDIAN_DEPRECATED_NAMES
#include <boost/endian/endian.hpp>
I still get to this:
#ifndef BOOST_LITTLE_ENDIAN
#error "admesh works correctly on little endian machines only!"
#endif
And that fails even on x86_64:
g++ -I/usr/lib64/perl5/CORE -fPIC -xc++ -Isrc/libslic3r -D_GLIBCXX_USE_C99 -DHAS_BOOL -DNOGDI -DSLIC3RXS -DBOOST_ASIO_DISABLE_KQUEUE -Dexprtk_disable_rtl_io_file -Dexprtk_disable_return_statement -Dexprtk_disable_rtl_vecops -Dexprtk_disable_string_capabilities -Dexprtk_disable_enhanced_features -U__STRICT_ANSI__ -std=c++11 -DBOOST_LIBS -DNDEBUG -O -Wno-undefined-var-template -Isrc -Ibuildtmp -c -D_REENTRANT -D_GNU_SOURCE -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fwrapv -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -o src/libslic3r/IO.o src/libslic3r/IO.cpp
In file included from src/libslic3r/TriangleMesh.hpp:5,
from src/libslic3r/Model.hpp:9,
from src/libslic3r/IO.hpp:5,
from src/libslic3r/IO.cpp:1:
src/admesh/stl.h:33:2: error: #error "admesh works correctly on little endian machines only!"
33 | #error "admesh works correctly on little endian machines only!"
| ^~~~~
In file included from /usr/include/boost/config/header_deprecated.hpp:18,
from /usr/include/boost/endian/endian.hpp:17,
from src/admesh/stl.h:30,
from src/libslic3r/TriangleMesh.hpp:5,
from src/libslic3r/Model.hpp:9,
from src/libslic3r/IO.hpp:5,
from src/libslic3r/IO.cpp:1:
/usr/include/boost/endian/endian.hpp:19:1: note: '#pragma message: This header is deprecated. Use <boost/endian/arithmetic.hpp> instead.'
19 | BOOST_HEADER_DEPRECATED( "<boost/endian/arithmetic.hpp>" )
| ^~~~~~~~~~~~~~~~~~~~~~~
cc1plus: note: unrecognized command-line option '-Wno-undefined-var-template' may have been intended to silence earlier diagnostics
error building src/libslic3r/IO.o from 'src/libslic3r/IO.cpp' at /usr/share/perl5/vendor_perl/ExtUtils/CBuilder/Base.pm line 185.
Redi, could you please help?
Using Boost.Endian just to detect if the CPU is little endian is unnecessary. I'm testing this: --- Slic3r-1.3.0/xs/src/admesh/stl.h~ 2020-06-02 21:36:34.816574974 +0100 +++ Slic3r-1.3.0/xs/src/admesh/stl.h 2020-06-02 21:36:37.553576616 +0100 @@ -26,9 +26,8 @@ #include <stdio.h> #include <stdint.h> #include <stddef.h> -#include <boost/detail/endian.hpp> -#ifndef BOOST_LITTLE_ENDIAN +#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ #error "admesh works correctly on little endian machines only!" #endif Ugh, and this package uses -U__STRICT_ANSI__ -std=c++11 which is idiotic. If you don't want strict mode, use -std=gnu++11 instead of -std=c++11. After fixing lots of uses of boost::bind without including the relevant header, it now fails with:
src/libslic3r/Config.cpp:16:10: fatal error: boost/nowide/cenv.hpp: No such file or directory
16 | #include <boost/nowide/cenv.hpp>
| ^~~~~~~~~~~~~~~~~~~~~~~
I think I'm going to have to patch boost-1.73.0 to add that header even though it isn't upstream.
Building slic3r-1.3.0-14.fc33 for rawhide Created task: 45332133 Task info: https://koji.fedoraproject.org/koji/taskinfo?taskID=45332133 Thank you so much! Side note: Upstream is aware of the issues and the patches: https://github.com/slic3r/Slic3r/issues/4967 |