| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Runtime plugins are canonically named `ifcopenshell_<kind>_<name>` (decorated_basename() in src/plugin/plugin.cpp, and the OUTPUT_NAME properties of the plugin targets), but the archive collection filtered on the dotted `ifcopenshell.` prefix, which matches only the core shared libraries. Every load-by-name plugin was therefore silently dropped from every win64 / win-arm64 zip. Accept both prefixes, and extend the geometry-writer exclusion to the underscore form so the per-schema writers keep their existing Python-package-only treatment. Fixes #9301
|
CI triage: both failing checks are pre-existing on the v0.9.0 base, not introduced here — the branch's own last four ci runs and last three ci-lint runs (Aug 10–14) all fail identically. The lint failure is Black 26.5.1 wanting to reformat pyodide/build-all-pack-wheel-local.py, which this PR doesn't touch; this PR's only file (win/build-all-win.py) passes Black/ruff cleanly. Happy to rebase or adjust if anything else is wanted. |
Sorry, something went wrong.
The locally built 0.9 runtime (all 59 DLLs incl. the 8 geometry-mapping plugins missing from official win64 artifacts, upstream IfcOpenShell#9301/IfcOpenShell#9305) un-gated 84 geometry-dependent tests. Running them surfaced: - _add_segment_to_curve: only refresh EndPoint via update_end_point when the gradient/segmented-reference curve already carries its zero-length terminal segment; mid-construction flows (create_representation) add segments before the terminal exists and the fallback path cannot resolve transition codes against a curve still being assembled. - segment_vertices (+ API test): entity_instance no longer exposes .wrapped_data in the 0.9 wrapper; pass instances directly to map_shape. - _map_linear_transition: guard start_direction against A1 == 0 — a LINEARTRANSITION cant segment with equal start/end cant is schema-legal and the expression's limit as the cant change goes to 0 is 0 (was ZeroDivisionError). - CIVIL_OT_add_cant_point: move the display-row selection to the point just added; insert-after resolution reads active_cant_display_row_index, so leaving it behind made every subsequent Add insert midpoints after the original point instead of appending. - Operator-test fixtures: create_alignment_with_horizontal_and_vertical now lays out a real 1000 m tangent (cant validation correctly refused the old zero-extent bare alignment); equal back/ahead station-equation test asserts the RuntimeError bpy.ops raises in background mode. Bonsai alignment suites: 503 passed / 0 failed / 0 skipped (was 499/4, with 84 tests formerly skip-gated). API alignment: 110 passed. Core: 121. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ment_vertices helpers Fixes found while building Bonsai alignment authoring on top of the alignment API: - _create_geometric_representation: typo creatIfcShapeRepresentation -> createIfcShapeRepresentation (crashed 3D representation of gradient curves). - get_mapped_segments: off-by-one — the second mapped segment of a two-segment mapping returned Segments[index] instead of Segments[index - 1]. - get_stationing_nest: matched the first nest containing any IfcReferent; now requires PredefinedType == "STATION" so position referents don't shadow the stationing nest. - create_as_offset_curve: offset-curve alignments never received a stationing referent; now establishes the stationing scheme exactly as create() does for start_station. - _get_segment_start_point_label: vertical CONSTANTGRADIENT/ CONSTANTGRADIENT label "P.V.I" -> "P.V.I.". - segment_vertices: restored helper returning (Start, End, TI, NI) control points per segment — needed by any PI-based editor and gone from the current API surface. New Saikei helper: clear_layout_segments — the layout functions only append and expose no clear/remove, so editing a layout (PI recalc, edit mode) needs a safe way to drop real segments while keeping the zero-length terminator and cleaning up mapped geometry without orphans. Tests included for all of the above (test/api/alignment). - segment_vertices: pass the entity_instance to map_shape directly — entity_instance.wrapped_data is gone in the 0.9 modular wrapper (verified against a locally built 0.9 runtime with the per-schema geometry-mapping plugins that the official win64 artifacts omit, upstream IfcOpenShell#9301/IfcOpenShell#9305). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The locally built 0.9 runtime (all 59 DLLs incl. the 8 geometry-mapping plugins missing from official win64 artifacts, upstream IfcOpenShell#9301/IfcOpenShell#9305) un-gated 84 geometry-dependent tests. Running them surfaced: - _add_segment_to_curve: only refresh EndPoint via update_end_point when the gradient/segmented-reference curve already carries its zero-length terminal segment; mid-construction flows (create_representation) add segments before the terminal exists and the fallback path cannot resolve transition codes against a curve still being assembled. - segment_vertices (+ API test): entity_instance no longer exposes .wrapped_data in the 0.9 wrapper; pass instances directly to map_shape. - _map_linear_transition: guard start_direction against A1 == 0 — a LINEARTRANSITION cant segment with equal start/end cant is schema-legal and the expression's limit as the cant change goes to 0 is 0 (was ZeroDivisionError). - CIVIL_OT_add_cant_point: move the display-row selection to the point just added; insert-after resolution reads active_cant_display_row_index, so leaving it behind made every subsequent Add insert midpoints after the original point instead of appending. - Operator-test fixtures: create_alignment_with_horizontal_and_vertical now lays out a real 1000 m tangent (cant validation correctly refused the old zero-extent bare alignment); equal back/ahead station-equation test asserts the RuntimeError bpy.ops raises in background mode. Bonsai alignment suites: 503 passed / 0 failed / 0 skipped (was 499/4, with 84 tests formerly skip-gated). API alignment: 110 passed. Core: 121. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The locally built 0.9 runtime supplies the eight geometry-mapping plugins missing from official win64 artifacts (IfcOpenShell#9301/IfcOpenShell#9305), so all suites run with zero skips. Records the build inputs kept for rebuilds, the runtime backup path, and the TODO to swap back to official artifacts once IfcOpenShell#9305 merges (bit-parity with what reviewers and CI run). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
| Back | FazBrowse Home | New Git URL |
Fixes #9301.
Problem
Runtime plugins are canonically underscore-prefixed: decorated_basename() in src/plugin/plugin.cpp prepends ifcopenshell_, and the plugin targets set OUTPUT_NAME to match — ifcopenshell_parse_schema_ifc${schema}, ifcopenshell_geometry_mapping_ifc${schema}, ifcopenshell_geometry_kernel_${kernel}, ifcopenshell_geometry_writer_ifc${schema}, ifcopenshell_${plugin_output_name} for the document/geometry serializers. Only the core shared libraries keep dotted names (ifcopenshell.parse, ifcopenshell.geometry, ifcopenshell.geometry.writer, ifcopenshell.plugin).
win/build-all-win.py collected runtime plugins with a dot-prefix filter, in both archive_executables() and archive_python_package():
The trailing dot only matches the core libraries, so every load-by-name plugin was silently dropped from every win64 and win-arm64 zip.
The handful of underscore-named DLLs that did make it into the shipped artifacts (ifcopenshell_document_rdb.dll, ifcopenshell_geometry_kernel_opencascade.dll, and the parse_schema set in the BonsaiViewer zip) got there via trace_runtime_dependencies() as link-time dependencies, not via the plugin filter — which is also why the geometry_mapping plugins, loaded purely by name and invisible to dumpbin, are absent from every artifact.
On the shipped v0.9.0alpha0 win64 artifacts this means:
and, with the parse_schema DLLs supplied manually:
linux64 and pyodide artifacts are unaffected.
Change
Both collection sites now share one helper that accepts both prefixes, and the geometry-writer exclusion is extended to the underscore form so the per-schema writers keep their existing Python-package-only treatment.
One question for review
ifcopenshell_geometry_writer_ifc*.dll stays excluded from the executable zips, which preserves current behaviour — but that exclusion predates the rename, and under the old naming ifcopenshell.geometry.writer. would have matched only the core library. If IfcConvert is meant to load the per-schema writers at runtime, they should be bundled with the executables too. Happy to change it either way.
Testing
I don't have a Windows build environment to run the full script, so the filter was verified against a reconstruction of the installed bin/ DLL set: all load-by-name plugins are now collected, the per-schema writers still route to the Python package only, and third-party DLLs are unaffected. Happy to test the resulting artifacts once CI produces them.