From e3152ca639956c5d646d4549bc30b738a793f1ce Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Tue, 2 Jun 2026 16:29:53 +0200 Subject: [PATCH 1/6] Bump energyplus_transition_tools to 2.1.5 https://github.com/Myoldmopar/EnergyPlusTransitionTools/releases/tag/v2.1.5 --- cmake/PythonInstallCLITools.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/PythonInstallCLITools.py b/cmake/PythonInstallCLITools.py index fc12f2b26fb..47eaf85cfc4 100644 --- a/cmake/PythonInstallCLITools.py +++ b/cmake/PythonInstallCLITools.py @@ -61,7 +61,7 @@ PKGS = { "energyplus_launch": "3.7.4", - "energyplus_transition_tools": "2.1.4", + "energyplus_transition_tools": "2.1.5", "ghedesigner": "2.1.1", } From 8e5def87a5e19cbd8909f0e1e47dc0f801a2fbd7 Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Wed, 3 Jun 2026 11:29:02 +0200 Subject: [PATCH 2/6] macos x86-64 doesn't build: fmt -> std::format forces usage of MACOSX_DEPLOYMENT_TARGET=13.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Apple's libc++ marks to_chars for floating-point types (including long double) as unavailable below macOS 13.0 (Ventura). std::format with floating-point arguments internally calls to_chars, so the   whole chain requires 13.0 minimum --- .github/workflows/release_mac.yml | 4 ++-- CMakeLists.txt | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release_mac.yml b/.github/workflows/release_mac.yml index b77541fae09..dfe8ef4ab86 100644 --- a/.github/workflows/release_mac.yml +++ b/.github/workflows/release_mac.yml @@ -29,9 +29,9 @@ jobs: # fail-fast: Default is true, switch to false to allow one platform to fail and still run others fail-fast: false matrix: - macos_dev_target: [12.1, 14.0] + macos_dev_target: [13.0, 14.0] include: - - macos_dev_target: 12.1 + - macos_dev_target: 13.0 os: macos-15-intel allow_failure: false arch: x86_64 diff --git a/CMakeLists.txt b/CMakeLists.txt index 07e4817b047..61e42ab789d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,12 +13,13 @@ endif() project(EnergyPlus) -# Raise an error if attempting to compile on macOS older than 10.15 - it does not work +# Raise an error if attempting to compile on macOS older than 13.0 - it does not work +# 10.15 minimum for std::filesystem, and 13.0 minimum for std::format if (APPLE) if(NOT CMAKE_OSX_DEPLOYMENT_TARGET) - message(FATAL_ERROR "CMAKE_OSX_DEPLOYMENT_TARGET not set. Please set CMAKE_OSX_DEPLOYMENT_TARGET to 10.15 or greater and try again.") - elseif (CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS "10.15") - message(FATAL_ERROR "The minimum required version for macOS is 10.15, however CMAKE_OSX_DEPLOYMENT_TARGET is set to ${CMAKE_OSX_DEPLOYMENT_TARGET}.") + message(FATAL_ERROR "CMAKE_OSX_DEPLOYMENT_TARGET not set. Please set CMAKE_OSX_DEPLOYMENT_TARGET to 13.0 or greater and try again.") + elseif (CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS "13.0") + message(FATAL_ERROR "The minimum required version for macOS is 13.0, however CMAKE_OSX_DEPLOYMENT_TARGET is set to ${CMAKE_OSX_DEPLOYMENT_TARGET}.") endif() endif() From 6ad519885df174c2b94c77dd886bc44234fdadbe Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Wed, 3 Jun 2026 12:59:01 +0200 Subject: [PATCH 3/6] Add a new "energyplus auxiliary updater-cli" subcommand --- src/EnergyPlus/CommandLineInterface.cc | 28 +++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/EnergyPlus/CommandLineInterface.cc b/src/EnergyPlus/CommandLineInterface.cc index 07e3a4d43f6..e8c3b673cb4 100644 --- a/src/EnergyPlus/CommandLineInterface.cc +++ b/src/EnergyPlus/CommandLineInterface.cc @@ -257,7 +257,7 @@ main_gui(True) exit(0); }); - auto *updaterSubCommand = auxiliaryToolsSubcommand->add_subcommand("updater", "IDF Version Updater"); + auto *updaterSubCommand = auxiliaryToolsSubcommand->add_subcommand("updater", "IDF Version Updater GUI"); updaterSubCommand->add_option("args", python_fwd_args, "Extra Arguments forwarded to IDF Version Updater")->option_text("ARG ..."); updaterSubCommand->positionals_at_end(true); updaterSubCommand->footer("You can pass extra arguments after the updater keyword, they will be forwarded to IDF Version Updater."); @@ -274,6 +274,32 @@ main_gui(True) exit(0); }); + auto *updaterCLISubCommand = auxiliaryToolsSubcommand->add_subcommand("updater-cli", "IDF Version Updater CLI"); + updaterCLISubCommand->allow_extras(); + updaterCLISubCommand->footer("You can pass extra arguments after the updater-cli keyword, they will be forwarded to IDF Version Updater.\n" + "To get updater-cli's help, invoke without any arguments."); + + updaterCLISubCommand->callback([&state, updaterCLISubCommand] { + EnergyPlus::Python::PythonEngine engine(state); + auto const &fwd_args = updaterCLISubCommand->remaining(); + + std::string cmd = R"python(import sys +sys.argv = ["energyplus auxiliary updater-cli"] + +from energyplus_transition.cli import main +main([)python"; + if (fwd_args.empty()) { + cmd += "\"--help\""; + } else { + for (const auto &arg : fwd_args) { + cmd += EnergyPlus::format("\"{}\", ", arg); + } + } + cmd += "])\n"; + engine.exec(cmd); + exit(0); + }); + auto *gheDesignerSubCommand = auxiliaryToolsSubcommand->add_subcommand("ghedesigner", "GHEDesigner Operation"); gheDesignerSubCommand->add_option("args", python_fwd_args, "Extra Arguments forwarded to GHEDesigner")->option_text("ARG ..."); gheDesignerSubCommand->positionals_at_end(true); From aca8258cb782167e0306cfdc5a8bef8097e5e5a1 Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Wed, 3 Jun 2026 14:01:55 +0200 Subject: [PATCH 4/6] Bump x86_64 mac osx deplloyment target to 13.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Matrix key changed from macos_dev_target to os — cleaner since the OS runner is the stable identifier, with macos_dev_target as a per-include property rather than the primary dimension. 2. x86-64 deployment target bumped from 12.1 to 13.3 — necessary for std::format with floating-point. --- .github/workflows/release_mac.yml | 20 ++++++++++---------- CMakeLists.txt | 10 +++++----- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/release_mac.yml b/.github/workflows/release_mac.yml index dfe8ef4ab86..efa236ea662 100644 --- a/.github/workflows/release_mac.yml +++ b/.github/workflows/release_mac.yml @@ -29,16 +29,16 @@ jobs: # fail-fast: Default is true, switch to false to allow one platform to fail and still run others fail-fast: false matrix: - macos_dev_target: [13.0, 14.0] + os: [macos-15-intel, macos-14] include: - - macos_dev_target: 13.0 - os: macos-15-intel + - os: macos-15-intel + macos_dev_target: 13.3 allow_failure: false arch: x86_64 python-arch: x64 pretty: "Mac x64" - - macos_dev_target: 14.0 - os: macos-14 + - os: macos-14 + macos_dev_target: 14.0 allow_failure: false arch: arm64 python-arch: arm64 @@ -287,15 +287,15 @@ jobs: # fail-fast: Default is true, switch to false to allow one platform to fail and still run others fail-fast: false matrix: - macos_dev_target: [12.1, 14.0] + os: [macos-15-intel, macos-14] include: - - macos_dev_target: 12.1 - os: macos-15-intel + - os: macos-15-intel + macos_dev_target: 13.3 arch: x86_64 python-arch: x64 test_key: mac12 - - macos_dev_target: 14.0 - os: macos-14 + - os: macos-14 + macos_dev_target: 14.0 arch: arm64 python-arch: arm64 test_key: mac14-arm64 diff --git a/CMakeLists.txt b/CMakeLists.txt index 61e42ab789d..c40efdadbcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,13 +13,13 @@ endif() project(EnergyPlus) -# Raise an error if attempting to compile on macOS older than 13.0 - it does not work -# 10.15 minimum for std::filesystem, and 13.0 minimum for std::format +# Raise an error if attempting to compile on macOS older than 13.3 - it does not work +# 10.15 minimum for std::filesystem, 13.3 minimum for std::format with floating-point (to_chars) if (APPLE) if(NOT CMAKE_OSX_DEPLOYMENT_TARGET) - message(FATAL_ERROR "CMAKE_OSX_DEPLOYMENT_TARGET not set. Please set CMAKE_OSX_DEPLOYMENT_TARGET to 13.0 or greater and try again.") - elseif (CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS "13.0") - message(FATAL_ERROR "The minimum required version for macOS is 13.0, however CMAKE_OSX_DEPLOYMENT_TARGET is set to ${CMAKE_OSX_DEPLOYMENT_TARGET}.") + message(FATAL_ERROR "CMAKE_OSX_DEPLOYMENT_TARGET not set. Please set CMAKE_OSX_DEPLOYMENT_TARGET to 13.3 or greater and try again.") + elseif (CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS "13.3") + message(FATAL_ERROR "The minimum required version for macOS is 13.3, however CMAKE_OSX_DEPLOYMENT_TARGET is set to ${CMAKE_OSX_DEPLOYMENT_TARGET}.") endif() endif() From bbe1730d8a0b6afe32030e871f6193f2edf53733 Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Wed, 3 Jun 2026 16:07:25 +0200 Subject: [PATCH 5/6] Bump energyplus_transition_tools to 3.0.0: uses tqdm as a requirement --- cmake/PythonInstallCLITools.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/PythonInstallCLITools.py b/cmake/PythonInstallCLITools.py index 47eaf85cfc4..f10e55366fe 100644 --- a/cmake/PythonInstallCLITools.py +++ b/cmake/PythonInstallCLITools.py @@ -61,7 +61,7 @@ PKGS = { "energyplus_launch": "3.7.4", - "energyplus_transition_tools": "2.1.5", + "energyplus_transition_tools": "3.0.0", "ghedesigner": "2.1.1", } From 9486a648e6032f2a70146b519cc84a21b915d786 Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Wed, 3 Jun 2026 17:05:10 +0200 Subject: [PATCH 6/6] Pass --eplus-dir to the current executable directory so it doesn't autofind --- src/EnergyPlus/CommandLineInterface.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/EnergyPlus/CommandLineInterface.cc b/src/EnergyPlus/CommandLineInterface.cc index e8c3b673cb4..866a938470f 100644 --- a/src/EnergyPlus/CommandLineInterface.cc +++ b/src/EnergyPlus/CommandLineInterface.cc @@ -277,7 +277,7 @@ main_gui(True) auto *updaterCLISubCommand = auxiliaryToolsSubcommand->add_subcommand("updater-cli", "IDF Version Updater CLI"); updaterCLISubCommand->allow_extras(); updaterCLISubCommand->footer("You can pass extra arguments after the updater-cli keyword, they will be forwarded to IDF Version Updater.\n" - "To get updater-cli's help, invoke without any arguments."); + "To get updater-cli's help, invoke without any arguments."); updaterCLISubCommand->callback([&state, updaterCLISubCommand] { EnergyPlus::Python::PythonEngine engine(state); @@ -291,6 +291,13 @@ main([)python"; if (fwd_args.empty()) { cmd += "\"--help\""; } else { + // Unless specifically passed, we pass eplus-dir to the current executable directory, so it doesn't try to auto find in the usual + // installation paths + bool eplus_dir_provided = + std::any_of(fwd_args.begin(), fwd_args.end(), [](const std::string &a) { return a == "-e" || a == "--eplus-dir"; }); + if (!eplus_dir_provided) { + cmd += EnergyPlus::format(R"("--eplus-dir", "{}", )", state.dataStrGlobals->exeDirectoryPath.generic_string()); + } for (const auto &arg : fwd_args) { cmd += EnergyPlus::format("\"{}\", ", arg); }