Migrate build dependencies from the dlr-sc conda channel to conda-forge - #1406
Migrate build dependencies from the dlr-sc conda channel to conda-forge#1406joergbrech wants to merge 18 commits into
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1406 +/- ##
==========================================
+ Coverage 73.28% 73.31% +0.02%
==========================================
Files 324 324
Lines 28642 28630 -12
==========================================
- Hits 20991 20990 -1
+ Misses 7651 7640 -11
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
PR RemindersThis PR has changes in
This is an automated reminder from CI |
The failing wing W14_ChaDih has tip sections translated by exactly (0, 1, 1) and (0, 2, 2) — a perfect 45° dihedral. CTiglWingHelper::GetMajorDirection() picks the span axis by comparing accumulated |Y| vs |Z| with a plain >=, and for this wing those sums are mathematically equal, so the winner is decided by last-ULP rounding — which differs on arm64 (FMA contraction, Apple libm). The CI numbers prove it: 43.152389734005403 + 46.847610265994597 = 90.0 exactly — after SetSweep nudged the tip, the tie flipped the major axis and the dihedral was measured as its complement. Fix: a relative-tolerance tie-break (GreaterOrTied, 1e-8) in GetMajorDirection/GetDeepDirection (src/wing/CTiglWingHelper.cpp) so near-ties resolve deterministically to the conventional axis on every platform. 2. BSplineInterpolation.withKinksShield — over-strict test, fixed. ArraysMatch defaults to exact ==, but the 0.5 parameter is derived arithmetic (tigl::Interpolate rescaling between kink params), which lands 1 ULP off on arm64. The test now uses InTolerance(1e-14). 3. SIGABRT in makeLoft.nacelleInverted — narrowed, needs one more CI run. Three things the log tells us: (a) guideCurvePatches.nacelleInverted — same .brep inputs through MakePatches::Perform directly — passes on macOS, so the crash lives in the CTiglMakeLoft wrapper path (tolerance 1e-6 vs 1e-7, plus ConcatenateWire and CloseShape). That's why the MakePatches null-guard in your last commit couldn't fix it. (b) gtest catches C++ exceptions on POSIX, so a thrown CTiglError/Standard_Failure would show as a test failure, not an abort. (c) No libc++abi/assert message reached stderr — this is a silent abort (terminate-in-noexcept, heap check, or a direct abort()), which can't be pinpointed by reading code. So I added a temporary step to .github/workflows/build-test.yml that, when the macOS test job fails, reruns makeLoft.* under lldb --batch with thread backtrace all on crash — the next CI run will hand you the exact crash site.
svengoldberg
left a comment
There was a problem hiding this comment.
From my end, everything looks good und consistent!
I have just some remarks regarding the unit tests.
And one additional general question (I did not dive too much into the math tbh): Don't we loose a strong feature when omitting the GeomFill_CoonsC2Style?
|
@joergbrech Maybe, after merging, we should open up an issue reminding us to change the |
Description
Moves TiGL's conda dependencies off the self-hosted
dlr-scchannel and ontoconda-forge, resolving #1286. This is a prerequisite to hosting tigl as a conda-forge feedstock itself.This PR also re-introduces MacOS to CI.
Concretely:
occtpackage (dynamically linked,novtkbuild), bumped 7.6.2 → 7.9.3. Theocct-staticbuild option and all static-linking machinery have been removed entirely.occt7.6.2 only ships a vtk-enabled build whose dependencies conflict withtixion every platform;novtkbuilds only exist from 7.7.2 onward, andosx-arm64support only exists from 7.9.0.creatorWing.DISABLED_wingCreateSectionInsideWithParam,WingSegmentGuideCurves.DISABLED_tiglWingGetSegmentUpperSurfaceAreaTrimmed) — most likely due to the missing G2-continuous Coons-patch patch the old dlr-sc build had, though this wasn't fully isolated from the version bump.tixipackage (sametixi3CMake target, no CMake changes needed).1.8.15.*pin.novtk). Since conda-forge's package doesn't ship the SWIG interface sources TiGL's internal Python bindings need, those are now vendored as a git submodule atthirdparty/pythonocc-core, pinned to match — TODO: drop this vendoring once conda-forge/pythonocc-feedstock ships the sources itself.4.4.*to match what conda-forge'spythonocc-coreis actually built with — a mismatch here silently breaks SWIG's cross-module type sharing (functions returning OCCT types likeTopoDS_Face/gp_Pntfell back to raw, un-destructed pointers instead of properOCC.Core.*instances).matlab-libspackage (no conda-forge equivalent exists) are now vendored atthirdparty/matlab-sdk/{win-64,osx-64}, used automatically as a fallback bycmake/FindMATLAB.cmake.tixifeedstock has been updated to build for it.occt-static; macOS moved tomacos-latest, resolving the CI breakage from themacos-13runner's retirement (CI is failing now that MacOS-13 Github runner is in retirement #1273).Also fixed two bugs discovered along the way, unrelated to the conda-forge migration itself but blocking verification of it:
cmake/GetGitRevisionDescription.cmake.in) that madetiglOpenCPACSConfigurationspuriously returnTIGL_WRONG_CPACS_VERSIONwhenever the current branch's git ref was packed (e.g. aftergit gc) rather than a loose file.cannot find -lGL) on hosts without a system-widelibGL.so/libX11.so/libfontconfig.so— conda-forge'socctexports these as bare linker names, so$CONDA_PREFIX/libnow needs to be onLIBRARY_PATHat link time.Dropping the old pinned
tbb=2019.5static dependency (now resolved entirely through conda's own dependency graph) may also help with #964.Closes #1286
Closes #1273
How Has This Been Tested?
Locally via
pixi, for thedefault,coverage, annts:pixi install) from scratch verified for all 4 platforms (linux-64,win-64,osx-64,osx-arm64) with only theconda-forgechannel.unittests+integrationtests+pythontestsrun on Linux: 902 unit tests, 46 integration tests, and 110 Python testsall pass (3 disabled, as noted above).occtpackage metadata (confirmedTKernel's CMake target points at the real.dll, not just the.libas available for a live build.Screenshots, that help to understand the changes(if applicable):
N/A (build/CI infrastructure change, no user-facing UI change)
Checklist for PR Author:
ChangeLog.mdupdated