Re: libc++ vs. libstdc++ usage in the ports tree
--huq684BweRXVnRxX
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Please commit (Approved by: portmgr(bapt)) if needed
regards,
Bapt
On Sun, Dec 01, 2013 at 03:06:40PM +0100, Tijl Coosemans wrote:
> 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 w=
ith:
> >>=20
> >> env LD_PRELOAD=3D/usr/lib/libc++.so.1 octave
> >>=20
> >> Some very light testing indicates that it is working. Of course, this =
is
> >> not ideal.
> >>=20
> >> Maybe this gives a clue how to fix the octave port properly.
> >=20
> > 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.
>=20
> The tests were successful:
> https://redports.org/buildarchive/20131201105316-94935/ (octave)
> https://redports.org/buildarchive/20131201115701-22333/ (octave-forge-bas=
e)
> The octave logs also contain the results of running the regression-test
> target. The output is the same on all FreeBSD versions.
>=20
> The problem is that USE_FORTRAN=3Dyes implies USE_GCC=3Dyes. 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++.
>=20
> The patch copies the USE_FORTRAN=3Dyes 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.
> Index: math/octave/Makefile
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- math/octave/Makefile (revision 335379)
> +++ math/octave/Makefile (working copy)
> @@ -3,7 +3,7 @@
> =20
> PORTNAME=3D octave
> PORTVERSION=3D 3.6.4
> -PORTREVISION=3D 6
> +PORTREVISION=3D 7
> CATEGORIES=3D math
> MASTER_SITES=3D ftp://ftp.gnu.org/gnu/octave/ \
> ftp://ftp.u-aizu.ac.jp/pub/SciEng/numanal/Octave/bleeding-edge/
> @@ -32,7 +32,7 @@ LIB_DEPENDS=3D GraphicsMagick:${PORTSDIR}/
> umfpack.1:${PORTSDIR}/math/suitesparse \
> glpk:${PORTSDIR}/math/glpk
> =20
> -USES=3D charsetfix gmake perl5 pkgconfig
> +USES=3D charsetfix fortran gmake perl5 pkgconfig
> USE_BZIP2=3D yes
> USE_PERL5=3D build
> USE_TEX=3D dvipsk:build
> @@ -74,8 +74,6 @@ BLAS=3D -lptf77blas
> LAPACK=3D -lalapack -lptcblas
> .endif
> =20
> -USE_FORTRAN=3D yes
> -
> OCTAVE_VERSION=3D ${PORTVERSION}
> GNU_HOST=3D ${ARCH}-portbld-freebsd${OSREL}
> PLIST_SUB=3D OCTAVE_VERSION=3D${OCTAVE_VERSION} GNU_HOST=3D${GNU_HOST}
> @@ -140,7 +138,8 @@ post-install:
> ${ECHO_CMD} @dirrm share/octave >> ${WRKDIR}/PLIST
> cd ${WRKDIR} ; ${SED} -i -e "/PLIST/ r PLIST" ${TMPPLIST}
> =20
> -check:
> +check: regression-test
> +regression-test: build
> (cd ${WRKSRC}; ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_ARGS} check)
> =20
> .include <bsd.port.post.mk>
> Index: math/octave/files/patch-configure
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- 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 ()
> + {
> +=20
> +- std::unordered_map m;
> ++ std::unordered_map<int, int> m;
> +=20
> + ;
> + return 0;
>=20
> 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
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- 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/>=
=2E */
> +=20
> +-#ifndef _@GUARD_PREFIX@_MATH_H
> ++#if 1
> +=20
> + #if __GNUC__ >=3D 3
> + @PRAGMA_SYSTEM_HEADER@
>=20
> 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
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- 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 =3D 0, int disp =3D 0, int maxi=
t =3D 300);
> + #endif
> +=20
> +-#ifndef _MSC_VER
> ++#if !defined(_MSC_VER) && !defined(__clang__)
> + template static octave_idx_type
> + lusolve (const SparseMatrix&, const SparseMatrix&, Matrix&);
> +=20
>=20
> 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
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- 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=3Dfortran
> +# Valid ARGS: does not require args
> +
> +.if !defined(_INCLUDE_USES_FORTRAN_MK)
> +_INCLUDE_USES_FORTRAN_MK=3D yes
> +
> +.if defined(fortran_ARGS)
> +IGNORE=3D USES=3Dfortran does not require args
> +.endif
> +
> +.if !defined(FC)
> +BUILD_DEPENDS+=3D gfortran46:${PORTSDIR}/lang/gcc
> +RUN_DEPENDS+=3D gfortran46:${PORTSDIR}/lang/gcc
> +
> +USE_BINUTILS=3D yes
> +
> +FC=3D gfortran46
> +FFLAGS+=3D -Wl,-rpath=3D${LOCALBASE}/lib/gcc46
> +LDFLAGS+=3D -Wl,-rpath=3D${LOCALBASE}/lib/gcc46
> +.endif
> +
> +CONFIGURE_ENV+=3D F77=3D"${FC}" FC=3D"${FC}" FFLAGS=3D"${FFLAGS}"
> +MAKE_ENV+=3D F77=3D"${FC}" FC=3D"${FC}" FFLAGS=3D"${FFLAGS}"
> +
> +.endif
>=20
> 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=3D%H
> \ No newline at end of property
--huq684BweRXVnRxX
Content-Type: application/pgp-signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.15 (FreeBSD)
iEUEARECAAYFAlKq8oAACgkQ8kTtMUmk6Ey18ACYnduqHLcGi/gUL5/2L49hxjIB
+wCfVJEE7/HsoOU1qOIqa67FhZ3sNXQ=
=9jOT
-----END PGP SIGNATURE-----
--huq684BweRXVnRxX--
討論串 (同標題文章)
完整討論串 (本文為第 5 之 8 篇):