From 45090f5f609488332c9943ab4b6853b4763558a0 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Fri, 19 Dec 2025 08:53:28 -0500 Subject: [PATCH 1/5] homebrew: fix toolchain install without git metadata --- packaging/homebrew/mfc.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packaging/homebrew/mfc.rb b/packaging/homebrew/mfc.rb index 7bacf97376..ff330df974 100644 --- a/packaging/homebrew/mfc.rb +++ b/packaging/homebrew/mfc.rb @@ -29,12 +29,19 @@ def install # Create Python virtual environment inside libexec (inside Cellar for proper bottling) venv = libexec/"venv" system Formula["python@3.12"].opt_bin/"python3.12", "-m", "venv", venv - system venv/"bin/pip", "install", "--upgrade", "pip", "setuptools", "wheel" + system venv/"bin/pip", "install", "--upgrade", "pip", "setuptools", "wheel", "setuptools-scm" # Install Cantera from PyPI using pre-built wheel (complex package, doesn't need custom flags) # Cantera has CMake compatibility issues when building from source with newer CMake versions system venv/"bin/pip", "install", "cantera==3.1.0" + # MFC's toolchain uses VCS-derived versioning (via Hatch/hatch-vcs) and Homebrew builds from + # GitHub release tarballs without a .git directory. Provide a fallback/pretend version so + # metadata generation succeeds during pip install. + ENV["SETUPTOOLS_SCM_PRETEND_VERSION"] = version.to_s + ENV["SETUPTOOLS_SCM_PRETEND_VERSION_FOR_MFC"] = version.to_s + ENV["SETUPTOOLS_SCM_PRETEND_VERSION_FOR_mfc"] = version.to_s + # Install MFC Python package and dependencies into venv # Use editable install (-e) to avoid RECORD file issues when venv is symlinked at runtime # Dependencies will use pre-built wheels from PyPI From 5b18ea180480b5ed1617e3ab2b569b7301dfc8d7 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Fri, 19 Dec 2025 09:00:12 -0500 Subject: [PATCH 2/5] homebrew: scope pretend-version vars + update cantera to >=3.1.0 --- packaging/homebrew/mfc.rb | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/packaging/homebrew/mfc.rb b/packaging/homebrew/mfc.rb index ff330df974..7f71f1b957 100644 --- a/packaging/homebrew/mfc.rb +++ b/packaging/homebrew/mfc.rb @@ -33,20 +33,38 @@ def install # Install Cantera from PyPI using pre-built wheel (complex package, doesn't need custom flags) # Cantera has CMake compatibility issues when building from source with newer CMake versions - system venv/"bin/pip", "install", "cantera==3.1.0" - - # MFC's toolchain uses VCS-derived versioning (via Hatch/hatch-vcs) and Homebrew builds from - # GitHub release tarballs without a .git directory. Provide a fallback/pretend version so - # metadata generation succeeds during pip install. - ENV["SETUPTOOLS_SCM_PRETEND_VERSION"] = version.to_s - ENV["SETUPTOOLS_SCM_PRETEND_VERSION_FOR_MFC"] = version.to_s - ENV["SETUPTOOLS_SCM_PRETEND_VERSION_FOR_mfc"] = version.to_s + # Match the version constraint from toolchain/pyproject.toml + system venv/"bin/pip", "install", "--only-binary=:all:", "cantera>=3.1.0" # Install MFC Python package and dependencies into venv # Use editable install (-e) to avoid RECORD file issues when venv is symlinked at runtime # Dependencies will use pre-built wheels from PyPI # Keep toolchain in buildpath for now - mfc.sh needs it there - system venv/"bin/pip", "install", "-e", buildpath/"toolchain" + # + # MFC's toolchain uses VCS-derived versioning (via Hatch/hatch-vcs) and Homebrew builds from + # GitHub release tarballs without a .git directory. Scope pretend-version env vars tightly + # to avoid polluting subsequent pip installs. + pretend_env = { + "SETUPTOOLS_SCM_PRETEND_VERSION_FOR_MFC" => version.to_s, + "SETUPTOOLS_SCM_PRETEND_VERSION_FOR_mfc" => version.to_s, + } + saved_env = {} + pretend_env.each do |k, v| + saved_env[k] = ENV[k] + ENV[k] = v + end + + begin + system venv/"bin/pip", "install", "-e", buildpath/"toolchain" + ensure + pretend_env.each_key do |k| + if saved_env[k].nil? + ENV.delete(k) + else + ENV[k] = saved_env[k] + end + end + end # Create symlink so mfc.sh uses our pre-installed venv mkdir_p "build" From 777850783a6f93ae5e37e39888d71224167ca878 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Fri, 19 Dec 2025 09:01:41 -0500 Subject: [PATCH 3/5] homebrew: add SETUPTOOLS_SCM_PRETEND_VERSION fallback for hatch-vcs --- packaging/homebrew/mfc.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/packaging/homebrew/mfc.rb b/packaging/homebrew/mfc.rb index 7f71f1b957..684065df35 100644 --- a/packaging/homebrew/mfc.rb +++ b/packaging/homebrew/mfc.rb @@ -47,6 +47,7 @@ def install pretend_env = { "SETUPTOOLS_SCM_PRETEND_VERSION_FOR_MFC" => version.to_s, "SETUPTOOLS_SCM_PRETEND_VERSION_FOR_mfc" => version.to_s, + "SETUPTOOLS_SCM_PRETEND_VERSION" => version.to_s, # Fallback for hatch-vcs/setuptools-scm } saved_env = {} pretend_env.each do |k, v| From 5438ad8bf0ac26b7a0aa04b866e6ff53ce13ebad Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Fri, 19 Dec 2025 09:03:40 -0500 Subject: [PATCH 4/5] homebrew: fix rubocop style warning (use ENV.fetch) --- packaging/homebrew/mfc.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/homebrew/mfc.rb b/packaging/homebrew/mfc.rb index 684065df35..c36a70c905 100644 --- a/packaging/homebrew/mfc.rb +++ b/packaging/homebrew/mfc.rb @@ -51,7 +51,7 @@ def install } saved_env = {} pretend_env.each do |k, v| - saved_env[k] = ENV[k] + saved_env[k] = ENV.fetch(k, nil) ENV[k] = v end From 8c8a52229a6b0df668ff40823d553dbaf31a6751 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Fri, 19 Dec 2025 09:06:18 -0500 Subject: [PATCH 5/5] homebrew: fix hash alignment for rubocop --- packaging/homebrew/mfc.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/homebrew/mfc.rb b/packaging/homebrew/mfc.rb index c36a70c905..2e7d0a02f1 100644 --- a/packaging/homebrew/mfc.rb +++ b/packaging/homebrew/mfc.rb @@ -47,7 +47,7 @@ def install pretend_env = { "SETUPTOOLS_SCM_PRETEND_VERSION_FOR_MFC" => version.to_s, "SETUPTOOLS_SCM_PRETEND_VERSION_FOR_mfc" => version.to_s, - "SETUPTOOLS_SCM_PRETEND_VERSION" => version.to_s, # Fallback for hatch-vcs/setuptools-scm + "SETUPTOOLS_SCM_PRETEND_VERSION" => version.to_s, # Fallback for hatch-vcs/setuptools-scm } saved_env = {} pretend_env.each do |k, v|