aboutsummaryrefslogtreecommitdiff
path: root/libraries/lapack-atlas/lapack-atlas.SlackBuild
diff options
context:
space:
mode:
authorSerban Udrea <S.Udrea@gsi.de>2016-08-26 07:48:28 +0700
committerDavid Spencer <idlemoor@slackbuilds.org>2016-08-28 00:22:40 +0100
commit78609d74237f107971b576f054bff16fccb82024 (patch)
treeeb9b6953068c30c7c74386291a7e5a50bec793e3 /libraries/lapack-atlas/lapack-atlas.SlackBuild
parent2917ce175f25b822d872c38a08c41f558b59260b (diff)
libraries/lapack-atlas: Updated for version 3.6.1.
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'libraries/lapack-atlas/lapack-atlas.SlackBuild')
-rw-r--r--libraries/lapack-atlas/lapack-atlas.SlackBuild328
1 files changed, 57 insertions, 271 deletions
diff --git a/libraries/lapack-atlas/lapack-atlas.SlackBuild b/libraries/lapack-atlas/lapack-atlas.SlackBuild
index 84dadbb007024..2af5fb22dd03b 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.
-
-# Written by Serban Udrea <s.udrea@gsi.de>
-# Includes the code to make dynamic libs from the lapack.SlackBuild by
-# Eugene Suter <easuter@gmail.com>
-
-# Licence: LICENCE file in the tarball
-
-PRGNAM=lapack-atlas
-VERSION=${VERSION:-3.3.1}
+# Slackware build script to install the LAPACK sources needed for a full
+# LAPACK+ATLAS installation
+
+# Copyright 2010-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.
+
+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}
-
-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"
-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}
+CWD="$(pwd)"
+TMP="${TMP:-/tmp/SBo}"
+PKG="$TMP/package-${PRGNAM}-atlas"
+OUTPUT="${OUTPUT:-/tmp}"
-# 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"
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH="$( uname -m )" ;;
+ esac
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}"