diff --git a/libraries/lapack-atlas/README b/libraries/lapack-atlas/README index 876f7570b3..815d03fcda 100644 --- a/libraries/lapack-atlas/README +++ b/libraries/lapack-atlas/README @@ -2,13 +2,7 @@ LAPACK provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. -This script builds LAPACK against ATLAS. As such it requires ATLAS as installed -by the appropriate SlackBuild. This build conflicts with the lapack.SlackBuild -but you may try to have both installed if you definitely want, see below. - -Do read over README.SLACKWARE *before* building this. - -NOTE: The download link provides a package with lapack-3.3.1 patched against -some of the presently known bugs of the 3.3.1 release. Please consult the -LAPACK-3.3.1 errata file (http://www.netlib.org/lapack/Errata/index2.html) for -more details about the corrected bugs. +This script just installs the LAPACK sources such that the atlas.SlackBuild +can find them (with its default settings) and build a full LAPACK +library linked to its optimized BLAS routines. As such nothing gets +build yet. diff --git a/libraries/lapack-atlas/lapack-atlas.SlackBuild b/libraries/lapack-atlas/lapack-atlas.SlackBuild index 84dadbb007..2af5fb22dd 100644 --- a/libraries/lapack-atlas/lapack-atlas.SlackBuild +++ b/libraries/lapack-atlas/lapack-atlas.SlackBuild @@ -1,289 +1,75 @@ #!/bin/sh -# Slackware script to build the LAPACK libraries against ATLAS. +# Slackware build script to install the LAPACK sources needed for a full +# LAPACK+ATLAS installation -# Written by Serban Udrea -# Includes the code to make dynamic libs from the lapack.SlackBuild by -# Eugene Suter +# Copyright 2010-2016 Serban Udrea +# 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. -# Licence: LICENCE file in the tarball - -PRGNAM=lapack-atlas -VERSION=${VERSION:-3.3.1} +PRGNAM=lapack +VERSION=${VERSION:-3.6.1} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} -SRCNAM=lapack # The source is still that of LAPACK - if [ -z "$ARCH" ]; then case "$( uname -m )" in - i?86) ARCH=i486 ;; + i?86) ARCH=i586 ;; arm*) ARCH=arm ;; - *) ARCH=$( uname -m ) ;; + *) ARCH="$( uname -m )" ;; esac fi -CWD=$(pwd) -TMP=${TMP:-/tmp/SBo} -PKG=$TMP/package-${PRGNAM} -OUTPUT=${OUTPUT:-/tmp} +CWD="$(pwd)" +TMP="${TMP:-/tmp/SBo}" +PKG="$TMP/package-${PRGNAM}-atlas" +OUTPUT="${OUTPUT:-/tmp}" -if [ "$ARCH" = "i486" ]; then - SLKCFLAGS="-O2 -march=i486 -mtune=i686" - LIBDIRSUFFIX="" -elif [ "$ARCH" = "i686" ]; then - SLKCFLAGS="-O2 -march=i686 -mtune=i686" - LIBDIRSUFFIX="" -elif [ "$ARCH" = "x86_64" ]; then - SLKCFLAGS="-O2 -fPIC" - NOOPTFLAGS="-fPIC" - LIBDIRSUFFIX="64" +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH="$( uname -m )" ;; + esac fi -set -e - -# This is the system destination directory. When installing the -# package produced by this script, LAPACK's files will be written to -# $SYS_DESTDIR/lib or $SYS_DESTDIR/lib64 on appropriate platforms, etc. -# Nevertheless, by default the documentation files go to -# /usr/doc/$PRGNAM-$VERSION. You may change this through the variable -# DEFAULT_DOCS, see below. -SYS_DESTDIR=${SYS_DESTDIR:-/usr} - -# Check if SYS_DESTDIR is an absolute path. If not, exit with error. -# NOTE: The $ is used because echo adds a \n at the end of the string. -echo "$SYS_DESTDIR" | grep -vE '/\.\./|/\.\.$' | grep -qE '^/' || \ -{ echo "ERROR: The system destination directory has no absolute path!" \ -&& echo " The value of SYS_DESTDIR is $SYS_DESTDIR" \ -&& echo " Please set it properly! " \ -&& exit 1; } - -# You may want to have the documentation files installed under -# $SYS_DESTDIR/doc/$PRGNAM-$VERSION not /usr/doc/$PRGNAM-$VERSION. -# To achieve this just set the following variable to something like -# "no". -DEFAULT_DOCS=${DEFAULT_DOCS:-yes} -DEFAULT_DOCS=$(echo "$DEFAULT_DOCS"|cut -b 1|tr a-z A-Z) # Make Y or N out of yes, Yes, No, no, etc. -if [ "$DEFAULT_DOCS" = "Y" ]; then - DOC_DIR="$PKG/usr/doc/${PRGNAM}-$VERSION" -else - DOC_DIR="$PKG$SYS_DESTDIR/doc/${PRGNAM}-$VERSION" -fi - -rm -rf $PKG -mkdir -p $TMP $PKG $OUTPUT -cd $TMP -rm -rf $SRCNAM-$VERSION -tar xvf $CWD/$SRCNAM-$VERSION.tgz -cd $SRCNAM-$VERSION - +set -e +DEST_DIR="usr/share/lapack-atlas" +DOC_DIR="usr/doc/lapack-atlas" +rm -rf "$PKG" +mkdir -p "$TMP" "$PKG" "$OUTPUT" +cd "$TMP" +rm -rf "$PRGNAM-$VERSION" +mkdir -p "${PKG}/${DEST_DIR}" "${PKG}/${DOC_DIR}" +install -m644 "$CWD/README" "$CWD/lapack-atlas.SlackBuild" "${PKG}/${DOC_DIR}" +cp -ua "$CWD/${PRGNAM}-${VERSION}.tgz" "${PKG}/${DEST_DIR}" +cd "${PKG}/${DEST_DIR}" +ln -s "${PRGNAM}-${VERSION}.tgz" lapack.tgz +cd "$PKG" 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 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ - -exec chmod 644 {} \; - -# Within Makefile it is asumed that lapack_testing.py is executable. -# This is not the case, thus if TEST_LAPACK is enabled, make fails. -chmod 755 ./lapack_testing.py - -# If you say "no" here, the script will NOT try to link LAPACK against -# the multi-threaded ATLAS libraries. If you leave it to "yes" and the -# multi-threaded ATLAS libraries are not available, the script will default -# to linking against the single threaded ones and raise a warning. -USE_ATLAS_PT_LIBS="${USE_ATLAS_PT_LIBS:-yes}" -USE_ATLAS_PT_LIBS=$(echo "$USE_ATLAS_PT_LIBS"|cut -b 1|tr a-z A-Z) # Make Y or N out of yes, Yes, No, no, etc. - -# Change the following to yes if you would like to run the tests for LAPACK. -TEST_LAPACK="${TEST_LAPACK:-no}" -# Make Y or N out of yes, Yes, No, no, etc. -TEST_LAPACK=$(echo "$TEST_LAPACK"|cut -b 1|tr a-z A-Z) - -# Search for the latest installed atlas package -# (not necessarily the one with the latest version). -# For this to work the system clock should also work properly. -# NOTE: The echo statement below is for getting around "set -e" this time. -ATLAS_PKG="$(ls -1 -dc /var/log/packages/atlas* 2>/dev/null | \ - head -n 1 || echo -n)" - -# Check if an atlas package was found. Exit if not! -[ ! "$ATLAS_PKG" ] && \ -echo "ERROR: Couldn't find the ATLAS package." && exit 1 - -# Pick up the SETTINGS file containing the appropriate flags, use again the -# echo trick against "set -e". You may also provide your own path to a file -# containing apropriate settings, see the README for details -ATLAS_SETTINGS_FILE=${ATLAS_SETTINGS_FILE:-"/$(grep SETTINGS "$ATLAS_PKG" || echo -n)"} - -[ "${ATLAS_SETTINGS_FILE}1" = "/1" ] && \ -echo "ERROR: No location available for the file with ATLAS settings." && exit 1 - -# Check that we deal with a regular file which is readable -[ -f "$ATLAS_SETTINGS_FILE" -a -r "$ATLAS_SETTINGS_FILE" ] || \ -{ echo "ERROR: $ATLAS_SETTINGS_FILE is not a regular file or is not readable by us." && exit 1; } - -# Source the atlas settings. -. "$ATLAS_SETTINGS_FILE" - -# Check for the presence of variables provided by the ATLAS_SETTINGS_FILE -{ [ "$ATLAS_COMPILER" ] && \ - [ "$ATLAS_F77FLAGS" ] && \ - [ "$ATLAS_NOOPT" ]; } || -{ echo "ERROR: Improper ATLAS settings; empty or undefined variables." && exit 1; } - -# This is the timer to be used for LAPACK. If you stay with gfortran, -# presently the default compiler on Slackware, you can leave the value as is. -# Otherwise, please read LAPACK's make.inc for more informations. -LAPACK_TIMER="${LAPACK_TIMER:-INT_ETIME}" - -# Looking for the libraries provided by ATLAS. If one asks for threaded -# libraries and these are available we will try to link against them. -if [ "$USE_ATLAS_PT_LIBS" = "Y" ]; then - # Set proper library names for the threaded ATLAS libs. - ATLAS_BLASLIB="libptf77blas.a" - ATLAS_CBLASLIB="libptcblas.a" - # Find out the full paths to the ATLAS libraries - ATLAS_BLASLIB_P="/$(grep "$ATLAS_BLASLIB" "$ATLAS_PKG" || echo -n)" - # We need this to finally link against the mixed LAPACK library, resulting - # from the full LAPACK and the optimized LAPACK routines provided by ATLAS. - ATLAS_CBLASLIB_P="/$(grep "$ATLAS_CBLASLIB" "$ATLAS_PKG" || echo -n)" - if [ "${ATLAS_BLASLIB_P}1" = "/1" -o "${ATLAS_CBLASLIB_P}1" = "/1" ]; then - # Oops! The threaded libraries are not available! - echo "" - echo "WARNING: No threaded ATLAS libraries available!" - echo "WARNING: Linking against non-threaded libraries!" - echo "" - ATLAS_BLASLIB="libf77blas.a" - ATLAS_CBLASLIB="libcblas.a" - USE_ATLAS_PT_LIBS="N" - fi -else - # Set proper library names for the unthreaded ATLAS libs. - ATLAS_BLASLIB="libf77blas.a" - ATLAS_CBLASLIB="libcblas.a" -fi - -# Find out the full paths to the ATLAS libraries -ATLAS_BLASLIB="/$(grep "$ATLAS_BLASLIB" "$ATLAS_PKG" || echo -n)" -ATLAS_CBLASLIB="/$(grep "$ATLAS_CBLASLIB" "$ATLAS_PKG" || echo -n)" -ATLAS_EXTRA_LIB="/$(grep libatlas.a "$ATLAS_PKG" || echo -n)" -ATLAS_LAPACK="/$(grep liblapack.a "$ATLAS_PKG" || echo -n)" - -# Check that we got what we expected -{ [ "${ATLAS_BLASLIB}1" = "/1" ] || \ - [ "${ATLAS_CBLASLIB}1" = "/1" ] || \ - [ "${ATLAS_EXTRA_LIB}1" = "/1" ] || \ - [ "${ATLAS_LAPACK}1" = "/1" ]; } && \ -{ echo "ERROR: ATLAS libraries missing from the Slackware ATLAS package log." && exit 1; } - -# Check that the library files are there. -# NOTE: After the installation of this package, the incomplete LAPACK library -# installed by ATLAS gets substituted by the complete one provided by us -[ -f "$ATLAS_BLASLIB" -a -r "$ATLAS_BLASLIB" ] || \ -{ echo "ERROR: $ATLAS_BLASLIB is not a regular file or is not readable by us." && exit 1; } - -[ -f "$ATLAS_CBLASLIB" -a -r "$ATLAS_CBLASLIB" ] || \ -{ echo "ERROR: $ATLAS_CBLASLIB is not a regular file or is not readable by us." && exit 1; } - -[ -f "$ATLAS_EXTRA_LIB" -a -r "$ATLAS_EXTRA_LIB" ] || \ -{ echo "ERROR: $ATLAS_EXTRA_LIB is not a regular file or is not readable by us." && exit 1; } - -[ -f "$ATLAS_LAPACK" -a -r "$ATLAS_LAPACK" ] || \ -{ echo "ERROR: $ATLAS_LAPACK is not a regular file or is not readable by us." && exit 1; } - -ATLAS_LIBS="${ATLAS_BLASLIB} ${ATLAS_EXTRA_LIB}" - -# Copy the pre-configured make.inc file but edit it accordingly -sed $CWD/make.inc.atlas \ - -e s%XXX_FORTRAN_XXX%"$ATLAS_COMPILER"% \ - -e s%XXX_TIMER_XXX%"$LAPACK_TIMER"% \ - -e s%XXX_BLASLIB_XXX%"$ATLAS_LIBS"% > \ - make.inc - -# Set the compilation flags. -LAPACK_OPTS="$ATLAS_F77FLAGS $NOOPTFLAGS" -LAPACK_NOOPT="$ATLAS_NOOPT $NOOPTFLAGS" - -# Build objects and static library files -make cleanlib -make OPTS="$LAPACK_OPTS" NOOPT="$LAPACK_NOOPT" lapacklib - -# Merge the ATLAS incomplete LAPACK library with the -# just built full LAPACK. -mkdir -p merging_dir -( cd merging_dir - ar x "$ATLAS_LAPACK" - ar r "../lib${SRCNAM}.a" *.o -) -rm -rf merging_dir - -if [ "$TEST_LAPACK" = "Y" ]; then - # We want to test LAPACK, thus we have to build tmglib and then run the tests - make OPTS="$LAPACK_OPTS" NOOPT="$LAPACK_NOOPT" tmglib - - # Update make.inc taking into account that the LAPACK library has - # been merged with the optimized LAPACK routines provided by ATLAS. - ATLAS_LIBS="${ATLAS_BLASLIB} ${ATLAS_CBLASLIB} ${ATLAS_EXTRA_LIB}" - - if [ "$USE_ATLAS_PT_LIBS" = "Y" ]; then - # Add the threads library - ATLAS_LIBS=${ATLAS_LIBS}" -lpthread" - fi - - cat "$CWD/make.inc.atlas" | \ - sed -e s%XXX_FORTRAN_XXX%"$ATLAS_COMPILER"% \ - -e s%XXX_TIMER_XXX%"$LAPACK_TIMER"% \ - -e s%XXX_BLASLIB_XXX%"$ATLAS_LIBS"% > \ - make.inc - - make OPTS="$LAPACK_OPTS" NOOPT="$LAPACK_NOOPT" lapack_testing - - # Put the test results together - TEST_OUTPUT="TEST.RESULTS.tgz" - tar czf "$TEST_OUTPUT" TESTING/*.out -fi - -#LAPACK only. -( mkdir "shared_$SRCNAM" - cd "shared_$SRCNAM" - ar -x "../lib$SRCNAM.a" - gcc -fPIC -lgfortran -shared *.o -Wl,-soname,"$SRCNAM.so.$VERSION" \ - -o "lib$SRCNAM.so.$VERSION" -) - -mkdir -p "$PKG$SYS_DESTDIR/lib${LIBDIRSUFFIX}" -cp "lib$SRCNAM.a" "$PKG$SYS_DESTDIR/lib${LIBDIRSUFFIX}" -cp "shared_$SRCNAM/lib$SRCNAM.so.$VERSION" "$PKG$SYS_DESTDIR/lib${LIBDIRSUFFIX}" -( cd "$PKG$SYS_DESTDIR/lib${LIBDIRSUFFIX}" - chmod 755 "lib$SRCNAM.so.$VERSION" - ln -s "lib$SRCNAM.so.$VERSION" "lib$SRCNAM.so" -) - -find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | \ - grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true - -mkdir -p "$DOC_DIR" -cat "$CWD/${PRGNAM}.SlackBuild" > "$DOC_DIR/${PRGNAM}.SlackBuild" -cat README > "$DOC_DIR/README" -cat "$CWD/README.SLACKWARE" > "$DOC_DIR/README.SLACKWARE" -cat LICENSE > "$DOC_DIR/LICENSE" - -# If the tests have been performed, also copy the results to the doc directory. -if [ -f "$TEST_OUTPUT" ]; then - cp -p "$TEST_OUTPUT" "$DOC_DIR" -fi - -# Signal that lapack got compiled against atlas -# echo "Y" > "$DOC_DIR/WITH_ATLAS" - -if [ "$USE_ATLAS_PT_LIBS" = "Y" ]; then - # Signal that lapack got compiled with thread support - echo "$USE_ATLAS_PT_LIBS" > "$DOC_DIR/WITH_THREADS" -fi + \( -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 {} \; mkdir -p "$PKG/install" -cat $CWD/slack-desc > $PKG/install/slack-desc - -cd "$PKG" -/sbin/makepkg -l y -c n $OUTPUT/${PRGNAM}-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} +cat "$CWD/slack-desc" > "$PKG/install/slack-desc" +/sbin/makepkg -l y -c n "$OUTPUT/$PRGNAM-atlas-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}" diff --git a/libraries/lapack-atlas/lapack-atlas.info b/libraries/lapack-atlas/lapack-atlas.info index 03cd00c240..e064f9150d 100644 --- a/libraries/lapack-atlas/lapack-atlas.info +++ b/libraries/lapack-atlas/lapack-atlas.info @@ -1,10 +1,10 @@ PRGNAM="lapack-atlas" -VERSION="3.3.1" +VERSION="3.6.1" HOMEPAGE="http://www.netlib.org/lapack/" -DOWNLOAD="http://skmail.ikp.physik.tu-darmstadt.de/lapack/lapack-3.3.1.tgz" -MD5SUM="cb0790c96c72752e3f292bf85a7fbef0" +DOWNLOAD="http://www.netlib.org/lapack/lapack-3.6.1.tgz" +MD5SUM="421b2cb72e15f237e144428f9c460ee0" DOWNLOAD_x86_64="" MD5SUM_x86_64="" -REQUIRES="atlas" +REQUIRES="" MAINTAINER="Serban Udrea" EMAIL="S.Udrea@gsi.de" diff --git a/libraries/lapack-atlas/slack-desc b/libraries/lapack-atlas/slack-desc index 8e65b6fe49..3a02105141 100644 --- a/libraries/lapack-atlas/slack-desc +++ b/libraries/lapack-atlas/slack-desc @@ -6,14 +6,14 @@ # customary to leave one space after the ':' except on otherwise blank lines. |-----handy-ruler------------------------------------------------------| -lapack-atlas: LAPACK-ATLAS (LAPACK customized for build against ATLAS) +lapack-atlas: LAPACK-ATLAS (LAPACK sources for build against ATLAS) lapack-atlas: lapack-atlas: LAPACK provides routines for solving systems of simultaneous linear lapack-atlas: equations, least-squares solutions of linear systems of equations, -lapack-atlas: eigenvalue problems, and singular value problems. The associated matrix -lapack-atlas: factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are -lapack-atlas: also provided, as are related computations such as reordering of the -lapack-atlas: Schur factorizations and estimating condition numbers. Dense and banded -lapack-atlas: matrices are handled, but not general sparse matrices. In all areas, -lapack-atlas: similar functionality is provided for real and complex matrices, in -lapack-atlas: both single and double precision. +lapack-atlas: eigenvalue problems, and singular value problems. The associated +lapack-atlas: matrix factorizations (LU, Cholesky, QR, SVD, Schur, generalized +lapack-atlas: Schur) are also provided, as are related computations such as +lapack-atlas: reordering of the Schur factorizations and estimating condition +lapack-atlas: numbers. Dense and banded matrices are handled, but not general sparse +lapack-atlas: matrices. In all areas, similar functionality is provided for real and +lapack-atlas: complex matrices, in both single and double precision.