commit: 634f8d92dc88baf041f835d16d51aadeba3912f0
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Sun May 3 18:59:09 2020 +0000
Commit: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
CommitDate: Wed May 6 23:35:55 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=634f8d92
sci-libs/slicot: new package
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
sci-libs/slicot/Manifest | 1 +
sci-libs/slicot/files/Makefile | 26 +++++++++++++
sci-libs/slicot/metadata.xml | 30 +++++++++++++++
sci-libs/slicot/slicot-5.0_p20101122.ebuild | 57 +++++++++++++++++++++++++++++
4 files changed, 114 insertions(+)
diff --git a/sci-libs/slicot/Manifest b/sci-libs/slicot/Manifest
new file mode 100644
index 0000000..ac5de03
--- /dev/null
+++ b/sci-libs/slicot/Manifest
@@ -0,0 +1 @@
+DIST slicot_5.0+20101122.orig.tar.gz 2489463 BLAKE2B
dc34617f84b51f6be9bb471b30dd8d7cf3dd67b1a0d6ec14af33ccd49aee33ee39b657af6d619059da42734d86eb23e0faf7827db36152001263c4c131234aad
SHA512
bef2707bf484636a5c58325561e3f342f08887458020c4922a2b346b88047b48e3f2d372c5c984226856be5c327f2535c32cf299baa553b8bf0fbeea896d6c9b
diff --git a/sci-libs/slicot/files/Makefile b/sci-libs/slicot/files/Makefile
new file mode 100755
index 0000000..f15cc08
--- /dev/null
+++ b/sci-libs/slicot/files/Makefile
@@ -0,0 +1,26 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+.PHONY: default
+default: libslicot.so
+
+SLICOT_SRC=$(sort $(shell echo src/*.f))
+SLICOT_OBJ=$(SLICOT_SRC:.f=.o)
+
+shared_dir:
+ mkdir -p $(subst _dir,,$(@))
+ touch $@
+
+$(subst src/,shared/,$(SLICOT_OBJ)): \
+ shared/%.o : src/%.f shared_dir
+
+ $(F77) $(FFLAGS) -fPIC -c $< -o $@
+
+libslicot.so: libslicot.so.$(SO)
+ ln -snf $< $@
+
+libslicot.so.$(SO): libslicot.so.$(VERS)
+ ln -snf $< $@
+
+libslicot.so.$(VERS): $(subst src/,shared/,$(SLICOT_OBJ))
+ $(F77) -fPIC ${FFLAGS} $(LDFLAGS) -shared
-Wl,-soname=libslicot.so.$(SO) -o $@ $^
diff --git a/sci-libs/slicot/metadata.xml b/sci-libs/slicot/metadata.xml
new file mode 100644
index 0000000..4aaef1d
--- /dev/null
+++ b/sci-libs/slicot/metadata.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>[email protected]</email>
+ <name>Alessandro Barbieri</name>
+ </maintainer>
+ <upstream>
+ <bugs-to>mailto:[email protected]</bugs-to>
+ <maintainer>
+ <email>[email protected]</email>
+ <name>Vasile Sima</name>
+ </maintainer>
+ </upstream>
+ <longdescription lang="en">
+The subroutine library SLICOT provides Fortran 77 implementations of numerical
algorithms for computations in systems and control theory. Based on numerical
linear algebra routines from BLAS and LAPACK libraries, SLICOT provides methods
for the design and analysis of control systems. The basic ideas behind the
library are:
+
+ usefulness of algorithms;
+ robustness, algorithms must either return reliable results or an error or
warning indicator;
+ numerical stability and accuracy: the results are as good as can be
expected when working at a given precision. If possible an estimate of the
achieved accuracy should be given;
+ performance with respect to speed and memory requirements. Although
important because of ever increasing complexity of control problems, this
objective may never be met at cost of the two previous ones;
+ portability and reusability: the library should be independent of
platforms;
+ standardisation: the library is based on rigorous programming and
documentation standards;
+ benchmarking, i.e., a standardised set of examples that allows an
evaluation of the performance of a method as well as the implementation with
respect to correctness, accuracy, and speed. Benchmarking gives also insight in
the behaviour of the method and its implementation in extreme situations, i.e.,
for problems where the limit of the possible accuracy is reached.
+
+The current version of SLICOT consists of over 570 user-callable and
computational routines in various domains of systems and control. Almost all of
these routines have associated on-line documentation. Over 240 routines have
associated example programs, data and results. New routines are still in
preparation. Due to the use of Fortran 77, reusability of the software is
obtained, so SLICOT can serve as the core for various existing and future CACSD
platforms and production quality software. SLICOT routines can be linked to
MATLAB through a gateway compiler, e.g., the NAG Gateway Generator. Recently,
MATLAB or Scilab interfaces have been developed for many routines.
+
+The use of Fortran 77 allows to exploit the structural features of the
underlying computational problem and the use of appropriate data structures.
This is advantageous for speed of computation and required memory. As the
complexity of systems and related control solutions is ever increasing, the
issue of speed and memory remains a valid one. The performance of the library
has been assessed with respect to numerical quality, computational speed, and
memory requirements for a variety of examples. Comparisons indicate that SLICOT
routines usually outperform equivalent MATLAB functions, often by orders of
magnitude; see Benner e.a. (1997).
+ </longdescription>
+</pkgmetadata>
diff --git a/sci-libs/slicot/slicot-5.0_p20101122.ebuild
b/sci-libs/slicot/slicot-5.0_p20101122.ebuild
new file mode 100644
index 0000000..2146050
--- /dev/null
+++ b/sci-libs/slicot/slicot-5.0_p20101122.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit flag-o-matic fortran-2 toolchain-funcs
+
+MY_PV="${PV/_p/+}"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="Subroutine Library in Systems and Control Theory"
+HOMEPAGE="https://web.archive.org/web/20191022092917/http://www.slicot.org"
+SRC_URI="http://cdn-fastly.deb.debian.org/debian/pool/main/s/${PN}/${PN}_${MY_PV}.orig.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64"
+
+IUSE="doc examples"
+
+DEPEND="
+ virtual/blas
+ virtual/lapack
+"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${MY_P}"
+
+src_unpack() {
+ default
+ rm -f "${S}/makefile" || die
+ cp "${FILESDIR}/Makefile" "${S}" || die
+}
+
+src_prepare() {
+ export SO="0"
+ export VERS="${SO}.0"
+ append-fflags "$($(tc-getPKG_CONFIG) --libs blas)"
"$($(tc-getPKG_CONFIG) --libs lapack)"
+ default
+}
+
+src_install() {
+ dolib.so libslicot.so
+ dolib.so "libslicot.so.${SO}"
+ dolib.so "libslicot.so.${VERS}"
+ use doc && HTML_DOCS=( libindex.html )
+ use doc && HTML_DOCS+=( doc/*.html )
+ einstalldocs
+ if use examples; then
+ insinto "/usr/share/${P}/examples"
+ doins -r examples/.
+ insinto "/usr/share/${P}/examples77"
+ doins -r examples77/.
+ insinto "/usr/share/${P}/benchmark_data"
+ doins -r benchmark_data/.
+ fi
+}