Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 1 Dec 2013 15:06:40 +0100
From:      Tijl Coosemans <tijl@FreeBSD.org>
To:        stephen@FreeBSD.org, Maho Nakata <maho@FreeBSD.org>, bapt@FreeBSD.org
Cc:        Jan Henrik Sylvester <me@janh.de>, FreeBSD Current <freebsd-current@FreeBSD.org>, Steve Kargl <sgk@troutmask.apl.washington.edu>
Subject:   Re: libc++ vs. libstdc++ usage in the ports tree
Message-ID:  <20131201150640.12ea18c8@kalimero.tijl.coosemans.org>
In-Reply-To: <20131127204556.2974a3f5@kalimero.tijl.coosemans.org>
References:  <77CB2B92-216A-4C80-B033-7E582B5F0DFC@FreeBSD.org> <20131112165422.GA2939@troutmask.apl.washington.edu> <E0FE40D9-726C-4501-B31A-3622510C1C68@FreeBSD.org> <20131112175556.GA3319@troutmask.apl.washington.edu> <20131112201922.GA4330@troutmask.apl.washington.edu> <20131113173143.Horde.a-9M7JQ_vHo3tpDIMsGK6g1@webmail.df.eu> <CAFMmRNxk25AJ3TMuceSG=EmL3qSE9Xhk_wpL5pAD8YvZrA6gkg@mail.gmail.com> <5283CA3C.3080201@FreeBSD.org> <352D9465-9840-43F0-A3A9-327DC12B0967@FreeBSD.org> <B2F7EDA4-DF34-4D5D-B995-5ADA1A9898D8@FreeBSD.org> <20131114144555.GA22093@troutmask.apl.washington.edu> <52963A90.4000201@janh.de> <20131127204556.2974a3f5@kalimero.tijl.coosemans.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--MP_/sp.+OQgp.pRayk2rEtSgoni
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Wed, 27 Nov 2013 20:45:56 +0100 Tijl Coosemans wrote:
> On Wed, 27 Nov 2013 19:31:44 +0100 Jan Henrik Sylvester wrote:
>> Trying to migrate to 10, I would like to keep octave. Have you found
>> anything new? Having build the port and all dependencies with standard
>> options, octave is segfaulting for me, too. Anyhow, I can run octave with:
>> 
>> env LD_PRELOAD=/usr/lib/libc++.so.1 octave
>> 
>> Some very light testing indicates that it is working. Of course, this is
>> not ideal.
>> 
>> Maybe this gives a clue how to fix the octave port properly.
> 
> I have a preliminary patch for math/octave that I wanted to test on
> redports first, but it is down at the moment so here it is.

The tests were successful:
https://redports.org/buildarchive/20131201105316-94935/ (octave)
https://redports.org/buildarchive/20131201115701-22333/ (octave-forge-base)
The octave logs also contain the results of running the regression-test
target.  The output is the same on all FreeBSD versions.

The problem is that USE_FORTRAN=yes implies USE_GCC=yes.  This means
the C++ code in math/octave is compiled with gcc46/libstdc++ which
does not work if dependencies have been built with clang/libc++.

The patch copies the USE_FORTRAN=yes logic from Mk/bsd.gcc.mk into a
new file Mk/Uses/fortran.mk.  It allows ports to use a Fortran compiler
together with the base system C/C++ compiler.
--MP_/sp.+OQgp.pRayk2rEtSgoni
Content-Type: text/x-patch
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=octave-fortran.patch

Index: math/octave/Makefile
===================================================================
--- math/octave/Makefile	(revision 335379)
+++ math/octave/Makefile	(working copy)
@@ -3,7 +3,7 @@
 
 PORTNAME=	octave
 PORTVERSION=	3.6.4
-PORTREVISION=	6
+PORTREVISION=	7
 CATEGORIES=	math
 MASTER_SITES=	ftp://ftp.gnu.org/gnu/octave/ \
 		ftp://ftp.u-aizu.ac.jp/pub/SciEng/numanal/Octave/bleeding-edge/
@@ -32,7 +32,7 @@ LIB_DEPENDS=	GraphicsMagick:${PORTSDIR}/
 		umfpack.1:${PORTSDIR}/math/suitesparse \
 		glpk:${PORTSDIR}/math/glpk
 
-USES=		charsetfix gmake perl5 pkgconfig
+USES=		charsetfix fortran gmake perl5 pkgconfig
 USE_BZIP2=	yes
 USE_PERL5=	build
 USE_TEX=	dvipsk:build
@@ -74,8 +74,6 @@ BLAS=		-lptf77blas
 LAPACK=		-lalapack -lptcblas
 .endif
 
-USE_FORTRAN=	yes
-
 OCTAVE_VERSION=	${PORTVERSION}
 GNU_HOST=	${ARCH}-portbld-freebsd${OSREL}
 PLIST_SUB=	OCTAVE_VERSION=${OCTAVE_VERSION} GNU_HOST=${GNU_HOST}
@@ -140,7 +138,8 @@ post-install:
 	${ECHO_CMD} @dirrm share/octave >> ${WRKDIR}/PLIST
 	cd ${WRKDIR} ; ${SED} -i -e "/PLIST/ r PLIST" ${TMPPLIST}
 
-check:
+check: regression-test
+regression-test: build
 	(cd ${WRKSRC}; ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_ARGS} check)
 
 .include <bsd.port.post.mk>
Index: math/octave/files/patch-configure
===================================================================
--- math/octave/files/patch-configure	(revision 0)
+++ math/octave/files/patch-configure	(working copy)
@@ -0,0 +1,11 @@
+--- configure.orig	2013-02-21 21:21:49.000000000 +0100
++++ configure	2013-11-22 20:34:49.000000000 +0100
+@@ -58248,7 +58248,7 @@
+ main ()
+ {
+ 
+-      std::unordered_map m;
++      std::unordered_map<int, int> m;
+ 
+   ;
+   return 0;

Property changes on: math/octave/files/patch-configure
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: math/octave/files/patch-libgnu-math.in.h
===================================================================
--- math/octave/files/patch-libgnu-math.in.h	(revision 0)
+++ math/octave/files/patch-libgnu-math.in.h	(working copy)
@@ -0,0 +1,11 @@
+--- libgnu/math.in.h.orig	2013-02-21 21:21:17.000000000 +0100
++++ libgnu/math.in.h	2013-11-22 12:35:47.000000000 +0100
+@@ -17,7 +17,7 @@
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+ 
+-#ifndef _@GUARD_PREFIX@_MATH_H
++#if 1
+ 
+ #if __GNUC__ >= 3
+ @PRAGMA_SYSTEM_HEADER@

Property changes on: math/octave/files/patch-libgnu-math.in.h
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: math/octave/files/patch-liboctave-eigs-base.cc
===================================================================
--- math/octave/files/patch-liboctave-eigs-base.cc	(revision 0)
+++ math/octave/files/patch-liboctave-eigs-base.cc	(working copy)
@@ -0,0 +1,11 @@
+--- liboctave/eigs-base.cc.orig	2013-02-21 21:19:24.000000000 +0100
++++ liboctave/eigs-base.cc	2013-11-22 20:19:19.000000000 +0100
+@@ -3832,7 +3832,7 @@
+                              bool cholB = 0, int disp = 0, int maxit = 300);
+ #endif
+ 
+-#ifndef _MSC_VER
++#if !defined(_MSC_VER) && !defined(__clang__)
+ template static octave_idx_type
+ lusolve (const SparseMatrix&, const SparseMatrix&, Matrix&);
+ 

Property changes on: math/octave/files/patch-liboctave-eigs-base.cc
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: Mk/Uses/fortran.mk
===================================================================
--- Mk/Uses/fortran.mk	(revision 0)
+++ Mk/Uses/fortran.mk	(working copy)
@@ -0,0 +1,32 @@
+# $FreeBSD$
+#
+# Establish Fortran-capable compiler as a build dependency
+#
+# MAINTAINER:	ports@FreeBSD.org
+#
+# Feature:	fortran
+# Usage:	USES=fortran
+# Valid ARGS:	does not require args
+
+.if !defined(_INCLUDE_USES_FORTRAN_MK)
+_INCLUDE_USES_FORTRAN_MK=	yes
+
+.if defined(fortran_ARGS)
+IGNORE=		USES=fortran does not require args
+.endif
+
+.if !defined(FC)
+BUILD_DEPENDS+=	gfortran46:${PORTSDIR}/lang/gcc
+RUN_DEPENDS+=	gfortran46:${PORTSDIR}/lang/gcc
+
+USE_BINUTILS=	yes
+
+FC=		gfortran46
+FFLAGS+=	-Wl,-rpath=${LOCALBASE}/lib/gcc46
+LDFLAGS+=	-Wl,-rpath=${LOCALBASE}/lib/gcc46
+.endif
+
+CONFIGURE_ENV+=	F77="${FC}" FC="${FC}" FFLAGS="${FFLAGS}"
+MAKE_ENV+=	F77="${FC}" FC="${FC}" FFLAGS="${FFLAGS}"
+
+.endif

Property changes on: Mk/Uses/fortran.mk
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+FreeBSD=%H
\ No newline at end of property

--MP_/sp.+OQgp.pRayk2rEtSgoni--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20131201150640.12ea18c8>