From 362d8751d3b27cd11a1ee95addd6c5c3a21446ae Mon Sep 17 00:00:00 2001 From: Max Pi Date: Tue, 22 Sep 2026 15:41:59 -0700 Subject: [PATCH 01/10] Restore Apple Silicon paclet builds and Git version metadata --- DevUtils/BuildLibPostTagSystem.m | 2 +- DevUtils/GitLink.m | 47 +++++++++++++++++++++++++++++--- DevUtils/PackPostTagSystem.m | 24 +++++++++------- PacletInfo.m | 2 +- Tests/buildData.wlt | 6 ++-- 5 files changed, 61 insertions(+), 20 deletions(-) diff --git a/DevUtils/BuildLibPostTagSystem.m b/DevUtils/BuildLibPostTagSystem.m index 0d21751..7c8576c 100644 --- a/DevUtils/BuildLibPostTagSystem.m +++ b/DevUtils/BuildLibPostTagSystem.m @@ -170,7 +170,7 @@ "Windows", {"/std:c++17", "/EHsc"}, "MacOSX", - Join[{"-std=c++17"}, $warningsFlags, {"-mmacosx-version-min=10.14"}], (* for full support for optional *) + Join[{"-std=c++17"}, $warningsFlags, {"-mmacosx-version-min=11.0"}], (* for full support for optional *) "Unix", Join[{"-std=c++17"}, $warningsFlags] ]; diff --git a/DevUtils/GitLink.m b/DevUtils/GitLink.m index a420f6e..d0a6ab3 100644 --- a/DevUtils/GitLink.m +++ b/DevUtils/GitLink.m @@ -5,10 +5,35 @@ PackageImport["PacletManager`"] (* for PacletFind, PacletInstall in versions prior to 12.1 *) PackageExport["$PostTagSystemGitLinkAvailableQ"] +PackageExport["$PostTagSystemGitAvailableQ"] (* unfortunately, owing to a bug in GitLink, GitLink *needs* to be on the $ContextPath or GitRepo objects end up in the wrong context, since they are generated in a loopback link unqualified *) -$PostTagSystemGitLinkAvailableQ := !FailureQ[Quiet @ Check[Needs["GitLink`"], $Failed]]; +(* Needs can succeed after a previous library initialization failure, so also check the library itself. *) +$PostTagSystemGitLinkAvailableQ := AssociationQ[Quiet @ Check[ + Needs["GitLink`"]; + GitLink`$GitLibraryInformation, + $Failed +]]; + +$PostTagSystemGitAvailableQ := $PostTagSystemGitLinkAvailableQ || + TrueQ[Quiet @ Check[RunProcess[{"git", "--version"}, "ExitCode"] === 0, False]]; + +runGit::failed = "Git command `` failed in ``: ``"; + +(* An argument list avoids shell quoting and supports repository paths containing spaces. *) +runGit[repoDir_String, args__String] := Module[{result}, + result = Quiet @ Check[RunProcess[Join[{"git", "-C", repoDir}, {args}]], $Failed]; + If[!AssociationQ[result], + Message[runGit::failed, {args}, repoDir, "Could not run git; check PATH."]; + Return[$Failed]; + ]; + If[result["ExitCode"] =!= 0, + Message[runGit::failed, {args}, repoDir, StringTrim[result["StandardError"]]]; + Return[$Failed]; + ]; + StringTrim[result["StandardOutput"]] +]; PackageExport["PostTagSystemGitSHAWithDirtyStar"] @@ -27,15 +52,21 @@ If[cleanQ, sha, sha <> "*"] ]; -PostTagSystemGitSHAWithDirtyStar[_] /; FalseQ[$PostTagSystemGitLinkAvailableQ] := Missing["NotAvailable"]; +PostTagSystemGitSHAWithDirtyStar[repoDir_] /; FalseQ[$PostTagSystemGitLinkAvailableQ] := ModuleScope[ + sha = runGit[repoDir, "rev-parse", "--verify", "HEAD"]; + If[!StringQ[sha], Return[$Failed]]; + status = runGit[repoDir, "status", "--porcelain=v1", "--untracked-files=normal", "--ignore-submodules=all"]; + If[!StringQ[status], Return[$Failed]]; + If[status === "", sha, sha <> "*"] +]; PackageExport["PostTagSystemInstallGitLink"] SetUsage @ " -PostTagSystemInstallGitLink[] will attempt to install GitLink on the current system (if necessary). +PostTagSystemInstallGitLink[] will attempt to install GitLink if neither GitLink nor command-line git is available. "; -PostTagSystemInstallGitLink[] := If[PacletFind["GitLink", "Internal" -> All] === {}, +PostTagSystemInstallGitLink[] := If[!$PostTagSystemGitAvailableQ && PacletFind["GitLink", "Internal" -> All] === {}, PacletInstall["https://www.wolframcloud.com/obj/maxp1/GitLink-2019.11.26.01.paclet"]; ]; @@ -49,6 +80,14 @@ PostTagSystemCalculateMinorVersionNumber[repoDir_, masterBranch_] := ModuleScope[ versionInformation = Import[FileNameJoin[{repoDir, "scripts", "version.wl"}]]; + If[!$PostTagSystemGitLinkAvailableQ, + If[TrueQ[$internalBuildQ] && runGit[repoDir, "fetch", "origin"] === $Failed, Return[$Failed]]; + mergeBase = runGit[repoDir, "merge-base", "HEAD", masterBranch]; + If[!StringQ[mergeBase], Return[$Failed]]; + count = runGit[repoDir, "rev-list", "--count", versionInformation["Checkpoint"] <> ".." <> mergeBase]; + If[!StringQ[count] || !StringMatchQ[count, DigitCharacter ..], Return[$Failed]]; + Return[Max[0, FromDigits[count] - 1]]; + ]; gitRepo = GitLink`GitOpen[repoDir]; If[$internalBuildQ, GitLink`GitFetch[gitRepo, "origin"]]; minorVersionNumber = Max[0, Length[GitLink`GitRange[ diff --git a/DevUtils/PackPostTagSystem.m b/DevUtils/PackPostTagSystem.m index de0eb1b..2a1b2a3 100644 --- a/DevUtils/PackPostTagSystem.m +++ b/DevUtils/PackPostTagSystem.m @@ -18,8 +18,9 @@ PackPostTagSystem::packfailed = "Could not pack paclet from `` into ``."; PackPostTagSystem::nopacletinfo = "Paclet info file was not present at ``."; PackPostTagSystem::nobuildinfo = "Build info file was not present at ``."; -PackPostTagSystem::nogitlink = "GitLink is not installed, so the built paclet version cannot be correctly \ -calculated. Proceed with caution, and consider installing GitLink by running InstallGitLink[]."; +PackPostTagSystem::nogitlink = "Neither GitLink nor command-line git is available. Install git or a compatible \ +GitLink to build a paclet with version information."; +PackPostTagSystem::gitmetadata = "Could not determine the Git version information for ``."; SetUsage @ " PackPostTagSystem[] creates a PacletObject containing the local source and last built library. @@ -45,14 +46,16 @@ SetAutomatic[sourceDirectory, repositoryDirectory]; EnsureDirectory[outputDirectory]; - If[$PostTagSystemGitLinkAvailableQ, + If[$PostTagSystemGitAvailableQ, minorVersionNumber = PostTagSystemCalculateMinorVersionNumber[repositoryDirectory, masterBranch]; - pacletInfoFile = createUpdatedPacletInfo[FileNameJoin[{sourceDirectory, "PacletInfo.m"}], minorVersionNumber]; gitSHA = PostTagSystemGitSHAWithDirtyStar[repositoryDirectory]; + If[!IntegerQ[minorVersionNumber] || minorVersionNumber < 0 || + !StringQ[gitSHA] || !StringMatchQ[gitSHA, Repeated[HexadecimalCharacter, 40] ~~ Repeated["*", {0, 1}]], + ReturnFailed["gitmetadata", repositoryDirectory]; + ]; + pacletInfoFile = createUpdatedPacletInfo[FileNameJoin[{sourceDirectory, "PacletInfo.m"}], minorVersionNumber]; , - Message[PackPostTagSystem::nogitlink]; - pacletInfoFile = FileNameJoin[{sourceDirectory, "PacletInfo.m"}]; - gitSHA = Missing["GitLinkNotAvailable"]; + ReturnFailed["nogitlink"]; ]; buildInfo = <|"GitSHA" -> gitSHA, "BuildTime" -> Round[DateList[TimeZone -> "UTC"]]|>; @@ -87,10 +90,11 @@ ]; createUpdatedPacletInfo[pacletInfoFilename_, minorVersionNumber_] := ModuleScope[ - pacletInfo = Association @@ Import[pacletInfoFilename]; - versionString = pacletInfo[Version] <> "." <> ToString[minorVersionNumber]; + (* Legacy PacletInfo symbols may be read in a different context from this package. *) + pacletInfo = KeyMap[If[StringQ[#], #, SymbolName[#]] &, Association @@ Import[pacletInfoFilename]]; + versionString = pacletInfo["Version"] <> "." <> ToString[minorVersionNumber]; tempFilename = FileNameJoin[{$PostTagSystemDevUtilsTemporaryDirectory, "PacletInfo.m"}]; - AppendTo[pacletInfo, Version -> versionString]; + AppendTo[pacletInfo, "Version" -> versionString]; Block[{$ContextPath = {"System`", "PacletManager`"}}, Export[tempFilename, PacletManager`Paclet @@ Normal[pacletInfo]] ]; diff --git a/PacletInfo.m b/PacletInfo.m index 16d9fba..4b36b5a 100644 --- a/PacletInfo.m +++ b/PacletInfo.m @@ -7,7 +7,7 @@ Description -> "PostTagSystem implements the tag system {3, {{0, _, _} -> {0, 0}, {1, _, _} -> {1, 1, 0, 1}}}.", Creator -> "Max Piskunov", URL -> "https://github.com/maxitg/PostTagSystem", - SystemID -> {"MacOSX-x86-64", "Linux-x86-64", "Windows-x86-64"}, + SystemID -> {"MacOSX-x86-64", "Linux-x86-64", "Windows-x86-64", "MacOSX-ARM64"}, Extensions -> { {"Kernel", Context -> "PostTagSystem`"}, {"LibraryLink"} diff --git a/Tests/buildData.wlt b/Tests/buildData.wlt index f12434f..d2c0c1f 100644 --- a/Tests/buildData.wlt +++ b/Tests/buildData.wlt @@ -22,8 +22,7 @@ ], VerificationTest[ - $PostTagSystemBuildTime["TimeZone"], - "UTC" + TimeZoneOffset[$PostTagSystemBuildTime["TimeZone"]] == 0 ], (* could not be built in the future *) @@ -57,8 +56,7 @@ ], VerificationTest[ - $PostTagSystemLibraryBuildTime["TimeZone"], - "UTC" + TimeZoneOffset[$PostTagSystemLibraryBuildTime["TimeZone"]] == 0 ], (* could not be built in the future *) From b82db8b231bb816dc3d38b73628dbf7a9a57e036 Mon Sep 17 00:00:00 2001 From: Max Pi Date: Tue, 22 Sep 2026 15:45:31 -0700 Subject: [PATCH 02/10] Refresh CircleCI checkout tools and macOS builds --- .circleci/config.yml | 21 +++++++++------- scripts/buildLibraryResources.sh | 41 +++++++++++++++++++------------- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6363daf..8d5a2ea 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -57,6 +57,10 @@ jobs: password: $DOCKERHUB_PASSWORD steps: + - run: + name: Install checkout tools + command: apk add --no-cache git openssh-client + - checkout - run: @@ -104,6 +108,10 @@ jobs: password: $DOCKERHUB_PASSWORD steps: + - run: + name: Install checkout tools + command: apk add --no-cache git openssh-client + - checkout - run: @@ -129,21 +137,15 @@ jobs: macos-build: macos: - xcode: 12.2.0 + xcode: 27.0.0 + resource_class: m4pro.medium steps: - checkout - run: name: Install CMake - command: | - cmakeURL="https://github.com/Kitware/CMake/releases/download/v3.18.6/cmake-3.18.6-Darwin-x86_64.tar.gz" - curl -L --output cmake.tar.gz $cmakeURL - tar xf cmake.tar.gz - cmakeDir=$(ls | grep cmake-*) - mkdir -p /usr/local/bin /usr/local/share - cp -r $cmakeDir/CMake.app/Contents/bin/* /usr/local/bin/ - cp -r $cmakeDir/CMake.app/Contents/share/* /usr/local/share/ + command: command -v cmake >/dev/null || brew install cmake - run: name: Build @@ -153,6 +155,7 @@ jobs: root: LibraryResources paths: - MacOSX-x86-64 + - MacOSX-ARM64 - store_artifacts: path: ./LibraryResources/ diff --git a/scripts/buildLibraryResources.sh b/scripts/buildLibraryResources.sh index 96810ce..2741e7a 100755 --- a/scripts/buildLibraryResources.sh +++ b/scripts/buildLibraryResources.sh @@ -37,30 +37,33 @@ echo "libPostTagSystem sources hash: $shortSHA" # Build the library +cmakeOptions=() +if [ "$(uname -s)" = "Darwin" ]; then + cmakeOptions+=("-DCMAKE_OSX_ARCHITECTURES=arm64;x86_64" "-DCMAKE_OSX_DEPLOYMENT_TARGET=11.0") +fi + mkdir -p build cd build -cmake .. -DPOST_TAG_SYSTEM_ENABLE_ALLWARNINGS=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release +cmake .. -DPOST_TAG_SYSTEM_ENABLE_ALLWARNINGS=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release "${cmakeOptions[@]}" cmake --build . --config Release # Needed for multi-config generators cd .. # Set the platform-specific names -if [ "$(uname -sm)" = "Darwin x86_64" ]; then - libraryResourcesDirName=MacOSX-x86-64 +if [ "$(uname -s)" = "Darwin" ]; then + libraryResourcesDirNames=(MacOSX-x86-64 MacOSX-ARM64) libraryExtension=dylib elif [ "$(uname -sm)" = "Linux x86_64" ]; then - libraryResourcesDirName=Linux-x86-64 + libraryResourcesDirNames=(Linux-x86-64) libraryExtension=so elif [[ "$OSTYPE" == "msys" && "$(uname -m)" == "x86_64" ]]; then # Windows - libraryResourcesDirName=Windows-x86-64 + libraryResourcesDirNames=(Windows-x86-64) libraryExtension=dll else echo "Operating system unsupported" exit 1 fi -libraryDir=LibraryResources/$libraryResourcesDirName -echo "LibraryResources directory: $postTagSystemRoot/$libraryDir" echo "Library extension: $libraryExtension" # Find the compiled library @@ -79,19 +82,23 @@ echo "Found compiled library at $postTagSystemRoot/$compiledLibrary" # Copy the library to LibraryResources -mkdir -p $libraryDir -libraryDestination=$libraryDir/libPostTagSystem-$shortSHA.$libraryExtension -echo "Copying the library to $postTagSystemRoot/$libraryDestination" -cp $compiledLibrary "$libraryDestination" - -metadataDestination=$libraryDir/libPostTagSystemBuildInfo.json -echo "Writing metadata to $postTagSystemRoot/$metadataDestination" -echo "\ +for libraryResourcesDirName in "${libraryResourcesDirNames[@]}"; do + libraryDir=LibraryResources/$libraryResourcesDirName + echo "LibraryResources directory: $postTagSystemRoot/$libraryDir" + mkdir -p "$libraryDir" + libraryDestination=$libraryDir/libPostTagSystem-$shortSHA.$libraryExtension + echo "Copying the library to $postTagSystemRoot/$libraryDestination" + cp "$compiledLibrary" "$libraryDestination" + + metadataDestination=$libraryDir/libPostTagSystemBuildInfo.json + echo "Writing metadata to $postTagSystemRoot/$metadataDestination" + echo "\ { \"LibraryFileName\": \"libPostTagSystem-$shortSHA.$libraryExtension\", \"LibraryBuildTime\": $(date -u "+[%-Y, %-m, %-d, %-H, %-M, %-S]"), \"LibrarySourceHash\": \"$shortSHA\" -}" >$metadataDestination +}" >"$metadataDestination" -cat $metadataDestination + cat "$metadataDestination" +done echo "Build done" From f6e29068f19fc67c41987d7f3ebc8e7ee5f04394 Mon Sep 17 00:00:00 2001 From: Max Pi Date: Tue, 22 Sep 2026 15:53:18 -0700 Subject: [PATCH 03/10] Pin CI dependencies and restore the Windows Boost download --- .circleci/config.yml | 16 ++++++++-------- CMakeLists.txt | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8d5a2ea..6e0847a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -69,7 +69,7 @@ jobs: apk add --no-cache \ bash boost-dev boost-static git g++ make cmake \ clang py-pip shellcheck shfmt grep npm - pip install cpplint + pip install cpplint==1.5.5 npm install -g markdownlint-cli - run: @@ -163,7 +163,7 @@ jobs: windows-build: executor: name: win/default - shell: bash.exe + shell: bash.exe -eo pipefail steps: - checkout @@ -172,21 +172,21 @@ jobs: name: Install CMake command: | cmakeURL="https://github.com/Kitware/CMake/releases/download/v3.18.6/cmake-3.18.6-win64-x64.zip" - curl -L --output cmake.zip $cmakeURL + curl --fail --location --retry 3 --output cmake.zip "$cmakeURL" unzip -q cmake.zip - cmakeDir=$(dir -1 | findstr -i cmake-*) + cmakeDir=cmake-3.18.6-win64-x64 echo "export PATH=\"$(pwd)/$cmakeDir/bin:$PATH\"" >> $BASH_ENV - run: name: Install Boost headers and build libraries command: | - boostURL="https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.zip" - curl -L --output boost.zip $boostURL + boostURL="https://archives.boost.io/release/1.72.0/source/boost_1_72_0.zip" + curl --fail --location --retry 3 --output boost.zip "$boostURL" unzip -q boost.zip - boostDir=$(dir -1 | findstr -i boost_*) + boostDir=boost_1_72_0 echo "export BOOST_ROOT=\"$(pwd)/$boostDir\"" >> $BASH_ENV grep BOOST_ $BASH_ENV - cd $boostDir + cd "$boostDir" ./bootstrap.bat ./b2 --with-program_options diff --git a/CMakeLists.txt b/CMakeLists.txt index 0091000..02c143e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -119,7 +119,7 @@ if(POST_TAG_SYSTEM_BUILD_TESTING) FetchContent_Declare( googletest GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG master + GIT_TAG f8d7d77c06936315286eb55f8de22cd23c188571 # GoogleTest v1.14.0 ) set(CMAKE_POLICY_DEFAULT_CMP0048 NEW) # google test raises warning about it From a0850c76056ab3c88b1cf6efa3c3f3bab8855858 Mon Sep 17 00:00:00 2001 From: Max Pi Date: Tue, 22 Sep 2026 15:58:00 -0700 Subject: [PATCH 04/10] Use the official Wolfram Engine image for paclet CI --- .circleci/config.yml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6e0847a..2fcd818 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,15 +6,26 @@ orbs: jobs: wolfram-language-paclet-test: docker: - - image: maxitg/set-replace-wl-ci:12.1.1 - auth: - username: maxitg - password: $DOCKERHUB_PASSWORD + - image: wolframresearch/wolframengine:12.1.1 + user: root parallelism: 4 steps: + - run: + name: Install Required Tools + command: | + apt-get update + apt-get install --no-install-recommends -y g++ git openssh-client + - checkout + - run: + name: Activate Wolfram Engine + command: | + : "${WOLFRAM_PASSWORD:?Set WOLFRAM_PASSWORD in CircleCI project settings}" + wolframscript -authenticate maxitg@icloud.com "${WOLFRAM_PASSWORD}" + wolframscript -activate + - run: name: Build command: ./build.wls @@ -42,6 +53,7 @@ jobs: - run: name: Test + no_output_timeout: 20m command: | testsToRun=$(circleci tests glob "Tests/*.wlt" \ | circleci tests split --total=4 --split-by=filesize \ From 3a63ba7b7b85e7aa21ccdf79265f89236bbad4e8 Mon Sep 17 00:00:00 2001 From: Max Pi Date: Tue, 22 Sep 2026 16:02:24 -0700 Subject: [PATCH 05/10] Use configured Wolfram ID for CI activation --- .circleci/config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2fcd818..24cfc17 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -22,8 +22,9 @@ jobs: - run: name: Activate Wolfram Engine command: | + : "${WOLFRAM_ID:?Set WOLFRAM_ID in CircleCI project settings}" : "${WOLFRAM_PASSWORD:?Set WOLFRAM_PASSWORD in CircleCI project settings}" - wolframscript -authenticate maxitg@icloud.com "${WOLFRAM_PASSWORD}" + wolframscript -authenticate "${WOLFRAM_ID}" "${WOLFRAM_PASSWORD}" wolframscript -activate - run: From e5b8be8cb204e76c33bd00b3391e1820e5d0f00a Mon Sep 17 00:00:00 2001 From: Max Pi Date: Tue, 22 Sep 2026 16:19:11 -0700 Subject: [PATCH 06/10] Rerun CI with corrected Wolfram credentials From 8ebd68ee57af0264d803f32070cb1a68a606bc3b Mon Sep 17 00:00:00 2001 From: Max Pi Date: Tue, 22 Sep 2026 16:28:40 -0700 Subject: [PATCH 07/10] Install Wolfram front-end dependencies for CI tests --- .circleci/config.yml | 4 +++- test.wls | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 24cfc17..8aba784 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -15,7 +15,9 @@ jobs: name: Install Required Tools command: | apt-get update - apt-get install --no-install-recommends -y g++ git openssh-client + # UsingFrontEnd needs the runtime libraries included in the official 12.3 image. + apt-get install --no-install-recommends -y \ + g++ git openssh-client netbase libgl1-mesa-glx libfontconfig1 libasound2 - checkout diff --git a/test.wls b/test.wls index 3cfa82e..9b52ebd 100755 --- a/test.wls +++ b/test.wls @@ -1,7 +1,7 @@ #!/usr/bin/env wolframscript -(* Disable messages about outdated cloud. *) -Off[CloudConnect::clver]; +(* These tests run locally; cloud support for older kernels is not required. *) +Off[CloudConnect::clver, CloudConnect::verr]; $redColor = "\033[0;31m"; $greenColor = "\033[0;32m"; From 260b0b8d4576e71c2e0e5d24a866203c582f1215 Mon Sep 17 00:00:00 2001 From: Max Pi Date: Tue, 22 Sep 2026 16:30:12 -0700 Subject: [PATCH 08/10] Use Wolfram Engine 12.3 with bundled front-end dependencies --- .circleci/config.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8aba784..cb0b4e5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,7 +6,7 @@ orbs: jobs: wolfram-language-paclet-test: docker: - - image: wolframresearch/wolframengine:12.1.1 + - image: wolframresearch/wolframengine:12.3.0 user: root parallelism: 4 @@ -15,9 +15,7 @@ jobs: name: Install Required Tools command: | apt-get update - # UsingFrontEnd needs the runtime libraries included in the official 12.3 image. - apt-get install --no-install-recommends -y \ - g++ git openssh-client netbase libgl1-mesa-glx libfontconfig1 libasound2 + apt-get install --no-install-recommends -y g++ git openssh-client - checkout From 1973c226d036a6025e783711b7a5e4932a401f0f Mon Sep 17 00:00:00 2001 From: Max Pi Date: Tue, 22 Sep 2026 16:31:41 -0700 Subject: [PATCH 09/10] Check paclet compatibility with Wolfram Engine 15 --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cb0b4e5..855cd12 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,7 +6,7 @@ orbs: jobs: wolfram-language-paclet-test: docker: - - image: wolframresearch/wolframengine:12.3.0 + - image: wolframresearch/wolframengine:15.0.0 user: root parallelism: 4 From 2959bafb14e5a1aafe81b2dec1f44d37870a230d Mon Sep 17 00:00:00 2001 From: Max Pi Date: Tue, 22 Sep 2026 16:44:31 -0700 Subject: [PATCH 10/10] Give Wolfram test reports enough container memory --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 855cd12..74170f9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -8,6 +8,7 @@ jobs: docker: - image: wolframresearch/wolframengine:15.0.0 user: root + resource_class: large # The history-test report exceeds the default container memory. parallelism: 4 steps: