pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/44598: lang/gcc44 is broken on NetBSD, with patches



>Number:         44598
>Category:       pkg
>Synopsis:       lang/gcc44 is broken on NetBSD, with patches
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Fri Feb 18 15:45:00 +0000 2011
>Originator:     Kai-Uwe Eckhardt
>Release:        5.1_STABLE i386
>Organization:
>Environment:
>Description:
lang/gcc44 does not build on NetBSD due to bugs in g++, gfortran
and java part. The following patches fixe C++ and Fortran, without affecting 
other platforms. Java remains broken, see PR 42138.
>How-To-Repeat:
Try make install in lang/gcc44 on NetBSD 5.1 or current (i386).
>Fix:
1) wip/gcc45/distinfo

$NetBSD: distinfo,v 1.4 2010/05/06 10:21:17 adam Exp $

SHA1 (gcc-4.5.2.tar.bz2) = ad5c440526c98fd17a74eab80c031af6b64d9c90
RMD160 (gcc-4.5.2.tar.bz2) = e1e9f590f5cf5f7029f1941328529a22919ee609
Size (gcc-4.5.2.tar.bz2) = 66328720 bytes
SHA1 (patch-aa) = 8746c7a9cc6e681f46c7563393ead9c8e4ca66cf
SHA1 (patch-ab) = 61bc2ebf150c6e471917e145d74e7795dc162194
SHA1 (patch-ad) = 55b5303b494dbef323bd59464c7c14863f81c6e3
SHA1 (patch-ae) = 031d78641504ab1d5a8a527f78650a6b7f6fdf39
SHA1 (patch-af) = 54fb9fb3438eb7c646b9d51b6b0cf3ded27d4989
SHA1 (patch-ag) = b58f8b82fcf17c60eb2700bc54d6625ca45e542b
SHA1 (patch-ah) = c9d0c4dab4de7dd63391760d38b120c46c778aaa
SHA1 (patch-ai) = e248b306a7314f15344aff56937b8f3059e5c851
SHA1 (patch-aj) = c435fa672da97385233e2c29b46299cfcc97bbf7


2) wip/gcc45/patches/patches-ah

--- gcc/fortran/f95-lang.c.orig 2010-06-15 14:17:16.000000000 +0200
+++ gcc/fortran/f95-lang.c
@@ -794,10 +794,17 @@
 
   gfc_define_builtin ("__builtin_cabsl", func_clongdouble_longdouble, 
                      BUILT_IN_CABSL, "cabsl", true);
+#if defined(__NetBSD__)
+  gfc_define_builtin ("__builtin_cabs", func_cdouble_double, 
+                     BUILT_IN_CABS, "__c99_cabs", true);
+  gfc_define_builtin ("__builtin_cabsf", func_cfloat_float, 
+                     BUILT_IN_CABSF, "__c99_cabsf", true);
+#else
   gfc_define_builtin ("__builtin_cabs", func_cdouble_double, 
                      BUILT_IN_CABS, "cabs", true);
   gfc_define_builtin ("__builtin_cabsf", func_cfloat_float, 
                      BUILT_IN_CABSF, "cabsf", true);
+#endif
  
   gfc_define_builtin ("__builtin_copysignl", mfunc_longdouble[1], 
                      BUILT_IN_COPYSIGNL, "copysignl", true);


3) wip/gcc45/patches/patch-ai

--- libgfortran/intrinsics/c99_functions.c.orig 2009-07-27 11:24:41.000000000 
+0200
+++ libgfortran/intrinsics/c99_functions.c
@@ -600,7 +600,7 @@
 {
   if (x > DBL_MAX || x < -DBL_MAX)
     {
-#ifdef HAVE_NEXTAFTERL
+#if 0
       static long double prechalf = nexafterl (0.5L, LDBL_MAX);
 #else
       static long double prechalf = 0.5L;


4) wip/gcc45/patches/patch-aj

--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig 2009-04-09 
17:00:19.000000000 +0200
+++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
@@ -42,17 +42,17 @@
     // NB: Offsets into ctype<char>::_M_table force a particular size
     // on the mask type. Because of this, we don't use an enum.
     typedef unsigned char              mask;
-    static const mask upper            = _U;
-    static const mask lower    = _L;
-    static const mask alpha    = _U | _L;
-    static const mask digit    = _N;
-    static const mask xdigit   = _N | _X;
-    static const mask space    = _S;
-    static const mask print    = _P | _U | _L | _N | _B;
-    static const mask graph    = _P | _U | _L | _N;
-    static const mask cntrl    = _C;
-    static const mask punct    = _P;
-    static const mask alnum    = _U | _L | _N;
+    static const mask upper            = _CTYPE_U;
+    static const mask lower    = _CTYPE_L;
+    static const mask alpha    = _CTYPE_U | _CTYPE_L;
+    static const mask digit    = _CTYPE_N;
+    static const mask xdigit   = _CTYPE_N | _CTYPE_X;
+    static const mask space    = _CTYPE_S;
+    static const mask print    = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | 
_CTYPE_B;
+    static const mask graph    = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N;
+    static const mask cntrl    = _CTYPE_C;
+    static const mask punct    = _CTYPE_P;
+    static const mask alnum    = _CTYPE_U | _CTYPE_L | _CTYPE_N;
   };
 
 _GLIBCXX_END_NAMESPACE


5) wip/gcc45/Makefile

# $NetBSD: Makefile,v 1.13 2010/05/06 10:21:17 adam Exp $

DISTNAME=               gcc-${GCC_VERSION}
PKGNAME=                gcc45-${GCC_VERSION}
CATEGORIES=             lang
MASTER_SITES=           ${MASTER_SITE_GNU:=gcc/gcc-${GCC_VERSION}/}
EXTRACT_SUFX=           .tar.bz2

MAINTAINER=             MarkoSchuetz%web.de@localhost
HOMEPAGE=               http://gcc.gnu.org/
COMMENT=                GNU Compiler Collection 4.5
LICENSE=                gnu-gpl-v2 AND gnu-gpl-v3 AND gnu-lgpl-v2 AND 
gnu-lgpl-v3

PKG_DESTDIR_SUPPORT=    user-destdir

USE_TOOLS+=             awk:run bash:run perl chmod \
                        gmake:run makeinfo msgfmt bison flex gm4 \
                        sed:run unzip

DEPENDS+=               zip-[0-9]*:../../archivers/zip

GCC_VERSION=            4.5.2

GCC_SUBPREFIX=          gcc45
GCC_PREFIX=             ${PREFIX}/${GCC_SUBPREFIX}
FILES_SUBST+=           PKGNAME=${PKGNAME}
MESSAGE_SUBST+=         GCC_PREFIX=${GCC_PREFIX}


# To avoid GNU surprises
CONFIG_SHELL=           ${TOOLS_PATH.bash}

NOT_FOR_PLATFORM=       Interix-*-*
UNLIMIT_RESOURCES+=     datasize
UNLIMIT_RESOURCES+=     stacksize

.include "../../mk/bsd.prefs.mk"
.include "options.mk"

# Determine whether to use binutils

# REPLACE_AWK+= gcc/testsuite/gcc.test-framework/test-framework.awk     \
#               gcc/mkmap-symver.awk                                    \
#               gcc/optc-gen.awk                                        \
#               gcc/mkmap-flat.awk                                      \
#               gcc/opt-gather.awk                                      \
#               gcc/opth-gen.awk                                        \
#               gcc/opt-functions.awk

REPLACE_BASH+= contrib/dg-cmp-results.sh
REPLACE_BASH+= contrib/reghunt/bin/gcc-svn-patchlist
REPLACE_BASH+= contrib/reghunt/bin/gcc-svn-update
REPLACE_BASH+= contrib/reghunt/bin/gcc-svn-update-fix
REPLACE_BASH+= contrib/reghunt/bin/reg-hunt
REPLACE_BASH+= contrib/reghunt/bin/reg-test
REPLACE_BASH+= contrib/reghunt/date_based/reg_periodic
REPLACE_BASH+= contrib/reghunt/date_based/reg_search
REPLACE_BASH+= gcc/dbgcnt.def
REPLACE_BASH+= gcc/testsuite/gcc.test-framework/gen_directive_tests
REPLACE_BASH+= libstdc++-v3/scripts/run_doxygen

# Optional languages - change as required
# Ada could be added although there is a bootstrapping issue.  See
# ../gcc34-ada for guidance
BUILD_DEFS+=            BUILD_CXX BUILD_FORTRAN BUILD_JAVA BUILD_OBJC
BUILD_CXX?=             YES
BUILD_FORTRAN?=         YES
BUILD_JAVA?=            NO
BUILD_OBJC?=            YES

LANGS= c

#.if !empty(BUILD_CXX:M[aA][dD][aA])
#LANGS+= ada
#.endif

.if !empty(BUILD_CXX:M[Yy][Ee][Ss])
LANGS+= c++
.endif

.if !empty(BUILD_FORTRAN:M[Yy][Ee][Ss])
LANGS+= fortran
.endif

.if !empty(BUILD_JAVA:M[Yy][Ee][Ss])
LANGS+= java
.endif

.if !empty(BUILD_OBJC:M[Yy][Ee][Ss])
LANGS+= objc
.endif


CONFIGURE_ARGS+=        --prefix=${GCC_PREFIX:Q}
CONFIGURE_ARGS+=        --enable-languages=${LANGS:Q}
CONFIGURE_ARGS+=        --with-system-zlib
CONFIGURE_ARGS+=        --enable-shared
CONFIGURE_ARGS+=        --enable-__cxa_atexit
CONFIGURE_ARGS+=        --enable-long-long
CONFIGURE_ARGS+=        --with-local-prefix=${GCC_PREFIX:Q}
CONFIGURE_ARGS+=        --disable-libssp
CONFIGURE_ARGS+=        --enable-threads=posix
CONFIGURE_ARGS+=        --with-gmp=${BUILDLINK_PREFIX.gmp}
CONFIGURE_ARGS+=        --with-mpfr=${BUILDLINK_PREFIX.mpfr}

CONFIGURE_ENV+=         CONFIG_SHELL=${CONFIG_SHELL}

# ${WRKSRC}/gcc-4.4.1/libjava/contrib/aotcompile.py.in stores the path to
# a 'make' program so we need to make sure we give it the installed 'make' and 
not
# the tool wrapped one.
CONFIGURE_ENV+=         PKGSRC_MAKE=${TOOLS_PATH.gmake}
MAKE_ENV+=              PKGSRC_MAKE=${TOOLS_PATH.gmake}


# fastjar-0.93 from pkgsrc/archivers/fastjar seems to trigger a build
# failure (seen on NetBSD-5.0/i386) when building java.  So in case
# the fastjar package is installed, make sure the configure script
# doesn't pick it up.
CONFIGURE_ENV+=         JAR=no
MAKE_ENV+=              JAR=no
MAKE_ENV+=              ac_cv_prog_JAR=no

MAKE_ENV+=              ICONVPREFIX=${BUILDLINK_PREFIX.iconv}
MAKE_ENV+=              SHELL=${CONFIG_SHELL}
MAKE_ENV+=              ac_cv_path_ac_cv_prog_chmod=${TOOLS_CHMOD}

# ${WRKSRC}/fixincludes/ looks for sed and compiles the path to sed into
# a binary so we need to make sure we give it the installed sed and not
# the tool wrapped one.
MAKE_ENV+=              lt_cv_path_SED=${TOOLS_SED}

CPPFLAGS+=              -I${BUILDLINK_DIR}/include
CFLAGS+=                -I${BUILDLINK_DIR}/include


# Somone should fix this so it will match the NetBSD system compiler
#.if ${OPSYS} == "NetBSD"
#GCC_PLATFORM=  ${LOWER_ARCH}--${LOWER_OPSYS}${APPEND_ELF}
#CONFIGURE_ARGS+=       --host=${GCC_PLATFORM:Q}
#MAKE_ENV+=             AR=/usr/bin/ar
#.endif # NetBSD

LIBS.SunOS+=            -lgmp

pre-configure:
.if ${OPSYS} == "DragonFly"
        ${CP} ${FILESDIR}/dragonfly.h ${WRKSRC}/gcc/config/dragonfly.h
        ${CP} ${FILESDIR}/dragonfly-spec.h ${WRKSRC}/gcc/config/dragonfly-spec.h
        ${CP} ${FILESDIR}/i386-dragonfly.h ${WRKSRC}/gcc/config/i386/dragonfly.h
        ${CP} ${FILESDIR}/i386-dragonfly64.h 
${WRKSRC}/gcc/config/i386/dragonfly64.h
.endif


do-configure:
        ${MKDIR} ${WRKDIR}/obj
        cd ${WRKDIR}/obj; ${SETENV} ${CONFIGURE_ENV} ${CONFIG_SHELL} 
${WRKSRC}/configure ${CONFIGURE_ARGS}

do-build:
        (${_ULIMIT_CMD} cd ${WRKDIR}/obj && ${SETENV} ${MAKE_ENV} ${GMAKE} 
-j${MAKE_JOBS:U1:Q} )

do-test:
.if (${MACHINE_GNU_ARCH} == "x86_64")
        (cd ${FILESDIR} && ${CP} netbsd64macro.dfs 
${WRKSRC}/gcc/testsuite/ada/acats/support/macro.dfs)
.endif
        (cd ${WRKDIR}/obj && ${GMAKE} -k check)

do-install:
        (cd ${WRKDIR}/obj && ${SETENV} ${MAKE_ENV} ${GMAKE} install 
DESTDIR=${DESTDIR} \
         && ${TEST} -f ${DESTDIR}${GCC_PREFIX}/bin/cc || ${LN} -f 
${DESTDIR}${GCC_PREFIX}/bin/gcc ${DESTDIR}${GCC_PREFIX}/bin/cc)

GENERATE_PLIST+=                                                        \
        cd ${DESTDIR}${PREFIX} && ${FIND} ${GCC_SUBPREFIX} \( -type f -o -type 
l \) -print \
        | ${SORT} ;

.include "../../devel/gmp/buildlink3.mk"
.include "../../math/mpcomplex/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../math/mpfr/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"



Home | Main Index | Thread Index | Old Index