Created attachment 183603 [details]
cad/opencascade7 shar file
Open CASCADE Technology (OCCT) is an object-oriented C++ class library designed
for rapid production of sophisticated domain-specific CAD/CAM/CAE applications.
We already have version 6.9.1 in port `cad/opencascade'. This last
one is currently used as a runtime dependency for `cad/freecad' port.
However, FreeCAD is transitioning to opencascade 7, because of
segfaults and bugs with opencascade 6.9.1.
Building `cad/freecad' with this new port instead solve those
The port I suggest here is less complete than `cad/opencascade', for
example VTK is disabled as FreeCAD does not require opencascade to be
built with this option, and this is currently my main focus.
I think there is two main issues in my work:
* I could not find a reliable source for download. We can fetch
snapshot from their gitweb:
But content differ every time.
I think the solution is to mirror it and specify
`MASTER_SITES=LOCAL/some_dir' or something like that. File is at:
* I use the same `PORTNAME' as `cad/opencascade' port, and did not
add any `CONFLICT_*' var. I'm not sure if it's the best way.
I am having issues with this as well. I initially thought that the problem was FreeCAD crashing but @Thibault told me it is most likely cad/opencascade6 that's causing the crash.
I can reproduce the crash 100% of the time. Just open FreeCAD go to the draft or part design workbench.
Select the b spline tool, left click 1 or more times, then right click to finish the b spline.
It crashes for me 100% of the time.
Thanks for your work!
- do we really need to have two ports for OpenCascade OCCT? We could use this PR to upgrade the existing cad/opencascade to 7.1.0. Else, this new port cad/opencascade7 should be a repocopy of the existing one.
- About MASTER_SITES: we can use LOCAL/thierry, as for the previous releases.
Another possibility: we could also use the OCE edition, located at
Done. You can now fetch opencascade-7.1.0.tgz from LOCAL/thierry
SHA256 (opencascade-7.1.0.tgz) = 0e23f038f4d12ed68d402dd8093923ac506db34abcf1c09bd2bffba1587f68d5
Thank you for hosting the file!
I honestly don't know if we need the two ports, but I noticed other
ports depends on this one:
and thought maybe people use cad/opencascade and need 6.x, but I have
no idea. Also, it was a little easier for me to start from scratch and
copy cad/opencascade/Makefile with the pieces I needed, instead of
guessing what to change and remove :-)
I was able to patch existing cad/opencascade to 7.1.0 I think, I will
give it some more test and add the patch to this PR soon. About the
alternative, I didn't know "repocopy", in this case should it be a
patch instead of a shar file?
Last, about the crash on b spline tool I was able to reproduce with
6.9.1 and it seems 7.1.0 solves it. I will test it again when I'm
satisfied with a new patch.
Created attachment 184006 [details]
cad/opencascade port update to 7.1.0
Here is a patch to update current port to 7.1.0. I confirm it solves
the crash when using the b spline tool (I do have a cursor problem
however but this is something else).
I have a few comments about the patch:
* I'm not able to run the regression-test target, both before and
after my update, I obtain this output:
make -DMAINTAINER_MODE regression-test
[poudriere.example] Installing opencascade-6.9.1_9...
/bin/mkdir -p /tmp/testOCC
bash -c " cd /usr/local/OpenCAS && . /usr/local/OpenCAS/env.sh && CSF_TestScriptsPath=/usr/local/OpenCAS/tests CSF_TestDataPath=/usr/local/OpenCAS/data DRAWEXE -f /usr/ports/cad/opencascade/files/regtest "
this isn't a Tk application
* the tarball in LOCAL/thierry is not exactly the same that the one
I worked initially, it's 212 Mo instead of 49 Mo, and files have
strange permissions (executable bit)
* I tried to preserve installation directories the same as much as
possible, however I had trouble updating the commands in
`post-install' target, so I favored adding `INSTALL_DIR_*' cmake
variables, I hope that's OK.
About the OCE edition, I looked into this way as it simplifies
retrieving source files, but as I'm focused on doing it for FreeCAD,
it seems the "official" edition is a better choice:
In summary, OCE edition seems "too old".
I checked ports depending on cad/opencascade:
cad/gmsh still builds with OCC option.
cad/netgen is already broken with OCC option. With OCC 7 it's still
broken but the build error is different as far as I can tell.
(In reply to Thibault Jouan from comment #5)
I might be a bit dense here, but I can't seem to download your patch files. How can I download the patch?
Could you please try again? Maybe you have experienced some site failure, but I just downloaded it successfully.
But there is another problem, it does not apply cleanly:
- there is a tab after the file names
e.g. --- b/cad/opencascade/Makefile
- cad/opencascade/files/patch-adm_cmake_occt__macros.cmake does not exist
(In reply to Thierry Thomas from comment #8)
What are the steps to download the attachment? I can edit it or view it as a unified whole. Do I have to grab it as a unified whole and then create individual files myself?
I found another bug that I am pretty sure is related to this same issue.
Go into FreeCAD, go to the parts workbench create any basic shame; a cube for example.
Go to Drawing workbench and click the A3 button to create a page.
From the menu to the left select the Cube that you previously created.
Click on create orthographic projection button.
100% crash every time with a:
*** Abort *** an exception was raised, but no catch was found.
... The exception is:SIGSEGV 'segmentation violation' detected. Address 0
I strongly believe that these are related to this OCC package.
(In reply to Thierry Thomas from comment #8)
Sorry for the incorrect patch, I realize only now it's problematic for deleted files:
I should have at least listed them. I guess providing a svn diff will solve this (and other things), I'll work on it asap.
(In reply to bcomputerguy from comment #7)
As mentioned the patch is not yet correct to be commited to the ports tree, but as a workaround before I fix it, I think the following should work to test it:
fetch -o ~/occ-update.patch 'https://bugs.freebsd.org/bugzilla/attachment.cgi?id=184006'
patch -p1 -E < ~/occ-update.patch
If -E is not possible, then delete the files I listed in previous comment, or try to remove port patches which became empty:
find cad/opencascade/files -empty -delete
I will try the new bug you posted against 6.9.1 and 7.1.0 to compare, thanks.
(In reply to Thibault Jouan from comment #12)
I wanted to ask what someone on the FreeCAD forum asked me. Why am I using the FreeCAD 0.17 pre?
They said there's drastic changes along with all previous tutorials being outdated.
Is there a reason why you're building 0.17 pre release instead of the 0.16 Release version?
Created attachment 184352 [details]
cad/opencascade port update to 7.1.0 (svn diff)
Here is an updated patch as a "svn diff". I tested it with `svn patch`
and it seems OK. I hope it will solve the issue for added/removed
Assign to maintainer
Comment on attachment 184006 [details]
cad/opencascade port update to 7.1.0
Obsolete previous patch version
(with some bits from Andrea Venturoli and some minor changes from me)
A commit references this bug:
Date: Sat Jul 15 17:23:51 UTC 2017
New revision: 445905
Upgrade to 7.1.0.
Release notes at
Submitted by: tj+freebsd_portsxi (at) a13.fr
With bits from: ml (at) netfence.it
Thanks for finishing the update and committing it!
About the segfault mention in comment #7, I confirm it was in
opencascade 6.9.1 too:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 812a16000 (LWP 100741/FreeCAD)]
0x00000008608ce3b7 in BSplCLib::LocateParameter () from /usr/local/lib/libTKMath.so
#0 0x00000008608ce3b7 in BSplCLib::LocateParameter () from /usr/local/lib/libTKMath.so
#1 0x00000008602662d3 in Geom2d_BSplineCurve::ValidateCache () from /usr/local/lib/libTKG2d.so
#2 0x0000000860266bb3 in Geom2d_BSplineCurve::D0 () from /usr/local/lib/libTKG2d.so
#3 0x000000086026c26c in Geom2d_Curve::Value () from /usr/local/lib/libTKG2d.so
#4 0x000000086352f7f4 in BRepLib_MakeEdge2d::Init () from /usr/local/lib/libTKTopAlgo.so
#5 0x0000000863530a32 in BRepLib_MakeEdge2d::Init () from /usr/local/lib/libTKTopAlgo.so
#6 0x0000000863533281 in BRepLib_MakeEdge2d::BRepLib_MakeEdge2d () from /usr/local/lib/libTKTopAlgo.so
#7 0x0000000865babef1 in HLRBRep::MakeEdge () from /usr/local/lib/libTKHLR.so
#8 0x0000000865bbcd5f in HLRBRep_HLRToShape::DrawEdge () from /usr/local/lib/libTKHLR.so
#9 0x0000000865bbcaee in HLRBRep_HLRToShape::DrawFace () from /usr/local/lib/libTKHLR.so
#10 0x0000000865bbc6ce in HLRBRep_HLRToShape::InternalCompound () from /usr/local/lib/libTKHLR.so
#11 0x0000000868f10b25 in HLRBRep_HLRToShape::RgNLineVCompound () from /usr/local/FreeCAD/lib/Drawing.so
#12 0x0000000868f0cb7a in Drawing::ProjectionAlgos::execute () from /usr/local/FreeCAD/lib/Drawing.so
#13 0x0000000868f0c6e7 in Drawing::ProjectionAlgos::ProjectionAlgos () from /usr/local/FreeCAD/lib/Drawing.so
#14 0x0000000868ef787e in Drawing::FeatureViewPart::execute () from /usr/local/FreeCAD/lib/Drawing.so
#15 0x000000080191de0c in App::DocumentObject::recompute () from /usr/local/FreeCAD/lib/libFreeCADApp.so
#16 0x0000000868ef6560 in Drawing::FeatureView::recompute () from /usr/local/FreeCAD/lib/Drawing.so
#17 0x00000008018ed969 in App::Document::_recomputeFeature () from /usr/local/FreeCAD/lib/libFreeCADApp.so
#18 0x00000008018ed507 in App::Document::recompute () from /usr/local/FreeCAD/lib/libFreeCADApp.so
#19 0x0000000868c3ebe4 in DrawingGui::OrthoViews::add_view () from /usr/local/FreeCAD/lib/DrawingGui.so
#20 0x0000000868c40396 in DrawingGui::TaskOrthoViews::TaskOrthoViews () from /usr/local/FreeCAD/lib/DrawingGui.so
#21 0x0000000868c42c3b in DrawingGui::TaskDlgOrthoViews::TaskDlgOrthoViews () from /usr/local/FreeCAD/lib/DrawingGui.so
#22 0x0000000868c3735e in CmdDrawingOrthoViews::activated () from /usr/local/FreeCAD/lib/DrawingGui.so
#23 0x0000000800d69c00 in Gui::Command::invoke () from /usr/local/FreeCAD/lib/libFreeCADGui.so
#24 0x00000008089a5242 in QMetaObject::activate () from /usr/local/lib/qt4/libQtCore.so.4
#25 0x0000000807601e32 in QAction::activate () from /usr/local/lib/qt4/libQtGui.so.4
#26 0x00000008079c06a3 in QAbstractButton::isCheckable () from /usr/local/lib/qt4/libQtGui.so.4
#27 0x00000008079c1368 in QAbstractButton::mouseReleaseEvent () from /usr/local/lib/qt4/libQtGui.so.4
#28 0x0000000807a804df in QToolButton::mouseReleaseEvent () from /usr/local/lib/qt4/libQtGui.so.4
#29 0x00000008076598a4 in QWidget::event () from /usr/local/lib/qt4/libQtGui.so.4
#30 0x00000008079c1270 in QAbstractButton::event () from /usr/local/lib/qt4/libQtGui.so.4
#31 0x0000000807a8095d in QToolButton::event () from /usr/local/lib/qt4/libQtGui.so.4
#32 0x000000080760ac0c in QApplicationPrivate::notify_helper () from /usr/local/lib/qt4/libQtGui.so.4
#33 0x000000080760c58c in QApplication::notify () from /usr/local/lib/qt4/libQtGui.so.4
#34 0x0000000800d4ad5c in Gui::GUIApplication::notify () from /usr/local/FreeCAD/lib/libFreeCADGui.so
#35 0x000000080898d0c6 in QCoreApplication::notifyInternal () from /usr/local/lib/qt4/libQtCore.so.4
#36 0x000000080760b657 in QApplicationPrivate::sendMouseEvent () from /usr/local/lib/qt4/libQtGui.so.4
#37 0x0000000807682505 in qt_try_modal () from /usr/local/lib/qt4/libQtGui.so.4
#38 0x0000000807680c4b in QApplication::x11ProcessEvent () from /usr/local/lib/qt4/libQtGui.so.4
#39 0x00000008076abf9c in QX11Info::isCompositingManagerRunning () from /usr/local/lib/qt4/libQtGui.so.4
#40 0x0000000810525f85 in g_main_context_dispatch () from /usr/local/lib/libglib-2.0.so.0
#41 0x00000008105262b4 in g_main_context_pending () from /usr/local/lib/libglib-2.0.so.0
#42 0x0000000810526344 in g_main_context_iteration () from /usr/local/lib/libglib-2.0.so.0
#43 0x00000008089b9dde in QEventDispatcherGlib::processEvents () from /usr/local/lib/qt4/libQtCore.so.4
#44 0x00000008076abc4d in QX11Info::isCompositingManagerRunning () from /usr/local/lib/qt4/libQtGui.so.4
#45 0x000000080898a6b2 in QEventLoop::exec () from /usr/local/lib/qt4/libQtCore.so.4
#46 0x000000080898d66d in QCoreApplication::exec () from /usr/local/lib/qt4/libQtCore.so.4
#47 0x0000000800d0639f in Gui::Application::runApplication () from /usr/local/FreeCAD/lib/libFreeCADGui.so