On Sun, Sep 10, 2017 at 07:36:19AM +0200, Andreas Tille wrote: > On Sun, Sep 10, 2017 at 12:14:17AM +0200, Sébastien Villemot wrote: > > > > Since clapack and lapack provide exactly the same API and ABI, and actually > > exactly the same algorithms (the only difference being the programming language > > in which it is implemented), I have no doubt that phast can directly use > > lapack. > > > > The only value added of clapack over lapack is the clapack.h header, which > > provides the prototypes for the Fortran LAPACK interface. > > > > So in the worst case, phast can be packaged by linking it to lapack, and by > > providing (a subset of) clapack.h in a patch. Or maybe we could include > > clapack.h in src:lapack (though ATLAS also provides an unrelated clapack.h, so > > we must think twice about it). > > > > Andreas: in any case, I am willing to help you linking phast with lapack, so > > that we can get rid of clapack. > > I tried […] > but I have no idea how to replace libctmg-dev. It should be replaced by libtmglib-dev from src:lapack. > I'd be more than happy if you could have a look and tell me how to > get rid of clapack completely. Please find attached a patch which, applied on top of your phast packaging repository, removes the dependency on clapack. Basically, as expected, I had to introduce the C prototypes for the few LAPACK functions used by phast. I also removed the dependency on f2c, which was only used for two type definitions (LAPACK int and double). Best, -- ⢀⣴⠾⠻⢶⣦⠀ Sébastien Villemot ⣾⠁⢠⠒⠀⣿⡁ Debian Developer ⢿⡄⠘⠷⠚⠋⠀ http://sebastien.villemot.name ⠈⠳⣄⠀⠀⠀⠀ http://www.debian.org
From e3ee4b30ff001cf2b199c640b341d912da4e50ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@debian.org>
Date: Sun, 10 Sep 2017 11:06:22 +0200
Subject: [PATCH] Depend on packages from src:lapack instead of obsolete
src:clapack.
---
debian/control | 7 ++-
debian/patches/clapack.patch | 60 +++++++++++++++++++-----
debian/patches/fix_include.patch | 17 -------
debian/patches/hardening.patch | 7 +--
debian/patches/series | 1 -
debian/patches/use_debian_packaged_libpcre.patch | 21 ++-------
6 files changed, 59 insertions(+), 54 deletions(-)
delete mode 100644 debian/patches/fix_include.patch
diff --git a/debian/control b/debian/control
index 42e72ea..f8818a5 100644
--- a/debian/control
+++ b/debian/control
@@ -4,10 +4,9 @@ Uploaders: Andreas Tille <tille@debian.org>
Section: science
Priority: optional
Build-Depends: debhelper (>= 9),
- libf2c2-dev (>= 20130926-2~),
- libclapack-dev,
- libcblas-dev,
- libctmg-dev,
+ liblapack-dev,
+ libblas-dev,
+ libtmglib-dev,
libpcre3-dev,
help2man
Standards-Version: 3.9.8
diff --git a/debian/patches/clapack.patch b/debian/patches/clapack.patch
index ac1041b..12e4933 100644
--- a/debian/patches/clapack.patch
+++ b/debian/patches/clapack.patch
@@ -1,9 +1,12 @@
Author: Andreas Tille <tille@debian.org>
-Last-Update: Fri, 27 May 2016 18:06:35 +0200
-Description: Debian's clapack package renames library from lapack.a
- to clapack.a to enable parallel installation of the alternative
- implementation lapacke
-
+Author: Sébastien Villemot <sebastien@debian.org>
+Last-Update: 2017-09-10
+Description: Use Debian package for BLAS/LAPACK (instead of obsolete clapack)
+ - Use -lblas instead of -lblaswr
+ - Use -ltmglib instead of -ltmg
+ - Do not use f2c, not needed
+ - Introduce prototypes for LAPACK functions used in the package
+ (those are documented in the manpages from the liblapack-doc package)
--- a/src/lib/Makefile
+++ b/src/lib/Makefile
@@ -12,29 +12,9 @@ endif
@@ -49,18 +52,17 @@ Description: Debian's clapack package renames library from lapack.a
endif
# if neither VECLIB nor CLAPACKPATH is defined, then LAPACK will be
-@@ -140,16 +138,15 @@ else
+@@ -139,8 +137,7 @@ LIBS = -lphast -framework vecLib -lc -lm
+ else
ifdef CLAPACKPATH
ifneq ($(TARGETOS), Windows)
- CFLAGS += -I${CLAPACKPATH}/INCLUDE -I${F2CPATH}
+- CFLAGS += -I${CLAPACKPATH}/INCLUDE -I${F2CPATH}
- LIBS = -lphast -llapack -ltmg -lblaswr -lc -lf2c -lm
-+ LIBS = -lphast -lclapack -lctmg -lcblas -lc -lf2c -lm
++ LIBS = -lphast -llapack -ltmglib -lblas -lc -lm
else
-- CFLAGS += -I${CLAPACKPATH}/INCLUDE -I${F2CPATH} -DPCRE_STATIC
-+ CFLAGS += -I${CLAPACKPATH}/INCLUDE -DPCRE_STATIC
+ CFLAGS += -I${CLAPACKPATH}/INCLUDE -I${F2CPATH} -DPCRE_STATIC
LIBS = -lphast -lm ${CLAPACKPATH}/liblapack.a ${CLAPACKPATH}/libf2c.a ${CLAPACKPATH}/libblas.a
- endif
- # IMPORTANT: use the following two lines instead for versions of CLAPACK
+@@ -149,7 +146,6 @@ endif
# older than 3.1.1
#CFLAGS += -I${CLAPACKPATH} -I${F2CPATH}
#LIBS = -lphast -llapack -ltmg -lblaswr -lc -lF77 -lI77 -lm
@@ -68,3 +70,37 @@ Description: Debian's clapack package renames library from lapack.a
# bypass
else
+--- a/include/external_libs.h
++++ b/include/external_libs.h
+@@ -39,10 +39,27 @@
+ #else
+
+ #ifndef SKIP_LAPACK
+-#include <f2c.h>
+-#include <clapack.h>
+-#define LAPACK_INT integer
+-#define LAPACK_DOUBLE doublereal
++
++int dgeev_(char *jobvl, char *jobvr, int *n, double *a, int *lda, double *wr,
++ double *wi, double *vl, int *ldvl, double *vr, int *ldvr,
++ double *work, int *lwork, int *info);
++
++int dgebal_(char *job, int *n, double *a, int *lda, int *ilo, int *ihi,
++ double *scale, int *info);
++
++int dgesv_(int *n, int *nrhs, double *a, int *lda, int *ipiv, double *b,
++ int *ldb, int *info);
++
++int dgebak_(char *job, char *side, int *n, int *ilo, int *ihi, double *scale,
++ int *m, double *v, int *ldv, int *info);
++
++int dgetrf_(int *m, int *n, double *a, int *lda, int *ipiv, int *info);
++
++int dgetri_(int *n, double *a, int *lda, int *ipiv, double *work, int *lwork,
++ int *info);
++
++#define LAPACK_INT int
++#define LAPACK_DOUBLE double
+ #endif /*ifndef SKIP_LAPACK */
+
+ #endif /*ifdef VECLIB */
diff --git a/debian/patches/fix_include.patch b/debian/patches/fix_include.patch
deleted file mode 100644
index 46a7c5c..0000000
--- a/debian/patches/fix_include.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Author: Andreas Tille <tille@debian.org>
-Last-Update: Fri, 27 May 2016 18:06:35 +0200
-Description: Remove broken include options
-
---- a/src/make-include.mk
-+++ b/src/make-include.mk
-@@ -137,10 +137,8 @@ LIBS = -lphast -framework vecLib -lc -lm
- else
- ifdef CLAPACKPATH
- ifneq ($(TARGETOS), Windows)
-- CFLAGS += -I${CLAPACKPATH}/INCLUDE -I${F2CPATH}
- LIBS = -lphast -lclapack -lctmg -lcblas -lc -lf2c -lm -lpcre
- else
-- CFLAGS += -I${CLAPACKPATH}/INCLUDE
- LIBS = -lphast -lm ${CLAPACKPATH}/liblapack.a ${CLAPACKPATH}/libf2c.a ${CLAPACKPATH}/libblas.a
- endif
- # IMPORTANT: use the following two lines instead for versions of CLAPACK
diff --git a/debian/patches/hardening.patch b/debian/patches/hardening.patch
index 939cfb6..a3c86dc 100644
--- a/debian/patches/hardening.patch
+++ b/debian/patches/hardening.patch
@@ -13,12 +13,13 @@ Description: Propagate hardening options
# some other options
#CFLAGS = -mcpu=opteron -O3
#CFLAGS = -mcpu=pentiumpro -O3
-@@ -137,7 +137,7 @@ LIBS = -lphast -framework vecLib -lc -lm
+@@ -137,8 +137,8 @@ LIBS = -lphast -framework vecLib -lc -lm
else
ifdef CLAPACKPATH
ifneq ($(TARGETOS), Windows)
-- LIBS = -lphast -lclapack -lctmg -lcblas -lc -lf2c -lm -lpcre
-+ LIBS = -lphast -lclapack -lctmg -lcblas -lc -lf2c -lm -lpcre $(LDFLAGS)
+- LIBS = -lphast -llapack -ltmglib -lblas -lc -lm -lpcre
++ LIBS = -lphast -llapack -ltmglib -lblas -lc -lm -lpcre $(LDFLAGS)
else
+ CFLAGS += -I${CLAPACKPATH}/INCLUDE -I${F2CPATH} -DPCRE_STATIC
LIBS = -lphast -lm ${CLAPACKPATH}/liblapack.a ${CLAPACKPATH}/libf2c.a ${CLAPACKPATH}/libblas.a
endif
diff --git a/debian/patches/series b/debian/patches/series
index 744d043..63e3cef 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,6 +1,5 @@
clapack.patch
do_not_install_to_opt.patch
use_debian_packaged_libpcre.patch
-fix_include.patch
use_debian_packaged_help2man.patch
hardening.patch
diff --git a/debian/patches/use_debian_packaged_libpcre.patch b/debian/patches/use_debian_packaged_libpcre.patch
index efce51f..5284535 100644
--- a/debian/patches/use_debian_packaged_libpcre.patch
+++ b/debian/patches/use_debian_packaged_libpcre.patch
@@ -13,29 +13,16 @@ Description: Use Debian packaged libpcre
LIBPATH = -L${LIB}
# uncomment these lines for profiling (add -g for line-by-line
-@@ -138,9 +138,9 @@ else
+@@ -138,8 +138,8 @@ else
ifdef CLAPACKPATH
ifneq ($(TARGETOS), Windows)
- CFLAGS += -I${CLAPACKPATH}/INCLUDE -I${F2CPATH}
-- LIBS = -lphast -lclapack -lctmg -lcblas -lc -lf2c -lm
-+ LIBS = -lphast -lclapack -lctmg -lcblas -lc -lf2c -lm -lpcre
+- LIBS = -lphast -llapack -ltmglib -lblas -lc -lm
++ LIBS = -lphast -llapack -ltmglib -lblas -lc -lm -lpcre
else
-- CFLAGS += -I${CLAPACKPATH}/INCLUDE -DPCRE_STATIC
-+ CFLAGS += -I${CLAPACKPATH}/INCLUDE
+ CFLAGS += -I${CLAPACKPATH}/INCLUDE -I${F2CPATH} -DPCRE_STATIC
LIBS = -lphast -lm ${CLAPACKPATH}/liblapack.a ${CLAPACKPATH}/libf2c.a ${CLAPACKPATH}/libblas.a
endif
# IMPORTANT: use the following two lines instead for versions of CLAPACK
-@@ -154,8 +154,8 @@ ifneq ($(TARGETOS), Windows)
- CFLAGS += -DSKIP_LAPACK
- LIBS = -lphast -lc -lm
- else
-- CFLAGS += -DSKIP_LAPACK -DPCRE_STATIC
-- LIBS = -lphast -lm
-+ CFLAGS += -DSKIP_LAPACK
-+ LIBS = -lphast -lm -lpcre
- endif
- endif
- endif
--- a/src/lib/Makefile
+++ b/src/lib/Makefile
@@ -3,7 +3,7 @@ PHAST := ${PHAST}/..
--
2.11.0
Attachment:
signature.asc
Description: PGP signature