From owner-freebsd-current@FreeBSD.ORG Sun Dec 1 14:07:53 2013 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B54D6801; Sun, 1 Dec 2013 14:07:53 +0000 (UTC) Received: from mailrelay003.isp.belgacom.be (mailrelay003.isp.belgacom.be [195.238.6.53]) by mx1.freebsd.org (Postfix) with ESMTP id 2D1BA1699; Sun, 1 Dec 2013 14:07:52 +0000 (UTC) X-Belgacom-Dynamic: yes X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmcGAPxBm1JR8Y7x/2dsb2JhbABZgwc4R7gUToEZF3SCJQEBBVYjEAsYCSUPKh4GARIJh3wBCL5JF48IB4QzA5Axh2KBMYsthTaDKjs Received: from 241.142-241-81.adsl-dyn.isp.belgacom.be (HELO kalimero.tijl.coosemans.org) ([81.241.142.241]) by relay.skynet.be with ESMTP; 01 Dec 2013 15:06:42 +0100 Received: from kalimero.tijl.coosemans.org (kalimero.tijl.coosemans.org [127.0.0.1]) by kalimero.tijl.coosemans.org (8.14.7/8.14.7) with ESMTP id rB1E6eOg033018; Sun, 1 Dec 2013 15:06:41 +0100 (CET) (envelope-from tijl@FreeBSD.org) Date: Sun, 1 Dec 2013 15:06:40 +0100 From: Tijl Coosemans To: stephen@FreeBSD.org, Maho Nakata , bapt@FreeBSD.org 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> <20131112175556.GA3319@troutmask.apl.washington.edu> <20131112201922.GA4330@troutmask.apl.washington.edu> <20131113173143.Horde.a-9M7JQ_vHo3tpDIMsGK6g1@webmail.df.eu> <5283CA3C.3080201@FreeBSD.org> <352D9465-9840-43F0-A3A9-327DC12B0967@FreeBSD.org> <20131114144555.GA22093@troutmask.apl.washington.edu> <52963A90.4000201@janh.de> <20131127204556.2974a3f5@kalimero.tijl.coosemans.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/sp.+OQgp.pRayk2rEtSgoni" Cc: Jan Henrik Sylvester , FreeBSD Current , Steve Kargl X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Dec 2013 14:07:53 -0000 --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 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 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 . */ + +-#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--