Skip to content

fix(release): macOS archive missing libcvc dylib and cmake configs#90

Merged
transfix merged 1 commit into
masterfrom
fix/macos-release-dylib-packaging
May 23, 2026
Merged

fix(release): macOS archive missing libcvc dylib and cmake configs#90
transfix merged 1 commit into
masterfrom
fix/macos-release-dylib-packaging

Conversation

@transfix
Copy link
Copy Markdown
Owner

Problem

The macOS release archives from v3.2.3 are missing libcvc.dylib (all variants: .3.0.dylib, .3.dylib, .dylib) and the CMake package config files (cvcTargets.cmake, cvcConfig.cmake, etc). This causes downstream consumers (TexMol, MolSurf, F2Dock) to fail at configure time with find_package(cvc) unable to locate the library.

Root Cause

The dylibbundler -od flag in the release workflow's "Stage libcvc + bundle deps" step erases and recreates the output directory before copying transitive dependency dylibs. Since the output directory (-d $DIST/lib) is the same directory where cmake --install already placed:

  • libcvc.3.0.dylib, libcvc.3.dylib, libcvc.dylib
  • cmake/cvc/cvcTargets.cmake, cvcTargets-release.cmake
  • cmake/cvc/cvcConfig.cmake, cvcConfigVersion.cmake

…the -od flag nukes all these files, then only repopulates with the bundled dependency dylibs (boost, hdf5, fftw, etc).

Evidence from the v3.2.3 release CI logs:

* Erasing old output directory .../libcvc-3.2.1-macos-arm64-release/lib/
    rm -r ".../libcvc-3.2.1-macos-arm64-release/lib/"
* Creating output directory .../libcvc-3.2.1-macos-arm64-release/lib/
    mkdir -p ".../libcvc-3.2.1-macos-arm64-release/lib/"

Fix

  • Remove -od flag from dylibbundler invocation. The -of (overwrite files) flag already handles the case where a dependency file pre-exists in the output dir.
  • Add zstd to brew install and apt-get install lines (matching the CI fix from PR feat: distributed state gap closure — 14 items #89).

Testing

After merge, tag v3.2.4 to produce corrected release archives. The macOS archives should then contain:

  • lib/libcvc.3.0.dylib (the actual library)
  • lib/libcvc.3.dylib → symlink
  • lib/libcvc.dylib → symlink
  • lib/cmake/cvc/cvcConfig.cmake
  • lib/cmake/cvc/cvcTargets.cmake
  • All bundled dependency dylibs (unchanged)

dylibbundler's -od flag erases the output directory before copying
transitive dependency dylibs into it. Since we use -d $DIST/lib (the
same directory where cmake --install places libcvc.3.0.dylib and the
cmake/ config tree), the -od flag nukes the primary library and all
cmake package configs before re-populating with only the deps.

Fix: remove -od so dylibbundler writes deps alongside the already-
installed libcvc files without erasing the directory first. The -of
flag (overwrite files) already handles the case where a dep file
already exists.

Also add zstd to brew install / apt-get install lines in the release
workflow (matching the ci.yml fix from PR #89) so the zstd compression
codec links correctly on macOS release builds.
@transfix transfix merged commit a694e6c into master May 23, 2026
14 checks passed
@transfix transfix deleted the fix/macos-release-dylib-packaging branch May 23, 2026 04:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant