Thanks to visit codestin.com
Credit goes to github.com

Skip to content

BUG: build error when numpy is built with pep517 backend: ERROR: Unhandled python exception (blas_lapack.py code needs a small fix) #25406

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
barracuda156 opened this issue Dec 17, 2023 · 10 comments · Fixed by #25455
Labels

Comments

@barracuda156
Copy link

barracuda156 commented Dec 17, 2023

Describe the issue:

When trying to build numpy, I get the following error during evaluating BLAS variants:

../../numpy/meson.build:119:13: ERROR: Unhandled python exception

    This is a Meson bug and should be reported!

ERROR Backend subprocess exited when trying to invoke build_wheel

The issue appears specific to pep517 backend: on the same system, it does not happen if pep517 is disabled.

See also:
mesonbuild/meson-python#554
https://trac.macports.org/ticket/68908#comment:10

@rgommers Confirmed the same failure on 10.6.8 x86_64 (so error is unrelated to PowerPC or Rosetta).

Reproduce the code example:

This is a build (or rather configure) error. What seems to fail is this chunk:

# First try scipy-openblas, and if found don't look for cblas or lapack, we
# know what's inside the scipy-openblas wheels already.
if blas_name == 'openblas' or blas_name == 'auto'
  blas = dependency('scipy-openblas', required: false)
  if blas.found()
    blas_name = 'scipy-openblas'
  endif
endif
if blas_name == 'auto'
  foreach _name : get_option('blas-order')
    if _name == 'mkl'
      blas = dependency('mkl',
        modules: ['cblas'] + blas_interface + mkl_opts,
        required: false,  # may be required, but we need to emit a custom error message
        version: mkl_version_req,
      )
      # Insert a second try with MKL, because we may be rejecting older versions
      # or missing it because no pkg-config installed. If so, we need to retry
      # with MKL SDL, and drop the version constraint (this always worked).
      if not blas.found() and mkl_may_use_sdl
        blas = dependency('mkl', modules: ['cblas', 'sdl: true'], required: false)
      endif
    else
      if _name == 'flexiblas' and use_ilp64
        _name = 'flexiblas64'
      endif
      blas = dependency(_name, modules: ['cblas'] + blas_interface, required: false)
    endif
    if blas.found()
      break
    endif
  endforeach
else
  if blas_name == 'mkl'
    blas = dependency('mkl',
      modules: ['cblas'] + blas_interface + mkl_opts,
      required: false,
      version: mkl_version_req,
    )
    # Same deal as above - try again for MKL
    if not blas.found() and mkl_may_use_sdl
      blas = dependency('mkl', modules: ['cblas', 'sdl: true'], required: false)
    endif
  else
    blas = dependency(blas_name, modules: ['cblas'] + blas_interface, required: false)
  endif
endif

Error message:

10.6.8 Rosetta:

--->  Building py311-numpy
Executing:  cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1" && /opt/local/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11 -m build --no-isolation --wheel --outdir /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work 
* Getting build dependencies for wheel...
* Building wheel...
+ /opt/local/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/meson.py setup /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/.mesonpy-001lpxq4/build -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --native-file=/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/.mesonpy-001lpxq4/build/meson-python-native-file.ini
Traceback (most recent call last):
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/mesonmain.py", line 194, in run
    return options.run_func(options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/msetup.py", line 358, in run
    app.generate()
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/msetup.py", line 183, in generate
    return self._generate(env, capture, vslite_ctx)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/msetup.py", line 228, in _generate
    intr.run()
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreter/interpreter.py", line 2997, in run
    super().run()
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 164, in run
    self.evaluate_codeblock(self.ast, start=1)
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 196, in evaluate_statement
    return self.function_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 521, in function_call
    res = func(node, func_args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 277, in wrapper
    return f(*nargs, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 596, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreter/interpreter.py", line 2409, in func_subdir
    self.evaluate_codeblock(codeblock)
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 206, in evaluate_statement
    return self.evaluate_if(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 301, in evaluate_if
    self.evaluate_codeblock(i.block)
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 228, in evaluate_statement
    self.evaluate_foreach(cur)
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 472, in evaluate_foreach
    self.evaluate_codeblock(node.block)
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 206, in evaluate_statement
    return self.evaluate_if(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 306, in evaluate_if
    self.evaluate_codeblock(node.elseblock)
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 198, in evaluate_statement
    self.assignment(cur)
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 635, in assignment
    value = self.evaluate_statement(node.value)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 196, in evaluate_statement
    return self.function_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 521, in function_call
    res = func(node, func_args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 826, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 826, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 826, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  [Previous line repeated 4 more times]
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 109, in wrapped
    ret = f(*wrapped_args, **wrapped_kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 127, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 277, in wrapper
    return f(*nargs, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 596, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreter/interpreter.py", line 1774, in func_dependency
    d = df.lookup(kwargs)
        ^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreter/dependencyfallbacks.py", line 355, in lookup
    dep = func(kwargs, func_args, func_kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreter/dependencyfallbacks.py", line 87, in _do_dependency
    dep = dependencies.find_external_dependency(name, self.environment, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/dependencies/detect.py", line 124, in find_external_dependency
    d = c()
        ^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/dependencies/blas_lapack.py", line 524, in __init__
    if environment.machines[for_machine].is_darwin() and self.check_macOS_recent_enough():
                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/dependencies/blas_lapack.py", line 529, in check_macOS_recent_enough
    sdk_version = subprocess.run(cmd, capture_output=True, check=True, text=True).stdout.strip()
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['xcrun', '-sdk', 'macosx', '--show-sdk-version']' returned non-zero exit status 64.
The Meson build system
Version: 1.2.99
Source dir: /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1
Build dir: /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/.mesonpy-001lpxq4/build
Build type: native build
Project name: NumPy
Project version: 1.26.1
C compiler for the host machine: /opt/local/bin/gcc-mp-12 (gcc 12.3.0 "gcc-mp-12 (MacPorts gcc12 12.3.0_0) 12.3.0")
C linker for the host machine: /opt/local/bin/gcc-mp-12 ld64 97.17
C++ compiler for the host machine: /opt/local/bin/g++-mp-12 (gcc 12.3.0 "g++-mp-12 (MacPorts gcc12 12.3.0_0) 12.3.0")
C++ linker for the host machine: /opt/local/bin/g++-mp-12 ld64 97.17
Cython compiler for the host machine: /opt/local/bin/cython-3.11 (cython 0.29.36)
Host machine cpu family: ppc
Host machine cpu: power macintosh
Program python found: YES (/opt/local/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11)
Found pkg-config: /opt/local/bin/pkg-config (0.29.2)
Run-time dependency python found: YES 3.11
Has header "Python.h" with dependency python-3.11: YES 
Compiler for C supports arguments -fno-strict-aliasing: YES 
Message: Disabling CPU feature detection due to unsupported architecture: "ppc"
Configuring npy_cpu_dispatch_config.h using configuration
Message: 
CPU Optimization Options
  baseline:
    Requested : none
    Enabled   : 
  dispatch:
    Requested : none
    Enabled   : 

Library m found: YES
Found CMake: /opt/local/bin/cmake (3.27.2)
WARNING: CMake Toolchain: Failed to determine CMake compilers state
Run-time dependency scipy-openblas found: NO (tried pkgconfig, framework and cmake)
WARNING: MKLROOT env var set to /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/.mesonpy-001lpxq4/build/None, but not pointing to an MKL install
Run-time dependency mkl found: NO (tried pkgconfig and system)
WARNING: MKLROOT env var set to /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1/.mesonpy-001lpxq4/build/None, but not pointing to an MKL install
Run-time dependency mkl found: NO (tried pkgconfig and system)

../../numpy/meson.build:119:13: ERROR: Unhandled python exception

    This is a Meson bug and should be reported!

ERROR Backend subprocess exited when trying to invoke build_wheel
Command failed:  cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work/numpy-1.26.1" && /opt/local/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11 -m build --no-isolation --wheel --outdir /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_python_py-numpy/py311-numpy/work

10.6.8 Intel:

--->  Building py311-numpy
Executing:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1" && /opt/local/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11 -m build --no-isolation --wheel --outdir /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work 
* Getting build dependencies for wheel...
* Building wheel...
+ /opt/local/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/meson.py setup /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/.mesonpy-i23z6sh1/build -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --native-file=/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/.mesonpy-i23z6sh1/build/meson-python-native-file.ini
Traceback (most recent call last):
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/mesonmain.py", line 194, in run
    return options.run_func(options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/msetup.py", line 358, in run
    app.generate()
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/msetup.py", line 183, in generate
    return self._generate(env, capture, vslite_ctx)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/msetup.py", line 228, in _generate
    intr.run()
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreter/interpreter.py", line 2997, in run
    super().run()
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 164, in run
    self.evaluate_codeblock(self.ast, start=1)
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 196, in evaluate_statement
    return self.function_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 521, in function_call
    res = func(node, func_args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 277, in wrapper
    return f(*nargs, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 596, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreter/interpreter.py", line 2409, in func_subdir
    self.evaluate_codeblock(codeblock)
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 206, in evaluate_statement
    return self.evaluate_if(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 301, in evaluate_if
    self.evaluate_codeblock(i.block)
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 228, in evaluate_statement
    self.evaluate_foreach(cur)
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 472, in evaluate_foreach
    self.evaluate_codeblock(node.block)
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 206, in evaluate_statement
    return self.evaluate_if(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 306, in evaluate_if
    self.evaluate_codeblock(node.elseblock)
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 198, in evaluate_statement
    self.assignment(cur)
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 635, in assignment
    value = self.evaluate_statement(node.value)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 196, in evaluate_statement
    return self.function_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/interpreterbase.py", line 521, in function_call
    res = func(node, func_args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 826, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 826, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 826, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  [Previous line repeated 4 more times]
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 109, in wrapped
    ret = f(*wrapped_args, **wrapped_kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 127, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 277, in wrapper
    return f(*nargs, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreterbase/decorators.py", line 596, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreter/interpreter.py", line 1774, in func_dependency
    d = df.lookup(kwargs)
        ^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreter/dependencyfallbacks.py", line 355, in lookup
    dep = func(kwargs, func_args, func_kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/interpreter/dependencyfallbacks.py", line 87, in _do_dependency
    dep = dependencies.find_external_dependency(name, self.environment, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/dependencies/detect.py", line 124, in find_external_dependency
    d = c()
        ^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/dependencies/blas_lapack.py", line 524, in __init__
    if environment.machines[for_machine].is_darwin() and self.check_macOS_recent_enough():
                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/vendored-meson/meson/mesonbuild/dependencies/blas_lapack.py", line 529, in check_macOS_recent_enough
    sdk_version = subprocess.run(cmd, capture_output=True, check=True, text=True).stdout.strip()
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['xcrun', '-sdk', 'macosx', '--show-sdk-version']' returned non-zero exit status 64.
The Meson build system
Version: 1.2.99
Source dir: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1
Build dir: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/.mesonpy-i23z6sh1/build
Build type: native build
Project name: NumPy
Project version: 1.26.1
C compiler for the host machine: /opt/local/bin/clang-mp-11 (clang 11.1.0 "clang version 11.1.0")
C linker for the host machine: /opt/local/bin/clang-mp-11 ld64 127.2
C++ compiler for the host machine: /opt/local/bin/clang++-mp-11 (clang 11.1.0 "clang version 11.1.0")
C++ linker for the host machine: /opt/local/bin/clang++-mp-11 ld64 127.2
Cython compiler for the host machine: /opt/local/bin/cython-3.11 (cython 0.29.36)
Host machine cpu family: x86_64
Host machine cpu: x86_64
Program python found: YES (/opt/local/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11)
Found pkg-config: /opt/local/bin/pkg-config (0.29.2)
Run-time dependency python found: YES 3.11
Has header "Python.h" with dependency python-3.11: YES 
Compiler for C supports arguments -fno-strict-aliasing: YES 
Compiler for C supports arguments -ftrapping-math: YES 
Test features "SSE SSE2 SSE3" : Supported 
Test features "SSSE3" : Supported 
Test features "SSE41" : Supported 
Test features "POPCNT" : Supported 
Test features "SSE42" : Supported 
Test features "AVX" : Supported 
Test features "F16C" : Supported 
Test features "FMA3" : Supported 
Test features "AVX2" : Supported 
Test features "AVX512F" : Supported 
Test features "AVX512CD" : Supported 
Test features "AVX512_KNL" : Supported 
Test features "AVX512_KNM" : Unsupported due to Arguments "-msse, -msse2, -msse3, -mssse3, -msse4.1, -mpopcnt, -msse4.2, -mavx, -mf16c, -mfma, -mavx2, -mno-mmx, -mavx512f, -mavx512cd, -mavx512er, -mavx512pf, -mavx5124fmaps, -mavx5124vnniw, -mavx512vpopcntdq" are not supported
Test features "AVX512_SKX" : Supported 
Test features "AVX512_CLX" : Supported 
Test features "AVX512_CNL" : Supported 
Test features "AVX512_ICL" : Supported 
Test features "AVX512_SPR" : Unsupported due to Arguments "-msse, -msse2, -msse3, -mssse3, -msse4.1, -mpopcnt, -msse4.2, -mavx, -mf16c, -mfma, -mavx2, -mno-mmx, -mavx512f, -mavx512cd, -mavx512vl, -mavx512bw, -mavx512dq, -mavx512vnni, -mavx512ifma, -mavx512vbmi, -mavx512vbmi2, -mavx512bitalg, -mavx512vpopcntdq, -mavx512fp16" are not supported
Configuring npy_cpu_dispatch_config.h using configuration
Message: 
CPU Optimization Options
  baseline:
    Requested : min
    Enabled   : SSE SSE2 SSE3
  dispatch:
    Requested : max -xop -fma4
    Enabled   : SSSE3 SSE41 POPCNT SSE42 AVX F16C FMA3 AVX2 AVX512F AVX512CD AVX512_KNL AVX512_SKX AVX512_CLX AVX512_CNL AVX512_ICL

Library m found: YES
Found CMake: /opt/local/bin/cmake (3.24.4)
WARNING: CMake Toolchain: Failed to determine CMake compilers state
Run-time dependency scipy-openblas found: NO (tried pkgconfig, framework and cmake)
WARNING: MKLROOT env var set to /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/.mesonpy-i23z6sh1/build/None, but not pointing to an MKL install
Run-time dependency mkl found: NO (tried pkgconfig and system)
WARNING: MKLROOT env var set to /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_python_py-numpy/py311-numpy/work/numpy-1.26.1/.mesonpy-i23z6sh1/build/None, but not pointing to an MKL install
Run-time dependency mkl found: NO (tried pkgconfig and system)

../../numpy/meson.build:119:13: ERROR: Unhandled python exception

    This is a Meson bug and should be reported!

ERROR Backend subprocess exited when trying to invoke build_wheel

Python and NumPy Versions:

numpy 1.26.1
python 3.11.4

Runtime Environment:

macOS 10.6.8 x86_64
macOS 10.6.8 ppc (Rosetta)

Context for the issue:

numpy is broken in Macports for a number of systems after it switched to pep517 backend. Given that Python 3.12+ needs that, reverting is not an option.

@barracuda156
Copy link
Author

@barracuda156
Copy link
Author

Update: as @dnicolodi suggested earlier, the cause for the error is in fact xcrun. Specifically, this code in mesonbuild/dependencies/blas_lapack.py breaks the build:

    def check_macOS_recent_enough(self) -> bool:
        # We need the SDK to be >=13.3 (meaning at least XCode 14.3)
        cmd = ['xcrun', '-sdk', 'macosx', '--show-sdk-version']
        sdk_version = subprocess.run(cmd, capture_output=True, check=True, text=True).stdout.strip()
        macos_version = platform.mac_ver()[0]
        deploy_target = os.environ.get('MACOSX_DEPLOYMENT_TARGET', macos_version)
        return sdk_version >= '13.3' and deploy_target >= '13.3'

There are two problems here:

  1. The syntax used is unsupported on macOS < 10.8.
svacchanda$ xcrun -sdk macosx --show-sdk-version
xcrun: error: unrecognized option: --show-sdk-version

usage: 
xcrun [-verbose] [-no-cache] [-kill-cache] [-sdk <sdkroot>] [-log] [-run] <utility> [utility argument(s) ...]
xcrun [-verbose] [-no-cache] [-kill-cache] [-sdk <sdkroot>] -find <utility> 
<tool> [tool arguments ...]
  1. Restriction to the OS version is totally unjustified: I can say for the fact that numpy 1.26.2 builds fine at least on 10.6 (and I am reasonably sure it will build on 10.5 too).

@dnicolodi
Copy link

The code checking for the SDK version need to be read in context: https://github.com/numpy/meson/blob/708d52853d744916884d66a630f20b68cf4d3674/mesonbuild/dependencies/blas_lapack.py#L723-L729 The check is there to ensure that the Accelerate framework is used only on macOS 13.3. Most likely, the fix is to catch the subprocess error and assume the SDK version is too old in this case.

@dnicolodi
Copy link

By the way, the version comparisons here https://github.com/numpy/meson/blob/708d52853d744916884d66a630f20b68cf4d3674/mesonbuild/dependencies/blas_lapack.py#L744C1-L750C65 seem broken to me. What is done is a lexicographic comparison not a version comparison. In other words, if sdk_version = '13.10' the sdk_version >= '13.3' check would fail. Same for deploy_target.

@barracuda156
Copy link
Author

The code checking for the SDK version need to be read in context: https://github.com/numpy/meson/blob/708d52853d744916884d66a630f20b68cf4d3674/mesonbuild/dependencies/blas_lapack.py#L723-L729 The check is there to ensure that the Accelerate framework is used only on macOS 13.3. Most likely, the fix is to catch the subprocess error and assume the SDK version is too old in this case.

@dnicolodi Thank you. That sounds like a good way to solve the problem, then we do not need to bother with finding a way to get SDK version from Python on < 10.8.

@dnicolodi
Copy link

@barracuda156 Please note that the version of macOS you are trying to build for is unsupported at least since November 19, 2015 (end of support for macOS 10.8). There is no realistic way for anyone to test new development on that OS. The amount of things that do not work on that an old system increases exponentially as time passes. If you have hardware that is supported only by such old releases of macOS, installing a different but current OS on it would IMO be time better spent than keep fixing build failures.

@barracuda156
Copy link
Author

@dnicolodi There is no failures with the build itself, what fails is configure stage, and this is a totally avoidable error.
Of course I do not expect the upstream to keep testing everything on every existing macOS version, it is clearly both unrealistic and wasteful.
Normally older OS testing is community-based. And not everything may be fixable, or fixable with reasonable efforts; here, however, we just have a script with a missing condition. Since the script is designed to filter out older OS, as you point out above, it should filter out <10.7 too, so that Accelerate is not used, but another BLAS is picked. There is no need to prohibit building on <10.7, since as a matter of fact it works.

@barracuda156 barracuda156 changed the title BUG: build error when numpy is build with pep517 backend: ERROR: Unhandled python exception BUG: build error when numpy is built with pep517 backend: ERROR: Unhandled python exception (blas_lapack.py code needs a small fix) Dec 18, 2023
@rgommers
Copy link
Member

Thanks for digging in @barracuda156 and @dnicolodi. I agree with the conversation above - macOS versions that old are unsupported, but in this case the fix is simple enough that we'll fix it. There's no guarantee of there not being more issues on macOS PPC of course. I'm surprised more every year that someone is still using that.

@barracuda156
Copy link
Author

@rgommers Thank you very much, greatly appreciated!

(P. S. As long as GCC upstream supports macOS PPC, it remains usable with much of the modern software running, at least on the late G5 hardware. The Quad with maxed RAM is decently fast in fact.)

rgommers added a commit to rgommers/meson that referenced this issue Dec 22, 2023
The two things fixed here:
- `xcrun` isn't available on very old versions (MacPorts still supports
  10.5/10.6)
- Version comparison is done correctly now with
  `mesonlib.version_compare`

See numpy/numpy#25406 for the bug report.
rgommers added a commit to rgommers/numpy that referenced this issue Dec 22, 2023
This fixes the build for macOS 10.5/10.6, which is still relevant for
MacPorts. It also makes version comparisons more robust, so that things
won't break if there's ever a 13.10 OS release.

Closes numpygh-25406
rgommers added a commit to rgommers/numpy that referenced this issue Dec 22, 2023
This fixes the build for macOS 10.5/10.6, which is still relevant
for MacPorts. It also makes version comparisons more robust, so that
things won't break if there is ever a macOS 13.10 release.

Closes numpygh-25406
@rgommers
Copy link
Member

The fix in gh-25455 should take care of the issues reported here. The plan is to also backport that fix to 1.26.3

charris pushed a commit to charris/numpy that referenced this issue Dec 22, 2023
This fixes the build for macOS 10.5/10.6, which is still relevant
for MacPorts. It also makes version comparisons more robust, so that
things won't break if there is ever a macOS 13.10 release.

Closes numpygh-25406
rgommers added a commit to rgommers/meson that referenced this issue Apr 29, 2025
The two things fixed here:
- `xcrun` isn't available on very old versions (MacPorts still supports
  10.5/10.6)
- Version comparison is done correctly now with
  `mesonlib.version_compare`

See numpy/numpy#25406 for the bug report.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants