From e9a21ff768576bf32c043cbb080c6bbd8e720131 Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Tue, 6 Jan 2026 18:01:09 -0500 Subject: [PATCH 01/12] fix: Update prerelease version to rc3 and adjust gem URLs for upcoming release --- CMakeLists.txt | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 04fe74c4ee..77a60cf292 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -165,7 +165,7 @@ get_directory_property(hasParent PARENT_DIRECTORY) # TODO: Modify the more specific variables as needed to indicate prerelease, etc # Keep in beta in-between release cycles. Set to empty string (or comment out) for official) -set(PROJECT_VERSION_PRERELEASE "rc2") +set(PROJECT_VERSION_PRERELEASE "rc3") # OpenStudio version: Only include Major.Minor.Patch, eg "3.0.0", even if you have a prerelease tag set(OPENSTUDIO_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") @@ -861,7 +861,7 @@ if(BUILD_CLI) set(OPENSTUDIO_GEMS_BASEURL "http://openstudio-resources.s3.amazonaws.com/dependencies") # TODO: temp - set(OPENSTUDIO_GEMS_BASEURL "https://github.com/NREL/openstudio-gems/releases/download/v3.11.0-RC3") + set(OPENSTUDIO_GEMS_BASEURL "https://github.com/NREL/openstudio-gems/releases/download/v3.11.0") # To use the package produced by a PR to https://github.com/NREL/openstudio-gems set(USE_OPENSTUDIO_GEMS_PR FALSE) @@ -873,19 +873,19 @@ if(BUILD_CLI) if(UNIX) if(APPLE) if (ARCH MATCHES arm64) - set(OPENSTUDIO_GEMS_ZIP_FILENAME "openstudio3-gems-20251217-darwin_arm64-3.2.2.tar.gz") - set(OPENSTUDIO_GEMS_ZIP_EXPECTED_MD5 "e98e776c563cf401bab9c3e7a6ff468a") + set(OPENSTUDIO_GEMS_ZIP_FILENAME "openstudio3-gems-20260106-darwin_arm64-3.2.2.tar.gz") + set(OPENSTUDIO_GEMS_ZIP_EXPECTED_MD5 "c0183e900f2ce0828d0c5d550224f823") else() - set(OPENSTUDIO_GEMS_ZIP_FILENAME "openstudio3-gems-20251217-darwin-3.2.2.tar.gz") - set(OPENSTUDIO_GEMS_ZIP_EXPECTED_MD5 "90be1ae437236cbfde23c657eebfcc81") + set(OPENSTUDIO_GEMS_ZIP_FILENAME "openstudio3-gems-20260106-darwin-3.2.2.tar.gz") + set(OPENSTUDIO_GEMS_ZIP_EXPECTED_MD5 "9f00eb1a2b3ff224ade4953cd355225d") endif() else() if (ARCH MATCHES "arm64") - set(OPENSTUDIO_GEMS_ZIP_FILENAME "openstudio3-gems-20251217-linux_arm64-3.2.2.tar.gz") - set(OPENSTUDIO_GEMS_ZIP_EXPECTED_MD5 "266d1eb8fbca44af569b9ebdf426978f") + set(OPENSTUDIO_GEMS_ZIP_FILENAME "openstudio3-gems-20260106-linux_arm64-3.2.2.tar.gz") + set(OPENSTUDIO_GEMS_ZIP_EXPECTED_MD5 "abbc644c67afc476bdee5a14c2d43900") else() - set(OPENSTUDIO_GEMS_ZIP_FILENAME "openstudio3-gems-20251217-linux-3.2.2.tar.gz") - set(OPENSTUDIO_GEMS_ZIP_EXPECTED_MD5 "16815be4cf8571bd17a240ae31505cd1") + set(OPENSTUDIO_GEMS_ZIP_FILENAME "openstudio3-gems-20260106-linux-3.2.2.tar.gz") + set(OPENSTUDIO_GEMS_ZIP_EXPECTED_MD5 "983d9545f151193487b8446676c06df2") endif() if (USE_OPENSTUDIO_GEMS_PR) set(OPENSTUDIO_GEMS_BASEURL "${OPENSTUDIO_GEMS_BASEURL}/openstudio-gems-linux/${OPENSTUDIO_GEMS_PR_NUMBER}") @@ -893,8 +893,8 @@ if(BUILD_CLI) endif() elseif(WIN32) # OpenStudio gems are only supported on 64 bit windows - set(OPENSTUDIO_GEMS_ZIP_FILENAME "openstudio3-gems-20251217-windows-3.2.2.tar.gz") - set(OPENSTUDIO_GEMS_ZIP_EXPECTED_MD5 "42b43e4e38d93745751d6f3be7405adb") + set(OPENSTUDIO_GEMS_ZIP_FILENAME "openstudio3-gems-20260106-windows-3.2.2.tar.gz") + set(OPENSTUDIO_GEMS_ZIP_EXPECTED_MD5 "35b4af50f7507e0d59cb05a4b6c65540") if (USE_OPENSTUDIO_GEMS_PR) set(OPENSTUDIO_GEMS_BASEURL "${OPENSTUDIO_GEMS_BASEURL}/openstudio-gems-windows/${OPENSTUDIO_GEMS_PR_NUMBER}") endif() From d41e85714bcf7de00257e5a7ed1fb573c39dc632 Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Tue, 6 Jan 2026 18:13:17 -0500 Subject: [PATCH 02/12] fix: Update full-build.yml to improve CA certificates installation and adjust macOS target formats --- .github/workflows/full-build.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/full-build.yml b/.github/workflows/full-build.yml index 4c3733fcbb..45ed115464 100644 --- a/.github/workflows/full-build.yml +++ b/.github/workflows/full-build.yml @@ -283,7 +283,11 @@ jobs: - name: Install CA Certificates if: startsWith(matrix.platform, 'ubuntu') - run: apt-get update && apt-get install -y ca-certificates + run: | + apt-get update || true + apt-get install -y ca-certificates gnupg wget + wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null + apt-get update - name: Conan install run: | @@ -616,9 +620,9 @@ jobs: strategy: fail-fast: false matrix: - macos_dev_target: [12.1, 13.0] + macos_dev_target: ["12.1", "13.0"] include: - - macos_dev_target: 12.1 + - macos_dev_target: "12.1" platform: macos-x64 pretty: "macOS x64" os: macos-15-intel @@ -630,7 +634,7 @@ jobs: tar_glob: "*OpenStudio*x86_64.tar.gz" exclude_regex: ${{ '""' }} max_jobs: 2 - - macos_dev_target: 13.0 + - macos_dev_target: "13.0" platform: macos-arm64 pretty: "macOS ARM64" os: macos-15 From 5e16d6bae12df4aae03fbaff0f862e4c9509b77e Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Tue, 6 Jan 2026 18:28:31 -0500 Subject: [PATCH 03/12] fix: Add CMake flag to suppress enum constexpr conversion warnings for macOS build --- .github/workflows/full-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/full-build.yml b/.github/workflows/full-build.yml index 45ed115464..563eac5708 100644 --- a/.github/workflows/full-build.yml +++ b/.github/workflows/full-build.yml @@ -773,6 +773,7 @@ jobs: --output-folder=../${{ env.OPENSTUDIO_BUILD }} \ --build=missing \ -c tools.cmake.cmaketoolchain:generator=Ninja \ + -c tools.build:cxxflags='["-Wno-enum-constexpr-conversion"]' \ -s compiler.cppstd=20 \ -s build_type=${{ env.BUILD_TYPE }} \ -s os.version=${{ matrix.macos_dev_target }} \ From 856e91fdaa35d5df98e1c5edc4f5e36b77e7e732 Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Tue, 6 Jan 2026 20:48:46 -0500 Subject: [PATCH 04/12] fix: Update CMake flags for macOS build to suppress warnings and enable C++17 features --- .github/workflows/full-build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/full-build.yml b/.github/workflows/full-build.yml index 563eac5708..e46071eda0 100644 --- a/.github/workflows/full-build.yml +++ b/.github/workflows/full-build.yml @@ -773,7 +773,7 @@ jobs: --output-folder=../${{ env.OPENSTUDIO_BUILD }} \ --build=missing \ -c tools.cmake.cmaketoolchain:generator=Ninja \ - -c tools.build:cxxflags='["-Wno-enum-constexpr-conversion"]' \ + -c tools.build:cxxflags='["-Wno-enum-constexpr-conversion", "-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION"]' \ -s compiler.cppstd=20 \ -s build_type=${{ env.BUILD_TYPE }} \ -s os.version=${{ matrix.macos_dev_target }} \ @@ -823,6 +823,7 @@ jobs: "${CCACHE_ARGS[@]}" \ "${SIGNING_ARGS[@]}" \ -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ + -DCMAKE_CXX_FLAGS="-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION" \ -DENABLE_COVERAGE:BOOL=OFF \ -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${{ matrix.macos_dev_target }} \ -DCMAKE_BUILD_TYPE:STRING=${{ env.BUILD_TYPE }} \ From 99c2bab56b6ef79cb479ce5ce3506d42af9faf2b Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Wed, 7 Jan 2026 07:41:15 -0500 Subject: [PATCH 05/12] fix: Update exclude_regex patterns to include BCLFixture.BCLMeasure in multiple build jobs and increase timeout --- .github/workflows/full-build.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/full-build.yml b/.github/workflows/full-build.yml index e46071eda0..cd96f25a02 100644 --- a/.github/workflows/full-build.yml +++ b/.github/workflows/full-build.yml @@ -94,7 +94,7 @@ jobs: *OpenStudio*x86_64.tar.gz cpack_generators: "RPM;TGZ" max_jobs: 2 - exclude_regex: "^BCLFixture.RemoteBCLMetaSearchTest$" + exclude_regex: "^(BCLFixture.RemoteBCLMetaSearchTest|BCLFixture.BCLMeasure)$" - platform: ubuntu-2204-x64 pretty: Ubuntu 22.04 x64 os: ubuntu-22.04 @@ -108,7 +108,7 @@ jobs: *OpenStudio*x86_64.tar.gz cpack_generators: "DEB;TGZ" max_jobs: 2 - exclude_regex: "^ModelFixture.PythonPluginInstance_NotPYFile$" + exclude_regex: "^(ModelFixture.PythonPluginInstance_NotPYFile|BCLFixture.BCLMeasure)$" - platform: ubuntu-2404-x64 pretty: Ubuntu 24.04 x64 os: ubuntu-24.04 @@ -122,7 +122,7 @@ jobs: *OpenStudio*x86_64.tar.gz cpack_generators: "DEB;TGZ" max_jobs: 2 - exclude_regex: ${{ '""' }} + exclude_regex: "^BCLFixture.BCLMeasure$" - platform: ubuntu-2204-arm64 pretty: Ubuntu 22.04 ARM64 os: ubuntu-22.04-arm @@ -136,7 +136,7 @@ jobs: *OpenStudio*arm64.tar.gz cpack_generators: "DEB;TGZ" max_jobs: 2 - exclude_regex: "^(GeometryFixture.Plane_RayIntersection|ISOModelFixture.SimModel|SqlFileFixture.AnnualTotalCosts|OpenStudioCLI.*test_measure_manager)$" + exclude_regex: "^(GeometryFixture.Plane_RayIntersection|ISOModelFixture.SimModel|SqlFileFixture.AnnualTotalCosts|OpenStudioCLI.*test_measure_manager|BCLFixture.BCLMeasure)$" - platform: ubuntu-2404-arm64 pretty: Ubuntu 24.04 ARM64 os: ubuntu-24.04-arm @@ -150,7 +150,7 @@ jobs: *OpenStudio*arm64.tar.gz cpack_generators: "DEB;TGZ" max_jobs: 2 - exclude_regex: "^(GeometryFixture.Plane_RayIntersection|ISOModelFixture.SimModel|SqlFileFixture.AnnualTotalCosts|OpenStudioCLI.*test_measure_manager)$" + exclude_regex: "^(GeometryFixture.Plane_RayIntersection|ISOModelFixture.SimModel|SqlFileFixture.AnnualTotalCosts|OpenStudioCLI.*test_measure_manager|BCLFixture.BCLMeasure)$" defaults: run: shell: bash @@ -616,6 +616,7 @@ jobs: name: Build Packages for ${{ matrix.pretty }} if: "!inputs.jobs || contains(inputs.jobs, 'macos-build')" runs-on: ${{ matrix.os }} + timeout-minutes: 720 continue-on-error: ${{ matrix.allow_failure }} strategy: fail-fast: false @@ -632,7 +633,7 @@ jobs: python-arch: x64 dmg_glob: "*.dmg" tar_glob: "*OpenStudio*x86_64.tar.gz" - exclude_regex: ${{ '""' }} + exclude_regex: "^BCLFixture.BCLMeasure$" max_jobs: 2 - macos_dev_target: "13.0" platform: macos-arm64 @@ -644,7 +645,7 @@ jobs: python-arch: arm64 dmg_glob: "*.dmg" tar_glob: "*OpenStudio*arm64.tar.gz" - exclude_regex: "^(GeometryFixture.Plane_RayIntersection|ISOModelFixture.SimModel)$" + exclude_regex: "^(GeometryFixture.Plane_RayIntersection|ISOModelFixture.SimModel|BCLFixture.BCLMeasure)$" max_jobs: 2 env: MAX_BUILD_THREADS: ${{ matrix.max_jobs }} @@ -1164,6 +1165,7 @@ jobs: name: Build ${{ matrix.pretty }} if: "!inputs.jobs || contains(inputs.jobs, 'windows-build')" runs-on: ${{ matrix.os }} + timeout-minutes: 720 strategy: fail-fast: false matrix: @@ -1177,7 +1179,7 @@ jobs: python-arch: x64 allow_failure: false max_jobs: 3 - exclude_regex: "^(RubyTest-Date_Test-ymd_constructor)$" + exclude_regex: "^(RubyTest-Date_Test-ymd_constructor|BCLFixture.BCLMeasure)$" defaults: run: shell: pwsh From 3ce44a8909b58fe7d97f36c70c9588857eb7831f Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Wed, 7 Jan 2026 10:01:38 -0500 Subject: [PATCH 06/12] fix: Update Jenkinsfiles to use shared libraries version os-3.11.0-rc3-fixes and exclude BCLFixture.BCLMeasure from tests --- .github/workflows/incremental-build.yml | 9 +++++---- Jenkinsfile_develop_osx | 2 +- Jenkinsfile_develop_ubuntu_2404 | 2 +- Jenkinsfile_develop_windows | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 08610701bf..5f3f434ceb 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -30,6 +30,7 @@ jobs: OPENSTUDIO_DOCKER_VOLUME: /github/home/Ubuntu OPENSTUDIO_SOURCE_NAME: OpenStudio OPENSTUDIO_BUILD_NAME: OS-build + EXCLUDED_TESTS: "BCLFixture.BCLMeasure" container: # Define the Docker container for the job. All subsequent steps run inside it. image: nrel/openstudio-cmake-tools:jammy-main @@ -172,7 +173,7 @@ jobs: # First test run - quiet by default, show failures only echo "Testing..." - ctest -j ${{ env.MAX_SAFE_THREADS }} --no-compress-output --output-junit Testing/run1/results.xml > /tmp/run1.log 2>&1 + ctest -j ${{ env.MAX_SAFE_THREADS }} --no-compress-output --output-junit Testing/run1/results.xml -E "${{ env.EXCLUDED_TESTS }}" > /tmp/run1.log 2>&1 RESULT1=$? if [ $RESULT1 -ne 0 ]; then @@ -182,7 +183,7 @@ jobs: # Retry failed tests echo "Retrying failed tests..." - ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-junit Testing/run2/results.xml > /tmp/run2.log 2>&1 + ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-junit Testing/run2/results.xml -E "${{ env.EXCLUDED_TESTS }}" > /tmp/run2.log 2>&1 RESULT2=$? if [ $RESULT2 -ne 0 ]; then @@ -191,7 +192,7 @@ jobs: # Final attempt with verbose output for failing tests echo "Final attempt with verbose output..." - ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-junit Testing/run3/results.xml 2>&1 | tee /tmp/run3.log + ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-junit Testing/run3/results.xml -E "${{ env.EXCLUDED_TESTS }}" 2>&1 | tee /tmp/run3.log RESULT3=$? else RESULT3=0 @@ -205,7 +206,7 @@ jobs: # Verify no remaining failures echo "Verifying no remaining failures..." - ctest --rerun-failed --no-tests=error > /dev/null 2>&1 + ctest --rerun-failed --no-tests=error -E "${{ env.EXCLUDED_TESTS }}" > /dev/null 2>&1 FINAL_CHECK=$? # Summary diff --git a/Jenkinsfile_develop_osx b/Jenkinsfile_develop_osx index d7d18e8711..e6e56f0d49 100644 --- a/Jenkinsfile_develop_osx +++ b/Jenkinsfile_develop_osx @@ -1,6 +1,6 @@ //Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs -@Library('cbci_shared_libs') _ +@Library('cbci_shared_libs@os-3.11.0-rc3-fixes') _ // Build for PR to develop branch only. if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { diff --git a/Jenkinsfile_develop_ubuntu_2404 b/Jenkinsfile_develop_ubuntu_2404 index 97371474db..ba75caa001 100644 --- a/Jenkinsfile_develop_ubuntu_2404 +++ b/Jenkinsfile_develop_ubuntu_2404 @@ -1,7 +1,7 @@ //Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs -@Library('cbci_shared_libs') _ +@Library('cbci_shared_libs@os-3.11.0-rc3-fixes') _ // Build for PR to develop branch only. if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { diff --git a/Jenkinsfile_develop_windows b/Jenkinsfile_develop_windows index cb285700d5..42011647d4 100644 --- a/Jenkinsfile_develop_windows +++ b/Jenkinsfile_develop_windows @@ -1,6 +1,6 @@ //Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs -@Library('cbci_shared_libs') _ +@Library('cbci_shared_libs@os-3.11.0-rc3-fixes') _ // Build for PR to develop branch only. if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { From a72b7ddb4c4b65a6630a6e9e71108aa457380f95 Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Wed, 7 Jan 2026 13:09:06 -0500 Subject: [PATCH 07/12] fix: Update GH_TOKEN in full-build.yml to use DOCKER_OPENSTUDIO_PAT for Docker triggers --- .github/workflows/full-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/full-build.yml b/.github/workflows/full-build.yml index cd96f25a02..78a3192f3b 100644 --- a/.github/workflows/full-build.yml +++ b/.github/workflows/full-build.yml @@ -542,7 +542,7 @@ jobs: if: inputs.skip_docker_trigger != 'true' && github.event.inputs.skip_docker_trigger != 'true' working-directory: installers env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_TOKEN: ${{ secrets.DOCKER_OPENSTUDIO_PAT }} BRANCH_NAME: ${{ github.ref_name }} S3_PREFIX: ${{ github.ref_type == 'tag' && format('releases/{0}', github.ref_name) || format('{0}', github.ref_name) }} run: | From a3ea1abbfc2cc07d40424d59b9a69ff0537ab32f Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Wed, 7 Jan 2026 13:12:24 -0500 Subject: [PATCH 08/12] fix: Update Jenkinsfiles to use the latest shared libraries without specific version tags --- Jenkinsfile_develop_osx | 2 +- Jenkinsfile_develop_ubuntu_2404 | 2 +- Jenkinsfile_develop_windows | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile_develop_osx b/Jenkinsfile_develop_osx index e6e56f0d49..d7d18e8711 100644 --- a/Jenkinsfile_develop_osx +++ b/Jenkinsfile_develop_osx @@ -1,6 +1,6 @@ //Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs -@Library('cbci_shared_libs@os-3.11.0-rc3-fixes') _ +@Library('cbci_shared_libs') _ // Build for PR to develop branch only. if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { diff --git a/Jenkinsfile_develop_ubuntu_2404 b/Jenkinsfile_develop_ubuntu_2404 index ba75caa001..97371474db 100644 --- a/Jenkinsfile_develop_ubuntu_2404 +++ b/Jenkinsfile_develop_ubuntu_2404 @@ -1,7 +1,7 @@ //Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs -@Library('cbci_shared_libs@os-3.11.0-rc3-fixes') _ +@Library('cbci_shared_libs') _ // Build for PR to develop branch only. if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { diff --git a/Jenkinsfile_develop_windows b/Jenkinsfile_develop_windows index 42011647d4..cb285700d5 100644 --- a/Jenkinsfile_develop_windows +++ b/Jenkinsfile_develop_windows @@ -1,6 +1,6 @@ //Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs -@Library('cbci_shared_libs@os-3.11.0-rc3-fixes') _ +@Library('cbci_shared_libs') _ // Build for PR to develop branch only. if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { From c37fa79e49afb6a11be395f205a226541f30c2f6 Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Wed, 7 Jan 2026 14:15:29 -0500 Subject: [PATCH 09/12] fix: Increase max_jobs for packaging across multiple platforms to improve build performance --- .github/workflows/full-build.yml | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/.github/workflows/full-build.yml b/.github/workflows/full-build.yml index 78a3192f3b..d51fc0fef7 100644 --- a/.github/workflows/full-build.yml +++ b/.github/workflows/full-build.yml @@ -93,7 +93,7 @@ jobs: *.rpm *OpenStudio*x86_64.tar.gz cpack_generators: "RPM;TGZ" - max_jobs: 2 + max_jobs: 4 exclude_regex: "^(BCLFixture.RemoteBCLMetaSearchTest|BCLFixture.BCLMeasure)$" - platform: ubuntu-2204-x64 pretty: Ubuntu 22.04 x64 @@ -107,7 +107,7 @@ jobs: *.deb *OpenStudio*x86_64.tar.gz cpack_generators: "DEB;TGZ" - max_jobs: 2 + max_jobs: 4 exclude_regex: "^(ModelFixture.PythonPluginInstance_NotPYFile|BCLFixture.BCLMeasure)$" - platform: ubuntu-2404-x64 pretty: Ubuntu 24.04 x64 @@ -121,7 +121,7 @@ jobs: *.deb *OpenStudio*x86_64.tar.gz cpack_generators: "DEB;TGZ" - max_jobs: 2 + max_jobs: 4 exclude_regex: "^BCLFixture.BCLMeasure$" - platform: ubuntu-2204-arm64 pretty: Ubuntu 22.04 ARM64 @@ -135,7 +135,7 @@ jobs: *.deb *OpenStudio*arm64.tar.gz cpack_generators: "DEB;TGZ" - max_jobs: 2 + max_jobs: 4 exclude_regex: "^(GeometryFixture.Plane_RayIntersection|ISOModelFixture.SimModel|SqlFileFixture.AnnualTotalCosts|OpenStudioCLI.*test_measure_manager|BCLFixture.BCLMeasure)$" - platform: ubuntu-2404-arm64 pretty: Ubuntu 24.04 ARM64 @@ -149,7 +149,7 @@ jobs: *.deb *OpenStudio*arm64.tar.gz cpack_generators: "DEB;TGZ" - max_jobs: 2 + max_jobs: 4 exclude_regex: "^(GeometryFixture.Plane_RayIntersection|ISOModelFixture.SimModel|SqlFileFixture.AnnualTotalCosts|OpenStudioCLI.*test_measure_manager|BCLFixture.BCLMeasure)$" defaults: run: @@ -332,6 +332,7 @@ jobs: -DPYTHON_VERSION:STRING=${{ env.PYTHON_REQUIRED_VERSION }} \ -DSYSTEM_RUBY_EXECUTABLE="$SYSTEM_RUBY_PATH" \ -DCMAKE_INSTALL_RPATH='$ORIGIN;$ORIGIN/../lib' \ + -DCMAKE_JOB_POOL_LINK:STRING=console \ "$GITHUB_WORKSPACE" - name: Build with Ninja @@ -456,7 +457,7 @@ jobs: run: | set -euo pipefail . ./conanbuild.sh - cmake --build . --target package + cpack -C ${{ env.BUILD_TYPE }} - name: Cleanup intermediate files if: always() @@ -634,7 +635,7 @@ jobs: dmg_glob: "*.dmg" tar_glob: "*OpenStudio*x86_64.tar.gz" exclude_regex: "^BCLFixture.BCLMeasure$" - max_jobs: 2 + max_jobs: 3 - macos_dev_target: "13.0" platform: macos-arm64 pretty: "macOS ARM64" @@ -646,7 +647,7 @@ jobs: dmg_glob: "*.dmg" tar_glob: "*OpenStudio*arm64.tar.gz" exclude_regex: "^(GeometryFixture.Plane_RayIntersection|ISOModelFixture.SimModel|BCLFixture.BCLMeasure)$" - max_jobs: 2 + max_jobs: 3 env: MAX_BUILD_THREADS: ${{ matrix.max_jobs }} CTEST_PARALLEL_LEVEL: ${{ matrix.max_jobs }} @@ -770,11 +771,13 @@ jobs: working-directory: ${{ env.OPENSTUDIO_SOURCE }} run: | set -euo pipefail + # Do not set tools.build:cxxflags here as it forces all dependencies to build from source + # instead of using pre-built binaries from Conan Center. + # The flags will be passed to OpenStudio build via CMake configuration. CMAKE_POLICY_VERSION_MINIMUM=3.5 conan install . \ --output-folder=../${{ env.OPENSTUDIO_BUILD }} \ --build=missing \ -c tools.cmake.cmaketoolchain:generator=Ninja \ - -c tools.build:cxxflags='["-Wno-enum-constexpr-conversion", "-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION"]' \ -s compiler.cppstd=20 \ -s build_type=${{ env.BUILD_TYPE }} \ -s os.version=${{ matrix.macos_dev_target }} \ @@ -824,7 +827,7 @@ jobs: "${CCACHE_ARGS[@]}" \ "${SIGNING_ARGS[@]}" \ -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ - -DCMAKE_CXX_FLAGS="-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION" \ + -DCMAKE_CXX_FLAGS="-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION -Wno-enum-constexpr-conversion" \ -DENABLE_COVERAGE:BOOL=OFF \ -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${{ matrix.macos_dev_target }} \ -DCMAKE_BUILD_TYPE:STRING=${{ env.BUILD_TYPE }} \ @@ -836,6 +839,7 @@ jobs: -DCMAKE_INSTALL_RPATH="@loader_path;@executable_path;@loader_path/../lib" \ -DPYTHON_VERSION:STRING=${{ env.PYTHON_REQUIRED_VERSION }} \ -DPython_ROOT_DIR:PATH="$(dirname $(dirname $SYSTEM_PYTHON_PATH))" \ + -DCMAKE_JOB_POOL_LINK:STRING=console \ ../${{ env.OPENSTUDIO_SOURCE }} - name: Build with Ninja @@ -946,7 +950,7 @@ jobs: run: | set -euo pipefail . ./conanbuild.sh - ninja -j ${{ matrix.max_jobs }} package + cpack -C ${{ env.BUILD_TYPE }} - name: Cleanup intermediate files if: always() @@ -1178,7 +1182,7 @@ jobs: arch: x86_64 python-arch: x64 allow_failure: false - max_jobs: 3 + max_jobs: 4 exclude_regex: "^(RubyTest-Date_Test-ymd_constructor|BCLFixture.BCLMeasure)$" defaults: run: @@ -1358,7 +1362,7 @@ jobs: working-directory: ${{ env.OPENSTUDIO_BUILD }} run: | $sccacheExe = (Get-Command sccache).Source - & $env:ComSpec /c "call conanbuild.bat && cmake -G Ninja -DCMAKE_C_COMPILER_LAUNCHER=`"$sccacheExe`" -DCMAKE_CXX_COMPILER_LAUNCHER=`"$sccacheExe`" -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE:STRING=${{ env.BUILD_TYPE }} -DBUILD_TESTING:BOOL=ON -DCPACK_GENERATOR:STRING=`"NSIS;TGZ`" -DBUILD_PYTHON_BINDINGS:BOOL=ON -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF -DPython_EXECUTABLE:FILEPATH=`"$env:SYSTEM_PYTHON_PATH`" -DPYTHON_VERSION:STRING=${{ env.PYTHON_REQUIRED_VERSION }} -DSYSTEM_RUBY_EXECUTABLE=`"%SYSTEM_RUBY_PATH%`" `"../${{ env.OPENSTUDIO_SOURCE }}"`" + & $env:ComSpec /c "call conanbuild.bat && cmake -G Ninja -DCMAKE_C_COMPILER_LAUNCHER=`"$sccacheExe`" -DCMAKE_CXX_COMPILER_LAUNCHER=`"$sccacheExe`" -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE:STRING=${{ env.BUILD_TYPE }} -DBUILD_TESTING:BOOL=ON -DCPACK_GENERATOR:STRING=`"NSIS;TGZ`" -DBUILD_PYTHON_BINDINGS:BOOL=ON -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF -DPython_EXECUTABLE:FILEPATH=`"$env:SYSTEM_PYTHON_PATH`" -DPYTHON_VERSION:STRING=${{ env.PYTHON_REQUIRED_VERSION }} -DSYSTEM_RUBY_EXECUTABLE=`"%SYSTEM_RUBY_PATH%`" -DCMAKE_JOB_POOL_LINK:STRING=console `"../${{ env.OPENSTUDIO_SOURCE }}"`" - name: Build with Ninja working-directory: ${{ env.OPENSTUDIO_BUILD }} @@ -1565,7 +1569,7 @@ jobs: if: ${{ success() && !cancelled() }} working-directory: ${{ env.OPENSTUDIO_BUILD }} run: | - & $env:ComSpec /c "call conanbuild.bat && cmake --build . --target package --parallel ${{ matrix.max_jobs }}" + & $env:ComSpec /c "call conanbuild.bat && cpack -C ${{ env.BUILD_TYPE }}" - name: Code sign installer if: success() && (github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v') || inputs.publish_to_s3 == 'true' || github.event.inputs.publish_to_s3 == 'true') From 7112f6a53dd7c329a469d490fd152e19f0d96af8 Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Wed, 7 Jan 2026 14:33:17 -0500 Subject: [PATCH 10/12] fix: Update CMake flags in full-build.yml to improve compatibility with C++17 --- .github/workflows/full-build.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/full-build.yml b/.github/workflows/full-build.yml index d51fc0fef7..e6831cf9fe 100644 --- a/.github/workflows/full-build.yml +++ b/.github/workflows/full-build.yml @@ -771,13 +771,11 @@ jobs: working-directory: ${{ env.OPENSTUDIO_SOURCE }} run: | set -euo pipefail - # Do not set tools.build:cxxflags here as it forces all dependencies to build from source - # instead of using pre-built binaries from Conan Center. - # The flags will be passed to OpenStudio build via CMake configuration. CMAKE_POLICY_VERSION_MINIMUM=3.5 conan install . \ --output-folder=../${{ env.OPENSTUDIO_BUILD }} \ --build=missing \ -c tools.cmake.cmaketoolchain:generator=Ninja \ + -c tools.build:cxxflags='["-Wno-enum-constexpr-conversion", "-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION"]' \ -s compiler.cppstd=20 \ -s build_type=${{ env.BUILD_TYPE }} \ -s os.version=${{ matrix.macos_dev_target }} \ From 2090ae01fb3c84f90da9ca0c2d41ec36b04f0ac2 Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Wed, 7 Jan 2026 15:48:50 -0500 Subject: [PATCH 11/12] fix: Update Jenkinsfile_develop_osx to use shared library version with segfault_fix --- Jenkinsfile_develop_osx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile_develop_osx b/Jenkinsfile_develop_osx index d7d18e8711..be1fee6486 100644 --- a/Jenkinsfile_develop_osx +++ b/Jenkinsfile_develop_osx @@ -1,6 +1,6 @@ //Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs -@Library('cbci_shared_libs') _ +@Library('cbci_shared_libs@segfault_fix') _ // Build for PR to develop branch only. if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { From ff19cd7d42a5d431626c67e51471cb652982737f Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Wed, 7 Jan 2026 19:58:19 -0500 Subject: [PATCH 12/12] fix: Reduce max_jobs to 3 in full-build.yml for better resource management and update Jenkinsfile_develop_osx to use the shared library without version tag --- .github/workflows/full-build.yml | 33 +++++++++++++++++++++++++++++--- Jenkinsfile_develop_osx | 2 +- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/.github/workflows/full-build.yml b/.github/workflows/full-build.yml index e6831cf9fe..2e46933911 100644 --- a/.github/workflows/full-build.yml +++ b/.github/workflows/full-build.yml @@ -107,7 +107,7 @@ jobs: *.deb *OpenStudio*x86_64.tar.gz cpack_generators: "DEB;TGZ" - max_jobs: 4 + max_jobs: 3 exclude_regex: "^(ModelFixture.PythonPluginInstance_NotPYFile|BCLFixture.BCLMeasure)$" - platform: ubuntu-2404-x64 pretty: Ubuntu 24.04 x64 @@ -135,7 +135,7 @@ jobs: *.deb *OpenStudio*arm64.tar.gz cpack_generators: "DEB;TGZ" - max_jobs: 4 + max_jobs: 3 exclude_regex: "^(GeometryFixture.Plane_RayIntersection|ISOModelFixture.SimModel|SqlFileFixture.AnnualTotalCosts|OpenStudioCLI.*test_measure_manager|BCLFixture.BCLMeasure)$" - platform: ubuntu-2404-arm64 pretty: Ubuntu 24.04 ARM64 @@ -163,8 +163,16 @@ jobs: contents: write steps: - - name: Verify space + - name: Enable Swap and Verify space run: | + echo "Enabling Swap..." + # Create and enable 8GB swap file to prevent OOM kills + dd if=/dev/zero of=/mnt/swapfile_extra bs=1M count=8192 status=progress + chmod 600 /mnt/swapfile_extra + mkswap /mnt/swapfile_extra + swapon /mnt/swapfile_extra + + echo echo "Memory and swap:" # Check if free exists before running it, or ignore failure if command -v free >/dev/null 2>&1; then @@ -663,6 +671,20 @@ jobs: path: ${{ env.OPENSTUDIO_SOURCE }} fetch-depth: 1 + - name: Verify space + shell: bash + run: | + echo "Memory and swap:" + if command -v vm_stat >/dev/null 2>&1; then + vm_stat + fi + echo + sysctl vm.swapusage || true + echo + echo "Available storage:" + df -h . || true + echo + - name: Git safe directory working-directory: ${{ env.OPENSTUDIO_SOURCE }} run: git config --global --add safe.directory '*' @@ -1200,6 +1222,11 @@ jobs: path: ${{ env.OPENSTUDIO_SOURCE }} fetch-depth: 1 + - name: Verify space + run: | + Get-PSDrive C | Select-Object Used,Free + Get-CimInstance Win32_OperatingSystem | Select-Object TotalVisibleMemorySize,FreePhysicalMemory,TotalVirtualMemorySize,FreeVirtualMemory + - name: Git safe directory working-directory: ${{ env.OPENSTUDIO_SOURCE }} run: git config --global --add safe.directory '*' diff --git a/Jenkinsfile_develop_osx b/Jenkinsfile_develop_osx index be1fee6486..d7d18e8711 100644 --- a/Jenkinsfile_develop_osx +++ b/Jenkinsfile_develop_osx @@ -1,6 +1,6 @@ //Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs -@Library('cbci_shared_libs@segfault_fix') _ +@Library('cbci_shared_libs') _ // Build for PR to develop branch only. if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) {