Repository navigation
Update lib3mf_linux64.so and lib3mf_rpi.so to lib3mf eaff2359 - #97
Merged
alexanderoster merged 1 commit intoNov 5, 2026
Merged
alexanderoster merged 1 commit into
alexanderoster merged 1 commit into
Conversation
Upstream's lib3mf update (f785669, 18521dc, 67af441, 1a16bc1) moved the headers in Libraries/lib3mf/, the lib3mf_win64.dll artifact and _githash_lib3mf.txt to lib3mf eaff2359, but not the linux64 and rpi shared libraries. The headers now load 879 lib3mf_* functions. The old .so files (built from f6a9bb36) lack 52 of them, for example lib3mf_toolpath_addlasersource and lib3mf_reader_settoolpathlaserreferencechecks. On Linux, amc_server therefore failed at startup with COULDNOTFINDLIBRARYEXPORT, whichever plugin was configured. Both libraries are rebuilt from lib3mf eaff23596f7a1d038922d4a1bf4244d8cc367495 (branch toolpath_squashed, "Toolpath Point Overrides Tests", 2026-11-03). Its Autogenerated/Bindings/CppDynamic lib3mf_dynamic.h, lib3mf_dynamic.hpp and lib3mf_types.hpp are byte-identical to the vendored headers. _githash_linux64_lib3mf.txt and _githash_rpi_lib3mf.txt now name eaff2359, matching _githash_lib3mf.txt. Build: the same way as f6ff5ec, in a debian:bookworm-slim container with build-essential, cmake and crossbuild-essential-arm64 installed. linux64 uses native gcc 12.2.0 and rpi is cross-compiled with aarch64-linux-gnu-gcc 12.2.0. Commands: cmake -DCMAKE_BUILD_TYPE=Release -DLIB3MF_TESTS=OFF <lib3mf source> cmake --build . --target lib3mf For rpi, the first command also gets: -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ Everything else uses lib3mf defaults: bundled zlib/libzip, stripped, and libstdc++ linked dynamically. Both libraries still need at most GLIBC 2.36 and GLIBCXX 3.4.29, and the NEEDED libraries and the SONAME (lib3mf.so.2) are unchanged. Verification: nm -D shows 879 of 879 referenced exports in both libraries. The 10 exports that disappeared are the lib3mf_binarystream_* and lib3mf_writer_{assign,create}binarystream functions, which lib3mf removed and which the new headers no longer reference. The linux64 build dlopens and reports version 2.4.0, and amc_server starts with it. The rpi build was not run, because the build host has no arm64 emulation.
krixkrix
force-pushed
the
update-lib3mf-linux-rpi-eaff2359
branch
from
November 5, 2026 15:45
b072061 to
2b2039d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Same problem as #86, one lib3mf version later: f785669 / 18521dc / 67af441 / 1a16bc1 moved the lib3mf headers,
lib3mf_win64.dlland_githash_lib3mf.txtto lib3mf eaff2359, but not the linux64 and rpi shared libraries. The headers now load 879lib3mf_*functions, and the old.sofiles (f6a9bb36) lack 52 of them (e.g.lib3mf_toolpath_addlasersource). On Linuxamc_servertherefore fails at startup, whichever plugin is configured.Source: lib3mf
eaff23596f7a1d038922d4a1bf4244d8cc367495(branchtoolpath_squashed, "Toolpath Point Overrides Tests", 2026-11-03). ItsAutogenerated/Bindings/CppDynamic/{lib3mf_dynamic.h, lib3mf_dynamic.hpp, lib3mf_types.hpp}are byte-identical to the vendored headers inLibraries/lib3mf/.Build, as for #86: a debian:bookworm-slim container with build-essential, cmake and crossbuild-essential-arm64. linux64 uses native gcc 12.2.0, rpi is cross-compiled with aarch64-linux-gnu-gcc 12.2.0.
For rpi the first command also gets
-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++. Everything else uses lib3mf defaults (bundled zlib/libzip, stripped, libstdc++ linked dynamically).Evidence
nm -D --defined-only, against the 879 names inlib3mf_dynamic.hpp):Before: 827/879 in both
.sofiles, 52 missing.After: 879/879 in both. The 10 exports that disappeared are the
lib3mf_binarystream_*andlib3mf_writer_{assign,create}binarystreamfunctions, which lib3mf removed and the headers no longer reference.Before:
amc_unittest: 531/531. The linux64 library dlopens andlib3mf_getlibraryversionreports 2.4.0.lib3mf.so.2) as before; both still need at most GLIBC 2.36 and GLIBCXX 3.4.29.Merge Danger
Door: two-way
Binary artifacts only; reverting restores the previous libraries.
Blast Radius: Linux/RPi
Affects every linux64 and rpi deployment, which currently cannot start at all with the new headers. Windows is untouched.