I've detected that the issue lies with some sort of incompatibility between FreeCAD 0.16 (most likely SMESH, it always is SMESH ) code and OCCT7. Switching to OCE (git master) has solved the issue for the time being. Currently compiling at 36%.
If anyone is interested in investigating more on the issue with OCCT7, please let me know. Not good at coding, but I can help test proposed solutions and extract data from my tests.
Original post
So I had the brilliant idea of having two versions of FreeCAD on the same machine. 017 works just fine, wanted to use 0.16 bit for some specific reasons. Unfortunately 0.16 compilation fails. Has anyone experienced something similar?
Stituation:
Downloaded source code release for 0.16 from Github releases, used CMake GUI to set flags without errors at this stage. Compilation fails at SMESH. Complete console output below.
System specs:
Code: Select all
[isaac@Gungnir Programs]$ screenfetch
-`
.o+` isaac@Gungnir
`ooo/ OS: Arch Linux
`+oooo: Kernel: x86_64 Linux 4.7.3-2-ARCH
`+oooooo: Uptime: 2h 23m
-+oooooo+: Packages: 901
`/:-:++oooo+: Shell: bash 4.3.46
`/++++/+++++++: Resolution: 1366x768
`/++++++++++++++: DE: KDE5
`/+++ooooooooooooo/` WM: KWin
./ooosssso++osssssso+` GTK Theme: Breeze-Dark [GTK2/3]
.oossssso-````/ossssss+` Icon Theme: breeze-dark
-osssssso. :ssssssso. Font: Ubuntu Regular
:osssssss/ osssso+++. CPU: Intel Core i5-3337U CPU @ 1.7GHz
/ossssssss/ +ssssooo/- RAM: 1475MiB / 7870MiB
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
Code: Select all
Scanning dependencies of target SMDS
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_EdgePosition.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_FaceOfEdges.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_FaceOfNodes.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_FacePosition.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_IteratorOfElements.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_MemoryLimit.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_Mesh.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_MeshEdge.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_MeshElement.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_MeshElementIDFactory.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_MeshFace.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_MeshGroup.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_MeshIDFactory.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_MeshNode.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_MeshObject.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_MeshVolume.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_PolygonalFaceOfNodes.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_PolyhedralVolumeOfNodes.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_Position.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_QuadraticEdge.cpp.o
[ 0%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_QuadraticFaceOfNodes.cpp.o
[ 1%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_QuadraticVolumeOfNodes.cpp.o
[ 1%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_SpacePosition.cpp.o
[ 1%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_VertexPosition.cpp.o
[ 1%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_VolumeOfFaces.cpp.o
[ 1%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_VolumeOfNodes.cpp.o
[ 1%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMDS.dir/src/SMDS/SMDS_VolumeTool.cpp.o
/home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/src/SMDS/SMDS_VolumeTool.cpp: In member function ‘int SMDS_VolumeTool::GetOppFaceIndex(int) const’:
/home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/src/SMDS/SMDS_VolumeTool.cpp:1042:7: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
if ( faceIndex == 0 || faceIndex == 1 )
^~
/home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/src/SMDS/SMDS_VolumeTool.cpp:1044:9: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘if’
break;
^~~~~
[ 1%] Linking CXX shared library ../../../lib/libSMDS.so
[ 1%] Built target SMDS
Scanning dependencies of target Driver
[ 1%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/Driver.dir/src/Driver/Driver_Document.cpp.o
[ 1%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/Driver.dir/src/Driver/Driver_Mesh.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/Driver.dir/src/Driver/Driver_SMDS_Mesh.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/Driver.dir/src/Driver/Driver_SMESHDS_Mesh.cpp.o
[ 2%] Linking CXX shared library ../../../lib/libDriver.so
[ 2%] Built target Driver
Scanning dependencies of target DriverDAT
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverDAT.dir/src/DriverDAT/DAT_Test.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverDAT.dir/src/DriverDAT/DriverDAT_R_SMDS_Mesh.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverDAT.dir/src/DriverDAT/DriverDAT_R_SMESHDS_Document.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverDAT.dir/src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverDAT.dir/src/DriverDAT/DriverDAT_W_SMDS_Mesh.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverDAT.dir/src/DriverDAT/DriverDAT_W_SMESHDS_Document.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverDAT.dir/src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.cpp.o
[ 2%] Linking CXX shared library ../../../lib/libDriverDAT.so
[ 2%] Built target DriverDAT
Scanning dependencies of target SMESHDS
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMESHDS.dir/src/SMESHDS/SMESHDS_Command.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMESHDS.dir/src/SMESHDS/SMESHDS_Document.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMESHDS.dir/src/SMESHDS/SMESHDS_Group.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMESHDS.dir/src/SMESHDS/SMESHDS_GroupBase.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMESHDS.dir/src/SMESHDS/SMESHDS_GroupOnGeom.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMESHDS.dir/src/SMESHDS/SMESHDS_Hypothesis.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMESHDS.dir/src/SMESHDS/SMESHDS_Mesh.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMESHDS.dir/src/SMESHDS/SMESHDS_Script.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMESHDS.dir/src/SMESHDS/SMESHDS_SubMesh.cpp.o
[ 2%] Linking CXX shared library ../../../lib/libSMESHDS.so
[ 2%] Built target SMESHDS
Scanning dependencies of target DriverUNV
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverUNV.dir/src/DriverUNV/DriverUNV_R_SMDS_Mesh.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverUNV.dir/src/DriverUNV/DriverUNV_R_SMESHDS_Document.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverUNV.dir/src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverUNV.dir/src/DriverUNV/DriverUNV_W_SMDS_Mesh.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverUNV.dir/src/DriverUNV/DriverUNV_W_SMESHDS_Document.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverUNV.dir/src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverUNV.dir/src/DriverUNV/UNV2411_Structure.cpp.o
[ 2%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverUNV.dir/src/DriverUNV/UNV2412_Structure.cpp.o
[ 3%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverUNV.dir/src/DriverUNV/UNV2417_Structure.cpp.o
[ 3%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverUNV.dir/src/DriverUNV/UNV_Test.cpp.o
[ 3%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverUNV.dir/src/DriverUNV/UNV_Utilities.cpp.o
[ 3%] Linking CXX shared library ../../../lib/libDriverUNV.so
[ 3%] Built target DriverUNV
Scanning dependencies of target DriverSTL
[ 3%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverSTL.dir/src/DriverSTL/DriverSTL_R_SMDS_Mesh.cpp.o
[ 3%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverSTL.dir/src/DriverSTL/DriverSTL_W_SMDS_Mesh.cpp.o
[ 3%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/DriverSTL.dir/src/DriverSTL/STL_Test.cpp.o
[ 3%] Linking CXX shared library ../../../lib/libDriverSTL.so
[ 3%] Built target DriverSTL
Scanning dependencies of target SMESH
[ 3%] Building CXX object src/3rdParty/salomesmesh/CMakeFiles/SMESH.dir/src/SMESH/SMESH_0D_Algo.cpp.o
In file included from /home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/inc/SMESH_Gen.hxx:42:0,
from /home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/src/SMESH/SMESH_0D_Algo.cpp:28:
/home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/inc/SMESH_Mesh.hxx:50:7: error: using typedef-name ‘TopTools_ListOfShape’ after ‘class’
class TopTools_ListOfShape;
^~~~~~~~~~~~~~~~~~~~
In file included from /opt/opencascade7/include/opencascade/TopTools_IndexedDataMapOfShapeListOfShape.hxx:21:0,
from /home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/inc/SMESH_Mesh.hxx:42,
from /home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/inc/SMESH_Gen.hxx:42,
from /home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/src/SMESH/SMESH_0D_Algo.cpp:28:
/opt/opencascade7/include/opencascade/TopTools_ListOfShape.hxx:23:40: note: ‘TopTools_ListOfShape’ has a previous declaration here
typedef NCollection_List<TopoDS_Shape> TopTools_ListOfShape;
^~~~~~~~~~~~~~~~~~~~
make[2]: *** [src/3rdParty/salomesmesh/CMakeFiles/SMESH.dir/build.make:63: src/3rdParty/salomesmesh/CMakeFiles/SMESH.dir/src/SMESH/SMESH_0D_Algo.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:536: src/3rdParty/salomesmesh/CMakeFiles/SMESH.dir/all] Error 2
make: *** [Makefile:128: all] Error 2
[isaac@Gungnir FreeCAD-0.16-build]$ make clean
[isaac@Gungnir FreeCAD-0.16-build]$ make >> ../freecad-error-log.txt
/home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/src/SMDS/SMDS_VolumeTool.cpp: In member function ‘int SMDS_VolumeTool::GetOppFaceIndex(int) const’:
/home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/src/SMDS/SMDS_VolumeTool.cpp:1042:7: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
if ( faceIndex == 0 || faceIndex == 1 )
^~
/home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/src/SMDS/SMDS_VolumeTool.cpp:1044:9: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘if’
break;
^~~~~
In file included from /home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/inc/SMESH_Gen.hxx:42:0,
from /home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/src/SMESH/SMESH_0D_Algo.cpp:28:
/home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/inc/SMESH_Mesh.hxx:50:7: error: using typedef-name ‘TopTools_ListOfShape’ after ‘class’
class TopTools_ListOfShape;
^~~~~~~~~~~~~~~~~~~~
In file included from /opt/opencascade7/include/opencascade/TopTools_IndexedDataMapOfShapeListOfShape.hxx:21:0,
from /home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/inc/SMESH_Mesh.hxx:42,
from /home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/inc/SMESH_Gen.hxx:42,
from /home/isaac/Programs/FreeCAD-0.16/src/3rdParty/salomesmesh/src/SMESH/SMESH_0D_Algo.cpp:28:
/opt/opencascade7/include/opencascade/TopTools_ListOfShape.hxx:23:40: note: ‘TopTools_ListOfShape’ has a previous declaration here
typedef NCollection_List<TopoDS_Shape> TopTools_ListOfShape;
^~~~~~~~~~~~~~~~~~~~
make[2]: *** [src/3rdParty/salomesmesh/CMakeFiles/SMESH.dir/build.make:63: src/3rdParty/salomesmesh/CMakeFiles/SMESH.dir/src/SMESH/SMESH_0D_Algo.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:536: src/3rdParty/salomesmesh/CMakeFiles/SMESH.dir/all] Error 2
make: *** [Makefile:128: all] Error 2