Skip to content

Restore paclet builds, Git version metadata, and CircleCI - #31

Open
maxitg wants to merge 10 commits into
masterfrom
codex/restore-paclet-build-versioning
Open

maxitg wants to merge 10 commits into
masterfrom
codex/restore-paclet-build-versioning

Conversation

@maxitg

@maxitg maxitg commented Sep 22, 2026 •

Copy link
Copy Markdown
Owner

Changes

Restore paclet builds on Apple Silicon with Wolfram 15 and current Xcode, including embedded Git version information. Refresh CircleCI dependencies so the existing Linux, Windows, macOS, and Wolfram Language checks can run again.

  • Raise the macOS deployment target to 11.0 and declare MacOSX-ARM64 support.
  • Fall back to command-line Git when GitLink cannot initialize. Preserve the existing merge-base/checkpoint version calculation and the dirty-worktree marker.
  • Stop packaging when Git metadata cannot be obtained, and normalize legacy PacletInfo keys so the version field is found regardless of symbol context.
  • Check UTC offsets in the metadata tests to accommodate Wolfram 15's numeric timezone representation.
  • Move CircleCI macOS builds to Xcode 27 on Apple Silicon and build universal libraries for both macOS paclet platforms.
  • Install Git/OpenSSH before checkout in Alpine jobs and use a native CMake installation on macOS.
  • Pin GoogleTest to v1.14.0's commit and cpplint to 1.5.5, preserving the project's existing lint conventions.
  • Download Windows Boost from its official archive, use deterministic extraction paths, and fail on download errors.
  • Replace the missing custom Wolfram image with the official Wolfram Engine 15.0.0 image, which includes the front-end runtime libraries needed by the tests. Activate it using CircleCI's WOLFRAM_ID and WOLFRAM_PASSWORD secrets and allow up to 20 minutes without output during tests.
  • Suppress the legacy cloud-version notice in the local test runner.
  • Give the Wolfram job an 8 GB container so the large history-test report can be generated without the process being killed.

Comments

Validated on Apple Silicon with Wolfram 15.0.1 and Xcode 27:

  • ./pack.wls succeeds; the archive contains its version, full Git SHA, dirty marker, and UTC build time.
  • 13 isolated Git fallback checks passed, covering clean/modified/staged/untracked/ignored files, paths with spaces, branch history, and failure handling.
  • All 12 existing build-metadata tests pass against the packaged code.
  • The full Wolfram Language test suite passes locally on Wolfram 15.0.1, including notebook report generation.
  • The packaged native library loads and passes a tag-system evolution smoke check.
  • The CMake library build succeeds with warnings treated as errors; lipo confirms both x86_64 and arm64 slices, and the universal library passes an ARM64 LibraryLink smoke check.
  • All 20 enabled C++ tests pass locally; the existing performance test remains disabled. The pinned cpplint passes on the project's C++ sources.
  • YAML and shell syntax, git diff --check, and line-width checks pass for all changed files.

All five CircleCI checks pass at 2959baf: Linux 32-bit C++ tests, Linux 64-bit lint/C++ tests, macOS universal libraries, Windows library/CLI builds, and the Wolfram Engine 15.0.0 paclet suite. All four Wolfram workers complete their tests and notebook reports. Passing workflow.

The CI-built paclet was also inspected: it embeds the exact commit SHA without a dirty marker, a UTC build timestamp, and native libraries for Linux, Windows, Intel Mac, and Apple Silicon.

Examples

At the current master checkpoint, ./pack.wls produces PostTagSystem-0.0.39.paclet. Its PacletBuildInfo.json contains the full commit SHA (with * for local changes) and a UTC BuildTime array. GitLink is not required when git is available on PATH.


This change is Reviewable

@maxitg maxitg changed the title Restore Apple Silicon paclet builds and Git version metadata Restore paclet builds, Git version metadata, and CircleCI Sep 22, 2026
@maxitg maxitg added the weed Something isn't working label Sep 23, 2026
@maxitg maxitg self-assigned this Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

weed Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant