Bug 257400 - science/py-scipy Add OPTION for Atlas blas
Summary: science/py-scipy Add OPTION for Atlas blas
Status: Open
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: freebsd-python (Nobody)
URL:
Keywords: feature, needs-qa
Depends on:
Blocks:
 
Reported: 2021-07-25 06:13 UTC by alt2600
Modified: 2022-09-18 01:24 UTC (History)
2 users (show)

See Also:
koobs: maintainer-feedback+
koobs: maintainer-feedback? (python)


Attachments
git-diff-scipy-add-atlas (2.46 KB, patch)
2021-07-25 06:13 UTC, alt2600
no flags Details | Diff
files/site.cfg (309 bytes, text/plain)
2021-07-25 06:14 UTC, alt2600
no flags Details
Makefile (2.17 KB, text/plain)
2021-07-25 06:15 UTC, alt2600
no flags Details
patch-Makefile-scipy-add-atlas (1.79 KB, patch)
2021-07-25 06:19 UTC, alt2600
no flags Details | Diff
git-diff-scipy-add-atlas (2.46 KB, patch)
2021-07-26 14:13 UTC, alt2600
no flags Details | Diff
git-diff-scipy-add-atlas-rev1 (2.50 KB, patch)
2021-07-29 22:20 UTC, alt2600
no flags Details | Diff
git-diff-scipy-add-atlas-rev2.diff (2.44 KB, patch)
2021-11-11 02:33 UTC, alt2600
no flags Details | Diff
git-diff-py-scipy-atlas-rev3.diff (1015 bytes, patch)
2022-03-11 22:34 UTC, alt2600
no flags Details | Diff
git-diff-py-scipy-atlas.rev4 (1006 bytes, patch)
2022-08-15 23:46 UTC, alt2600
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description alt2600 2021-07-25 06:13:24 UTC
Created attachment 226666 [details]
git-diff-scipy-add-atlas

Not sure I made the git diff correctly, getting used to this, and hacking as I go, so I will also submit all the individual files. I took the basic Makefile framework from py-numpy and tweaked it so it would be appropriate for py-scipy. I tried to do netlib as well, but while it seemed to configure to use the right libraries the final package had a dependency on atlas-math. I didn't dig to hard to find why, but I suspect it is because the build notes for scipy say they will default built against Atlas if found as presumably the preferred blas. As I doubt anyone would be using netlib with this package, I opted to limit things to Atlas and OpenBLAS. The issue is I have no way to test the OpenBLAS is still working ok, but I can confirm the Atlas build is fine, and am using it to build towards qgis ultimately. I believe the OpenBLAS case should work as it is the same mechanism of numpy, which seems to be the master library to scipy if I'm reading things right. Would be great to get this patch to allow Atlas as well.


### ATLAS Configure abbreviated tail

creating /tmp/tmpcc9xcnvz/tmp
creating /tmp/tmpcc9xcnvz/tmp/tmpcc9xcnvz
compile options: '-MMD -MF /tmp/tmpcc9xcnvz/file.c.d -c'
cc: /tmp/tmpcc9xcnvz/file.c
  libraries tatlas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd12.2/10.3.0/../../../']
Library tatlas was not found. Ignoring
  FOUND:
    include_dirs = ['/usr/local/include']
    language = f77
    libraries = ['alapack', 'ptf77blas', 'ptcblas']
    library_dirs = ['/usr/local/lib']
    define_macros = [('ATLAS_INFO', '"None"')]

accelerate_info:
  NOT AVAILABLE

  FOUND:
    include_dirs = ['/usr/local/include']
    language = f77
    libraries = ['alapack', 'ptf77blas', 'ptcblas']
    library_dirs = ['/usr/local/lib']
    define_macros = [('ATLAS_INFO', '"None"')]

blas_opt_info:
blas_mkl_info:
customize UnixCCompiler
C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

creating /tmp/tmpqzo50prz/tmp
creating /tmp/tmpqzo50prz/tmp/tmpqzo50prz
compile options: '-MMD -MF /tmp/tmpqzo50prz/file.c.d -c'
cc: /tmp/tmpqzo50prz/file.c
  libraries mkl_rt not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd12.2/10.3.0/../../../']
  NOT AVAILABLE

blis_info:
customize UnixCCompiler
C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

creating /tmp/tmp32nyh_rz/tmp
creating /tmp/tmp32nyh_rz/tmp/tmp32nyh_rz
compile options: '-MMD -MF /tmp/tmp32nyh_rz/file.c.d -c'
cc: /tmp/tmp32nyh_rz/file.c
  libraries blis not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd12.2/10.3.0/../../../']
  NOT AVAILABLE

atlas_3_10_blas_threads_info:
Setting PTATLAS=ATLAS
customize UnixCCompiler
C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

creating /tmp/tmp1llo3grv/tmp
creating /tmp/tmp1llo3grv/tmp/tmp1llo3grv
compile options: '-MMD -MF /tmp/tmp1llo3grv/file.c.d -c'
cc: /tmp/tmp1llo3grv/file.c
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
customize UnixCCompiler
C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

creating /tmp/tmp3uzvn3cw/tmp
creating /tmp/tmp3uzvn3cw/tmp/tmp3uzvn3cw
compile options: '-MMD -MF /tmp/tmp3uzvn3cw/file.c.d -c'
cc: /tmp/tmp3uzvn3cw/file.c
  libraries tatlas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd12.2/10.3.0/../../../']
Library tatlas was not found. Ignoring
  FOUND:
    include_dirs = ['/usr/local/include']
    language = c
    define_macros = [('HAVE_CBLAS', None), ('ATLAS_INFO', '"None"')]
    libraries = ['ptf77blas', 'ptcblas']
    library_dirs = ['/usr/local/lib']

  FOUND:
    include_dirs = ['/usr/local/include']
    language = c
    define_macros = [('HAVE_CBLAS', None), ('ATLAS_INFO', '"None"')]
    libraries = ['ptf77blas', 'ptcblas']
    library_dirs = ['/usr/local/lib']

non-existing path in 'scipy/signal/windows': 'tests'
non-existing path in 'scipy/sparse': 'sparsetools/sparsetools_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/bsr_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/csc_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/csr_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/other_impl.h'
[makenpz] scipy/special/tests/data/boost.npz not rebuilt
[makenpz] scipy/special/tests/data/gsl.npz not rebuilt
[makenpz] scipy/special/tests/data/local.npz not rebuilt
running config

## pkg info -dr py38-scipy
/usr/ports/science/py-scipy|$} pkg info -dr py38-scipy
py38-scipy-1.6.0
Depends on     :
        py38-numpy-1.16.6_2,1
        atlas-math-3.8.4_18,1
        python38-3.8.11
        gcc10-10.3.0
        py38-setuptools-57.0.0
Comment 1 alt2600 2021-07-25 06:14:33 UTC
Created attachment 226667 [details]
files/site.cfg

new files/site.cfg adapted from numpy
Comment 2 alt2600 2021-07-25 06:15:29 UTC
Created attachment 226668 [details]
Makefile

complete py-scipy Makefile for Atlas/OpenBLAS selection I left OpenBLAS the default
Comment 3 alt2600 2021-07-25 06:19:59 UTC
Created attachment 226669 [details]
patch-Makefile-scipy-add-atlas

standalone Makefile patch too add atlas and hopefully not break openblas. Just like files/site.cfg in case I didn't prepare the git diff correctly or if its easier to use these instead of that
Comment 4 Kubilay Kocak freebsd_committer freebsd_triage 2021-07-26 01:23:32 UTC
Thank you for your patch. Can you provide your changes as a single diff against the port? You can use `git diff > patch`.

For updating/patching WRKSRC (upstream sources) files, you can use the `make makepatch method` outlined here:

  https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/slow-patch.html
Comment 5 alt2600 2021-07-26 05:05:12 UTC
(In reply to Kubilay Kocak from comment #4)

that is the first attachment.
Comment 6 Kubilay Kocak freebsd_committer freebsd_triage 2021-07-26 06:47:18 UTC
(In reply to alt2600 from comment #5)

If the other patches duplicate the one you refer to, just separated, please obsolete them, otherwise include their changes into a single diff

Thanks!
Comment 7 alt2600 2021-07-26 14:13:25 UTC
Created attachment 226716 [details]
git-diff-scipy-add-atlas

obsoleting redundant attachments
Comment 8 alt2600 2021-07-26 22:19:02 UTC
(In reply to Kubilay Kocak from comment #6)

sorry, if this notified already, not sure if it only sends email when its a reply or if just posting does it. not trying to be bothersome, just didn't want you waiting on me doing this earlier. I plan to stand up a bhyve to make testing easier when options are system breaking for my setup, ie openblas. in case there are issues with the patch and openblas.
Comment 9 alt2600 2021-07-29 22:20:53 UTC
Created attachment 226789 [details]
git-diff-scipy-add-atlas-rev1

confirmed under openblas based bhyve to configure and build correctly. Noticed under PR 251718 and from the configure this wants both openblas and blas so I added back a LIB_DEPENDS for the OPENBLAS option to include it, but otherwise the uses blaslapack:openblas caused no issue. not sure if in the end this port wants cblas or how applicable that is with openblas but I just wanted to confirm no breakage, not extend features. This patch will allow ATLAS or OpenBLAS use, maintaining OpenBLAS as the default. I consider this patch to now be tested and complete.

it should work for Netlib case, but if Atlas is installed it will bring in an Atlas dependency, despite possibly not linking to it in reality. If someone wants to get netlib I'm sure they can explore the syntax further. I can confirm it appears to configure for it, build, and install, but still shows an Atlas pkg dependency once installed so it remains excluded. see math/py-numpy if someone really wanted to take the time for netlib. 


### make configure tail excerpt
creating /tmp/tmpqmtazvj7/tmp
creating /tmp/tmpqmtazvj7/tmp/tmpqmtazvj7
compile options: '-MMD -MF /tmp/tmpqmtazvj7/file.c.d -c'
cc: /tmp/tmpqmtazvj7/file.c
  FOUND:
    libraries = ['openblas', 'blas']
    library_dirs = ['/usr/local/lib']
    include_dirs = ['/usr/include', '/usr/local/include']
    language = c
    define_macros = [('HAVE_CBLAS', None)]

  FOUND:
    define_macros = [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)]
    libraries = ['openblas', 'blas']
    library_dirs = ['/usr/local/lib']
    include_dirs = ['/usr/include', '/usr/local/include']
    language = c

non-existing path in 'scipy/signal/windows': 'tests'
non-existing path in 'scipy/sparse': 'sparsetools/sparsetools_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/bsr_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/csc_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/csr_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/other_impl.h'
[makenpz] scipy/special/tests/data/boost.npz not rebuilt
[makenpz] scipy/special/tests/data/gsl.npz not rebuilt
[makenpz] scipy/special/tests/data/local.npz not rebuilt
running config



/usr/ports/science/py-scipy $ sudo make install clean
Password:
===>  Installing for py38-scipy-1.6.0
===>  Checking if py38-scipy is already installed
===>   Registering installation for py38-scipy-1.6.0
Installing py38-scipy-1.6.0...


/usr/ports/science/py-scipy $ pkg info -dr py38-scipy
py38-scipy-1.6.0
Depends on     :
        py38-numpy-1.16.6_2,1
        openblas-0.3.16,1
        blas-3.10.0
        python38-3.8.11
        gcc10-10.3.0
        py38-setuptools-57.0.0
Comment 10 alt2600 2021-11-11 02:33:19 UTC
Created attachment 229421 [details]
git-diff-scipy-add-atlas-rev2.diff

updated add ATLAS support patch for py-scipy 1.7.1 confirmed builds under OPENBLAS default fine to match existing behavior as well as under ATLAS. 
Uses same method math/py-numpy utilizes to allow atlas support. 

===== OPENBLAS configure snippet
  FOUND:
    libraries = ['openblas', 'blas', 'openblas', 'blas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]

  FOUND:
    libraries = ['openblas', 'blas', 'openblas', 'blas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]

blas_opt_info:
blas_mkl_info:
  libraries mkl_rt not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd12.2/10.3.0/../../../']
  NOT AVAILABLE

blis_info:
  libraries blis not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd12.2/10.3.0/../../../']
  NOT AVAILABLE

openblas_info:
C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

creating /tmp/tmpwb0b8251/tmp
creating /tmp/tmpwb0b8251/tmp/tmpwb0b8251
compile options: '-c'
cc: /tmp/tmpwb0b8251/source.c
cc /tmp/tmpwb0b8251/tmp/tmpwb0b8251/source.o -L/usr/local/lib -lopenblas -lblas -o /tmp/tmpwb0b8251/a.out
  FOUND:
    libraries = ['openblas', 'blas', 'openblas', 'blas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]

  FOUND:
    libraries = ['openblas', 'blas', 'openblas', 'blas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]

    
===== OPENBLAS check orphans
====> Checking for pkg-plist issues (check-plist)
===> Parsing plist
===> Checking for items in STAGEDIR missing from pkg-plist
===> Checking for items in pkg-plist which are not in STAGEDIR
===> No pkg-plist issues found (check-plist)


===== OPENBLAS install
===>  Installing for py38-scipy-1.7.1
===>  Checking if py38-scipy is already installed
===>   Registering installation for py38-scipy-1.7.1
Installing py38-scipy-1.7.1...


===== OPENBLAS pkg info -d py38-scipy
py38-scipy-1.7.1:
        py38-numpy-1.20.3,1
        openblas-0.3.18,1
        blas-3.10.0
        python38-3.8.12_1
        gcc10-10.3.0
        py38-setuptools-57.0.0

        
    
===== ATLAS configure snippet    
atlas_3_10_threads_info:
Setting PTATLAS=ATLAS
  libraries lapack_atlas not found in /usr/lib
  libraries ptf77blas,ptcblas not found in /usr/lib
  libraries lapack_atlas not found in /usr/local/lib
<class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
Setting PTATLAS=ATLAS
get_default_fcompiler: matching types: '['gnu', 'gnu95']'
customize GnuFCompiler
Found executable /usr/local/bin/gfortran10
gnu: no Fortran 90 compiler found
Could not locate executable cc -shared
Found executable /usr/local/bin/ld
Found executable /usr/local/bin/ar
Found executable /usr/local/bin/ranlib
gnu: no Fortran 90 compiler found
customize Gnu95FCompiler
customize Gnu95FCompiler
customize Gnu95FCompiler using config
compiling '_configtest.c':

/* This file is generated from numpy/distutils/system_info.py */
void ATL_buildinfo(void);
int main(void) {
  ATL_buildinfo();
  return 0;
}

C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

compile options: '-c'
cc: _configtest.c
cc _configtest.o -L/usr/local/lib -lptf77blas -lptcblas -o _configtest
ld: error: undefined symbol: ATL_buildinfo
>>> referenced by _configtest.c
>>>               _configtest.o:(main)
cc: error: linker command failed with exit code 1 (use -v to see invocation)
failure.
removing: _configtest.c _configtest.o _configtest.o.d
Status: 255
Output: compiling '_configtest.c':

/* This file is generated from numpy/distutils/system_info.py */
void ATL_buildinfo(void);
int main(void) {
  ATL_buildinfo();
  return 0;
}

C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

compile options: '-c'
cc: _configtest.c
cc _configtest.o -L/usr/local/lib -lptf77blas -lptcblas -o _configtest

Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
  libraries tatlas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd12.2/10.3.0/../../../']
Library tatlas was not found. Ignoring
  FOUND:
    include_dirs = ['/usr/local/include']
    language = f77
    libraries = ['alapack', 'ptf77blas', 'ptcblas']
    library_dirs = ['/usr/local/lib']

  FOUND:
    include_dirs = ['/usr/local/include']
    language = f77
    libraries = ['alapack', 'ptf77blas', 'ptcblas']
    library_dirs = ['/usr/local/lib']

blas_opt_info:
blas_mkl_info:
  libraries mkl_rt not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd12.2/10.3.0/../../../']
  NOT AVAILABLE

blis_info:
  libraries blis not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd12.2/10.3.0/../../../']
  NOT AVAILABLE

openblas_info:
  libraries openblas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd12.2/10.3.0/../../../']
  NOT AVAILABLE

atlas_3_10_blas_threads_info:
Setting PTATLAS=ATLAS
  libraries tatlas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd12.2/10.3.0/../../../']
  NOT AVAILABLE

atlas_3_10_blas_info:
  libraries satlas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd12.2/10.3.0/../../../']
  NOT AVAILABLE

atlas_blas_threads_info:
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
  FOUND:
    include_dirs = ['/usr/local/include']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
    libraries = ['ptf77blas', 'ptcblas', 'ptf77blas', 'ptcblas']
    library_dirs = ['/usr/local/lib']

  FOUND:
    include_dirs = ['/usr/local/include']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
    libraries = ['ptf77blas', 'ptcblas', 'ptf77blas', 'ptcblas']
    library_dirs = ['/usr/local/lib']


===== ATLAS check orphans
====> Checking for pkg-plist issues (check-plist)
===> Parsing plist
===> Checking for items in STAGEDIR missing from pkg-plist
===> Checking for items in pkg-plist which are not in STAGEDIR
===> No pkg-plist issues found (check-plist)


===== ATLAS install
===>  Installing for py38-scipy-1.7.1
===>  Checking if py38-scipy is already installed
===>   Registering installation for py38-scipy-1.7.1
Installing py38-scipy-1.7.1...


===== ATLAS pkg info -d py38-scipy
py38-scipy-1.7.1:
        py38-numpy-1.20.3,1
        atlas-math-3.8.4_18,1
        python38-3.8.12_1
        gcc10-10.3.0
        py38-setuptools-57.0.0
Comment 11 alt2600 2022-03-11 22:34:56 UTC
Created attachment 232395 [details]
git-diff-py-scipy-atlas-rev3.diff

with the 1.8.0 py-scipy release it has become trivially easy to support multiple BLAS libraries, no more janky hacks adapted from py-numpy are necessary. As I have heard no feedback in months on if this patch will be accepted or not this will be the last time I update it for new versions of py-scipy. At this point I'll just make it work for myself as need arises, and if anyone else wants it this diff will show the basics, but essentially it just takes a single radio that either uses blaslapack:atlas, for atlas, or uses the lib depends on blas and openblas for openblas. In principal this should work with netlib, but it you have atlas it will be chosen over netlib so I didnt implement, but uses blaslapack should make it work fine if you do not have openblas nor atlas installed. I kept OPENBLAS the default, despite it being conflicting and not the default blas library for ports, as that is what it is now.

for those looking in the future you can enable options like this

delete the LIB_DEPENDS line referencing blas and openblas and add this or just add blaslapack:atlas to the USES line after deleting the LIB_DEPENDS line and its ATLAS only for you.


OPTIONS_DEFAULT= OPENBLAS
OPTIONS_SINGLE=         BLASLIB
OPTIONS_SINGLE_BLASLIB= ATLAS OPENBLAS
ATLAS_USES=             blaslapack:atlas
OPENBLAS_LIB_DEPENDS=   libblas.so:math/blas \
                        libopenblas.so:math/openblas

tweak your default if you want or make sure to use OPTION_SET and OPTION_UNSET using ports.conf if using portconf

== OPENBLAS OPTION configure snippet
lapack_opt_info:
lapack_mkl_info:
customize UnixCCompiler
C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

creating /tmp/tmpnwlzq1iw/tmp
creating /tmp/tmpnwlzq1iw/tmp/tmpnwlzq1iw
compile options: '-MMD -MF /tmp/tmpnwlzq1iw/file.c.d -c'
cc: /tmp/tmpnwlzq1iw/file.c
  libraries mkl_rt not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
  NOT AVAILABLE

openblas_lapack_info:
C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

creating /tmp/tmpavviamb0/tmp
creating /tmp/tmpavviamb0/tmp/tmpavviamb0
compile options: '-c'
cc: /tmp/tmpavviamb0/source.c
cc /tmp/tmpavviamb0/tmp/tmpavviamb0/source.o -L/usr/local/lib -L/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../ -lopenblas -lgfortran -o /tmp/tmpavviamb0/a.out
  FOUND:
    libraries = ['openblas', 'gfortran', 'openblas', 'gfortran']
    library_dirs = ['/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
    language = c
    define_macros = [('HAVE_CBLAS', None)]

  FOUND:
    libraries = ['openblas', 'gfortran', 'openblas', 'gfortran']
    library_dirs = ['/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
    language = c
    define_macros = [('HAVE_CBLAS', None)]

blas_opt_info:
blas_mkl_info:
  libraries mkl_rt not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
  NOT AVAILABLE

blis_info:
  libraries blis not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
  NOT AVAILABLE

openblas_info:
C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

creating /tmp/tmpofuclsmh/tmp
creating /tmp/tmpofuclsmh/tmp/tmpofuclsmh
compile options: '-c'
cc: /tmp/tmpofuclsmh/source.c
cc /tmp/tmpofuclsmh/tmp/tmpofuclsmh/source.o -L/usr/local/lib -L/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../ -lopenblas -lgfortran -o /tmp/tmpofuclsmh/a.out
  FOUND:
    libraries = ['openblas', 'gfortran', 'openblas', 'gfortran']
    library_dirs = ['/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
    language = c
    define_macros = [('HAVE_CBLAS', None)]

  FOUND:
    libraries = ['openblas', 'gfortran', 'openblas', 'gfortran']
    library_dirs = ['/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
    language = c
    define_macros = [('HAVE_CBLAS', None)]

non-existing path in 'scipy/signal/windows': 'tests'
non-existing path in 'scipy/sparse': 'sparsetools/sparsetools_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/bsr_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/csc_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/csr_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/other_impl.h'
[makenpz] scipy/special/tests/data/boost.npz not rebuilt
[makenpz] scipy/special/tests/data/gsl.npz not rebuilt
[makenpz] scipy/special/tests/data/local.npz not rebuilt
running config

===OPENBLAS OPTION check-orphans
====> Checking for pkg-plist issues (check-plist)
===> Parsing plist
===> Checking for items in STAGEDIR missing from pkg-plist
===> Checking for items in pkg-plist which are not in STAGEDIR
===> No pkg-plist issues found (check-plist)


===OPENBLAS OPTION pkg info -d
py38-scipy-1.8.0
Depends on     :
        py38-numpy-1.20.3,1
        openblas-0.3.18,1
        blas-3.10.0
        python38-3.8.12_2
        gcc10-10.3.0
        py38-setuptools-57.0.0

        
===ATLAS OPTION configure snippet
lapack_opt_info:
lapack_mkl_info:
customize UnixCCompiler
C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

creating /tmp/tmppkk1xmzc/tmp
creating /tmp/tmppkk1xmzc/tmp/tmppkk1xmzc
compile options: '-MMD -MF /tmp/tmppkk1xmzc/file.c.d -c'
cc: /tmp/tmppkk1xmzc/file.c
  libraries mkl_rt not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
  NOT AVAILABLE

openblas_lapack_info:
  libraries openblas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
  NOT AVAILABLE

openblas_clapack_info:
  libraries openblas,lapack not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
  NOT AVAILABLE

flame_info:
  libraries flame not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
  NOT AVAILABLE

atlas_3_10_threads_info:
Setting PTATLAS=ATLAS
  libraries lapack_atlas not found in /usr/lib
  libraries ptf77blas,ptcblas not found in /usr/lib
  libraries lapack_atlas not found in /usr/local/lib
<class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
Setting PTATLAS=ATLAS
get_default_fcompiler: matching types: '['gnu', 'gnu95']'
customize GnuFCompiler
Found executable /usr/local/bin/gfortran10
gnu: no Fortran 90 compiler found
Could not locate executable cc -shared
Found executable /usr/local/bin/ld
Found executable /usr/local/bin/ar
Found executable /usr/local/bin/ranlib
gnu: no Fortran 90 compiler found
customize Gnu95FCompiler
customize Gnu95FCompiler
customize Gnu95FCompiler using config
compiling '_configtest.c':

/* This file is generated from numpy/distutils/system_info.py */
void ATL_buildinfo(void);
int main(void) {
  ATL_buildinfo();
  return 0;
}

C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

compile options: '-c'
cc: _configtest.c
cc _configtest.o -L/usr/local/lib -lptf77blas -lptcblas -o _configtest
ld: error: undefined symbol: ATL_buildinfo
>>> referenced by _configtest.c
>>>               _configtest.o:(main)
cc: error: linker command failed with exit code 1 (use -v to see invocation)
failure.
removing: _configtest.c _configtest.o _configtest.o.d
Status: 255
Output: compiling '_configtest.c':

/* This file is generated from numpy/distutils/system_info.py */
void ATL_buildinfo(void);
int main(void) {
  ATL_buildinfo();
  return 0;
}

C compiler: cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -march=westmere -fstack-protector-strong -fno-strict-aliasing -fPIC

compile options: '-c'
cc: _configtest.c
cc _configtest.o -L/usr/local/lib -lptf77blas -lptcblas -o _configtest

Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
  libraries tatlas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
Library tatlas was not found. Ignoring
  FOUND:
    include_dirs = ['/usr/local/include']
    language = f77
    libraries = ['alapack', 'ptf77blas', 'ptcblas']
    library_dirs = ['/usr/local/lib']

  FOUND:
    include_dirs = ['/usr/local/include']
    language = f77
    libraries = ['alapack', 'ptf77blas', 'ptcblas']
    library_dirs = ['/usr/local/lib']

blas_opt_info:
blas_mkl_info:
  libraries mkl_rt not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
  NOT AVAILABLE

blis_info:
  libraries blis not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
  NOT AVAILABLE

openblas_info:
  libraries openblas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
  NOT AVAILABLE

atlas_3_10_blas_threads_info:
Setting PTATLAS=ATLAS
  libraries tatlas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
  NOT AVAILABLE

atlas_3_10_blas_info:
  libraries satlas not found in ['/usr/lib', '/usr/local/lib', '/usr/local/lib/gcc10/gcc/x86_64-portbld-freebsd13.0/10.3.0/../../../']
  NOT AVAILABLE

atlas_blas_threads_info:
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
  FOUND:
    include_dirs = ['/usr/local/include']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
    libraries = ['ptf77blas', 'ptcblas', 'ptf77blas', 'ptcblas']
    library_dirs = ['/usr/local/lib']

  FOUND:
    include_dirs = ['/usr/local/include']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
    libraries = ['ptf77blas', 'ptcblas', 'ptf77blas', 'ptcblas']
    library_dirs = ['/usr/local/lib']

non-existing path in 'scipy/signal/windows': 'tests'
non-existing path in 'scipy/sparse': 'sparsetools/sparsetools_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/bsr_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/csc_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/csr_impl.h'
non-existing path in 'scipy/sparse': 'sparsetools/other_impl.h'
[makenpz] scipy/special/tests/data/boost.npz not rebuilt
[makenpz] scipy/special/tests/data/gsl.npz not rebuilt
[makenpz] scipy/special/tests/data/local.npz not rebuilt
running config


===ATLAS OPTION check-orphans
====> Checking for pkg-plist issues (check-plist)
===> Parsing plist
===> Checking for items in STAGEDIR missing from pkg-plist
===> Checking for items in pkg-plist which are not in STAGEDIR
===> No pkg-plist issues found (check-plist)


===ATLAS OPTION pkg info -d
py38-scipy-1.8.0:
        py38-numpy-1.20.3,1
        atlas-math-3.8.4_18,1
        python38-3.8.12_2
        gcc10-10.3.0
        py38-setuptools-57.0.0
Comment 12 alt2600 2022-05-26 22:46:31 UTC
posted patch continues to work for py-scipy 1.8.1 as is without modification
Comment 13 alt2600 2022-08-15 23:46:33 UTC
Created attachment 235932 [details]
git-diff-py-scipy-atlas.rev4

minor tweaks to work with V1.9.0 update. 

found the docs link has been hard coded to the docs for v1.8.1 from using a make variable, but also found that it appears v1.9.0 docs are available so not sure why 1.8.1 was hard coded in as its the old docs.
Comment 14 alt2600 2022-09-18 01:24:11 UTC
supplied patch continues to apply and function for 1.9.1 version update the other day