From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 6244F1392EF for ; Wed, 12 Mar 2014 08:34:34 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id BFA18E09C5; Wed, 12 Mar 2014 08:34:33 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 3F2E9E09C5 for ; Wed, 12 Mar 2014 08:34:33 +0000 (UTC) Received: from spoonbill.gentoo.org (spoonbill.gentoo.org [81.93.255.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 12D0533FB95 for ; Wed, 12 Mar 2014 08:34:32 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by spoonbill.gentoo.org (Postfix) with ESMTP id 029FB183B3 for ; Wed, 12 Mar 2014 08:34:30 +0000 (UTC) From: "Tiziano Müller" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Tiziano Müller" Message-ID: <1394613224.498456b8fc37e7cfd0c5b8f7755df16fb2442cf0.dev-zero@gentoo> Subject: [gentoo-commits] dev/dev-zero:master commit in: sci-libs/itl/, sci-libs/ietl/, sci-libs/mtl/files/, sci-libs/mtl/, ... X-VCS-Repository: dev/dev-zero X-VCS-Files: sci-libs/ietl/Manifest sci-libs/ietl/files/ietl-2.2-fix-includes-et-al.patch sci-libs/ietl/files/ietl-2.2-respect-destdir.patch sci-libs/ietl/ietl-2.2.ebuild sci-libs/itl/Manifest sci-libs/itl/files/itl-4.0.0_p1-Autoconf-automake-fixes.patch sci-libs/itl/files/itl-4.0.0_p1-ILU-Cholesky-SSOR-Preconditioner-produce-wrong-decom.patch sci-libs/itl/files/itl-4.0.0_p1-Some-changes-for-stricter-compilers-like-gcc-4.0.patch sci-libs/itl/files/itl-4.0.0_p1-linalg_traits-of-std-vector.patch sci-libs/itl/files/itl-4.0.0_p1-more-modern-c-fixes.patch sci-libs/itl/itl-4.0.0_p1.ebuild sci-libs/mtl/Manifest sci-libs/mtl/files/mtl-2.1.2_p23-add-missing-typedef.patch sci-libs/mtl/files/mtl-2.1.2_p23-fix-includes-et-al.patch sci-libs/mtl/files/mtl-2.1.2_p23-fix-tests.patch sci-libs/mtl/mtl-2.1.2_p23.ebuild X-VCS-Directories: sci-libs/itl/ sci-libs/ietl/ sci-libs/mtl/files/ sci-libs/mtl/ sci-libs/itl/files/ sci-libs/ietl/files/ X-VCS-Committer: dev-zero X-VCS-Committer-Name: Tiziano Müller X-VCS-Revision: 498456b8fc37e7cfd0c5b8f7755df16fb2442cf0 X-VCS-Branch: master Date: Wed, 12 Mar 2014 08:34:30 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: b37f11d5-8858-4f67-a964-d488031d9992 X-Archives-Hash: 3bd6cb7d4ae7e12c3eccd8674d3c67da commit: 498456b8fc37e7cfd0c5b8f7755df16fb2442cf0 Author: Tiziano Müller gentoo org> AuthorDate: Wed Mar 12 08:33:44 2014 +0000 Commit: Tiziano Müller gentoo org> CommitDate: Wed Mar 12 08:33:44 2014 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=dev/dev-zero.git;a=commit;h=498456b8 Initial commit of some scientific libs --- sci-libs/ietl/Manifest | 4 + .../ietl/files/ietl-2.2-fix-includes-et-al.patch | 42 +++ sci-libs/ietl/files/ietl-2.2-respect-destdir.patch | 150 ++++++++++ sci-libs/ietl/ietl-2.2.ebuild | 41 +++ sci-libs/itl/Manifest | 7 + .../itl-4.0.0_p1-Autoconf-automake-fixes.patch | 220 ++++++++++++++ ...y-SSOR-Preconditioner-produce-wrong-decom.patch | 310 +++++++++++++++++++ ...anges-for-stricter-compilers-like-gcc-4.0.patch | 98 ++++++ .../itl-4.0.0_p1-linalg_traits-of-std-vector.patch | 60 ++++ .../files/itl-4.0.0_p1-more-modern-c-fixes.patch | 328 +++++++++++++++++++++ sci-libs/itl/itl-4.0.0_p1.ebuild | 63 ++++ sci-libs/mtl/Manifest | 5 + .../files/mtl-2.1.2_p23-add-missing-typedef.patch | 24 ++ .../files/mtl-2.1.2_p23-fix-includes-et-al.patch | 54 ++++ sci-libs/mtl/files/mtl-2.1.2_p23-fix-tests.patch | 89 ++++++ sci-libs/mtl/mtl-2.1.2_p23.ebuild | 51 ++++ 16 files changed, 1546 insertions(+) diff --git a/sci-libs/ietl/Manifest b/sci-libs/ietl/Manifest new file mode 100644 index 0000000..9bb8e6a --- /dev/null +++ b/sci-libs/ietl/Manifest @@ -0,0 +1,4 @@ +AUX ietl-2.2-fix-includes-et-al.patch 1146 SHA256 5c9d98990fbd9693775deec645c07ed146788c762949ffc6e588757018d30e19 SHA512 8eb2d778d7596eb37b1540836314d343f0abda9a99391539b0c5b31e28bc033114d6cb8578b37db92e9d8da53280a21c22dfb8b0ce4a5c835aa5bc8660384ae3 WHIRLPOOL 4c5a10b76df2a7eec86bdfb3c884750cdd19373a1ba35bc25284137a6eb4d54978d5efe73e774e4c7ce9c77dc4efde8be869e7c5d711d870518073aa6b525309 +AUX ietl-2.2-respect-destdir.patch 6334 SHA256 f22da459712ead063c610687cf42b44b1ccc2dbaab5bca630927d9406a66073f SHA512 441b599d8da1ab5612dd8bd4c73fb1329135c5df7ed74d4d6cf0767bb716224de9f20ef86d53d3596838df36253ac029ceb242bb24f2c6f551b83bcd425c8deb WHIRLPOOL 1fd32373c09a2044d66157aa5429af5c18b67334769c8607859dcf993efeec2c2b98de8df71e0b15418ccc2013ca9a0d884b849f6afcf7078e260e631cd64cad +DIST ietl-2.2.tar.gz 85373 SHA256 a361fc113243718f2087cb417d9b631437dc9c82d778f35aaa1d11ed872f58dd SHA512 799d2c70f3a44224b32f8376e743d70a24e64f7c1ec10c3ef599b318f27ceb1c27f65ccea2dc143a1ec6812ff426bd6ddd07c4ea87dab94a1afc692ec6b6a280 WHIRLPOOL 516740aa324cbec084e46bcb27d318a80e34b316b4ccc1ff542a68fa72f250a87dd82f4c3f9d101c3b336104acc84d3208d0ea2dc3cdb30ff3d46f196aafa888 +EBUILD ietl-2.2.ebuild 879 SHA256 c0419bf7388b474e8c11a24d3416e58dbca82b5586b5ef1a0a6fe1463a77ca0c SHA512 c8631c5cff24176ea525843c95e389722858b14f82dc38248e5eaaa9280289e954fbeb2cbcdfd749cddac802661cba79b742697b93a6205a1c147a4f8160a955 WHIRLPOOL 40ec949957b4c261d95459ad84241d77bd0c71a5065f762732ab6a67637b3c4d4880d145c38603444c0548a08823da77e831635f0bbe8593fa1d20e65b134a63 diff --git a/sci-libs/ietl/files/ietl-2.2-fix-includes-et-al.patch b/sci-libs/ietl/files/ietl-2.2-fix-includes-et-al.patch new file mode 100644 index 0000000..27907a9 --- /dev/null +++ b/sci-libs/ietl/files/ietl-2.2-fix-includes-et-al.patch @@ -0,0 +1,42 @@ +diff --git a/ietl/lanczos.h b/ietl/lanczos.h +index d650a4d..f1329ed 100644 +--- a/ietl/lanczos.h ++++ b/ietl/lanczos.h +@@ -20,6 +20,7 @@ + #ifndef IETL_LANCZOS_H + #define IETL_LANCZOS_H + ++#include + #include + #include + #include +@@ -331,7 +332,7 @@ private: + + if(super_type::alpha.size() == 0) { + a_and_b = make_first_step(gen_); +- push_back(a_and_b); // member of T-matrix class. ++ this->push_back(a_and_b); // member of T-matrix class. + n=1; + } + +@@ -351,7 +352,7 @@ private: + while(!iter.finished(*this)) { + a_and_b = make_step(n,vec3); + if (n==super_type::alpha.size()) +- push_back(a_and_b); // member of T-matrix class ++ this->push_back(a_and_b); // member of T-matrix class + ++iter; + ++n; + } +diff --git a/ietl/tmatrix.h b/ietl/tmatrix.h +index cb5d94a..0772887 100644 +--- a/ietl/tmatrix.h ++++ b/ietl/tmatrix.h +@@ -21,6 +21,7 @@ + #define IETL_TMATRIX_H + #include + #include ++#include + + namespace ietl { + template diff --git a/sci-libs/ietl/files/ietl-2.2-respect-destdir.patch b/sci-libs/ietl/files/ietl-2.2-respect-destdir.patch new file mode 100644 index 0000000..9a4a195 --- /dev/null +++ b/sci-libs/ietl/files/ietl-2.2-respect-destdir.patch @@ -0,0 +1,150 @@ +diff --git a/config/rules.mk b/config/rules.mk +index f9ed2e2..678c685 100644 +--- a/config/rules.mk ++++ b/config/rules.mk +@@ -90,97 +90,97 @@ $(TEST) : $(LIB) + + install : $(LIB) $(PROGRAM) + @list='$(HEADER_CONFIG) $(HEADER)'; for p in $$list; do \ +- if test -d $(pkgincludedir); then :; else \ +- echo "$(mkinstalldirs) $(pkgincludedir)"; \ +- $(mkinstalldirs) $(pkgincludedir); \ ++ if test -d $(DESTDIR)$(pkgincludedir); then :; else \ ++ echo "$(mkinstalldirs) $(DESTDIR)$(pkgincludedir)"; \ ++ $(mkinstalldirs) $(DESTDIR)$(pkgincludedir); \ + fi; \ + sd=`dirname $$p`; \ + if test "$$sd" != "."; then \ +- if test -d "$(pkgincludedir)/$$sd"; then :; else \ +- echo "$(mkinstalldirs) $(pkgincludedir)/$$sd"; \ +- $(mkinstalldirs) $(pkgincludedir)/$$sd; \ ++ if test -d "$(DESTDIR)$(pkgincludedir)/$$sd"; then :; else \ ++ echo "$(mkinstalldirs) $(DESTDIR)$(pkgincludedir)/$$sd"; \ ++ $(mkinstalldirs) $(DESTDIR)$(pkgincludedir)/$$sd; \ + fi; \ + fi; \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- echo "$(INSTALL_HEADER) $$d$$p $(pkgincludedir)/$$p"; \ +- $(INSTALL_HEADER) $$d$$p $(pkgincludedir)/$$p; \ ++ echo "$(INSTALL_HEADER) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ++ $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ + done + @list='$(LIB)'; for p in $$list; do \ +- if test -d $(libdir); then :; else \ +- echo "$(mkinstalldirs) $(libdir)"; \ +- $(mkinstalldirs) $(libdir); \ ++ if test -d $(DESTDIR)$(libdir); then :; else \ ++ echo "$(mkinstalldirs) $(DESTDIR)$(libdir)"; \ ++ $(mkinstalldirs) $(DESTDIR)$(libdir); \ + fi; \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- echo "$(INSTALL_LIB) $$d$$p $(libdir)/$$p"; \ +- $(INSTALL_LIB) $$d$$p $(libdir)/$$p; \ +- echo "$(RANLIB) $(libdir)/$$p"; \ +- $(RANLIB) $(libdir)/$$p; \ ++ echo "$(INSTALL_LIB) $$d$$p $(DESTDIR)$(libdir)/$$p"; \ ++ $(INSTALL_LIB) $$d$$p $(DESTDIR)$(libdir)/$$p; \ ++ echo "$(RANLIB) $(DESTDIR)$(libdir)/$$p"; \ ++ $(RANLIB) $(DESTDIR)$(libdir)/$$p; \ + done + @list='$(XMLLIB)'; for p in $$list; do \ +- if test -d $(libdir)/xml ; then :; else \ +- echo "$(mkinstalldirs) $(libdir)/xml "; \ +- $(mkinstalldirs) $(libdir)/xml ; \ ++ if test -d $(DESTDIR)$(libdir)/xml ; then :; else \ ++ echo "$(mkinstalldirs) $(DESTDIR)$(libdir)/xml "; \ ++ $(mkinstalldirs) $(DESTDIR)$(libdir)/xml ; \ + fi; \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- echo "$(INSTALL_LIB) $$d$$p $(libdir)/xml/$$p"; \ +- $(INSTALL_LIB) $$d$$p $(libdir)/xml/$$p; \ ++ echo "$(INSTALL_LIB) $$d$$p $(DESTDIR)$(libdir)/xml/$$p"; \ ++ $(INSTALL_LIB) $$d$$p $(DESTDIR)$(libdir)/xml/$$p; \ + done + @list='$(PROGRAM)'; for p in $$list; do \ +- if test -d $(bindir); then :; else \ +- echo "$(mkinstalldirs) $(bindir)"; \ +- $(mkinstalldirs) $(bindir); \ ++ if test -d $(DESTDIR)$(bindir); then :; else \ ++ echo "$(mkinstalldirs) $(DESTDIR)$(bindir)"; \ ++ $(mkinstalldirs) $(DESTDIR)$(bindir); \ + fi; \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- echo "$(INSTALL_PROGRAM) $$d$$p $(bindir)/$$p"; \ +- $(INSTALL_PROGRAM) $$d$$p $(bindir)/$$p; \ ++ echo "$(INSTALL_PROGRAM) $$d$$p $(DESTDIR)$(bindir)/$$p"; \ ++ $(INSTALL_PROGRAM) $$d$$p $(DESTDIR)$(bindir)/$$p; \ + done + @list='$(SCRIPT_CONFIG) $(SCRIPT)'; for p in $$list; do \ +- if test -d $(bindir); then :; else \ +- echo "$(mkinstalldirs) $(bindir)"; \ +- $(mkinstalldirs) $(bindir); \ ++ if test -d $(DESTDIR)$(bindir); then :; else \ ++ echo "$(mkinstalldirs) $(DESTDIR)$(bindir)"; \ ++ $(mkinstalldirs) $(DESTDIR)$(bindir); \ + fi; \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- echo "$(INSTALL_SCRIPT) $$d$$p $(bindir)/$$p"; \ +- $(INSTALL_SCRIPT) $$d$$p $(bindir)/$$p; \ ++ echo "$(INSTALL_SCRIPT) $$d$$p $(DESTDIR)$(bindir)/$$p"; \ ++ $(INSTALL_SCRIPT) $$d$$p $(DESTDIR)$(bindir)/$$p; \ + done + @list='$(DATA_CONFIG) $(DATA)'; for p in $$list; do \ + if test -d $(datadir); then :; else \ +- echo "$(mkinstalldirs) $(datadir)"; \ +- $(mkinstalldirs) $(datadir); \ ++ echo "$(mkinstalldirs) $(DESTDIR)$(datadir)"; \ ++ $(mkinstalldirs) $(DESTDIR)$(datadir); \ + fi; \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- echo "$(INSTALL_DATA) $$d$$p $(datadir)/$$p"; \ +- $(INSTALL_DATA) $$d$$p $(datadir)/$$p; \ ++ echo "$(INSTALL_DATA) $$d$$p $(DESTDIR)$(datadir)/$$p"; \ ++ $(INSTALL_DATA) $$d$$p $(DESTDIR)$(datadir)/$$p; \ + done + @list='$(PKGDATA_CONFIG) $(PKGDATA)'; for p in $$list; do \ +- if test -d $(pkgdatadir); then :; else \ +- echo "$(mkinstalldirs) $(pkgdatadir)"; \ +- $(mkinstalldirs) $(pkgdatadir); \ ++ if test -d $(DESTDIR)$(pkgdatadir); then :; else \ ++ echo "$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)"; \ ++ $(mkinstalldirs) $(DESTDIR)$(pkgdatadir); \ + fi; \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- echo "$(INSTALL_DATA) $$d$$p $(pkgdatadir)/$$p"; \ +- $(INSTALL_DATA) $$d$$p $(pkgdatadir)/$$p; \ ++ echo "$(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgdatadir)/$$p"; \ ++ $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgdatadir)/$$p; \ + done + uninstall : + @list='$(HEADER_CONFIG) $(HEADER)'; for p in $$list; do \ +- echo "rm -f $(pkgincludedir)/$$p"; \ ++ echo "rm -f $(DESTDIR)$(pkgincludedir)/$$p"; \ + rm -f $(pkgincludedir)/$$p; \ + done + @list='$(LIB)'; for p in $$list; do \ +- echo "rm -f $(libdir)/$$p"; \ +- rm -f $(libdir)/$$p; \ ++ echo "rm -f $(DESTDIR)$(libdir)/$$p"; \ ++ rm -f $(DESTDIR)$(libdir)/$$p; \ + done + @list='$(PROGRAM) $(SCRIPT_CONFIG) $(SCRIPT)'; for p in $$list; do \ +- echo "rm -f $(bindir)/$$p"; \ +- rm -f $(bindir)/$$p; \ ++ echo "rm -f $(DESTDIR)$(bindir)/$$p"; \ ++ rm -f $(DESTDIR)$(bindir)/$$p; \ + done + @list='$(DATA_CONFIG) $(DATA)'; for p in $$list; do \ +- echo "rm -f $(datadir)/$$p"; \ +- rm -f $(datadir)/$$p; \ ++ echo "rm -f $(DESTDIR)$(datadir)/$$p"; \ ++ rm -f $(DESTDIR)$(datadir)/$$p; \ + done + @list='$(PKGDATA_CONFIG) $(PKGDATA)'; for p in $$list; do \ +- echo "rm -f $(pkgdatadir)/$$p"; \ +- rm -f $(pkgdatadir)/$$p; \ ++ echo "rm -f $(DESTDIR)$(pkgdatadir)/$$p"; \ ++ rm -f $(DESTDIR)$(pkgdatadir)/$$p; \ + done + + # clean & distclean diff --git a/sci-libs/ietl/ietl-2.2.ebuild b/sci-libs/ietl/ietl-2.2.ebuild new file mode 100644 index 0000000..75ac260 --- /dev/null +++ b/sci-libs/ietl/ietl-2.2.ebuild @@ -0,0 +1,41 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=5 + +inherit eutils + +DESCRIPTION="Iterative Eigensolver Template Library" +HOMEPAGE="http://www.comp-phys.org/software/ietl/" +SRC_URI="http://www.comp-phys.org/software/${PN}/${P}.tar.gz" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64" +IUSE="doc examples" + +DEPEND="dev-libs/boost" +RDEPEND="${DEPEND}" + +# TODO: +# * the package does some detection (blitz++, lapack, atlas) +# ... figure out whether this is in any way important because +# the defines do not get used in the library itself + +src_prepare() { + epatch \ + "${FILESDIR}/${P}-respect-destdir.patch" \ + "${FILESDIR}/${P}-fix-includes-et-al.patch" +} + +src_install() { + default + + use doc && dohtml doc/* + + if use examples ; then + insinto /usr/share/doc/${PF}/examples + doins examples/*.{cpp,h} + fi +} diff --git a/sci-libs/itl/Manifest b/sci-libs/itl/Manifest new file mode 100644 index 0000000..c2fdb17 --- /dev/null +++ b/sci-libs/itl/Manifest @@ -0,0 +1,7 @@ +AUX itl-4.0.0_p1-Autoconf-automake-fixes.patch 5625 SHA256 05d35e068c0fce4715ecf684d3ba0f7370d9abe09766fd3dddb1ce9d36de1c99 SHA512 bcf7191d98b718c17dfaa1d848ddf5c186f70ca4287dd1c8729bc9fe129fd6a9c6d9d19113257712778ac637c79516bccfa1333fa2e9c6ae1541a28a14a8a5cc WHIRLPOOL a2fd4ec6d6a43035ea0e0dd8eb6a120c58c4a0ecc5a813655d3dee28200ec3189bfd5c9da0b9b4a842c5b6e6cfb51060e36007dd2f3fe690b7285bc27b766b46 +AUX itl-4.0.0_p1-ILU-Cholesky-SSOR-Preconditioner-produce-wrong-decom.patch 9635 SHA256 fa2f805aeb70f2834eb1d95a279892cafb31696b04b8e6080e677690005333a3 SHA512 be8c67bad927cda655d3e73e480aedfbeac30385479447fa03162e406efd097ff9c33a4b491727a946d9ee9c7e8e81fe200cb9d9993b5fabd7f1f8dc1f04514f WHIRLPOOL cb1d93a3bd3fe878e8662a51ace4ad26e1ef889b2474cce5cfc1a79712a2a1e21d5ce2e2a456e1ef9096eb364112fb2cf4ccf4cc18fec3e70c762159d3765252 +AUX itl-4.0.0_p1-Some-changes-for-stricter-compilers-like-gcc-4.0.patch 2918 SHA256 c7e99bb8e198fd198f284259e2f7baa71c2d75c531351935456a2fc7e34a79dd SHA512 c647f9745e51bda55d880967a6aa36509a7b1bebdde0bbc53e18e2d5e9e23f9a976c631bc81524f99a586faf89d93ef2dba61004bbe4ed6ca79337ea1b8bfc34 WHIRLPOOL 0ea39d11baead2ce793dac58478f03a01137ef53536805ec95f7473650e4cdf1bb10f6b8868e605d426e9e1ee78c42c0d07f87493af03388971d0481a146f65f +AUX itl-4.0.0_p1-linalg_traits-of-std-vector.patch 1676 SHA256 b866908b1fcc5b1700c555754789abd6c7bfa4cb221df52961de4a4d65564331 SHA512 840f4211c04d7d55a49f7a5f695e901fd2b35b2d64a03c681e8b72c7f291ff582feb0658054795b078cde115a300bd7129b79534626fbd6315940504331125ea WHIRLPOOL 45381c4269613ddaed00f92033766cf219df252f788fd16de4913b442824e7ed67f76a12730f05b22c37dc352afcf3fc767bcb0f7ab3081f4eec84f62e7b9561 +AUX itl-4.0.0_p1-more-modern-c-fixes.patch 10591 SHA256 264f58b8b870d39e65cc762cb580c4b86400abae073f7db7bdb4889267f1cece SHA512 b3e9f78044fd9efe3c6150a293800986b70d98de436d20041ef9bd70147242d3ae1cfa297627152d032291edadaa618f5f9429cbaca640a1b85e96a63591795e WHIRLPOOL bdce0a8d67e8301f2f5003cb48619c9bdb6a45e68c96776dac6353680770227a1099e65ffb4993dad24bfeefb369d829dd32533112fe2b1e926e23dd19714dc2 +DIST itl-4.0.0-1.tar.gz 1265862 SHA256 2f99f3909c1e8ef167a4e0a8e4e13f4feb56dd8e7101b5876bc84ed37ebd5839 SHA512 45f8d231d891f79c66cf835de0b54819b1071b6892092ba1fe0d56c298e86dfa5ad5d14234aff460530ceae7a001ce8ad98820897b418047616a8c7d4ad28f0f WHIRLPOOL 8ac028b33a5ebba1ec0dab4ef7db4b468b359ac5da6d366d330ae150dbf842e5941cd156c808b01fcdf2d2c0045671e3046f622c5ca5594ce23f45a10ca8dd2a +EBUILD itl-4.0.0_p1.ebuild 1541 SHA256 dfca4e157022b448024fed269cf5d7db4c25b20f0af3d299c24a6dcb19ad2d13 SHA512 27542a76fd9b4468b747f3d3eb748d787612c4890814301ccc2357e575bd1fa561ed6f89a36e801b7d1ffdcb8304ca18b76f01c5377f669c50019a73639f4e2a WHIRLPOOL 377da916eb1e89ad07b85179119fc2c016e1639ca20056b15e70c47674936e97e7c73cd1fe053ea4927487d8f343e00cbe4a4ff2bee26dcffc3412b83fab88d6 diff --git a/sci-libs/itl/files/itl-4.0.0_p1-Autoconf-automake-fixes.patch b/sci-libs/itl/files/itl-4.0.0_p1-Autoconf-automake-fixes.patch new file mode 100644 index 0000000..1b62413 --- /dev/null +++ b/sci-libs/itl/files/itl-4.0.0_p1-Autoconf-automake-fixes.patch @@ -0,0 +1,220 @@ +From d92c9081b27c513cad9c41bfc431c16fe552f473 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tiziano=20M=C3=BCller?= +Date: Sat, 7 Dec 2013 10:47:29 +0100 +Subject: [PATCH 5/5] Autoconf/automake fixes + +--- + acinclude.m4 | 69 +++++++++++++++++++++++++----------------------------------- + configure.in | 13 ++++++++---- + 2 files changed, 38 insertions(+), 44 deletions(-) + +diff --git a/acinclude.m4 b/acinclude.m4 +index 21de6f9..a1a68ce 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -1,21 +1,9 @@ + dnl -*- shell-script -*- + + +-AC_DEFUN(AC_ITL_TRY_COMPILE, +-[cat > conftest.cpp < conftest.cc < + +@@ -306,91 +295,91 @@ CXXFLAGS=$SAVE_CXXFLAGS + # + # Several macro for various compilers + # +-AC_DEFUN(AC_PROG_CXX_MWERKS, +-[AC_CACHE_CHECK(whether we are using Metrowerks Codewarrior C++, MWERKS_CXX, ++AC_DEFUN([AC_PROG_CXX_MWERKS], ++[AC_CACHE_CHECK(whether we are using Metrowerks Codewarrior C++, mwerks_cv_cxx, + [cat > conftest.c </dev/null 2>&1; then +- MWERKS_CXX=yes ++ mwerks_cv_cxx=yes + compiler=mwerks + else +- MWERKS_CXX=no ++ mwerks_cv_cxx=no + fi])]) + + +-AC_DEFUN(AC_PROG_CXX_MSVCPP, +-[AC_CACHE_CHECK(whether we are using Visual C++, MSVCPP_CXX, ++AC_DEFUN([AC_PROG_CXX_MSVCPP], ++[AC_CACHE_CHECK(whether we are using Visual C++, msvcpp_cv_cxx, + [cat > conftest.c </dev/null 2>&1; then +- MSVCPP_CXX=yes ++ msvcpp_cv_cxx=yes + compiler=msvcpp + else +- MSVCPP_CXX=no ++ msvcpp_cv_cxx=no + fi])]) + +-AC_DEFUN(AC_PROG_CXX_SGICC, +-[AC_CACHE_CHECK(whether we are using SGI MIPSpro C++, SGI_CXX, ++AC_DEFUN([AC_PROG_CXX_SGICC], ++[AC_CACHE_CHECK(whether we are using SGI MIPSpro C++, sgi_cv_cxx, + [cat > conftest.c </dev/null 2>&1; then +- SGI_CXX=yes ++ sgi_cv_cxx=yes + compiler=sgicc + else +- SGI_CXX=no ++ sgi_cv_cxx=no + fi])]) + + +-AC_DEFUN(AC_PROG_CXX_SUNCC, +-[AC_CACHE_CHECK(whether we are using Sun C++, SUN_CXX, ++AC_DEFUN([AC_PROG_CXX_SUNCC], ++[AC_CACHE_CHECK(whether we are using Sun C++, sun_cv_cxx, + [cat > conftest.c </dev/null 2>&1; then +- SUN_CXX=yes ++ sun_cv_cxx=yes + compiler=suncc + else +- SUN_CXX=no ++ sun_cv_cxx=no + fi])]) + + +-AC_DEFUN(AC_PROG_CXX_INTELCC, +-[AC_CACHE_CHECK(whether we are using Intel C++, INTEL_CXX, ++AC_DEFUN([AC_PROG_CXX_INTELCC], ++[AC_CACHE_CHECK(whether we are using Intel C++, intel_cv_cxx, + [cat > conftest.c </dev/null 2>&1; then +- INTEL_CXX=yes ++ intel_cv_cxx=yes + compiler=intelcc + else +- INTEL_CXX=no ++ intel_cv_cxx=no + fi])]) + +-AC_DEFUN(AC_PROG_CXX_KAICC, +-[AC_CACHE_CHECK(whether we are using KAI C++, KAI_CXX, ++AC_DEFUN([AC_PROG_CXX_KAICC], ++[AC_CACHE_CHECK(whether we are using KAI C++, kai_cv_cxx, + [cat > conftest.c </dev/null 2>&1; then +- KAI_CXX=yes ++ kai_cv_cxx=yes + compiler=kaicc + else +- KAI_CXX=no ++ kai_cv_cxx=no + fi])]) + + +@@ -399,7 +388,7 @@ fi])]) + # Don't know if it is a good idea to overwrite CXXFLAGS + # + +-AC_DEFUN(AC_BZ_SET_COMPILER, ++AC_DEFUN([AC_BZ_SET_COMPILER], + [cxxwith=`echo $1 | sed -e 's/ /@/'` + case "$cxxwith" in + *:*@*) # Full initialization syntax +diff --git a/configure.in b/configure.in +index edbae6e..81b6fc2 100644 +--- a/configure.in ++++ b/configure.in +@@ -4,7 +4,7 @@ dnl Disable caching. + define([AC_CACHE_LOAD], )dnl + define([AC_CACHE_SAVE], )dnl + +-AC_INIT(itl/itl.h) ++AC_INIT([itl], [4.0.0-1], [], [], []) + + AC_CANONICAL_SYSTEM + AC_MSG_RESULT([Configure Iterative Template Library for $target]) +@@ -15,9 +15,8 @@ AC_MSG_RESULT([Configure Iterative Template Library for $target]) + sinclude([VERSION]) + ################################################################ + +-AM_INIT_AUTOMAKE(itl, $ITLVERSION-$ITLRELEASE, 'no') +- +-AM_CONFIG_HEADER(itl/itl_config.h) ++AM_INIT_AUTOMAKE() ++AC_CONFIG_HEADERS([itl/build_config.h itl/itl_config.h]) + + AC_PROG_INSTALL + +@@ -213,6 +212,10 @@ dnl Checks for header files. + + + AC_MSG_CHECKING(for std::abs) ++ ++AH_TEMPLATE([ITL_HAVE_CMATH],[]) ++AH_TEMPLATE([ITL_NO_STD_ABS],[]) ++AH_TEMPLATE([ITL_NO_STD_SQRT],[]) + + AC_ITL_TRY_COMPILE([#include ], + [ double d = std::abs(-3.0); ], +@@ -236,6 +239,8 @@ AC_ITL_TRY_COMPILE([#include ], + + AC_MSG_CHECKING(for header) + ++AH_TEMPLATE([ITL_NO_LIMITS],[]) ++ + AC_ITL_TRY_COMPILE([#include ], + [ double d = std::numeric_limits::max(); ], + [ has_limits=yes +-- +1.8.2.1 + diff --git a/sci-libs/itl/files/itl-4.0.0_p1-ILU-Cholesky-SSOR-Preconditioner-produce-wrong-decom.patch b/sci-libs/itl/files/itl-4.0.0_p1-ILU-Cholesky-SSOR-Preconditioner-produce-wrong-decom.patch new file mode 100644 index 0000000..272355b --- /dev/null +++ b/sci-libs/itl/files/itl-4.0.0_p1-ILU-Cholesky-SSOR-Preconditioner-produce-wrong-decom.patch @@ -0,0 +1,310 @@ +From 3306f5221f87c4b1b5da6d8f4f78c4d875b3ad81 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tiziano=20M=C3=BCller?= +Date: Sat, 7 Dec 2013 09:48:06 +0100 +Subject: [PATCH 1/5] ILU, Cholesky, SSOR Preconditioner produce wrong + decomposition for MTL index_from_one matrices + +--- + itl/preconditioner/cholesky.h | 35 ++++++++++------ + itl/preconditioner/ilu.h | 82 ++++++++++++++++++-------------------- + itl/preconditioner/ssor.h | 92 ++++++++++++++----------------------------- + 3 files changed, 90 insertions(+), 119 deletions(-) + +diff --git a/itl/preconditioner/cholesky.h b/itl/preconditioner/cholesky.h +index 7c57b12..86847b9 100644 +--- a/itl/preconditioner/cholesky.h ++++ b/itl/preconditioner/cholesky.h +@@ -42,16 +42,23 @@ + namespace itl { + + /* VC++ work around for ambiguous function */ +- inline void check_symm(mtl::symmetric_tag) { } +- +- template < class Shape > +- inline void check_symm(Shape) +- { +- std::cout << "Matrix is not symmetric. Abort." << std::endl; +- assert(0); ++ inline void check_symm(mtl::symmetric_tag) { } ++ ++ template < class Shape > ++ inline void check_symm(Shape) ++ { ++ std::cout << "Matrix is not symmetric. Abort." << std::endl; ++ assert(0); ++ } ++ ++ template ++ void index_copy(IterI first, IterI last, IterO out) { ++ while ( first != last ) { ++ *out = first.index(); ++ ++first; + } +- +- ++ } ++ + //: Incomplete Cholesky Preconditioner. + // For use with symmetric matrices. + // +@@ -125,8 +132,9 @@ namespace itl { + int i=A_i.index(); + + std::copy(A_row.begin(), A_row.end(), Tri_val.begin()+Tri_loc); +- std::copy(A_row.nz_struct().begin(), A_row.nz_struct().end(), +- Tri_ind.begin()+Tri_loc); ++ //std::copy(A_row.nz_struct().begin(), A_row.nz_struct().end(), ++ //Tri_ind.begin()+Tri_loc); ++ index_copy(A_row.begin(), A_row.end(), Tri_ind.begin()+Tri_loc); + + Tri_loc += A_row.nnz(); + Tri_ptr[i+1] = Tri_loc; +@@ -184,8 +192,9 @@ namespace itl { + int i=A_i.index(); + + std::copy(A_row.begin(), A_row.end(), Tri_val.begin()+Tri_loc); +- std::copy(A_row.nz_struct().begin(), A_row.nz_struct().end(), +- Tri_ind.begin()+Tri_loc); ++ //std::copy(A_row.nz_struct().begin(), A_row.nz_struct().end(), ++ // Tri_ind.begin()+Tri_loc); ++ index_copy(A_row.begin(), A_row.end(), Tri_ind.begin()+Tri_loc); + + Tri_loc += A_row.nnz(); + Tri_ptr[i+1] = Tri_loc; +diff --git a/itl/preconditioner/ilu.h b/itl/preconditioner/ilu.h +index 96f4a39..d568ccc 100644 +--- a/itl/preconditioner/ilu.h ++++ b/itl/preconditioner/ilu.h +@@ -98,29 +98,27 @@ namespace itl { + + typename Matrix::const_iterator A_i = A_.begin(); + if (mtl::not_at(A_i,A_.end())) do { +- typename Matrix::OneD A_row = *A_i; +- sizeT i = A_i.index(); +- typename Matrix::OneD::IndexArray::const_iterator diag_location = +- std::upper_bound(A_row.nz_struct().begin(), +- A_row.nz_struct().end(), i); +- +- int d = diag_location - A_row.nz_struct().begin(); +- +- std::copy(A_row.begin(), A_row.begin()+d, U_val.begin()+U_loc); +- std::copy(A_row.nz_struct().begin(), A_row.nz_struct().begin()+d, +- U_ind.begin()+U_loc); +- +- U_loc += d; +- U_ptr[i+1] = U_loc; +- +- std::copy(A_row.begin()+d, A_row.end(), L_val.begin()+L_loc); +- std::copy(A_row.nz_struct().begin()+d, A_row.nz_struct().end(), +- L_ind.begin()+L_loc); +- +- L_loc += A_row.nnz() - d; ++ typename Matrix::size_type i = A_i.index(); ++ ++ typename Matrix::OneD::const_iterator A_ij = (*A_i).begin(); ++ if (mtl::not_at(A_ij,(*A_i).end())) do { ++ typename Matrix::size_type j = A_ij.index(); ++ if ( j > i ) { //row > column ++ L_val[L_loc] = *A_ij; ++ L_ind[L_loc] = j; ++ ++L_loc; ++ } else { ++ U_val[U_loc] = *A_ij; ++ U_ind[U_loc] = j; ++ ++U_loc; ++ } ++ ++A_ij; ++ } while (mtl::not_at(A_ij, (*A_i).end())); ++ ++ U_ptr[i+1] = U_loc; + L_ptr[i+1] = L_loc; + +- ++A_i; ++ ++A_i; + } while (mtl::not_at(A_i,A_.end())); + + L_val.resize(L_loc); +@@ -171,33 +169,29 @@ namespace itl { + sizeT L_loc=0, U_loc=0; + L_ptr[0] = 0; + U_ptr[0] = 0; +- + typename Matrix::const_iterator A_i = A_.begin(); + if (mtl::not_at(A_i,A_.end())) do { +- typename Matrix::OneD A_row = *A_i; +- typedef typename Matrix::OneD::IndexArray::value_type IA_T; +- IA_T i = A_i.index(); +- typename Matrix::OneD::IndexArray::const_iterator diag_location = +- std::lower_bound(A_row.nz_struct().begin(), +- A_row.nz_struct().end(), i); +- +- int d = diag_location - A_row.nz_struct().begin(); +- +- std::copy(A_row.begin(), A_row.begin()+d, L_val.begin()+L_loc); +- std::copy(A_row.nz_struct().begin(), A_row.nz_struct().begin()+d, +- L_ind.begin()+L_loc); +- +- L_loc += d; +- L_ptr[i+1] = L_loc; +- +- std::copy(A_row.begin()+d, A_row.end(), U_val.begin()+U_loc); +- std::copy(A_row.nz_struct().begin()+d, A_row.nz_struct().end(), +- U_ind.begin()+U_loc); +- +- U_loc += A_row.nnz() - d; ++ typename Matrix::size_type i = A_i.index(); ++ ++ typename Matrix::OneD::const_iterator A_ij = (*A_i).begin(); ++ if (mtl::not_at(A_ij,(*A_i).end())) do { ++ typename Matrix::size_type j = A_ij.index(); ++ if ( i > j ) { // row > column ++ L_val[L_loc] = *A_ij; ++ L_ind[L_loc] = j; ++ ++L_loc; ++ } else { ++ U_val[U_loc] = *A_ij; ++ U_ind[U_loc] = j; ++ ++U_loc; ++ } ++ ++A_ij; ++ } while (mtl::not_at(A_ij, (*A_i).end())); ++ + U_ptr[i+1] = U_loc; ++ L_ptr[i+1] = L_loc; + +- ++A_i; ++ ++A_i; + } while (mtl::not_at(A_i,A_.end())); + + L_val.resize(L_loc); +diff --git a/itl/preconditioner/ssor.h b/itl/preconditioner/ssor.h +index 8ad9d4e..497ae38 100644 +--- a/itl/preconditioner/ssor.h ++++ b/itl/preconditioner/ssor.h +@@ -123,40 +123,6 @@ namespace itl { + int L_loc=0, U_loc=0; + L_ptr[0] = 0; + U_ptr[0] = 0; +-#if 1 +- typename Matrix::const_iterator A_i = A.begin(); +- if (mtl::not_at(A_i,A.end())) do { +- typename Matrix::OneD A_row = *A_i; +- typedef typename Matrix::OneD::IndexArray::value_type IA_T; +- IA_T i=A_i.index(); +- typename Matrix::OneD::IndexArray::const_iterator +- diag_location = +- upper_bound(A_row.nz_struct().begin(), A_row.nz_struct().end(), i); +- +- int d = diag_location - A_row.nz_struct().begin(); +- +- std::copy(A_row.begin(), A_row.begin()+d, L_val.begin()+L_loc); +- std::copy(A_row.nz_struct().begin(), A_row.nz_struct().begin()+d, +- L_ind.begin()+L_loc); +- +- L_loc += d; +- L_ptr[i+1] = L_loc; +- +- T A_ii = *(A_row.begin()+d-1); +- A_ii = T(1)/A_ii; +- +- transform(A_row.begin()+d, A_row.end(), U_val.begin()+U_loc, +- bind2nd(multiplies(), A_ii)); +- +- std::copy(A_row.nz_struct().begin()+d, A_row.nz_struct().end(), +- U_ind.begin()+U_loc); +- +- U_loc += A_row.nnz() - d; +- U_ptr[i+1] = U_loc; +- +- ++A_i; +- } while (mtl::not_at(A_i,A.end())); +-#else + //This is better way in term of general, however, It need to + // measure and compare the performance + typename Matrix::const_iterator A_i = A.begin(); +@@ -190,7 +156,7 @@ namespace itl { + + ++A_i; + } while (mtl::not_at(A_i,A.end())); +-#endif ++ + L_val.resize(L_loc); + U_val.resize(U_loc); + L_ind.resize(L_loc); +@@ -215,37 +181,34 @@ namespace itl { + int L_loc=0, U_loc=0; + L_ptr[0] = 0; + U_ptr[0] = 0; +- + typename Matrix::const_iterator A_i = A.begin(); + if (mtl::not_at(A_i,A.end())) do { +- const typename Matrix::OneD& A_col = *A_i; +- +- int i=A_i.index(); +- +- typedef typename Matrix::OneD::IndexArray::const_iterator index_iter; +- +- index_iter diag_location = +- upper_bound(A_col.nz_struct().begin(), A_col.nz_struct().end(), i); +- +- int d = diag_location - A_col.nz_struct().begin(); +- +- std::copy(A_col.begin(), A_col.begin()+d, U_val.begin()+U_loc); +- std::copy(A_col.nz_struct().begin(), A_col.nz_struct().begin()+d, +- U_ind.begin()+U_loc); +- +- U_loc += d; +- U_ptr[i+1] = U_loc; +- T A_ii = *(A_col.begin()+d-1); +- A_ii = 1./A_ii; +- +- transform(A_col.begin()+d, A_col.end(), L_val.begin()+L_loc, +- bind2nd(multiplies(), A_ii)); ++ typename Matrix::size_type i = A_i.index(); + +- std::copy(A_col.nz_struct().begin()+d, A_col.nz_struct().end(), +- L_ind.begin()+L_loc); ++ T A_ii; ++ ++ typename Matrix::OneD::const_iterator A_ij = (*A_i).begin(); ++ if (mtl::not_at(A_ij,(*A_i).end())) do { ++ typename Matrix::size_type j = A_ij.index(); ++ if ( j > i ) { ++ L_val[L_loc] = *A_ij; ++ L_ind[L_loc] = j; ++ ++L_loc; ++ } else { ++ U_val[U_loc] = *A_ij; ++ U_ind[U_loc] = j; ++ ++U_loc; ++ if ( i == j ) A_ii = T(1) / *A_ij; ++ } ++ ++A_ij; ++ } while (mtl::not_at(A_ij, (*A_i).end())); ++ ++ U_ptr[i+1] = U_loc; ++ L_ptr[i+1] = L_loc; + +- L_loc += A_col.nnz() - d; +- L_ptr[i+1] = L_loc; ++ //scale lower parts ++ transform(L_val.begin()+L_ptr[i], L_val.begin()+L_loc, ++ L_val.begin()+L_ptr[i], bind2nd(multiplies(), A_ii)); + + ++A_i; + } while (mtl::not_at(A_i,A.end())); +@@ -273,6 +236,11 @@ namespace itl { + //: return the Right part of a Split Preconditioner + Right right() { return Right(L, U); } + ++ ++ void print() { ++ print_all_matrix(L); ++ print_all_matrix(U); ++ } + private: + + LUMatrix L, U; +-- +1.8.2.1 + diff --git a/sci-libs/itl/files/itl-4.0.0_p1-Some-changes-for-stricter-compilers-like-gcc-4.0.patch b/sci-libs/itl/files/itl-4.0.0_p1-Some-changes-for-stricter-compilers-like-gcc-4.0.patch new file mode 100644 index 0000000..1d59d8d --- /dev/null +++ b/sci-libs/itl/files/itl-4.0.0_p1-Some-changes-for-stricter-compilers-like-gcc-4.0.patch @@ -0,0 +1,98 @@ +From 0819fe617778942d4b0503cf90613058a2662cd7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tiziano=20M=C3=BCller?= +Date: Sat, 7 Dec 2013 09:48:45 +0100 +Subject: [PATCH 2/5] Some changes for stricter compilers like gcc 4.0 + +--- + itl/itl.h | 29 +++++++++++++++++------------ + 1 file changed, 17 insertions(+), 12 deletions(-) + +diff --git a/itl/itl.h b/itl/itl.h +index db5d632..1735005 100644 +--- a/itl/itl.h ++++ b/itl/itl.h +@@ -161,10 +161,12 @@ namespace itl { + } + + inline bool converged(const Real& r) { ++ if (normb_ == 0) ++ return r < atol_; // ignore relative tolerance if |b| is zero + resid_ = r / normb_; +- return (resid_ <= rtol_ || r < atol_); //relative or absolute tolerance. ++ return (resid_ <= rtol_ || r < atol_); // relative or absolute tolerance. + } +- ++ + inline void operator++() { ++i; } + + inline bool first() { return i == 0; } +@@ -218,13 +220,14 @@ namespace itl { + bool ret; + if (converged(normr_)) + ret = true; +- else if (i < max_iter) ++ else if (this->i < this->max_iter) + ret = false; + else { + error = 1; + ret = true; + } +- cout << "iteration " << i << ": resid " << resid() ++ cout << "iteration " << this->i << ": resid " ++ << this->resid() + << endl; + return ret; + } +@@ -237,13 +240,14 @@ namespace itl { + bool ret; + if (converged(r)) + ret = true; +- else if (i < max_iter) ++ else if (this->i < this->max_iter) + ret = false; + else { + error = 1; + ret = true; + } +- cout << "iteration " << i << ": resid " << resid() ++ cout << "iteration " << this->i << ": resid " ++ << this->resid() + << endl; + return ret; + } +@@ -256,13 +260,14 @@ namespace itl { + bool ret; + if (converged(std::abs(r))) + ret = true; +- else if (i < max_iter) ++ else if (this->ii < this->imax_iter) + ret = false; + else { + error = 1; + ret = true; + } +- cout << "iteration " << i << ": resid " << resid() << endl; ++ cout << "iteration " << this->i << ": resid " ++ << this->resid() << endl; + return ret; + } + +@@ -271,11 +276,11 @@ namespace itl { + using std::endl; + + cout << "finished! error code = " << error << endl; +- cout << iterations() << " iterations" << endl; +- cout << resid() << " is actual final residual. " << endl +- << resid()/normb() << " is actual relative tolerance achieved. " ++ cout << this->iterations() << " iterations" << endl; ++ cout << this->resid() << " is actual final residual. " << endl ++ << this->resid()/this->normb() << " is actual relative tolerance achieved. " + << endl; +- cout << "Relative tol: " << rtol_ << " Absolute tol: " << atol_ << endl; ++ cout << "Relative tol: " << this->rtol_ << " Absolute tol: " << this->atol_ << endl; + return error; + } + +-- +1.8.2.1 + diff --git a/sci-libs/itl/files/itl-4.0.0_p1-linalg_traits-of-std-vector.patch b/sci-libs/itl/files/itl-4.0.0_p1-linalg_traits-of-std-vector.patch new file mode 100644 index 0000000..1e3a94b --- /dev/null +++ b/sci-libs/itl/files/itl-4.0.0_p1-linalg_traits-of-std-vector.patch @@ -0,0 +1,60 @@ +From 9f9680d69d4892610655aa4bf74de1fedde0906c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tiziano=20M=C3=BCller?= +Date: Sat, 7 Dec 2013 10:06:40 +0100 +Subject: [PATCH 3/5] linalg_traits of std::vector + +--- + itl/interface/detail/mtl_amend.h | 22 ++++++++++++++++++++++ + itl/interface/detail/mtl_classical_gram_schmidt.h | 1 + + 2 files changed, 23 insertions(+) + +diff --git a/itl/interface/detail/mtl_amend.h b/itl/interface/detail/mtl_amend.h +index e8695d1..fb5305f 100644 +--- a/itl/interface/detail/mtl_amend.h ++++ b/itl/interface/detail/mtl_amend.h +@@ -1,3 +1,13 @@ ++ ++#ifndef ITL_MTL_AMEND_H ++#define ITL_MTL_AMEND_H ++ ++#include ++ ++template ++class pointer_vector; ++ ++ + namespace mtl { + + template +@@ -9,4 +19,16 @@ namespace mtl { + magnitude_type; + }; + ++ template ++ struct linalg_traits > { ++ typedef oned_tag dimension; ++ typedef dense_tag sparsity; ++ typedef T value_type; ++ typedef typename number_traits::magnitude_type ++ magnitude_type; ++ }; ++ ++ + } ++ ++#endif // ITL_MTL_AMEND_H +diff --git a/itl/interface/detail/mtl_classical_gram_schmidt.h b/itl/interface/detail/mtl_classical_gram_schmidt.h +index 0de9103..a16e223 100644 +--- a/itl/interface/detail/mtl_classical_gram_schmidt.h ++++ b/itl/interface/detail/mtl_classical_gram_schmidt.h +@@ -69,6 +69,7 @@ + #include + #include + #include ++#include //for linalg_traits of std::vector + + namespace itl { + //in parallel envirnment, this is an all-reduce operation +-- +1.8.2.1 + diff --git a/sci-libs/itl/files/itl-4.0.0_p1-more-modern-c-fixes.patch b/sci-libs/itl/files/itl-4.0.0_p1-more-modern-c-fixes.patch new file mode 100644 index 0000000..c92d134 --- /dev/null +++ b/sci-libs/itl/files/itl-4.0.0_p1-more-modern-c-fixes.patch @@ -0,0 +1,328 @@ +From f1e54481837326250c12aea5590296ad293fc82d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tiziano=20M=C3=BCller?= +Date: Sat, 7 Dec 2013 10:07:05 +0100 +Subject: [PATCH 4/5] more modern c++ fixes + +--- + itl/itl.h | 34 +++++++++++++++--------------- + itl/preconditioner/approximate_inverse.h | 16 +++++++------- + itl/preconditioner/ilut.h | 36 ++++++++++++++++---------------- + itl/preconditioner/modified_cholesky.h | 2 +- + 4 files changed, 44 insertions(+), 44 deletions(-) + +diff --git a/itl/itl.h b/itl/itl.h +index 1735005..719f8d7 100644 +--- a/itl/itl.h ++++ b/itl/itl.h +@@ -126,36 +126,36 @@ namespace itl { + template + bool finished(const Vector& r) { + Real normr_ = std::abs(itl::two_norm(r)); +- if (converged(normr_)) ++ if (this->converged(normr_)) + return true; + else if (i < max_iter) + return false; + else { +- error = 1; ++ this->error = 1; + return true; + } + } + + + bool finished(const Real& r) { +- if (converged(r)) ++ if (this->converged(r)) + return true; + else if (i < max_iter) + return false; + else { +- error = 1; ++ this->error = 1; + return true; + } + } + + template + bool finished(const std::complex& r) { +- if (converged(std::abs(r))) ++ if (this->converged(std::abs(r))) + return true; + else if (i < max_iter) + return false; + else { +- error = 1; ++ this->error = 1; + return true; + } + } +@@ -171,7 +171,7 @@ namespace itl { + + inline bool first() { return i == 0; } + +- inline int error_code() { return error; } ++ inline int error_code() { return this->error; } + + inline int iterations() { return i; } + +@@ -182,10 +182,10 @@ namespace itl { + inline Real tol() { return rtol_; } + inline Real atol() { return atol_; } + +- inline void fail(int err_code) { error = err_code; } ++ inline void fail(int err_code) { this->error = err_code; } + + inline void fail(int err_code, const std::string& msg) +- { error = err_code; err_msg = msg; } ++ { this->error = err_code; err_msg = msg; } + + inline void set(Real v) { normb_ = v; } + +@@ -218,12 +218,12 @@ namespace itl { + + Real normr_ = std::abs(itl::two_norm(r)); + bool ret; +- if (converged(normr_)) ++ if (this->converged(normr_)) + ret = true; + else if (this->i < this->max_iter) + ret = false; + else { +- error = 1; ++ this->error = 1; + ret = true; + } + cout << "iteration " << this->i << ": resid " +@@ -238,12 +238,12 @@ namespace itl { + using std::endl; + + bool ret; +- if (converged(r)) ++ if (this->converged(r)) + ret = true; + else if (this->i < this->max_iter) + ret = false; + else { +- error = 1; ++ this->error = 1; + ret = true; + } + cout << "iteration " << this->i << ": resid " +@@ -258,12 +258,12 @@ namespace itl { + using std::endl; + + bool ret; +- if (converged(std::abs(r))) ++ if (this->converged(std::abs(r))) + ret = true; + else if (this->ii < this->imax_iter) + ret = false; + else { +- error = 1; ++ this->error = 1; + ret = true; + } + cout << "iteration " << this->i << ": resid " +@@ -275,13 +275,13 @@ namespace itl { + using std::cout; + using std::endl; + +- cout << "finished! error code = " << error << endl; ++ cout << "finished! error code = " << this->error << endl; + cout << this->iterations() << " iterations" << endl; + cout << this->resid() << " is actual final residual. " << endl + << this->resid()/this->normb() << " is actual relative tolerance achieved. " + << endl; + cout << "Relative tol: " << this->rtol_ << " Absolute tol: " << this->atol_ << endl; +- return error; ++ return this->error; + } + + }; +diff --git a/itl/preconditioner/approximate_inverse.h b/itl/preconditioner/approximate_inverse.h +index dbb29c2..92c1453 100644 +--- a/itl/preconditioner/approximate_inverse.h ++++ b/itl/preconditioner/approximate_inverse.h +@@ -17,14 +17,6 @@ namespace itl { + + */ + template +- inline void sparse_mult(const Matrix& A, const SparseVectorX& x, +- const SparseVectorY& yy) { +- SparseVectorY& y = const_cast(yy); +- typedef typename mtl::matrix_traits::orientation Orien; +- sparse_mult_matrix_orien(A, x, y, Orien()); +- } +- +- template + inline void sparse_mult_matrix_orien(const Matrix& A, const SparseVectorX& x, + SparseVectorY& y, mtl::row_tag) { + assert(false); +@@ -47,6 +39,14 @@ namespace itl { + } + + ++ template ++ inline void sparse_mult(const Matrix& A, const SparseVectorX& x, ++ const SparseVectorY& yy) { ++ SparseVectorY& y = const_cast(yy); ++ typedef typename mtl::matrix_traits::orientation Orien; ++ sparse_mult_matrix_orien(A, x, y, Orien()); ++ } ++ + template + struct AI_precond { + AI_precond(const Matrix& _M) : M(_M) {} +diff --git a/itl/preconditioner/ilut.h b/itl/preconditioner/ilut.h +index bd27927..254ad7e 100644 +--- a/itl/preconditioner/ilut.h ++++ b/itl/preconditioner/ilut.h +@@ -182,8 +182,8 @@ namespace itl { + + norm_row = 1./norm_row; + +- entry_vec::iterator wk= w->begin(); +- entry_vec::iterator wkend = w->end(); ++ typename entry_vec::iterator wk= w->begin(); ++ typename entry_vec::iterator wkend = w->end(); + entry_vec tmp_w; + int krow = 0; + while( wk != wkend ) { +@@ -212,8 +212,8 @@ namespace itl { + } while (mtl::not_at(U_kj, U_kend)); + + wswap->resize(w->size() + tmp_w.size()); +- entry_vec::iterator wj = w->begin(); +- entry_vec::iterator tmp_wj = tmp_w.begin(); ++ typename entry_vec::iterator wj = w->begin(); ++ typename entry_vec::iterator tmp_wj = tmp_w.begin(); + int j = 0; + while ( 1 ) { + if ( wj == w->end() ) { +@@ -262,7 +262,7 @@ namespace itl { + } + + if (i) { +- entry_vec::iterator wi = w->begin(); ++ typename entry_vec::iterator wi = w->begin(); + int jj = 0; + while( wi != w->end() ) { + if ( (*wi).index != i) +@@ -275,14 +275,14 @@ namespace itl { + wi = w->begin() + jj; + } + +- entry_vec::iterator diag = ++ typename entry_vec::iterator diag = + std::find(w->begin(), w->end(), mtl::entry1(i)); + int m = diag-w->begin(); + std::make_heap(w->begin(), diag, entry1_value_less()); + int jmax = MTL_MIN(nL+K, m); + if (jmax != m) dropped += m-jmax; + for ( int j=m; j>m-jmax; j-- ) { +- entry_vec::iterator first = w->begin(); ++ typename entry_vec::iterator first = w->begin(); + + L(i, (*first).index) = (*first).value; + +@@ -298,7 +298,7 @@ namespace itl { + std::make_heap(diag+1, w->end(), entry1_value_less()); + + for ( int j=m; j>m-jmax; j-- ) { +- entry_vec::iterator first = diag+1; ++ typename entry_vec::iterator first = diag+1; + + U(i, (*first).index) = (*first).value; + +@@ -306,7 +306,7 @@ namespace itl { + } + } + } else { +- for (entry_vec::iterator wj= w->begin(); ++ for (typename entry_vec::iterator wj= w->begin(); + wj != w->end(); ++wj) + U(i, (*wj).index) = (*wj).value; + } +@@ -368,8 +368,8 @@ namespace itl { + + norm_row = 1./norm_row; + +- entry_vec::iterator wk= w->begin(); +- entry_vec::iterator wkend = w->end(); ++ typename entry_vec::iterator wk= w->begin(); ++ typename entry_vec::iterator wkend = w->end(); + entry_vec tmp_w; + int krow = 0; + while( wk != wkend ) { +@@ -398,8 +398,8 @@ namespace itl { + } while (mtl::not_at(U_kj, U_kend)); + + wswap->resize(w->size() + tmp_w.size()); +- entry_vec::iterator wj = w->begin(); +- entry_vec::iterator tmp_wj = tmp_w.begin(); ++ typename entry_vec::iterator wj = w->begin(); ++ typename entry_vec::iterator tmp_wj = tmp_w.begin(); + int j = 0; + while ( 1 ) { + if ( wj == w->end() ) { +@@ -448,7 +448,7 @@ namespace itl { + } + + if (i) { +- entry_vec::iterator wi = w->begin(); ++ typename entry_vec::iterator wi = w->begin(); + int jj = 0; + while (wi != w->end()) { + if ( (*wi).index != i) +@@ -461,14 +461,14 @@ namespace itl { + wi = w->begin() + jj; + } + +- entry_vec::iterator diag = ++ typename entry_vec::iterator diag = + std::find(w->begin(), w->end(), mtl::entry1(i)); + int m = diag - w->begin(); + std::make_heap(w->begin(), diag, entry1_value_less()); + int jmax = MTL_MIN(nL+K, m); + if (jmax != m) dropped += m-jmax; + for (int j = m; j > m - jmax; j-- ) { +- entry_vec::iterator first = w->begin(); ++ typename entry_vec::iterator first = w->begin(); + + LA(i, (*first).index) = (*first).value; + +@@ -484,7 +484,7 @@ namespace itl { + std::make_heap(diag+1, w->end(), entry1_value_less()); + + for ( int j=m; j>m-jmax; j-- ) { +- entry_vec::iterator first = diag+1; ++ typename entry_vec::iterator first = diag+1; + + UA(i, (*first).index) = (*first).value; + +@@ -492,7 +492,7 @@ namespace itl { + } + } + } else { +- for (entry_vec::iterator wj= w->begin(); ++ for (typename entry_vec::iterator wj= w->begin(); + wj != w->end(); ++wj) + UA(i, (*wj).index) = (*wj).value; + } +diff --git a/itl/preconditioner/modified_cholesky.h b/itl/preconditioner/modified_cholesky.h +index a67c737..5ee4756 100644 +--- a/itl/preconditioner/modified_cholesky.h ++++ b/itl/preconditioner/modified_cholesky.h +@@ -47,7 +47,7 @@ namespace itl { + template < class Shape > + inline void check_symm(Shape) + { +- cout << "Matrix is not symmetric. Abort." << endl; ++ std::cout << "Matrix is not symmetric. Abort." << std::endl; + assert(0); + } + +-- +1.8.2.1 + diff --git a/sci-libs/itl/itl-4.0.0_p1.ebuild b/sci-libs/itl/itl-4.0.0_p1.ebuild new file mode 100644 index 0000000..d39b432 --- /dev/null +++ b/sci-libs/itl/itl-4.0.0_p1.ebuild @@ -0,0 +1,63 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=5 + +MY_P="${P/_p/-}" + +inherit autotools eutils + +DESCRIPTION="Generic component library that provides iterative methods for solving linear systems." +HOMEPAGE="http://osl.iu.edu/research/itl/" +SRC_URI="http://www.osl.iu.edu/download/research/${PN}/${MY_P}.tar.gz" + +LICENSE="Artistic" +SLOT="0" +KEYWORDS="~amd64" +IUSE="" + +RDEPEND="sci-libs/mtl" +DEPEND="${RDEPEND}" + +S="${WORKDIR}/${MY_P}" + +src_prepare() { + # cleanup sources + find -iname CVS -print0 | xargs -0 rm -rf + find -iname "*~" -print0 | xargs -0 rm -rf + find -iname "#*#" -print0 | xargs -0 rm -rf + + # The first 3 patches are from + # http://www.osl.iu.edu/research/itl/bug_fixes.php3, although from the + # linalg_traits patch was only a part taken since the other part has merge + # conflicts and introduces BLAS in MTL functions which breaks horribly. + epatch \ + "${FILESDIR}/${P}-ILU-Cholesky-SSOR-Preconditioner-produce-wrong-decom.patch" \ + "${FILESDIR}/${P}-Some-changes-for-stricter-compilers-like-gcc-4.0.patch" \ + "${FILESDIR}/${P}-linalg_traits-of-std-vector.patch" \ + "${FILESDIR}/${P}-more-modern-c-fixes.patch" \ + "${FILESDIR}/${P}-Autoconf-automake-fixes.patch" + + eautoreconf +} + +src_configure() { + econf \ + --with-mtl="${EPREFIX}/usr/include" +} + +src_compile() { + : +} + +src_install() { + insinto /usr/include/itl + doins -r itl/*.h itl/{krylov,interface,preconditioner} + dodoc README +} + +src_test() { + # compile-tests only for now + emake -C test +} diff --git a/sci-libs/mtl/Manifest b/sci-libs/mtl/Manifest new file mode 100644 index 0000000..0627c1f --- /dev/null +++ b/sci-libs/mtl/Manifest @@ -0,0 +1,5 @@ +AUX mtl-2.1.2_p23-add-missing-typedef.patch 684 SHA256 bad51998e93da78c64a4fdcf4613ca4b38b70d305ebc9d05799e00dc370dd20d SHA512 76d75478bdf28a20e90e5577a1364902d80ea874815d63bb2073b7b2c5f105d546ff04bac015dbeb86f29f8b51b5bcc9bab431f346f97473cb337f4ccb4a6a6b WHIRLPOOL b4aa51df1aed581edec7a2b98545dff75f40064b2f3ab1e47de37bddd7df2f8181977b1cbff5d4be1630b86707ddcec833145eb0078924cbfbba030cbea7a9d8 +AUX mtl-2.1.2_p23-fix-includes-et-al.patch 1378 SHA256 6a80ffbc566366ffb8f233bf56b89359104a1269927098ca9b502dd1b7916837 SHA512 1ba4712aba58904230566b0e2d7f96b045bd8f20b1c125f032da2d1d585177dff3f356a7e8afc803b5878257418b709e39407d824a25dfdc530983b6b67e4601 WHIRLPOOL 95ac731e7ebcb326fe3258869c76e42e22e1c671d2d0bdc3754e97b18735829a09343543155a1a0619021d5e0f847cc883d3041b366332531b0275834d0a4ec5 +AUX mtl-2.1.2_p23-fix-tests.patch 2417 SHA256 21417a193fbcf83b5e8b3e3e7565279c49b8874749fb623ede1366bab5e2dc96 SHA512 5b53a26138fc8887ca77ce157752eb440e1698faf3a48d0b96c0ca6255b0d2f9f0c1031bbfb13149da839d2cd5455efe9aef50616675437c2a0a8920a6fa36e4 WHIRLPOOL cfb334a29e07143bf7247e0c206d8d1da49e0c22b047460af14a5f20d1dae98070d2c21496823d4cde00b971772dae0cc6f6a1aef84db5db64e399a0d6705b10 +DIST mtl-2.1.2-23.tentative.tar.gz 330538 SHA256 351bb9692639df74d8258bc973e98460203a7db1c9c49387558c51838b498193 SHA512 242fedb36f511f0919e869eb6cc742fc95cc6514b5a63c50d66125171a6a0932a1dd706f2a54f4a17dd5749be957644c83c19d32174637dc38d5e48485b9d243 WHIRLPOOL b393839e673bf1962400882bda9a735c5b6868eff3610359ecfb3d9e8e1e3b34eb82b9536cf904a6c32c9aa7ab10ee9ea5d2ec29996b7b4903c972be8e4cb54e +EBUILD mtl-2.1.2_p23.ebuild 1051 SHA256 b2dcb2cefa0b738869aef802e92fbbe736409532f94ff4a355e5868eaef2a0d0 SHA512 6994a8cbc174bdc475a5db90cc1f65274fabf8c5a0a29015c6b44a5d7d66941bd2952d5bb20f8d7697c297361290572a0666153c9ff3cd172fc08a7c71d6cbc1 WHIRLPOOL f348f11a6f9c794bd28e0b3d4eef9b58c9d99b2e90cf2a2297c5e2de42f48744ebfd9ea09d5fe6915953b6f44bf6f4f1182f51feb16231711f4cc77acb7204e6 diff --git a/sci-libs/mtl/files/mtl-2.1.2_p23-add-missing-typedef.patch b/sci-libs/mtl/files/mtl-2.1.2_p23-add-missing-typedef.patch new file mode 100644 index 0000000..e85c624 --- /dev/null +++ b/sci-libs/mtl/files/mtl-2.1.2_p23-add-missing-typedef.patch @@ -0,0 +1,24 @@ +From 642a59a0301b5926137537e8f888f4e75aa1b2bd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tiziano=20M=C3=BCller?= +Date: Fri, 6 Dec 2013 09:08:40 +0100 +Subject: [PATCH 3/3] Add missing typedef + +--- + mtl/linalg_vec.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/mtl/linalg_vec.h b/mtl/linalg_vec.h +index 42020eb..0bbd1d4 100644 +--- a/mtl/linalg_vec.h ++++ b/mtl/linalg_vec.h +@@ -113,6 +113,7 @@ public: + typedef linalg_vec Vec; + + typedef size_type Vec_size_type; ++ typedef rep_type Vec_value_type; + typedef difference_type Vec_difference_type; + typedef iterator Vec_iterator; + typedef const_iterator Vec_const_iterator; +-- +1.8.2.1 + diff --git a/sci-libs/mtl/files/mtl-2.1.2_p23-fix-includes-et-al.patch b/sci-libs/mtl/files/mtl-2.1.2_p23-fix-includes-et-al.patch new file mode 100644 index 0000000..278579c --- /dev/null +++ b/sci-libs/mtl/files/mtl-2.1.2_p23-fix-includes-et-al.patch @@ -0,0 +1,54 @@ +From da191bc79c9205fbf97e6eac67f9b2b188f54d30 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tiziano=20M=C3=BCller?= +Date: Thu, 5 Dec 2013 08:23:57 +0100 +Subject: [PATCH 1/3] Fix includes et al + +--- + mtl/envelope2D.h | 2 +- + mtl/external_vector.h | 2 ++ + mtl/light1D.h | 3 ++- + 3 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/mtl/envelope2D.h b/mtl/envelope2D.h +index e66d07a..4377895 100644 +--- a/mtl/envelope2D.h ++++ b/mtl/envelope2D.h +@@ -64,7 +64,7 @@ public: + typedef dense1D ptr_t; + + //: A pair type for the dimensions of the container +- typedef dimension dim_type; ++ typedef mtl::dimension dim_type; + enum { M = 0, N = 0 }; + //: This container uses internal storage + typedef internal_tag storage_loc; +diff --git a/mtl/external_vector.h b/mtl/external_vector.h +index 4b8380b..e7ec3bd 100644 +--- a/mtl/external_vector.h ++++ b/mtl/external_vector.h +@@ -4,6 +4,8 @@ + #include "mtl/mtl_iterator.h" + #include "mtl/mtl_exception.h" + ++#include ++ + namespace mtl { + + +diff --git a/mtl/light1D.h b/mtl/light1D.h +index 9a9f5f5..462e6ef 100644 +--- a/mtl/light1D.h ++++ b/mtl/light1D.h +@@ -19,7 +19,8 @@ + #include "mtl/reverse_iter.h" + #include "mtl/matrix_traits.h" + #include "mtl/scaled1D.h" +-#include ++#include ++#include + + namespace mtl { + +-- +1.8.2.1 + diff --git a/sci-libs/mtl/files/mtl-2.1.2_p23-fix-tests.patch b/sci-libs/mtl/files/mtl-2.1.2_p23-fix-tests.patch new file mode 100644 index 0000000..49bb14b --- /dev/null +++ b/sci-libs/mtl/files/mtl-2.1.2_p23-fix-tests.patch @@ -0,0 +1,89 @@ +From c7b2ddf866920a738c76de225754d3edd3e35e21 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tiziano=20M=C3=BCller?= +Date: Fri, 6 Dec 2013 09:06:23 +0100 +Subject: [PATCH 2/3] Fix tests + +--- + test/src/algo_test.h | 44 ++++++++++++++++++++++---------------------- + test/src/matrix_test.h | 3 +++ + 2 files changed, 25 insertions(+), 22 deletions(-) + +diff --git a/test/src/algo_test.h b/test/src/algo_test.h +index 8e67d7f..eeccd13 100644 +--- a/test/src/algo_test.h ++++ b/test/src/algo_test.h +@@ -8,6 +8,28 @@ + using mtl::dense1D; + + template ++void ++set_diagonal_test(std::string test_name, Matrix& A, bool& success) ++{ ++ if (A.is_unit()) { ++ std::cout << test_name.c_str() << " skipping set_diagonal" << std::endl; ++ return; ++ } ++ typedef typename mtl::matrix_traits::value_type T; ++ typedef typename mtl::matrix_traits::size_type Int; ++ // set_diagnal ++ Int i; ++ mtl::set_diagonal(A, T(1)); ++ ++ for (i = 0; i < A.nrows() && i < A.ncols(); ++i) ++ if (A(i,i) != T(1)) { ++ std::cout << test_name.c_str() << " failed set_diagnal(A,a) *****" << std::endl; ++ success = false; ++ break; ++ } ++} ++ ++template + bool + mat_algo_test(Matrix& A, std::string test_name) + { +@@ -110,28 +132,6 @@ mat_algo_test(Matrix& A, std::string test_name) + return success; + } + +-template +-void +-set_diagonal_test(std::string test_name, Matrix& A, bool& success) +-{ +- if (A.is_unit()) { +- std::cout << test_name.c_str() << " skipping set_diagonal" << std::endl; +- return; +- } +- typedef typename mtl::matrix_traits::value_type T; +- typedef typename mtl::matrix_traits::size_type Int; +- // set_diagnal +- Int i; +- mtl::set_diagonal(A, T(1)); +- +- for (i = 0; i < A.nrows() && i < A.ncols(); ++i) +- if (A(i,i) != T(1)) { +- std::cout << test_name.c_str() << " failed set_diagnal(A,a) *****" << std::endl; +- success = false; +- break; +- } +-} +- + template + inline void + fill_matrix(Mat& A, int /*sub*/, int /*super*/, mtl::rectangle_tag) +diff --git a/test/src/matrix_test.h b/test/src/matrix_test.h +index c5f084a..e210956 100644 +--- a/test/src/matrix_test.h ++++ b/test/src/matrix_test.h +@@ -52,6 +52,9 @@ using mtl::not_strideable; + + #include "fill_matrix.h" + ++template ++void ++do_test(Matrix& A, std::string test_name); + + template + void +-- +1.8.2.1 + diff --git a/sci-libs/mtl/mtl-2.1.2_p23.ebuild b/sci-libs/mtl/mtl-2.1.2_p23.ebuild new file mode 100644 index 0000000..65f8f55 --- /dev/null +++ b/sci-libs/mtl/mtl-2.1.2_p23.ebuild @@ -0,0 +1,51 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=5 + +MY_P="${P/_p/-}" + +inherit eutils + +DESCRIPTION="The Matrix Template Library 2 (MTL2) is a high-performance generic component library that provides comprehensive linear algebra functionality for a wide variety of matrix formats." +HOMEPAGE="http://osl.iu.edu/research/mtl/mtl2.php3" +SRC_URI="http://www.osl.iu.edu/download/research/${PN}/${MY_P}.tentative.tar.gz" + +LICENSE="Apache-1.1" +SLOT="2" +KEYWORDS="~amd64" +IUSE="exceptions" + +DEPEND="" +RDEPEND="" + +S="${WORKDIR}/${MY_P}" + +src_prepare() { + epatch \ + "${FILESDIR}/${P}-fix-includes-et-al.patch" \ + "${FILESDIR}/${P}-fix-tests.patch" \ + "${FILESDIR}/${P}-add-missing-typedef.patch" +} + +src_configure() { + local myconf + use exceptions && myconf+=" --enable-exceptions" + econf ${myconf} +} + +src_compile() { + : +} + +src_install() { + insinto /usr/include/mtl + doins mtl/*.h + dodoc README +} + +src_test() { + # currently compile-test only since tests take 12h to complete + emake +}