development/numpy-legacy: Updated to match ATLAS version.

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
Serban Udrea 2016-08-26 07:12:22 +07:00 committed by David Spencer
parent b87bb0c167
commit d7dda7c0e1
3 changed files with 112 additions and 23 deletions

View file

@ -9,13 +9,27 @@ interfacing with general-purpose data-base applications.
There are also basic facilities for discrete fourier transform, basic
linear algebra and random number generation.
If you need to build numpy for debugging, set DEBUG=y. If software
depending on numpy is having problems with the new relaxed strides
checking, set NPY_RSC=0.
If you need to build numpy for debugging, set DEBUG=y. If you use software
which is having problems with numpy's new relaxed strides checking, set
NPY_RSC=0.
It is highly recommended to install optimized BLAS and LAPACK libs
before installing numpy. You may choose between ATLAS+LAPACK and
OpenBLAS.
It is highly recommended to install libraries implementing BLAS and LAPACK
before installing numpy. You may choose between:
a) BLAS and LAPACK (reference but unoptimized and thus slow)
b) OpenBLAS (optimized, provides LAPACK too)
c) ATLAS and LAPACK (optimized), good to read README.ATLAS
All these are available on SlackBuilds.org.
If you want to use the UMFPACK library instead of SuperLU to solve unsymmetric
sparse linear systems, then run this Slackbuild with NO_UMFPACK set to "no"
and then install scikit-umfpack on top of scipy. In this context, UMFPACK is an
optional dependency for numpy. Nevertheless, note that presently scikit-umfpack
is not available on SlackBuilds.org while its dependencies are.
NOTE: If you use this SlackBuild, numpy will run with the python version
provided by Slackware Linux, which is presently 2.7.xx. If you'd like to
use python 3.x then you have to install numpy with the numpy-legacy3
SlackBuild.
IMPORTANT: This version, 1.8.2, is the latest to include the oldnumeric
and numarray compatibility modules. Starting with version

View file

@ -0,0 +1,13 @@
The numpy v. 1.8.2 is not able to autodetect the shared libraries created by
newer versions of ATLAS. Thus if one lets ATLAS create these libraries, she
has to tell numpy about them.
By default the numpy-legacy script forces numpy to look for the shared, threaded
ATLAS libraries. If you want to change this behaviour you have the following
possibilities:
a) Set ATLAS_SHARED to "no". In this case numpy will just look for the
apropriate static libraries.
b) Set ATLAS_THREADS to "no". In this case numpy will be forced to look for
the single threaded ATLAS libraries, static or shared depending on the
value of ATLAS_SHARED. Otherwise it will look for the threaded ones.

View file

@ -3,11 +3,44 @@
# Slackware build script for the latest version of NumPy to include
# the compatibility layer with numeric and numarray
# Copyright 2011-2016 Serban Udrea <s.udrea@gsi.de>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification,
# is permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# Written by Aleksandar Samardzic <asamardzic@gmail.com>
# Updated up to 1.8.2 by Serban Udrea <S.Udrea@gsi.de>
# Updated up to 1.11.1 by Serban Udrea <S.Udrea@gsi.de>
#
# Added support for building with debugging symbols (S. Udrea)
#
# LIBDIRSUFFIX is now needed to set the proper path for
# UMFPACK (S. Udrea)
#
# Since UMFPACK is not used anymore by scipy but by the optional package
# scikit-umfpack, the configuration of this and the corresponding AMD library
# is now optional. One has to set NO_UMFPACK to "no" to create the apropriate
# configuration file before building numpy. (S. Udrea)
#
# Added support for newer versions of ATLAS (3.10.x) (S. Udrea)
#
# Added the possibility to force numpy to link to different kinds of the
# ATLAS library (S. Udrea)
PRGNAM="numpy-legacy"
VERSION=${VERSION:-1.8.2}
@ -18,14 +51,14 @@ TARBALL_NAME=numpy # This is actually what we are going to install
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i486 ;;
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@ -53,22 +86,51 @@ tar xvf $CWD/$TARBALL_NAME-$VERSION.tar.gz
cd $TARBALL_NAME-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
cat > site.cfg <<EOF
[amd]
library_dirs = /usr/lib${LIBDIRSUFFIX}
include_dirs = /usr/include/amd
amd_libs = amd
# Tell numpy about the new names of the ATLAS shared libraries. This doesn't
# force compilation against ATLAS, just makes sure that numpy does not link
# against the static libraries, in case ATLAS is chosen.
#
ATLAS_SHARED="${ATLAS_SHARED:-yes}"
ATLAS_SHARED=$(echo "$ATLAS_SHARED"|cut -b 1|tr a-z A-Z)
ATLAS_THREADS="${ATLAS_THREADS:-yes}"
ATLAS_THREADS=$(echo "$ATLAS_THREADS"|cut -b 1|tr a-z A-Z)
[umfpack]
library_dirs = /usr/lib${LIBDIRSUFFIX}
include_dirs = /usr/include/umfpack
umfpack_libs = umfpack
EOF
if [ "$ATLAS_SHARED" = "Y" ]; then
if [ "$ATLAS_THREADS" = "Y" ]; then
echo -e "[atlas]\natlas_libs = tatlas" >> site.cfg
echo -e "lapack_libs = tatlas\nlapack_atlas = tatlas\n" >> site.cfg
else
echo -e "[atlas]\natlas_libs = satlas" >> site.cfg
echo -e "lapack_libs = satlas\nlapack_atlas = satlas\n" >> site.cfg
fi
else
if [ "$ATLAS_THREADS" = "Y" ]; then
echo -e "[atlas]\natlas_libs = ptf77blas,ptcblas,atlas" >> site.cfg
echo -e "lapack_libs = ptlapack\nlapack_atlas = ptlapack\n" >> site.cfg
else
echo -e "[atlas]\natlas_libs = f77blas,cblas,atlas" >> site.cfg
echo -e "lapack_libs = lapack\nlapack_atlas = lapack\n" >> site.cfg
fi
fi
NO_UMFPACK=${NO_UMFPACK:-yes}
case "$NO_UMFPACK" in
[yY]|[yY][eE][sS]) NO_UMFPACK="y" ;;
*) NO_UMFPACK="" ;;
esac
if [ ! "$NO_UMFPACK" ]; then
echo -e "[amd]\nlibrary_dirs = /usr/lib${LIBDIRSUFFIX}" >> site.cfg
echo -e "include_dirs = /usr/include/amd\namd_libs = amd\n" >> site.cfg
echo -e "[umfpack]\nlibrary_dirs = /usr/lib${LIBDIRSUFFIX}" >> site.cfg
echo -e "include_dirs = /usr/include/umfpack\numfpack_libs = umfpack\n" \
>> site.cfg
fi
DEBUG=${DEBUG:-no}