ports/180337: devel/tnt: tnt_sparse_matrix_csr.h:97:3: error: no matching constructor for initialization of 'Array1D<int>'
O. Hartmann
ohartman at zedat.fu-berlin.de
Fri Jul 5 23:50:01 UTC 2013
>Number: 180337
>Category: ports
>Synopsis: devel/tnt: tnt_sparse_matrix_csr.h:97:3: error: no matching constructor for initialization of 'Array1D<int>'
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Jul 05 23:50:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: O. Hartmann
>Release: FreeBSD 10.0-CURRENT/amd64 and FreeBSD 9.1-STABLE/amd64
>Organization:
FU Berlin
>Environment:
>Description:
Compiling software packages utilizing port math/jama with CLANG (3.2/3.3) results in the error shown below. This error seems to be well known since 2011 (see for instance http://sourceforge.net/p/pymol/bugs/100/).
[...]
In file included from ForstnerOperator.cpp:7:
In file included from /usr/local/include/tnt/jama_lu.h:4:
In file included from /usr/local/include/tnt/tnt.h:55:
/usr/local/include/tnt/tnt_sparse_matrix_csr.h:97:3: error: no matching constructor for initialization of 'Array1D<int>'
rowptr_(M, r), colind_(nz, c), dim1_(M), dim2_(N) {}
^ ~~~~
/usr/local/include/tnt/tnt_array1d.h:63:11: note: candidate constructor not viable: no known conversion from 'const int *' to 'const int' for 2nd argument; dereference the argument with *
Array1D(int n, const T &a);
^
/usr/local/include/tnt/tnt_array1d.h:64:11: note: candidate constructor not viable: 2nd argument ('const int *') would lose const qualifier
Array1D(int n, T *a);
^
/usr/local/include/tnt/tnt_array1d.h:61:11: note: candidate constructor not viable: requires 0 arguments, but 2 were provided
Array1D();
^
/usr/local/include/tnt/tnt_array1d.h:62:11: note: candidate constructor not viable: requires single argument 'n', but 2 arguments were provided
explicit Array1D(int n);
^
/usr/local/include/tnt/tnt_array1d.h:65:14: note: candidate constructor not viable: requires single argument 'A', but 2 arguments were provided
inline Array1D(const Array1D &A);
^
In file included from ForstnerOperator.cpp:7:
In file included from /usr/local/include/tnt/jama_lu.h:4:
In file included from /usr/local/include/tnt/tnt.h:55:
/usr/local/include/tnt/tnt_sparse_matrix_csr.h:97:18: error: no matching constructor for initialization of 'Array1D<int>'
rowptr_(M, r), colind_(nz, c), dim1_(M), dim2_(N) {}
^ ~~~~~
/usr/local/include/tnt/tnt_array1d.h:63:11: note: candidate constructor not viable: no known conversion from 'const int *' to 'const int' for 2nd argument; dereference the argument with *
Array1D(int n, const T &a);
^
/usr/local/include/tnt/tnt_array1d.h:64:11: note: candidate constructor not viable: 2nd argument ('const int *') would lose const qualifier
Array1D(int n, T *a);
^
/usr/local/include/tnt/tnt_array1d.h:61:11: note: candidate constructor not viable: requires 0 arguments, but 2 were provided
Array1D();
^
/usr/local/include/tnt/tnt_array1d.h:62:11: note: candidate constructor not viable: requires single argument 'n', but 2 arguments were provided
explicit Array1D(int n);
^
/usr/local/include/tnt/tnt_array1d.h:65:14: note: candidate constructor not viable: requires single argument 'A', but 2 arguments were provided
inline Array1D(const Array1D &A);
^
>How-To-Repeat:
Try compiling a client using the mentioned constructor with CLANG (I use a USGS specific planetary software package called ISIS3 which compiles well with GCC and fails with CLANG with the mentioned error).
>Fix:
As mentioned and suggested at http://sourceforge.net/p/pymol/bugs/100/, change file tnt/tnt_sparse_matrix_csr.h according
--- tnt/tnt_sparse_matrix_csr.h.sav 2011-05-11 22:24:31.000000000 -0400
+++ tnt/tnt_sparse_matrix_csr.h 2011-05-11 22:29:32.000000000 -0400
@@ -49,8 +49,8 @@
private:
Array1D<T> val_; // data values (nz_ elements)
- Array1D<int> rowptr_; // row_ptr (dim_[0]+1 elements)
- Array1D<int> colind_; // col_ind (nz_ elements)
+ Array1D<T> rowptr_; // row_ptr (dim_[0]+1 elements)
+ Array1D<T> colind_; // col_ind (nz_ elements)
int dim1_; // number of rows
int dim2_; // number of cols
Find a patched version of the ports Makefile and patched file attached.
Patch attached with submission follows:
diff -Nur tnt.orig/Makefile tnt/Makefile
--- tnt.orig/Makefile 2013-07-05 21:37:29.000000000 +0200
+++ tnt/Makefile 2013-07-06 01:29:08.000000000 +0200
@@ -7,13 +7,14 @@
PORTNAME= tnt
PORTVERSION= 1.2.6
+PORTREVISION= 1
CATEGORIES= devel math
MASTER_SITES= http://math.nist.gov/tnt/
DISTNAME= ${PORTNAME}_126
.ifndef NOPORTDOCS
DISTFILES=${DISTNAME}${EXTRACT_SUFX} tnt120doc.zip
.endif
-DIST_SUBDIR= tnt
+DIST_SUBDIR= ${PORTNAME}
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
MAINTAINER= erik at bz.bzflag.bz
@@ -28,9 +29,14 @@
PORTDOCS= *
.endif
+extract:
+ @${MKDIR} ${WRKSRC}
+ @${EXTRACT_CMD} ${DISTDIR}/${DIST_SUBDIR}/${DISTNAME}${EXTRACT_SUFX} \
+ -d ${WRKSRC}
+
do-install:
${MKDIR} ${PREFIX}/include/tnt
- ${INSTALL_DATA} ${WRKDIR}/*.h ${PREFIX}/include/tnt
+ ${INSTALL_DATA} ${WRKSRC}/*.h ${PREFIX}/include/tnt
.ifndef NOPORTDOCS
${MKDIR} ${DOCSDIR}
${EXTRACT_CMD} ${DISTDIR}/${DIST_SUBDIR}/tnt120doc \
diff -Nur tnt.orig/files/patch-tnt_sparse_matrix_csr.h tnt/files/patch-tnt_sparse_matrix_csr.h
--- tnt.orig/files/patch-tnt_sparse_matrix_csr.h 1970-01-01 01:00:00.000000000 +0100
+++ tnt/files/patch-tnt_sparse_matrix_csr.h 2013-07-05 22:10:50.000000000 +0200
@@ -0,0 +1,13 @@
+--- tnt_sparse_matrix_csr.h.orig 2013-07-05 22:10:25.000000000 +0200
++++ tnt_sparse_matrix_csr.h 2013-07-05 22:10:35.000000000 +0200
+@@ -49,8 +49,8 @@
+
+ private:
+ Array1D<T> val_; // data values (nz_ elements)
+- Array1D<int> rowptr_; // row_ptr (dim_[0]+1 elements)
+- Array1D<int> colind_; // col_ind (nz_ elements)
++ Array1D<T> rowptr_; // row_ptr (dim_[0]+1 elements)
++ Array1D<T> colind_; // col_ind (nz_ elements)
+
+ int dim1_; // number of rows
+ int dim2_; // number of cols
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list