Skip to content

Commit

Permalink
[email protected]_py310.rb version formula for freecad
Browse files Browse the repository at this point in the history
  • Loading branch information
ipatch committed Mar 11, 2024
1 parent ccdaee7 commit 717bf65
Show file tree
Hide file tree
Showing 2 changed files with 113 additions and 3 deletions.
113 changes: 113 additions & 0 deletions Formula/[email protected]_py310.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
class NumpyAT1264Py310 < Formula
include Language::Python::Virtualenv
desc "Package for scientific computing with Python"
homepage "https://www.numpy.org/"
license "BSD-3-Clause"
head "https://github.com/numpy/numpy.git", branch: "main"

stable do
url "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz"
sha256 "2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"

depends_on "python-setuptools" => :build
end

keg_only :versioned_formula

depends_on "gcc" => :build # for gfortran
depends_on "libcython" => :build
depends_on "meson" => :build
depends_on "ninja" => :build
depends_on "[email protected]" => [:build, :test]
depends_on "openblas"

# NOTE: `brew update-python-resources` check for outdated py resources
fails_with gcc: "5"

resource "meson-python" do
url "https://files.pythonhosted.org/packages/a2/3b/276b596824a0820987fdcc7721618453b4f9a8305fe20b611a00ac3f948e/meson_python-0.15.0.tar.gz"
sha256 "fddb73eecd49e89c1c41c87937cd89c2d0b65a1c63ba28238681d4bd9484d26f"
end

resource "tomli" do
url "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz"
sha256 "de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
end

resource "packaging" do
url "https://files.pythonhosted.org/packages/ee/b5/b43a27ac7472e1818c4bafd44430e69605baefe1f34440593e0332ec8b4d/packaging-24.0.tar.gz"
sha256 "eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"
end

resource "pyproject-metadata" do
url "https://files.pythonhosted.org/packages/38/af/b0e6a9eba989870fd26e10889446d1bec2e6d5be0a1bae2dc4dcda9ce199/pyproject-metadata-0.7.1.tar.gz"
sha256 "0a94f18b108b9b21f3a26a3d541f056c34edcb17dc872a144a15618fed7aef67"
end

resource "cython" do
url "https://files.pythonhosted.org/packages/0e/17/c5b026cea7a634ee3b8950a7be16aaa49deeb3b9824ba5e81c13ac26f3c4/Cython-3.0.9.tar.gz"
sha256 "a2d354f059d1f055d34cfaa62c5b68bc78ac2ceab6407148d47fb508cf3ba4f3"
end

def pythons
deps.map(&:to_formula)
.select { |f| f.name.start_with?("python@") }
.sort_by(&:version) # so that `bin/f2py` and `bin/f2py3` use newest python
end

def install
virtualenv_install_with_resources using: "[email protected]"

# Prepend the installation path of mesonpy to PYTHONPATH
ENV.prepend_path "PYTHONPATH", libexec/"lib/python3.10/site-packages"
ENV.prepend_path "PATH", Formula["libcython"].opt_libexec/"bin"

pythons.each do |python|
python3 = python.opt_libexec/"bin/python"
site_packages = Language::Python.site_packages(python3)
ENV.prepend_path "PYTHONPATH", Formula["libcython"].opt_libexec/site_packages

system python3, "-m", "pip", "install", *std_pip_args, ".",
"-Csetup-args=-Dblas=openblas",
"-Csetup-args=-Dlapack=openblas"
end
end

def post_install
# explicitly set python version
python_version = "3.10"

# Unlink the existing .pth file to avoid reinstall issues
pth_file = lib/"python#{python_version}/numpy.pth"
pth_file.unlink if pth_file.exist?

ohai "Creating .pth file for [email protected]_py310 module"
# write the .pth file to the parent dir of site-packages
(lib/"python#{python_version}/numpy.pth").write <<~EOS
import site; site.addsitedir('#{lib}/python#{python_version}/site-packages/')
EOS
end

def caveats
<<~EOS
To run `f2py`, you may need to `brew install #{pythons.last}`
this is a versioned formula specifically setup to work with
the homebrew-freecad tap.
to use the numpy python module the fc_bundle needs to be installed
EOS
end

test do

Check failure on line 102 in Formula/[email protected]_py310.rb

View workflow job for this annotation

GitHub Actions / test-bot (macos-14)

`brew test --verbose freecad/freecad/[email protected]_py310` failed on macOS Sonoma (14) on Apple Silicon!

/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.1.0/bin/bundle clean ==> Testing freecad/freecad/[email protected]_py310 ==> /opt/homebrew/opt/[email protected]/libexec/bin/python -c import numpy as np t = np.ones((3,3), int) assert t.sum() == 9 assert np.dot(t, t).sum() == 27 Traceback (most recent call last): File "<string>", line 1, in <module> ModuleNotFoundError: No module named 'numpy' Error: freecad/freecad/[email protected]_py310: failed An exception occurred within a child process: BuildError: Failed executing: /opt/homebrew/opt/[email protected]/libexec/bin/python -c import\ numpy\ as\ np t\ =\ np.ones((3,3),\ int) assert\ t.sum()\ ==\ 9 assert\ np.dot(t,\ t).sum()\ ==\ 27 /opt/homebrew/Library/Homebrew/formula.rb:2840:in `block in system' /opt/homebrew/Library/Homebrew/formula.rb:2776:in `open' /opt/homebrew/Library/Homebrew/formula.rb:2776:in `system' /opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/sorbet-runtime-0.5.11287/lib/types/private/methods/call_validation.rb:270:in `bind_call' /opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/sorbet-runtime-0.5.11287/lib/types/private/methods/call_validation.rb:270:in `validate_call' /opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/sorbet-runtime-0.5.11287/lib/types/private/methods/_methods.rb:277:in `block in _on_method_added' /opt/homebrew/Library/Taps/freecad/homebrew-freecad/Formula/[email protected]_py310.rb:110:in `block (2 levels) in <class:NumpyAT1264Py310>' /opt/homebrew/Library/Taps/freecad/homebrew-freecad/Formula/[email protected]_py310.rb:108:in `each' /opt/homebrew/Library/Taps/freecad/homebrew-freecad/Formula/[email protected]_py310.rb:108:in `block in <class:NumpyAT1264Py310>' /opt/homebrew/Library/Homebrew/formula.rb:2599:in `block (3 levels) in run_test' /opt/homebrew/Library/Homebrew/extend/kernel.rb:493:in `with_env' /opt/homebrew/Library/Homebrew/formula.rb:2598:in `block (2 levels) in run_test' /opt/homebrew/Library/Homebrew/formula.rb:1064:in `with_logging' /opt/homebrew/Library/Homebrew/formula.rb:2597:in `block in run_test' /opt/homebrew/Library/Homebrew/mktemp.rb:75:in `block in run' /opt/homebrew/Library/Homebrew/mktemp.rb:75:in `chdir' /opt/homebrew/Library/Homebrew/mktemp.rb:75:in `run' /opt/homebrew/Library/Homebrew/formula.rb:2891:in `mktemp' /opt/homebrew/Library/Homebrew/formula.rb:2591:in `run_test' /opt/homebrew/Library/Homebrew/test.rb:46:in `block in <main>' /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:107:in `block in timeout' /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:36:in `block in catch' /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:36:in `catch' /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:36:in `catch' /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:123:in `timeout' /opt/homebrew/Library/Homebrew/test.rb:50:in `<main>'

Check failure on line 102 in Formula/[email protected]_py310.rb

View workflow job for this annotation

GitHub Actions / test-bot (macos-13)

`brew test --verbose freecad/freecad/[email protected]_py310` failed on macOS Ventura (13)!

/usr/local/Homebrew/Library/Homebrew/vendor/bundle/ruby/3.1.0/bin/bundle clean ==> Testing freecad/freecad/[email protected]_py310 ==> /usr/local/opt/[email protected]/libexec/bin/python -c import numpy as np t = np.ones((3,3), int) assert t.sum() == 9 assert np.dot(t, t).sum() == 27 Traceback (most recent call last): File "<string>", line 1, in <module> ModuleNotFoundError: No module named 'numpy' Error: freecad/freecad/[email protected]_py310: failed An exception occurred within a child process: BuildError: Failed executing: /usr/local/opt/[email protected]/libexec/bin/python -c import\ numpy\ as\ np t\ =\ np.ones((3,3),\ int) assert\ t.sum()\ ==\ 9 assert\ np.dot(t,\ t).sum()\ ==\ 27 /usr/local/Homebrew/Library/Homebrew/formula.rb:2840:in `block in system' /usr/local/Homebrew/Library/Homebrew/formula.rb:2776:in `open' /usr/local/Homebrew/Library/Homebrew/formula.rb:2776:in `system' /usr/local/Homebrew/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/sorbet-runtime-0.5.11287/lib/types/private/methods/call_validation.rb:270:in `bind_call' /usr/local/Homebrew/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/sorbet-runtime-0.5.11287/lib/types/private/methods/call_validation.rb:270:in `validate_call' /usr/local/Homebrew/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/sorbet-runtime-0.5.11287/lib/types/private/methods/_methods.rb:277:in `block in _on_method_added' /usr/local/Homebrew/Library/Taps/freecad/homebrew-freecad/Formula/[email protected]_py310.rb:110:in `block (2 levels) in <class:NumpyAT1264Py310>' /usr/local/Homebrew/Library/Taps/freecad/homebrew-freecad/Formula/[email protected]_py310.rb:108:in `each' /usr/local/Homebrew/Library/Taps/freecad/homebrew-freecad/Formula/[email protected]_py310.rb:108:in `block in <class:NumpyAT1264Py310>' /usr/local/Homebrew/Library/Homebrew/formula.rb:2599:in `block (3 levels) in run_test' /usr/local/Homebrew/Library/Homebrew/extend/kernel.rb:493:in `with_env' /usr/local/Homebrew/Library/Homebrew/formula.rb:2598:in `block (2 levels) in run_test' /usr/local/Homebrew/Library/Homebrew/formula.rb:1064:in `with_logging' /usr/local/Homebrew/Library/Homebrew/formula.rb:2597:in `block in run_test' /usr/local/Homebrew/Library/Homebrew/mktemp.rb:75:in `block in run' /usr/local/Homebrew/Library/Homebrew/mktemp.rb:75:in `chdir' /usr/local/Homebrew/Library/Homebrew/mktemp.rb:75:in `run' /usr/local/Homebrew/Library/Homebrew/formula.rb:2891:in `mktemp' /usr/local/Homebrew/Library/Homebrew/formula.rb:2591:in `run_test' /usr/local/Homebrew/Library/Homebrew/test.rb:46:in `block in <main>' /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:107:in `block in timeout' /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:36:in `block in catch' /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:36:in `catch' /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:36:in `catch' /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:123:in `timeout' /usr/local/Homebrew/Library/Homebrew/test.rb:50:in `<main>'

Check failure on line 102 in Formula/[email protected]_py310.rb

View workflow job for this annotation

GitHub Actions / test-bot (macos-12)

`brew test --verbose freecad/freecad/[email protected]_py310` failed on macOS Monterey (12)!

/usr/local/Homebrew/Library/Homebrew/vendor/bundle/ruby/3.1.0/bin/bundle clean ==> Testing freecad/freecad/[email protected]_py310 ==> /usr/local/opt/[email protected]/libexec/bin/python -c import numpy as np t = np.ones((3,3), int) assert t.sum() == 9 assert np.dot(t, t).sum() == 27 Traceback (most recent call last): File "<string>", line 1, in <module> ModuleNotFoundError: No module named 'numpy' Error: freecad/freecad/[email protected]_py310: failed An exception occurred within a child process: BuildError: Failed executing: /usr/local/opt/[email protected]/libexec/bin/python -c import\ numpy\ as\ np t\ =\ np.ones((3,3),\ int) assert\ t.sum()\ ==\ 9 assert\ np.dot(t,\ t).sum()\ ==\ 27 /usr/local/Homebrew/Library/Homebrew/formula.rb:2840:in `block in system' /usr/local/Homebrew/Library/Homebrew/formula.rb:2776:in `open' /usr/local/Homebrew/Library/Homebrew/formula.rb:2776:in `system' /usr/local/Homebrew/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/sorbet-runtime-0.5.11287/lib/types/private/methods/call_validation.rb:270:in `bind_call' /usr/local/Homebrew/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/sorbet-runtime-0.5.11287/lib/types/private/methods/call_validation.rb:270:in `validate_call' /usr/local/Homebrew/Library/Homebrew/vendor/bundle/ruby/3.1.0/gems/sorbet-runtime-0.5.11287/lib/types/private/methods/_methods.rb:277:in `block in _on_method_added' /usr/local/Homebrew/Library/Taps/freecad/homebrew-freecad/Formula/[email protected]_py310.rb:110:in `block (2 levels) in <class:NumpyAT1264Py310>' /usr/local/Homebrew/Library/Taps/freecad/homebrew-freecad/Formula/[email protected]_py310.rb:108:in `each' /usr/local/Homebrew/Library/Taps/freecad/homebrew-freecad/Formula/[email protected]_py310.rb:108:in `block in <class:NumpyAT1264Py310>' /usr/local/Homebrew/Library/Homebrew/formula.rb:2599:in `block (3 levels) in run_test' /usr/local/Homebrew/Library/Homebrew/extend/kernel.rb:493:in `with_env' /usr/local/Homebrew/Library/Homebrew/formula.rb:2598:in `block (2 levels) in run_test' /usr/local/Homebrew/Library/Homebrew/formula.rb:1064:in `with_logging' /usr/local/Homebrew/Library/Homebrew/formula.rb:2597:in `block in run_test' /usr/local/Homebrew/Library/Homebrew/mktemp.rb:75:in `block in run' /usr/local/Homebrew/Library/Homebrew/mktemp.rb:75:in `chdir' /usr/local/Homebrew/Library/Homebrew/mktemp.rb:75:in `run' /usr/local/Homebrew/Library/Homebrew/formula.rb:2891:in `mktemp' /usr/local/Homebrew/Library/Homebrew/formula.rb:2591:in `run_test' /usr/local/Homebrew/Library/Homebrew/test.rb:46:in `block in <main>' /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:107:in `block in timeout' /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:36:in `block in catch' /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:36:in `catch' /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:36:in `catch' /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/lib/ruby/3.1.0/timeout.rb:123:in `timeout' /usr/local/Homebrew/Library/Homebrew/test.rb:50:in `<main>'
pythons.each do |python|
python_exe = python.opt_libexec/"bin/python"
system python_exe, "-c", <<~EOS
import numpy as np
t = np.ones((3,3), int)
assert t.sum() == 9
assert np.dot(t, t).sum() == 27
EOS
end
end
end
3 changes: 0 additions & 3 deletions audit_exceptions/python_versions_allowlist.json

This file was deleted.

0 comments on commit 717bf65

Please sign in to comment.