Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Aug 2003 16:08:03 +0200 (CEST)
From:      Thierry Thomas <thierry@pompo.net>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        Oliver Lehmann <oliver@FreeBSD.org>
Subject:   ports/55544: cad/metis-edf: unbreaking on Alpha.
Message-ID:  <20030813140803.C173222B9B1@ws90bj.pompo.net>
Resent-Message-ID: <200308131410.h7DEA69h017837@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         55544
>Category:       ports
>Synopsis:       cad/metis-edf: unbreaking on Alpha.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Aug 13 07:10:06 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Thierry Thomas
>Release:        FreeBSD 5.1-RELEASE i386
>Organization:
Kabbale Eros
>Environment:
System: FreeBSD ws90bj.pompo.net 5.1-RELEASE FreeBSD 5.1-RELEASE #0: Sat Aug 9 10:48:19 CEST 2003 thierry@ws90bj.pompo.net:/usr/obj/usr/src/sys/WS90BJ-030610 i386


	
>Description:
	Noticed by Kris on Bento: cad/metis-edf is broken on Apha.

	Actually, it builds, then there is a `make test', it eats all the
	CPU and never launches: there is a kind of loop in
	/usr/libexec/ld-elf.so.1.

	This problem has been solved by replacing $LD by $CC (with the flag
	verbose to check that everything is OK).

	After that, there was another problem due to the usage of int in the
	FORTRAN subprograms and long in the C functions.

	Remark: this program is also broken on other 64 bits platforms; this
	PR has been tested on i386 & alpha, but if we are lucky, it might
	unbreak everywhere...

	Credits:
	- thanks to Oliver Lehmann for an access to his Alpha machine;
	- thanks to Marcel Moolenaar on freebsd-alpha list for the LD trick.

>How-To-Repeat:
	See the logs on Bento, e.g.
	<http://bento.freebsd.org/errorlogs/alpha-4-latest/metis-edf-3.log>.

>Fix:
	Please apply the following patch.

	Remark: one new file, patch-Lib::proto.h.

--- metis-edf.diff begins here ---
diff -urN cad/metis-edf.orig/Makefile cad/metis-edf/Makefile
--- cad/metis-edf.orig/Makefile	Thu Jul 24 23:08:11 2003
+++ cad/metis-edf/Makefile	Wed Aug 13 15:14:05 2003
@@ -7,6 +7,7 @@
 
 PORTNAME=	metis-edf
 PORTVERSION=	3
+PORTREVISION=	1
 CATEGORIES=	cad
 MASTER_SITES=	http://www.code-aster.org/FICHIERS/metis/
 
@@ -16,10 +17,22 @@
 CONFLICTS=	metis-[0-9]*
 
 ALL_TARGET=	default
-MAKE_ENV+=	CC="${CC}" AR="${AR}" LD="${LD}" F77="${F77}"
+MAKE_ENV+=	CC="${CC}" AR="${AR}" F77="${F77}" FFLAGS="${FFLAGS}"
 USE_REINPLACE=	yes
+REINPLACE_ARGS=	-i ""
 
 F77?=		f77
+FFLAGS?=	-O2
+
+post-patch:
+.if ${MACHINE_ARCH} != "i386"
+	@${FIND} ${WRKSRC} -type f -name "*.c" -o -name "*.h" | ${XARGS}	\
+		${REINPLACE_CMD} -e "s|long int|int|g"				\
+			-e "s|long|int|g"					\
+			-e "s|\(%[[:digit:]]\)ld|\1d|g"				\
+			-e "s|\(%[[:digit:]]\.[[:digit:]]\)le|\1e|g"		\
+			-e "s|%ld|%d|g"
+.endif
 
 do-install:
 	@${CP} ${WRKSRC}/CONFIG/onmetis.in ${WRKSRC}/onmetis
diff -urN cad/metis-edf.orig/files/patch-CONFIG::configure cad/metis-edf/files/patch-CONFIG::configure
--- cad/metis-edf.orig/files/patch-CONFIG::configure	Sun Jun 29 18:39:40 2003
+++ cad/metis-edf/files/patch-CONFIG::configure	Wed Aug 13 15:04:47 2003
@@ -1,6 +1,14 @@
 --- CONFIG/configure.orig	Mon Dec 16 18:11:44 2002
-+++ CONFIG/configure	Sun Jun 29 14:58:48 2003
-@@ -18,7 +18,7 @@
++++ CONFIG/configure	Tue Aug 12 22:47:59 2003
+@@ -4,6 +4,7 @@
+ # SHELL defined by make (sh)
+ 
+ OS_TYPE=`uname -s`
++ARCHI=`uname -p`
+ if [ $OS_TYPE = "SunOS" ]; then
+  	OS_LEVEL=`uname -r`
+    OS_NIV=`echo $OS_LEVEL | awk -F'.' '{print $2}'`
+@@ -18,7 +19,7 @@
     if [ -z "$rtn" ] || [ "$rtn" = "y" -o "$rtn" = "Y" ]; then
        OS_TYPE=SunOS64
     fi
@@ -9,7 +17,7 @@
  	echo " Operating system $OS_TYPE unknown on this distribution"
  	echo " Installation failed !"
     exit 8
-@@ -30,14 +30,23 @@
+@@ -30,14 +31,25 @@
  # FOPTIONS : Fortran compiler options,
  # LDOPTIONS : link options, AR : archiver
  
@@ -24,9 +32,11 @@
 +if [ $OS_TYPE = "FreeBSD" ]; then
 +   CC="$CC"
 +   F90="$F77"
-+   LD="$LD"
++   LD="$CC -v"
 +   COPTIONS="$CFLAGS"
-+   LDOPTIONS="$LDFLAGS -lc -lg2c -L. -L.."
++   OPTFLAGS=""
++   FOPTIONS="$FFLAGS"
++   LDOPTIONS="$LDFLAGS -L. -L.."
 +   AR="$AR rv"
 +else
 +   CC="cc"
diff -urN cad/metis-edf.orig/files/patch-Lib::proto.h cad/metis-edf/files/patch-Lib::proto.h
--- cad/metis-edf.orig/files/patch-Lib::proto.h	Thu Jan  1 01:00:00 1970
+++ cad/metis-edf/files/patch-Lib::proto.h	Tue Aug 12 23:01:41 2003
@@ -0,0 +1,12 @@
+--- Lib/proto.h.orig	Thu Dec 12 13:47:59 2002
++++ Lib/proto.h	Tue Aug 12 22:53:22 2003
+@@ -456,7 +456,9 @@
+  void saxpy(long, float, float *, long, float *, long); 
+  void RandomPermute(long, idxtype *, long); 
+  double drand48(); 
++#if !defined(__FreeBSD__)
+  void srand48(long); 
++#endif
+  long ispow2(long); 
+  void InitRandom(long); 
+  long log2(long); 
diff -urN cad/metis-edf.orig/files/patch-Programs::Makefile cad/metis-edf/files/patch-Programs::Makefile
--- cad/metis-edf.orig/files/patch-Programs::Makefile	Sun Jun 29 18:39:40 2003
+++ cad/metis-edf/files/patch-Programs::Makefile	Wed Aug 13 15:10:51 2003
@@ -1,11 +1,11 @@
 --- Programs/Makefile.orig	Thu Dec 12 13:47:59 2002
-+++ Programs/Makefile	Sun Jun 29 15:39:26 2003
-@@ -11,7 +11,7 @@
++++ Programs/Makefile	Wed Aug 13 15:10:19 2003
+@@ -5,7 +5,7 @@
+ INCLUDES = -I../Lib 
+ CFLAGS = $(COPTIONS) $(OPTFLAGS) $(INCLUDES)
+ FFLAGS = $(FOPTIONS) $(OPTFLAGS) $(INCLUDES)
+-LIBS = -lmetis -lm
++LIBS = -lmetis -lm  -lg2c
+ METISLIB = ../libmetis.a
  
- 
- 
--ONMETISOBJS = onmetis.o io.o smbfactor.o ecri11.o lect11.o lect00.o
-+ONMETISOBJS = onmetis.o io.o smbfactor.o ecri11.o lect11.o lect00.o /usr/lib/crt1.o
- 
-  
  
--- metis-edf.diff ends here ---

>Release-Note:
>Audit-Trail:
>Unformatted:



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