Skip to content
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

ENH: Use highspy in linprog #19255

Merged
merged 17 commits into from Apr 25, 2024
Merged

ENH: Use highspy in linprog #19255

merged 17 commits into from Apr 25, 2024

Conversation

HaoZeke
Copy link
Contributor

@HaoZeke HaoZeke commented Sep 18, 2023

Supersedes #18642.

Reference issue

Closes #15915. Closes #15888. Closes #19734.

What does this implement/fix?

  • Replaces existing linprog Cython bindings with upstream highspy

Tests pass (locally anyway). However, there are still plenty of improvements which can be made (once highspy works a bit more robustly ERGO-Code/HiGHS#1405)

Additional information

Needs a PR over at highs (ERGO-Code/HiGHS#1460) and over at the SciPy fork (scipy/HiGHS#63).

Draft status until:

  • [ ] Changes merged upstream in a new PyPI release Unrelated
  • Be 100 % backwards compatible (or document changes)
  • Fixup the enum translation (should be quick, just too tired rn)
  • Fixup the commit history, early stages are derived from WIP: ENH: optimize.linprog: use highspy for _linprog_highs #18642 and should have co-commit credit for @mckib2
  • Figure out / fix the xfail on Linux 32-bit
  • Add the git submodule back
  • Point to the scipy fork of highs

@HaoZeke HaoZeke marked this pull request as draft September 18, 2023 00:46
@HaoZeke
Copy link
Contributor Author

HaoZeke commented Sep 18, 2023

Also @mckib2 if you'd like to take a look that'd be great (or maybe after its out of draft status).

@j-bowhay j-bowhay added enhancement A new feature or improvement scipy.optimize labels Sep 18, 2023
Copy link
Member

@rgommers rgommers left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's here looks good - lots of complexity gets removed. Hard to say more because an essential bit - actually building highspy as part of the SciPy build - seems to be missing.

scipy/optimize/_highs/meson.build Show resolved Hide resolved
@HaoZeke HaoZeke force-pushed the toHighspy branch 3 times, most recently from abe6bac to 68b5bdf Compare October 1, 2023 15:43
@HaoZeke
Copy link
Contributor Author

HaoZeke commented Oct 1, 2023

This is almost done, except the build process on the SciPy CI is stricter than over at HiGHs (w.r.t warnings) so some more work is required.

@rgommers
Copy link
Member

rgommers commented Oct 1, 2023

You can silence classes of warnings by adding defining them (if they're not already present) here:

scipy/scipy/meson.build

Lines 287 to 300 in 21dcad2

# C++ warning flags
_cpp_Wno_cpp = cpp.get_supported_arguments('-Wno-cpp')
_cpp_Wno_deprecated_declarations = cpp.get_supported_arguments('-Wno-deprecated-declarations')
_cpp_Wno_class_memaccess = cpp.get_supported_arguments('-Wno-class-memaccess')
_cpp_Wno_format_truncation = cpp.get_supported_arguments('-Wno-format-truncation')
_cpp_Wno_non_virtual_dtor = cpp.get_supported_arguments('-Wno-non-virtual-dtor')
_cpp_Wno_sign_compare = cpp.get_supported_arguments('-Wno-sign-compare')
_cpp_Wno_switch = cpp.get_supported_arguments('-Wno-switch')
_cpp_Wno_terminate = cpp.get_supported_arguments('-Wno-terminate')
_cpp_Wno_unused_but_set_variable = cpp.get_supported_arguments('-Wno-unused-but-set-variable')
_cpp_Wno_unused_function = cpp.get_supported_arguments('-Wno-unused-function')
_cpp_Wno_unused_local_typedefs = cpp.get_supported_arguments('-Wno-unused-local-typedefs')
_cpp_Wno_unused_variable = cpp.get_supported_arguments('-Wno-unused-variable')
_cpp_Wno_int_in_bool_context = cpp.get_supported_arguments('-Wno-int-in-bool-context')

and then adding them to cpp_args for the relevant build target.

@rgommers
Copy link
Member

rgommers commented Oct 1, 2023

It'd still be nice to get them fixed upstream, but that shouldn't be blocking for finalizing this PR.

@HaoZeke HaoZeke force-pushed the toHighspy branch 3 times, most recently from d855fa0 to b3f3cc2 Compare October 1, 2023 18:09
@HaoZeke
Copy link
Contributor Author

HaoZeke commented Oct 1, 2023

It'd still be nice to get them fixed upstream, but that shouldn't be blocking for finalizing this PR.

Thanks that helped, but I'm not sure of the best approach for the rest, it seems like using a shared library ends up with (expected) lookup errors, but the static library fails the wheel build. In both cases there's a too many public symbols error.

../build/subprojects/highs/highspy/_highs_options.cpython-310-x86_64-linux-gnu.so: too many public symbols!
000000000000d980 T PyInit__highs_options
0000000000031570 T _Z10first_wordRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi
0000000000031240 T _Z10strToLowerPc
000000000002df90 T _Z11checkOptionRK15HighsLogOptionsRK15OptionRecordInt
000000000002e050 T _Z11checkOptionRK15HighsLogOptionsRK18OptionRecordDouble
000000000002cca0 T _Z11highsLogDevRK15HighsLogOptions12HighsLogTypePKcz
000000000002e130 T _Z12checkOptionsRK15HighsLogOptionsRKSt6vectorIP12OptionRecordSaIS4_EE
000000000002c8f0 T _Z12highsLogUserRK15HighsLogOptions12HighsLogTypePKcz
0000000000030290 T _Z12reportOptionP8_IO_FILERK15OptionRecordIntb13HighsFileType
000000000002fe00 T _Z12reportOptionP8_IO_FILERK16OptionRecordBoolb13HighsFileType
00000000000[30](https://github.com/scipy/scipy/actions/runs/6372457292/job/17295259302?pr=19255#step:11:31)660 T _Z12reportOptionP8_IO_FILERK18OptionRecordDoubleb13HighsFileType
0000000000030a90 T _Z12reportOptionP8_IO_FILERK18OptionRecordStringb13HighsFileType
0000000000030e90 T _Z13reportOptionsP8_IO_FILERKSt6vectorIP12OptionRecordSaIS3_EEb13HighsFileType
000000000002dc40 T _Z14boolFromStringNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERb
00000000000[31](https://github.com/scipy/scipy/actions/runs/6372457292/job/17295259302?pr=19255#step:11:32)4b0 T _Z14first_word_endRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi
000000000002dd40 T
...

What is the best approach to dealing with libraries which (ideally) should be installed by the user? OR, I'm missing something about the way the static library should be linked, since other sub-libraries are linked statically (quadpack).

@rgommers
Copy link
Member

rgommers commented Oct 2, 2023

The current version seems quite close to ready, modulo the use of a wrap file (I assume that's for convenience during development, and it'll change to a git submodule at the end) and this error:

meson-python: error: Could not map installation path to an equivalent wheel directory: '{libdir_static}/libhighs.a'

The static library linking looks fine here, the only problem is that the libhighs definition in the subproject has install: true and hence by default it's in the list of to-be-installed files, but that's not what we want. This fixes the wheel build:

python -m build -Cinstall-args=--skip-subprojects

To make that the default behavior, add this to pyproject.toml:

[tool.meson-python.args]
install = ['--skip-subprojects']

@rgommers
Copy link
Member

rgommers commented Oct 2, 2023

Note that that feature does require Meson 1.2.0, so you should bump the minimum version in the top-level meson.build file as well.

@HaoZeke
Copy link
Contributor Author

HaoZeke commented Oct 3, 2023

Thanks @rgommers, I'll get to updating this in a few days but:

... modulo the use of a wrap file (I assume that's for convenience during development, and it'll change to a git submodule at the end)

I was thinking we ought to keep it as a submodule? It should change to point to the Scipy/Highs instead of my own but other than that it would make more sense to keep the meson-first subproject approach. The only issue I can think of is that the highs repo ends up under subprojects which may be logically less than pleasant.

The way the build is structured now, the subproject defines all the necessary variables (including the files needed), which means we would very rarely need to update the meson.build in SciPy. e.g. With the submodule system, if a new file is added, we need to update the meson.build in SciPy. Under the current scheme, we'd continue as-is because it would be part of the variables exported from the subproject (we'd still need to update the wrap-file hash though).

Perhaps @eli-schwartz has more comments on submodules v/s subprojects?

@eli-schwartz
Copy link
Contributor

Using it as a subproject is very much preferable. You get component isolation: it's not SciPy's job to be concerned about how highs gets built, you just want to automatically use whatever the highs subproject does to define its static-library artifact(s), and then you consume them.

This also unlocks the ability to switch from:

highs_proj = subproject('highs', ......

to

highs_proj = dependency('highs')

along with specifying in SciPy, default_options: ['wrap_mode=forcefallback']

This would allow downstream builders (especially linux distros) the option to build highs as an external package and then build SciPy against that. But people doing pip install scipy or using python dev.py build would by default use the subproject.

@rgommers
Copy link
Member

rgommers commented Oct 3, 2023

That all sounds right - I didn't mean a git submodule instead of a subproject. Rather, I meant that I'm missing a git submodule under subprojects/. Or am I missing something obvious and that gets added automatically somehow? I haven't worked with wrap files before, but it seems to me like the sdist should contain a copy of HiGHS and the build should work offline after checking it out.

This would allow downstream builders (especially linux distros) the option to build highs as an external package and then build SciPy against that. But people doing pip install scipy or using python dev.py build would by default use the subproject.

Yes, that is what I had in mind as well.

@eli-schwartz
Copy link
Contributor

eli-schwartz commented Oct 3, 2023

meson dist --include-subprojects will create sdists that have the subproject included from the wrap file.

Whether to use subprojects via a wrap file or a git submodule (or both at the same time!) is largely unimportant as far as meson is concerned. The main thing that strikes me about the topic is that git submodules tend to be larger to download than a tarball, and, if you create "light" sdists that only download the subprojects with an online build when the person building the wheel hasn't disabled the use of subprojects, the tarball version works without git installed, while the submodule requires installing git.

I think both options are defensible choices, but adding a meson subproject as a git submodule will probably be more pleasant for you if you expect most people to interact with the source code via git using long-running clones, distribute sdists with subprojects included, and don't support GitHub autogenerated tag tarballs at all...

... which are all qualities that SciPy has.

@rgommers
Copy link
Member

rgommers commented Oct 3, 2023

Thanks, that explains it. Then I had the right thing in mind:

modulo the use of a wrap file (I assume that's for convenience during development, and it'll change to a git submodule at the end)

The wrap file is indeed nicer now, when you're developing this PR while making fixes to HiGHS as well. And once it's done, you can swap the wrap file for a git submodule under subprojects/.

@HaoZeke HaoZeke force-pushed the toHighspy branch 4 times, most recently from 703fc8e to 76e3fb7 Compare October 7, 2023 16:10
@HaoZeke
Copy link
Contributor Author

HaoZeke commented Oct 7, 2023

Failures seem unrelated (cython_special) but I can reproduce them (with a newly created environment, not my older one) so I assume it has something to do with a dependency update (can't any obvious contenders though).

@h-vetinari
Copy link
Member

Any update from the highs side? 1.14 is going to come around pretty soon, it would be good not to let this slip that release.

@HaoZeke
Copy link
Contributor Author

HaoZeke commented Apr 17, 2024 via email

@h-vetinari
Copy link
Member

Really? I interpreted

I have a few follow-on issues from releasing v1.7.0 to deal with before we release HiGHS/highspy 1.7.1

as requiring us to wait on the 1.7.1 release, which hasn't happened yet AFAICT.

@jajhall
Copy link

jajhall commented Apr 17, 2024

I don't know what methods in 'highspy' are used by Scipy, but it is unlikely to be affected by the issues I mentioned

@rgommers
Copy link
Member

Doing final due diligence on this. It looks quite good. Some new build warnings, but way more are removed so this is a net win. The HiGHS build is very heavy, and the changes somehow moved the build parallelism in the wrong direction:

image

On main it's usually sparsetools that finishes last, because that's the heaviest component by some distance.

I verified that the total contribution to build time from HiGHS didn't change much - it's about 25 seconds on a 12-core CPU on both main and this branch:

image

I'll try reshuffling this a bit.

This makes the build more balanced, since HiGHS takes a long time
to build and finishes last otherwise.
@rgommers
Copy link
Member

The last commit should fix it. The _highs.so target still finishes last, but not much later than other targets anymore:

image

@eli-schwartz
Copy link
Contributor

Why does this matter? Are you just causing the generated targets to textually move around inside build.ninja to tickle the job scheduler into running some targets before others when you know they take a long time?

Seems unreliable :p note that ninja schedules jobs based on the pointer value of its internal data structure, and the first job to run depends on the specifics of how malloc() returns values.

If it works, it... works? I wouldn't pin my hopes on it though.

@rgommers
Copy link
Member

Benchmark failure:

[22.15%] ··· optimize_milp.MilpMagicSquare.time_magic_square         1/3 failed
[22.15%] ··· ====== ==========
              size            
             ------ ----------
               3     80.5±0ms 
               4     3.20±0s  
               5      failed  
             ====== ==========
             For parameters: 5
             
             
             asv: benchmark timed out (timeout 60.0s)

@rgommers
Copy link
Member

Why does this matter? Are you just causing the generated targets to textually move around inside build.ninja to tickle the job scheduler into running some targets before others when you know they take a long time?

Exactly, yes. I don't think it's unreliable? If you have a bunch of subdir() statements, the order matters. If you put the subdir containing the target that takes the longest to build at the end, the parallelism ends up being very unbalanced. AFAIK this comment is correct (at least in practice, not sure if ninja could in theory still reorder things):

scipy/scipy/meson.build

Lines 527 to 559 in bd60b4e

# Ordering of subdirs: special and linalg come first, because other submodules
# have dependencies on cython_special.pxd and cython_linalg.pxd. After those,
# subdirs with the most heavy builds should come first (that parallelizes
# better)
subdir('_build_utils')
# Update BLAS/LAPACK dependencies to include wrapper libs
blas_dep = declare_dependency(
dependencies: blas_dep,
link_with: [g77_abi_wrappers, blas_lapack_wrapper_lib]
)
lapack_dep = declare_dependency(
dependencies: lapack_dep,
link_with: [g77_abi_wrappers, blas_lapack_wrapper_lib]
)
subdir('_lib')
subdir('special')
subdir('linalg')
subdir('sparse')
subdir('stats')
subdir('fft')
subdir('io')
subdir('spatial')
subdir('cluster')
subdir('constants')
subdir('fftpack')
subdir('integrate')
subdir('signal')
subdir('interpolate')
subdir('ndimage')
subdir('odr')
subdir('optimize')
subdir('datasets')
subdir('misc')

@eli-schwartz
Copy link
Contributor

AFAIK this comment is correct (at least in practice, not sure if ninja could in theory still reorder things):

I think the answer is "the comment is correct, that is indeed what ninja does, but you're depending on undocumented internals".

Samurai, the c99 reimplementation of ninja used by e.g. Alpine Linux, uses a stack which means "last scheduled first executed", breaking your assumption. Admittedly, samurai also doesn't yet implement Fortran dyndeps, so you'd be well within your rights to not care in the slightest.

@rgommers
Copy link
Member

Thanks for the context @eli-schwartz, that is good to know. I'll see about checking how things look with Samurai too, to ensure it's not completely terrible. I think all our CI and >95% of users use ninja, so we should optimize for that mostly. But I'd like Samurai to not be a lot worse at least.

@rgommers
Copy link
Member

I checked the benchmark locally, it didn't change. It's just very slow and close to the timeout limit it looks like. On this branch:

[25.00%] ··· optimize_milp.MilpMagicSquare.time_magic_square                                    ok
[25.00%] ··· ====== ==========
              size            
             ------ ----------
               3     25.3±0ms 
               4     1.13±0s  
               5     8.50±0s  
             ====== ==========

On main:

[25.00%] ··· optimize_milp.MilpMagicSquare.time_magic_square                                    ok
[25.00%] ··· ====== ==========
              size            
             ------ ----------
               3     26.2±0ms 
               4     1.11±0s  
               5     8.35±0s  
             ====== ==========

This was no slower after the update to HiGHS (verified locally) in
PR 19255. However it takes very long to run and was already near the
limit for CircleCI. The tracking issue for this already existed
as well: scipy#19389

[skip actions] [skip cirrus]
@rgommers
Copy link
Member

Okay this benchmark is just way too slow and there is already an issue for it: gh-19389. Disabling it now, because it takes over a minute to run for that single benchmark locally as well.

@rgommers
Copy link
Member

rgommers commented Apr 25, 2024

Hmm, this does add almost 0.5 MB to the wheel size: 24.96 MB to 25.42 MB on Linux x86-64. Probably due to upgrading HiGHS by 3 minor releases and it grew, but I'd like to look a bit closer at that since we're trying hard to shrink the binary sizes.

EDIT: a decent fraction of this seems to be symbol visibility; using gnu_symbol_visibility: 'inlineshidden' shaves off 300 kb on macOS arm64. Can be done in a follow-up, because it needs to be done upstream.

Copy link
Member

@rgommers rgommers left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, time to give this a go! LGTM now, we'll only learn more by wider testing. Thanks a lot @HaoZeke, and thanks to all reviewers as well.

@rgommers rgommers merged commit 85736e1 into scipy:main Apr 25, 2024
5 checks passed
@HaoZeke HaoZeke deleted the toHighspy branch April 25, 2024 20:48
@mdhaber
Copy link
Contributor

mdhaber commented Apr 25, 2024

Thanks @HaoZeke @rgommers @h-vetinari! Is scipy/HiGHS at the commit we want it to be at (and does SciPy point to the right commit)? There were some bug reports that were fixed upstream; it would be good to make sure they're resolved here.

@mdhaber
Copy link
Contributor

mdhaber commented Apr 26, 2024

Also, with this commit I'm getting an error:

..\..\subprojects\highs\src\meson.build:46:12: ERROR: Program or command 'python3' not found or not executable

python3 is not a command in my conda environment. I can create an alias, I'm sure, but I'm not sure if this should be necessary?

Log:

Build started at 2024-04-25T17:48:38.436310
Main binary: C:\Users\matth\miniforge3\envs\scipy-dev\python.exe
Build Options: -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md '--native-file=C:\Users\matth\scipy\build\cp311\meson-python-native-file.ini'
Python system: Windows
The Meson build system
Version: 1.3.0
Source dir: C:\Users\matth\scipy
Build dir: C:\Users\matth\scipy\build\cp311
Build type: native build
Project name: scipy
Project version: 1.14.0.dev0
-----------
Detecting compiler via: `icl ""` -> [WinError 2] The system cannot find the file specified
-----------
Detecting compiler via: `cl /?` -> [WinError 2] The system cannot find the file specified
-----------
Detecting compiler via: `cc --version` -> 0
stdout:
cc (Built by Jeroen for the R-project) 10.3.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-----------
Running command: cc -E -dM -
-----
-----------
Detecting linker via: `cc -Wl,--version` -> 0
stdout:
GNU ld (GNU Binutils) 2.36.1
Copyright (C) 2021 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
-----------
stderr:
collect2 version 10.3.0
C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe -plugin C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/liblto_plugin-0.dll -plugin-opt=C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\matth\AppData\Local\Temp\ccsm11fQ.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -m i386pep -Bdynamic C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/crtbegin.o -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0 -LC:/rtools40/ucrt64/bin/../lib/gcc -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../.. --version -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/default-manifest.o C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/crtend.o
-----------
Sanity testing C compiler: cc
Is cross compiler: False.
Sanity check compiler command line: cc sanitycheckc.c -o sanitycheckc.exe -D_FILE_OFFSET_BITS=64
Sanity check compile stdout:

-----
Sanity check compile stderr:

-----
Running test binary command:  C:\Users\matth\scipy\build\cp311\meson-private\sanitycheckc.exe
C compiler for the host machine: cc (gcc 10.3.0 "cc (Built by Jeroen for the R-project) 10.3.0")
C linker for the host machine: cc ld.bfd 2.36.1
-----------
Detecting linker via: `gcc-ar --version` -> 0
stdout:
GNU ar (GNU Binutils) 2.36.1
Copyright (C) 2021 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
-----------
-----------
Detecting compiler via: `icl ""` -> [WinError 2] The system cannot find the file specified
-----------
Detecting compiler via: `cl /?` -> [WinError 2] The system cannot find the file specified
-----------
Detecting compiler via: `c++ --version` -> 0
stdout:
c++ (Built by Jeroen for the R-project) 10.3.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-----------
Running command: c++ -E -dM -
-----
-----------
Detecting linker via: `c++ -Wl,--version` -> 0
stdout:
GNU ld (GNU Binutils) 2.36.1
Copyright (C) 2021 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
-----------
stderr:
collect2 version 10.3.0
C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe -plugin C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/liblto_plugin-0.dll -plugin-opt=C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\matth\AppData\Local\Temp\ccflM3ts.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -m i386pep -Bdynamic C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/crtbegin.o -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0 -LC:/rtools40/ucrt64/bin/../lib/gcc -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../.. --version -lstdc++ -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/default-manifest.o C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/crtend.o
-----------
Sanity testing C++ compiler: c++
Is cross compiler: False.
Sanity check compiler command line: c++ sanitycheckcpp.cc -o sanitycheckcpp.exe -D_FILE_OFFSET_BITS=64
Sanity check compile stdout:

-----
Sanity check compile stderr:

-----
Running test binary command:  C:\Users\matth\scipy\build\cp311\meson-private\sanitycheckcpp.exe
C++ compiler for the host machine: c++ (gcc 10.3.0 "c++ (Built by Jeroen for the R-project) 10.3.0")
C++ linker for the host machine: c++ ld.bfd 2.36.1
-----------
Detecting compiler via: `cython -V` -> 0
stdout:
Cython version 3.0.9
-----------
Running compile:
Working directory:  C:\Users\matth\AppData\Local\Temp\tmpdigvhpum
Code:
 print("hello world")
-----------
Command line: `cython C:\Users\matth\AppData\Local\Temp\tmpdigvhpum\testfile.pyx -o C:\Users\matth\AppData\Local\Temp\tmpdigvhpum\output.exe --fast-fail` -> 0
stderr:
C:\Users\matth\miniforge3\envs\scipy-dev\Lib\site-packages\Cython\Compiler\Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: C:\Users\matth\AppData\Local\Temp\tmpdigvhpum\testfile.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)
-----------
Cython compiler for the host machine: cython (cython 3.0.9)
-----------
Detecting compiler via: `icl ""` -> [WinError 2] The system cannot find the file specified
-----------
Detecting compiler via: `cl /?` -> [WinError 2] The system cannot find the file specified
-----------
Detecting compiler via: `cc --version` -> 0
stdout:
cc (Built by Jeroen for the R-project) 10.3.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-----------
Running command: cc -E -dM -
-----
-----------
Detecting linker via: `cc -Wl,--version` -> 0
stdout:
GNU ld (GNU Binutils) 2.36.1
Copyright (C) 2021 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
-----------
stderr:
collect2 version 10.3.0
C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe -plugin C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/liblto_plugin-0.dll -plugin-opt=C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\matth\AppData\Local\Temp\cca2ILRK.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -m i386pep -Bdynamic C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/crtbegin.o -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0 -LC:/rtools40/ucrt64/bin/../lib/gcc -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../.. --version -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/default-manifest.o C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/crtend.o
-----------
Sanity testing C compiler: cc
Is cross compiler: False.
Sanity check compiler command line: cc sanitycheckc.c -o sanitycheckc.exe -D_FILE_OFFSET_BITS=64
Sanity check compile stdout:

-----
Sanity check compile stderr:

-----
Running test binary command:  C:\Users\matth\scipy\build\cp311\meson-private\sanitycheckc.exe
C compiler for the build machine: cc (gcc 10.3.0 "cc (Built by Jeroen for the R-project) 10.3.0")
C linker for the build machine: cc ld.bfd 2.36.1
-----------
Detecting linker via: `gcc-ar --version` -> 0
stdout:
GNU ar (GNU Binutils) 2.36.1
Copyright (C) 2021 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
-----------
-----------
Detecting compiler via: `icl ""` -> [WinError 2] The system cannot find the file specified
-----------
Detecting compiler via: `cl /?` -> [WinError 2] The system cannot find the file specified
-----------
Detecting compiler via: `c++ --version` -> 0
stdout:
c++ (Built by Jeroen for the R-project) 10.3.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-----------
Running command: c++ -E -dM -
-----
-----------
Detecting linker via: `c++ -Wl,--version` -> 0
stdout:
GNU ld (GNU Binutils) 2.36.1
Copyright (C) 2021 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
-----------
stderr:
collect2 version 10.3.0
C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe -plugin C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/liblto_plugin-0.dll -plugin-opt=C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\matth\AppData\Local\Temp\cc5Cv7Nt.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -m i386pep -Bdynamic C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/crtbegin.o -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0 -LC:/rtools40/ucrt64/bin/../lib/gcc -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../.. --version -lstdc++ -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/default-manifest.o C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/crtend.o
-----------
Sanity testing C++ compiler: c++
Is cross compiler: False.
Sanity check compiler command line: c++ sanitycheckcpp.cc -o sanitycheckcpp.exe -D_FILE_OFFSET_BITS=64
Sanity check compile stdout:

-----
Sanity check compile stderr:

-----
Running test binary command:  C:\Users\matth\scipy\build\cp311\meson-private\sanitycheckcpp.exe
C++ compiler for the build machine: c++ (gcc 10.3.0 "c++ (Built by Jeroen for the R-project) 10.3.0")
C++ linker for the build machine: c++ ld.bfd 2.36.1
-----------
Detecting compiler via: `cython -V` -> 0
stdout:
Cython version 3.0.9
-----------
Using cached compile:
Cached command line:  cython C:\Users\matth\AppData\Local\Temp\tmpdigvhpum\testfile.pyx -o C:\Users\matth\AppData\Local\Temp\tmpdigvhpum\output.exe --fast-fail 

Code:
 print("hello world")
Cached compiler stdout:
 
Cached compiler stderr:
 C:\Users\matth\miniforge3\envs\scipy-dev\Lib\site-packages\Cython\Compiler\Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: C:\Users\matth\AppData\Local\Temp\tmpdigvhpum\testfile.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)

Cython compiler for the build machine: cython (cython 3.0.9)
Build machine cpu family: x86_64
Build machine cpu: x86_64
Host machine cpu family: x86_64
Host machine cpu: x86_64
Target machine cpu family: x86_64
Target machine cpu: x86_64
'utf-8' codec can't decode byte 0x90 in position 2: invalid start byte
Unusable script 'C:\\Users\\matth\\miniforge3\\envs\\scipy-dev\\python.exe'
Program python found: YES (C:\Users\matth\miniforge3\envs\scipy-dev\python.exe)
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp6v8tmqob
Code:
 
        #ifdef __has_include
         #if !__has_include("Python.h")
          #error "Header 'Python.h' could not be found"
         #endif
        #else
         #include <Python.h>
        #endif
-----------
Command line: `c++ -IC:\Users\matth\miniforge3\envs\scipy-dev\Include C:\Users\matth\scipy\build\cp311\meson-private\tmp6v8tmqob\testfile.cpp -E -P -D_FILE_OFFSET_BITS=64 -P -O0 -fpermissive -DMS_WIN64=` -> 0
Run-time dependency python found: YES 3.11
Program cython found: YES (C:\Users\matth\miniforge3\envs\scipy-dev\Scripts\cython.EXE)
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpf86v9da_
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmpf86v9da_\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpf86v9da_\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wunused-but-set-variable -Wno-unused-but-set-variable` -> 0
Compiler for C supports arguments -Wno-unused-but-set-variable: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpv00p__bi
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmpv00p__bi\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpv00p__bi\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wunused-function -Wno-unused-function` -> 0
Compiler for C supports arguments -Wno-unused-function: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpz67vcs3w
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmpz67vcs3w\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpz67vcs3w\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wconversion -Wno-conversion` -> 0
Compiler for C supports arguments -Wno-conversion: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmprsdet6u7
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmprsdet6u7\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmprsdet6u7\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wmisleading-indentation -Wno-misleading-indentation` -> 0
Compiler for C supports arguments -Wno-misleading-indentation: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp3faaka6s
Code:
 int main(void) { return 0; }

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmp3faaka6s\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmp3faaka6s\output.exe -D_FILE_OFFSET_BITS=64 -O0 -Wl,--start-group -lm -Wl,--end-group -Wl,--allow-shlib-undefined` -> 0
Library m found: YES
-----------
Detecting compiler via: `ifort --version` -> [WinError 2] The system cannot find the file specified
-----------
Detecting compiler via: `ifort -V` -> [WinError 2] The system cannot find the file specified
-----------
Detecting compiler via: `gfortran --version` -> 0
stdout:
GNU Fortran (Built by Jeroen for the R-project) 10.3.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-----------
Running command: gfortran -E -dM -
-----
-----------
Detecting linker via: `gfortran -Wl,--version` -> 0
stdout:
GNU ld (GNU Binutils) 2.36.1
Copyright (C) 2021 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
-----------
stderr:
collect2 version 10.3.0
C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe -plugin C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/liblto_plugin-0.dll -plugin-opt=C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\matth\AppData\Local\Temp\ccguRjAZ.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 -m i386pep -Bdynamic C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/crtbegin.o -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0 -LC:/rtools40/ucrt64/bin/../lib/gcc -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib -LC:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../.. --version -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lkernel32 C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/default-manifest.o C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/crtend.o
-----------
Sanity testing Fortran compiler: gfortran
Is cross compiler: False.
Sanity check compiler command line: gfortran sanitycheckf.f90 -o sanitycheckf.exe
Sanity check compile stdout:

-----
Sanity check compile stderr:

-----
Running test binary command:  C:\Users\matth\scipy\build\cp311\meson-private\sanitycheckf.exe
Fortran compiler for the host machine: gfortran (gcc 10.3.0 "GNU Fortran (Built by Jeroen for the R-project) 10.3.0")
Fortran linker for the host machine: gfortran ld.bfd 2.36.1
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpfcwq8sws
Code:
 stop; end program
-----------
Command line: `gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpfcwq8sws\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpfcwq8sws\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wconversion -Wno-conversion` -> 0
Compiler for Fortran supports arguments -Wno-conversion: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpdxsgyj8z
Code:
 
-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmpdxsgyj8z\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpdxsgyj8z\output.exe -D_FILE_OFFSET_BITS=64 -O0 -std=c17 -shared -Wl,--version-script=C:/Users/matth/scipy/scipy/_build_utils/link-version-pyinit.map` -> 0
Checking if "-Wl,--version-script" : links: YES 
Program tools/generate_f2pymod.py found: YES (C:\Users\matth\miniforge3\envs\scipy-dev\python.exe C:\Users\matth\scipy\tools/generate_f2pymod.py)
Program scipy/_build_utils/tempita.py found: YES (C:\Users\matth\miniforge3\envs\scipy-dev\python.exe C:\Users\matth\scipy\scipy/_build_utils/tempita.py)
Running command: C:\Users\matth\miniforge3\envs\scipy-dev\Scripts\pythran.EXE --version
--- stdout ---
0.14.0

--- stderr ---


Program pythran found: YES 0.14.0 0.14.0 (C:\Users\matth\miniforge3\envs\scipy-dev\Scripts\pythran.EXE)
Pkg-config binary missing from cross or native file, or env var undefined.
Trying a default Pkg-config fallback at pkg-config
Found pkg-config: YES (C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE) 0.29.2
Determining dependency 'xsimd' with pkg-config executable 'C:\\Users\\matth\\miniforge3\\envs\\scipy-dev\\Library\\bin\\pkg-config.EXE'
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --modversion xsimd` -> 1
stderr:
Package xsimd was not found in the pkg-config search path.
Perhaps you should add the directory containing `xsimd.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xsimd' found
-----------
CMake binary for host machine is not cached
CMake binary missing from cross or native file, or env var undefined.
Trying a default CMake fallback at cmake
Did not find CMake 'cmake'
Found CMake: NO
CMake binary for machine host machine not found. Giving up.
Run-time dependency xsimd found: NO (tried pkgconfig and cmake)
Run-time dependency threads found: YES
Running command: C:\Users\matth\miniforge3\envs\scipy-dev\python.exe -c "import os
os.chdir(os.path.join(\"..\", \"tools\"))
import numpy as np
try:
  incdir = os.path.relpath(np.get_include())
except Exception:
  incdir = np.get_include()
print(incdir)
  "
--- stdout ---
..\..\miniforge3\envs\scipy-dev\Lib\site-packages\numpy\core\include

--- stderr ---


Running command: C:\Users\matth\miniforge3\envs\scipy-dev\python.exe -c "import os; os.chdir(\"..\"); import numpy; print(numpy.get_include())"
--- stdout ---
C:\Users\matth\miniforge3\envs\scipy-dev\Lib\site-packages\numpy\core\include

--- stderr ---


Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpb7tn0_g2
Code:
 
        #include<stddef.h>
        #include<stdio.h>
        int main(void) {
            printf("%ld\n", (long)(sizeof(void *)));
            return 0;
        }
-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmpb7tn0_g2\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpb7tn0_g2\output.exe -D_FILE_OFFSET_BITS=64 -O0` -> 0
Program stdout:

8

Program stderr:


Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpdrtqqoco
Code:
 
-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmpdrtqqoco\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpdrtqqoco\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 --print-search-dirs` -> 0
stdout:
install: C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/
programs: =C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/
libraries: =C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../lib/;D:/a/_temp/msys64/ucrt64/x86_64-w64-mingw32/lib/x86_64-w64-mingw32/10.3.0/;D:/a/_temp/msys64/ucrt64/x86_64-w64-mingw32/lib/../lib/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../;D:/a/_temp/msys64/ucrt64/x86_64-w64-mingw32/lib/
-----------
Library npymath found: YES
Determining dependency 'pybind11' with pkg-config executable 'C:\\Users\\matth\\miniforge3\\envs\\scipy-dev\\Library\\bin\\pkg-config.EXE'
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --modversion pybind11` -> 0
stdout:
2.12.0
-----------
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --cflags pybind11` -> 0
stdout:
-IC:/Users/matth/miniforge3/envs/scipy-dev/Library/include
-----------
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG_ALLOW_SYSTEM_LIBS]: 1
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --libs pybind11` -> 0
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --libs pybind11` -> 0
Run-time dependency pybind11 found: YES 2.12.0
Running command: C:\Users\matth\miniforge3\envs\scipy-dev\python.exe -c "import os
os.chdir(os.path.join(\"..\", \"tools\"))
import pythran
try:
  incdir = os.path.relpath(pythran.get_include())
except Exception:
  incdir = pythran.get_include()
print(incdir)
"
--- stdout ---
..\..\miniforge3\envs\scipy-dev\Lib\site-packages\pythran

--- stderr ---


Determining dependency 'scipy-openblas' with pkg-config executable 'C:\\Users\\matth\\miniforge3\\envs\\scipy-dev\\Library\\bin\\pkg-config.EXE'
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --modversion scipy-openblas` -> 1
stderr:
Package scipy-openblas was not found in the pkg-config search path.
Perhaps you should add the directory containing `scipy-openblas.pc'
to the PKG_CONFIG_PATH environment variable
No package 'scipy-openblas' found
-----------
Run-time dependency scipy-openblas found: NO (tried pkgconfig)
Determining dependency 'openblas' with pkg-config executable 'C:\\Users\\matth\\miniforge3\\envs\\scipy-dev\\Library\\bin\\pkg-config.EXE'
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --modversion openblas` -> 0
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --cflags openblas` -> 0
stdout:
-IC:/Users/matth/miniforge3/envs/scipy-dev/Library/include/openblas
-----------
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG_ALLOW_SYSTEM_LIBS]: 1
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --libs openblas` -> 0
stdout:
-LC:/Users/matth/miniforge3/envs/scipy-dev/Library/lib -lopenblas
-----------
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --libs openblas` -> 0
stdout:
-LC:/Users/matth/miniforge3/envs/scipy-dev/Library/lib -lopenblas
-----------
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp0556f_ej
Code:
 
        #include<stddef.h>
        #include<stdio.h>
        int main(void) {
            printf("%ld\n", (long)(sizeof(void *)));
            return 0;
        }
-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmp0556f_ej\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmp0556f_ej\output.exe -D_FILE_OFFSET_BITS=64 -O0 -fpermissive` -> 0
Program stdout:

8

Program stderr:


Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpknfpfz83
Code:
 
-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmpknfpfz83\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmpknfpfz83\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive --print-search-dirs` -> 0
stdout:
install: C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/
programs: =C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/
libraries: =C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../lib/;D:/a/_temp/msys64/ucrt64/x86_64-w64-mingw32/lib/x86_64-w64-mingw32/10.3.0/;D:/a/_temp/msys64/ucrt64/x86_64-w64-mingw32/lib/../lib/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../;D:/a/_temp/msys64/ucrt64/x86_64-w64-mingw32/lib/
-----------
Run-time dependency openblas found: YES
Dependency openblas found: YES unknown (cached)
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmphpnht6ac
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmphpnht6ac\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmphpnht6ac\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wmaybe-uninitialized -Wno-maybe-uninitialized` -> 0
Compiler for C supports arguments -Wno-maybe-uninitialized: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp07i1mimt
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmp07i1mimt\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmp07i1mimt\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wdiscarded-qualifiers -Wno-discarded-qualifiers` -> 0
Compiler for C supports arguments -Wno-discarded-qualifiers: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpdvdwyda5
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmpdvdwyda5\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpdvdwyda5\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wempty-body -Wno-empty-body` -> 0
Compiler for C supports arguments -Wno-empty-body: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpagkexqia
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmpagkexqia\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpagkexqia\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wimplicit-function-declaration -Wno-implicit-function-declaration` -> 0
Compiler for C supports arguments -Wno-implicit-function-declaration: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpmcmvk9ot
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmpmcmvk9ot\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpmcmvk9ot\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wparentheses -Wno-parentheses` -> 0
Compiler for C supports arguments -Wno-parentheses: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp7ai64mr0
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmp7ai64mr0\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmp7ai64mr0\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wswitch -Wno-switch` -> 0
Compiler for C supports arguments -Wno-switch: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmps96iv6eh
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmps96iv6eh\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmps96iv6eh\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wunused-label -Wno-unused-label` -> 0
Compiler for C supports arguments -Wno-unused-label: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp08qbdkdt
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmp08qbdkdt\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmp08qbdkdt\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wunused-result -Wno-unused-result` -> 0
Compiler for C supports arguments -Wno-unused-result: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpu7ivwamf
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmpu7ivwamf\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpu7ivwamf\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wunused-variable -Wno-unused-variable` -> 0
Compiler for C supports arguments -Wno-unused-variable: YES 
Using cached compile:
Cached command line:  cc C:\Users\matth\scipy\build\cp311\meson-private\tmpf86v9da_\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpf86v9da_\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wunused-but-set-variable -Wno-unused-but-set-variable 

Code:
 extern int i;
int i;

Cached compiler stdout:
 
Cached compiler stderr:
 
Compiler for C supports arguments -Wno-unused-but-set-variable: YES (cached)
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp7or5dzhh
Code:
 extern int i;
int i;

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmp7or5dzhh\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmp7or5dzhh\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -Wincompatible-pointer-types -Wno-incompatible-pointer-types` -> 0
Compiler for C supports arguments -Wno-incompatible-pointer-types: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpgur8kulc
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmpgur8kulc\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmpgur8kulc\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wcpp -Wno-cpp` -> 0
Compiler for C++ supports arguments -Wno-cpp: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpse618z8u
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmpse618z8u\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmpse618z8u\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wdeprecated-declarations -Wno-deprecated-declarations` -> 0
Compiler for C++ supports arguments -Wno-deprecated-declarations: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpia0732qt
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmpia0732qt\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmpia0732qt\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wclass-memaccess -Wno-class-memaccess` -> 0
Compiler for C++ supports arguments -Wno-class-memaccess: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp93wby1ex
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmp93wby1ex\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmp93wby1ex\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wformat-truncation -Wno-format-truncation` -> 0
Compiler for C++ supports arguments -Wno-format-truncation: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpn2kc6rj7
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmpn2kc6rj7\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmpn2kc6rj7\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wnon-virtual-dtor -Wno-non-virtual-dtor` -> 0
Compiler for C++ supports arguments -Wno-non-virtual-dtor: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp8cdzi7g0
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmp8cdzi7g0\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmp8cdzi7g0\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wsign-compare -Wno-sign-compare` -> 0
Compiler for C++ supports arguments -Wno-sign-compare: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpp3_9rr4q
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmpp3_9rr4q\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmpp3_9rr4q\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wswitch -Wno-switch` -> 0
Compiler for C++ supports arguments -Wno-switch: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp3xruja4r
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmp3xruja4r\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmp3xruja4r\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wterminate -Wno-terminate` -> 0
Compiler for C++ supports arguments -Wno-terminate: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmps8rgjp71
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmps8rgjp71\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmps8rgjp71\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wunused-but-set-variable -Wno-unused-but-set-variable` -> 0
Compiler for C++ supports arguments -Wno-unused-but-set-variable: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmphs04so22
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmphs04so22\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmphs04so22\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wunused-function -Wno-unused-function` -> 0
Compiler for C++ supports arguments -Wno-unused-function: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmprn19m_9s
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmprn19m_9s\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmprn19m_9s\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wunused-local-typedefs -Wno-unused-local-typedefs` -> 0
Compiler for C++ supports arguments -Wno-unused-local-typedefs: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpvqsflrf5
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmpvqsflrf5\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmpvqsflrf5\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wunused-variable -Wno-unused-variable` -> 0
Compiler for C++ supports arguments -Wno-unused-variable: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp_a6bah3a
Code:
 extern int i;
int i;

-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmp_a6bah3a\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmp_a6bah3a\output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -Wint-in-bool-context -Wno-int-in-bool-context` -> 0
Compiler for C++ supports arguments -Wno-int-in-bool-context: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpk2p1tp2l
Code:
 stop; end program
-----------
Command line: `gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpk2p1tp2l\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpk2p1tp2l\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wargument-mismatch -Wno-argument-mismatch` -> 0
stderr:
gfortran: warning: switch '-Wargument-mismatch' is no longer supported
-----------
Compiler for Fortran supports arguments -Wno-argument-mismatch: YES 
Using cached compile:
Cached command line:  gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpfcwq8sws\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpfcwq8sws\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wconversion -Wno-conversion 

Code:
 stop; end program
Cached compiler stdout:
 
Cached compiler stderr:
 
Compiler for Fortran supports arguments -Wno-conversion: YES (cached)
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpod67l970
Code:
 stop; end program
-----------
Command line: `gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpod67l970\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpod67l970\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wintrinsic-shadow -Wno-intrinsic-shadow` -> 0
Compiler for Fortran supports arguments -Wno-intrinsic-shadow: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpvvxw3u8e
Code:
 stop; end program
-----------
Command line: `gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpvvxw3u8e\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpvvxw3u8e\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wmaybe-uninitialized -Wno-maybe-uninitialized` -> 0
Compiler for Fortran supports arguments -Wno-maybe-uninitialized: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpd2v6_zl2
Code:
 stop; end program
-----------
Command line: `gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpd2v6_zl2\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpd2v6_zl2\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wsurprising -Wno-surprising` -> 0
Compiler for Fortran supports arguments -Wno-surprising: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpe0yxrb9u
Code:
 stop; end program
-----------
Command line: `gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpe0yxrb9u\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpe0yxrb9u\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wuninitialized -Wno-uninitialized` -> 0
Compiler for Fortran supports arguments -Wno-uninitialized: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpj2sc9kh1
Code:
 stop; end program
-----------
Command line: `gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpj2sc9kh1\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpj2sc9kh1\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wunused-dummy-argument -Wno-unused-dummy-argument` -> 0
Compiler for Fortran supports arguments -Wno-unused-dummy-argument: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpq7n30_0p
Code:
 stop; end program
-----------
Command line: `gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpq7n30_0p\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpq7n30_0p\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wunused-label -Wno-unused-label` -> 0
Compiler for Fortran supports arguments -Wno-unused-label: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpfgah16ro
Code:
 stop; end program
-----------
Command line: `gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpfgah16ro\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpfgah16ro\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wunused-variable -Wno-unused-variable` -> 0
Compiler for Fortran supports arguments -Wno-unused-variable: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpq9ipr44p
Code:
 stop; end program
-----------
Command line: `gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpq9ipr44p\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpq9ipr44p\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wtabs -Wno-tabs` -> 0
Compiler for Fortran supports arguments -Wno-tabs: YES 
Using cached compile:
Cached command line:  gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpk2p1tp2l\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpk2p1tp2l\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wargument-mismatch -Wno-argument-mismatch 

Code:
 stop; end program
Cached compiler stdout:
 
Cached compiler stderr:
 gfortran: warning: switch '-Wargument-mismatch' is no longer supported

Compiler for Fortran supports arguments -Wno-argument-mismatch: YES (cached)
Using cached compile:
Cached command line:  gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpfcwq8sws\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpfcwq8sws\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wconversion -Wno-conversion 

Code:
 stop; end program
Cached compiler stdout:
 
Cached compiler stderr:
 
Compiler for Fortran supports arguments -Wno-conversion: YES (cached)
Using cached compile:
Cached command line:  gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpvvxw3u8e\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpvvxw3u8e\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wmaybe-uninitialized -Wno-maybe-uninitialized 

Code:
 stop; end program
Cached compiler stdout:
 
Cached compiler stderr:
 
Compiler for Fortran supports arguments -Wno-maybe-uninitialized: YES (cached)
Using cached compile:
Cached command line:  gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpj2sc9kh1\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpj2sc9kh1\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wunused-dummy-argument -Wno-unused-dummy-argument 

Code:
 stop; end program
Cached compiler stdout:
 
Cached compiler stderr:
 
Compiler for Fortran supports arguments -Wno-unused-dummy-argument: YES (cached)
Using cached compile:
Cached command line:  gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpq7n30_0p\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpq7n30_0p\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wunused-label -Wno-unused-label 

Code:
 stop; end program
Cached compiler stdout:
 
Cached compiler stderr:
 
Compiler for Fortran supports arguments -Wno-unused-label: YES (cached)
Using cached compile:
Cached command line:  gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpfgah16ro\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpfgah16ro\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wunused-variable -Wno-unused-variable 

Code:
 stop; end program
Cached compiler stdout:
 
Cached compiler stderr:
 
Compiler for Fortran supports arguments -Wno-unused-variable: YES (cached)
Using cached compile:
Cached command line:  gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpq9ipr44p\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpq9ipr44p\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -Wtabs -Wno-tabs 

Code:
 stop; end program
Cached compiler stdout:
 
Cached compiler stderr:
 
Compiler for Fortran supports arguments -Wno-tabs: YES (cached)
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp_t8ev5g9
Code:
 
  #include <stdint.h>
  int main() {
   struct {
     uint64_t *v;
   } x;
   return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE) &
          (int)__atomic_add_fetch(x.v, (uint64_t)1, __ATOMIC_ACQ_REL);
  }

-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmp_t8ev5g9\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmp_t8ev5g9\output.exe -D_FILE_OFFSET_BITS=64 -O0 -std=c17` -> 0
Checking if "Check atomic builtins without -latomic" : links: YES 
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --variable=includedir openblas` -> 0
stdout:
C:/Users/matth/miniforge3/envs/scipy-dev/Library/include/openblas
-----------
Got pkg-config variable includedir : C:/Users/matth/miniforge3/envs/scipy-dev/Library/include/openblas
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --variable=libdir openblas` -> 0
stdout:
C:/Users/matth/miniforge3/envs/scipy-dev/Library/lib
-----------
Got pkg-config variable libdir : C:/Users/matth/miniforge3/envs/scipy-dev/Library/lib
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --variable=openblas_config openblas` -> 0
stdout:
USE_64BITINT= NO_CBLAS= NO_LAPACK= NO_LAPACKE= DYNAMIC_ARCH=ON DYNAMIC_OLDER=OFF NO_AFFINITY=1 USE_OPENMP= HASWELL MAX_THREADS=128
-----------
Got pkg-config variable openblas_config : USE_64BITINT= NO_CBLAS= NO_LAPACK= NO_LAPACKE= DYNAMIC_ARCH=ON DYNAMIC_OLDER=OFF NO_AFFINITY=1 USE_OPENMP= HASWELL MAX_THREADS=128
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --variable=pcfiledir openblas` -> 0
stdout:
C:\Users\matth\miniforge3\envs\scipy-dev\Library\lib\pkgconfig
-----------
Got pkg-config variable pcfiledir : C:\Users\matth\miniforge3\envs\scipy-dev\Library\lib\pkgconfig
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --variable=includedir pybind11` -> 0
stdout:
C:/Users/matth/miniforge3/envs/scipy-dev/Library/include
-----------
Got pkg-config variable includedir : C:/Users/matth/miniforge3/envs/scipy-dev/Library/include
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --variable=libdir pybind11` -> 0
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --print-variables pybind11` -> 0
stdout:
includedir
pcfiledir
prefix
-----------
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --variable=openblas_config pybind11` -> 0
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --print-variables pybind11` -> 0
stdout:
includedir
pcfiledir
prefix
-----------
env[PKG_CONFIG_PATH]: C:\Users\matth\anaconda3\envs\cyipopt\Library\lib\pkgconfig
env[PKG_CONFIG]: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE
-----------
Called: `C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\pkg-config.EXE --variable=pcfiledir pybind11` -> 0
stdout:
C:\Users\matth\miniforge3\envs\scipy-dev\Library\share\pkgconfig
-----------
Got pkg-config variable pcfiledir : C:\Users\matth\miniforge3\envs\scipy-dev\Library\share\pkgconfig
Configuring __config__.py using configuration
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpr6zfw3it
Code:
 #include <stdio.h>
#include <limits.h>

        #if defined __stub_open_memstream || defined __stub___open_memstream
        fail fail fail this function is not going to work
        #endif
        
int main(void) {
            void *a = (void*) &open_memstream;
            long long b = (long long) a;
            return (int) b;
        }
-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmpr6zfw3it\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpr6zfw3it\output.exe -D_FILE_OFFSET_BITS=64 -O0 -std=c17 -Wl,--start-group -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -Wl,--end-group` -> 1
stderr:
C:\Users\matth\scipy\build\cp311\meson-private\tmpr6zfw3it\testfile.c: In function 'main':
C:\Users\matth\scipy\build\cp311\meson-private\tmpr6zfw3it\testfile.c:9:32: error: 'open_memstream' undeclared (first use in this function)
    9 |             void *a = (void*) &open_memstream;
      |                                ^~~~~~~~~~~~~~
C:\Users\matth\scipy\build\cp311\meson-private\tmpr6zfw3it\testfile.c:9:32: note: each undeclared identifier is reported only once for each function it appears in
-----------
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpfhm6hqvz
Code:
 #include <stdio.h>
        int main(void) {

        /* With some toolchains (MSYS2/mingw for example) the compiler
         * provides various builtins which are not really implemented and
         * fall back to the stdlib where they aren't provided and fail at
         * build/link time. In case the user provides a header, including
         * the header didn't lead to the function being defined, and the
         * function we are checking isn't a builtin itself we assume the
         * builtin is not functional and we just error out. */
        #if !0 && !defined(open_memstream) && !0
            #error "No definition for __builtin_open_memstream found in the prefix"
        #endif

        #ifdef __has_builtin
            #if !__has_builtin(__builtin_open_memstream)
                #error "__builtin_open_memstream not found"
            #endif
        #elif ! defined(open_memstream)
            __builtin_open_memstream;
        #endif
        return 0;
        }
-----------
Command line: `cc C:\Users\matth\scipy\build\cp311\meson-private\tmpfhm6hqvz\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmpfhm6hqvz\output.exe -D_FILE_OFFSET_BITS=64 -O0 -std=c17 -Wl,--start-group -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -Wl,--end-group` -> 1
stderr:
C:\Users\matth\scipy\build\cp311\meson-private\tmpfhm6hqvz\testfile.c: In function 'main':
C:\Users\matth\scipy\build\cp311\meson-private\tmpfhm6hqvz\testfile.c:12:14: error: #error "No definition for __builtin_open_memstream found in the prefix"
   12 |             #error "No definition for __builtin_open_memstream found in the prefix"
      |              ^~~~~
C:\Users\matth\scipy\build\cp311\meson-private\tmpfhm6hqvz\testfile.c:17:18: error: #error "__builtin_open_memstream not found"
   17 |                 #error "__builtin_open_memstream not found"
      |                  ^~~~~
-----------
Checking for function "open_memstream" : NO 
Configuring messagestream_config.h using configuration
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpk_4o_1k7
Code:
 stop; end program
-----------
Command line: `gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpk_4o_1k7\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpk_4o_1k7\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -w` -> 0
Compiler for Fortran supports arguments -w: YES 
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmpcphtunfd
Code:
 
-----------
Command line: `gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpcphtunfd\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpcphtunfd\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 --print-search-dirs` -> 0
stdout:
install: C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/
programs: =C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/
libraries: =C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/../lib/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../x86_64-w64-mingw32/10.3.0/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../lib/;D:/a/_temp/msys64/ucrt64/x86_64-w64-mingw32/lib/x86_64-w64-mingw32/10.3.0/;D:/a/_temp/msys64/ucrt64/x86_64-w64-mingw32/lib/../lib/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/lib/;C:/rtools40/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../;D:/a/_temp/msys64/ucrt64/x86_64-w64-mingw32/lib/
-----------
Running compile:
Working directory:  C:\Users\matth\AppData\Local\Temp\tmptguce9xe
Code:
 int i = static_cast<int>(0);
-----------
Command line: `c++ C:\Users\matth\AppData\Local\Temp\tmptguce9xe\testfile.cpp -o C:\Users\matth\AppData\Local\Temp\tmptguce9xe\output.obj -D_FILE_OFFSET_BITS=64 -c -std=c++17` -> 0
Compiler accepts -std=c++17: YES
Running compile:
Working directory:  C:\Users\matth\scipy\build\cp311\meson-private\tmp0xfffj9m
Code:
 
        #include<stddef.h>
        #include<stdio.h>
        int main(void) {
            printf("%ld\n", (long)(sizeof(void*)));
            return 0;
        }
-----------
Command line: `c++ C:\Users\matth\scipy\build\cp311\meson-private\tmp0xfffj9m\testfile.cpp -o C:\Users\matth\scipy\build\cp311\meson-private\tmp0xfffj9m\output.exe -D_FILE_OFFSET_BITS=64 -O0 -fpermissive -std=c++17` -> 0
Program stdout:

8

Program stderr:


Checking for size of "void*" : 8 
Using cached compile:
Cached command line:  gfortran C:\Users\matth\scipy\build\cp311\meson-private\tmpk_4o_1k7\testfile.f90 -o C:\Users\matth\scipy\build\cp311\meson-private\tmpk_4o_1k7\output.obj -D_FILE_OFFSET_BITS=64 -c -O0 -w 

Code:
 stop; end program
Cached compiler stdout:
 
Cached compiler stderr:
 
Compiler for Fortran supports arguments -w: YES (cached)

Executing subproject highs 

Project name: highs
Project version: 1.6.0
C++ compiler for the host machine: c++ (gcc 10.3.0 "c++ (Built by Jeroen for the R-project) 10.3.0")
C++ linker for the host machine: c++ ld.bfd 2.36.1
C++ compiler for the build machine: c++ (gcc 10.3.0 "c++ (Built by Jeroen for the R-project) 10.3.0")
C++ linker for the build machine: c++ ld.bfd 2.36.1
..\..\subprojects\highs\meson.build:16: WARNING: add_languages is missing native:, assuming languages are wanted for both host and build.
C compiler for the build machine: cc (gcc 10.3.0 "cc (Built by Jeroen for the R-project) 10.3.0")
C linker for the build machine: cc ld.bfd 2.36.1
C compiler for the host machine: cc (gcc 10.3.0 "cc (Built by Jeroen for the R-project) 10.3.0")
C linker for the host machine: cc ld.bfd 2.36.1
Dependency threads found: YES unknown (cached)
Using cached compile:
Cached command line:  cc C:\Users\matth\scipy\build\cp311\meson-private\tmp_t8ev5g9\testfile.c -o C:\Users\matth\scipy\build\cp311\meson-private\tmp_t8ev5g9\output.exe -D_FILE_OFFSET_BITS=64 -O0 -std=c17 

Code:
 
  #include <stdint.h>
  int main() {
   struct {
     uint64_t *v;
   } x;
   return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE) &
          (int)__atomic_add_fetch(x.v, (uint64_t)1, __ATOMIC_ACQ_REL);
  }

Cached compiler stdout:
 
Cached compiler stderr:
 
Checking if "Check atomic builtins without -latomic" : links: YES (cached)
Dependency zlib skipped: feature use_zlib disabled
Program git found: YES (C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\git.EXE)
Running command: C:\Users\matth\miniforge3\envs\scipy-dev\Library\bin\git.EXE rev-parse --short -C C:\Users\matth\scipy\subprojects\highs HEAD
--- stdout ---

--- stderr ---
fatal: Needed a single revision



..\..\subprojects\highs\src\meson.build:46:12: ERROR: Program or command 'python3' not found or not executable

@rgommers
Copy link
Member

Is scipy/HiGHS at the commit we want it to be at (and does SciPy point to the right commit)?

subprojects/highs/Version.txt says that we're now at 1.6.0. scipy/HiGHS cannot be at the wrong commit really, it's easiest to just look what you have on disk locally after checking out the submodule.

We should bump it further now that the hard work is done. I was planning to submit a follow-up PR to HiGHS first to fix some warnings and loose ends.

python3 is not a command in my conda environment. I can create an alias, I'm sure, but I'm not sure if this should be necessary?

That's a bug indeed, that code should not be trying to invoke python3. I'll fix that up right away since that broke the build for you (and I'm sure for a few other people).

@rgommers
Copy link
Member

and does SciPy point to the right commit

Ah, what did happen is that @HaoZeke made a few fixes upstream to address my review comments and those are not yet pulled into scipy/highs. Doesn't include the python3 thing though. A CI job for conda on Windows would have caught that - hopefully we'll get that at some point, we need it for checking Flang as well.

@rgommers
Copy link
Member

Okay, I'm going to have to revert this. All my critical build comments in #19255 (comment) were addressed upstream in ERGO-Code/HiGHS#1603, however that PR was not included in scipy/highs.

It turns out that it's not easy to update the submodule from 1.6.0 to 1.7.0, because the Meson build got broken and CI disabled in the process of the 1.7.0 work in Feb/Mar. It's a lot harder to now retroactively figure out what went wrong, compared to leaving CI in place and fixing things as they come up.

There are also a lot of other little issues. I opened ERGO-Code/HiGHS#1737 to address them, but there's a bit more.

One builtin test (test_lpsolvers) is failing with a UBSAN error. And, most importantly, highspy builds but does not import.

Worst case we can apply all the needed patches to 1.6.0 in scipy/highs and then re-land this PR. However, it'd be much better to fix up the latest branch upstream and update to at least 1.7.0 in one go. Otherwise the longer we wait, the more it goes out of date again.

@HaoZeke
Copy link
Contributor Author

HaoZeke commented Apr 27, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement A new feature or improvement scipy.optimize
Projects
None yet