Date: Tue, 13 Mar 2012 14:34:43 GMT From: Oliver Hartmann <ohartman@zedat.fu-berlin.de> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/166010: math/superlu: also build shared object instead of only the static archive Message-ID: <201203131434.q2DEYhtj005641@red.freebsd.org> Resent-Message-ID: <201203131440.q2DEe3f3061675@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 166010 >Category: ports >Synopsis: math/superlu: also build shared object instead of only the static archive >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Tue Mar 13 14:40:02 UTC 2012 >Closed-Date: >Last-Modified: >Originator: Oliver Hartmann >Release: FreeBSD 9.0-STABLE/amd64, FreeBSD 10.0-CURRENT/amd64 >Organization: FU Berlin >Environment: >Description: Trying to do some ports (AMES stereopipeline, ASP) for FreeBSD ports, I ran into the issue that math/superlu isn't providing a suitable shared object to compile ASP against. It seems that Linux folks deal with teh problem providing the shared object, so I looked for a general solution on FreeBSD. Since I felt better having math/superlu building a shared object than fiddling around with the build environment provided by NASA's stereopipeline, I' like to provide hereby some patches. Please revise and merge them, if valuable. Regards, Oliver >How-To-Repeat: >Fix: Attached, you'll find a SHAR archive of the recent port. Patch attached with submission follows: # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # . # ./Makefile # ./distinfo # ./pkg-descr # ./pkg-plist # ./files # ./files/patch-SRC+sp_coletree.c # ./files/patch-make.inc # ./files/patch-SRC-Makefile # echo c - . mkdir -p . > /dev/null 2>&1 echo x - ./Makefile sed 's/^X//' >./Makefile << '464ef7c6571951809b23e262cbe26e19' X# New ports collection makefile for: SuperLU X# Date created: 31 Oct 97 X# Whom: Pedro Giffuni <giffunip@asme.org> X# X# $FreeBSD: ports/math/superlu/Makefile,v 1.42 2011/11/22 11:14:08 bf Exp $ X# X XPORTNAME= superlu XPORTREVISION= 3 XDISTVERSION= ${P_VERSION}.20060201 XCATEGORIES= math XMASTER_SITES= http://crd.lbl.gov/~xiaoye/SuperLU/ \ X http://crd.lbl.gov/~xiaoye/:doc XDISTNAME= ${PORTNAME}_${P_VERSION} X.ifndef NOPORTDOCS XDISTFILES= ${DISTNAME}${EXTRACT_SUFX} superlu_ug.pdf SLU_general.ps.gz:doc simax95.ps.gz:doc X.endif XDIST_SUBDIR= ${PORTNAME} XEXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} X XMAINTAINER= maho@FreeBSD.org XCOMMENT= A library of routines for performing sparse factorization X X.include <bsd.port.pre.mk> X X.if exists(${LOCALBASE}/lib/libgoto2.so) XWITH_BLAS?= gotoblas X.elif exists(${LOCALBASE}/lib/libatlas.so) XWITH_BLAS?= atlas X.else XWITH_BLAS?= reference X.endif X X. if ${WITH_BLAS} == reference XLIB_DEPENDS+= blas.2:${PORTSDIR}/math/blas XBLAS= -lblas X.elif ${WITH_BLAS} == gotoblas XLIB_DEPENDS+= goto2:${PORTSDIR}/math/gotoblas XBLAS= -lgoto2p X.elif ${WITH_BLAS} == atlas XLIB_DEPENDS+= atlas:${PORTSDIR}/math/atlas XBLAS= -lptf77blas X.endif X XUSE_FORTRAN= yes XUSE_LDCONFIG= yes X XP_VERSION= 3.0 XWRKSRC= ${WRKDIR}/SuperLU_${P_VERSION} XALL_TARGET= lib X XARCH2FIX= SRC/Makefile TESTING/MATGEN/Makefile CBLAS/Makefile make.inc \ X MAKE_INC/make.alpha MAKE_INC/make.inc X Xpre-build: X @${REINPLACE_CMD} -e 's+%%BLAS%%+-L${LOCALBASE}/lib ${BLAS}+ ; \ X s+%%CC%%+${CC}+; s+%%FC%%+${FC}+; \ X s+%%CFLAGS%%+${CFLAGS}+; \ X s+%%FFLAGS%%+${FFLAGS}+' \ X ${WRKSRC}/make.inc X.for fmk in ${ARCH2FIX} X @${REINPLACE_CMD} -e 's|^ARCH *.= ar|ARCMD = ar| ; \ X s|\$$(ARCH)|$$(ARCMD)|' ${WRKSRC}/${fmk} X.endfor X Xdo-install: X ${INSTALL_DATA} ${WRKSRC}/libsuperlu_${P_VERSION}.a \ X ${PREFIX}/lib/libsuperlu.a X ${INSTALL_DATA} ${WRKSRC}/libsuperlu_${P_VERSION}.so \ X ${PREFIX}/lib/libsuperlu.so.${PORTREVISION} X ${LN} -s ${PREFIX}/lib/libsuperlu.so.${PORTREVISION} \ X ${PREFIX}/lib/libsuperlu.so X @${MKDIR} ${PREFIX}/include/superlu X ${INSTALL_DATA} ${WRKSRC}/SRC/*.h ${PREFIX}/include/superlu X.if !defined(NOPORTDOCS) X @${MKDIR} ${DOCSDIR} X ${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/SLU_general.ps.gz ${DOCSDIR} X ${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/simax95.ps.gz ${DOCSDIR} X ${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/superlu_ug.pdf ${DOCSDIR} X.endif X Xregression-test: build X @(cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} testing ) X @(cd ${WRKSRC}/TESTING && ${CAT} *.out ) X X.include <bsd.port.post.mk> 464ef7c6571951809b23e262cbe26e19 echo x - ./distinfo sed 's/^X//' >./distinfo << 'aec8793adfd5b7c3f00e62ae41a09ac2' XSHA256 (superlu/superlu_3.0.tar.gz) = d0132a3a2fb6269dc8faa0b9ea9611764e8ca31265441f64cfc80485a86d5784 XSIZE (superlu/superlu_3.0.tar.gz) = 1134160 XSHA256 (superlu/superlu_ug.pdf) = 4657e60fb7832465b60e208613992d29b6bbd8110103bfe0f5cee0ab79b67766 XSIZE (superlu/superlu_ug.pdf) = 458405 XSHA256 (superlu/SLU_general.ps.gz) = 00d00cedfadd96a42014d22b30c0cc451a575d8d309774519068b11d4be1ebe5 XSIZE (superlu/SLU_general.ps.gz) = 89463 XSHA256 (superlu/simax95.ps.gz) = b7e7705a280336474a25b0a1aef57226d81ea0dc6f18728b7347cb1726f91d2a XSIZE (superlu/simax95.ps.gz) = 138096 aec8793adfd5b7c3f00e62ae41a09ac2 echo x - ./pkg-descr sed 's/^X//' >./pkg-descr << '0e313719ff012ceaf97a028d51caa8f5' X SuperLU (Version 3.0) X ===================== X XSuperLU is a general purpose library for the direct solution of large, Xsparse, nonsymmetric systems of linear equations on high performance Xmachines. The library is written in C and is callable from either C or XFortran. The library routines will perform an LU decomposition with Xpartial pivoting and triangular system solves through forward and back Xsubstitution. The LU factorization routines can handle non-square matrices Xbut the triangular solves are performed only for square matrices. The Xmatrix columns may be preordered (before factorization) either through Xlibrary or user supplied routines. This preordering for sparsity is Xcompletely separate from the factorization. Working precision iterative Xrefinement subroutines are provided for improved backward stability. XRoutines are also provided to equilibrate the system, estimate the Xcondition number, calculate the relative backward error, and estimate Xerror bounds for the refined solutions. X XWWW: http://crd.lbl.gov/~xiaoye/SuperLU/ X XDevelopers: Sherry Li X Jim Demmel X John Gilbert XNOTE: This library has to be linked with BLAS or a compatible library. 0e313719ff012ceaf97a028d51caa8f5 echo x - ./pkg-plist sed 's/^X//' >./pkg-plist << 'ef3e7f63841ae908ba397c2bef1fbad6' Xinclude/superlu/colamd.h Xinclude/superlu/old_colamd.h Xinclude/superlu/slu_Cnames.h Xinclude/superlu/slu_cdefs.h Xinclude/superlu/slu_dcomplex.h Xinclude/superlu/slu_ddefs.h Xinclude/superlu/slu_scomplex.h Xinclude/superlu/slu_sdefs.h Xinclude/superlu/slu_util.h Xinclude/superlu/slu_zdefs.h Xinclude/superlu/supermatrix.h Xlib/libsuperlu.a X@dirrm include/superlu X%%PORTDOCS%%%%DOCSDIR%%/SLU_general.ps.gz X%%PORTDOCS%%%%DOCSDIR%%/simax95.ps.gz X%%PORTDOCS%%%%DOCSDIR%%/superlu_ug.pdf X%%PORTDOCS%%@dirrm %%DOCSDIR%% ef3e7f63841ae908ba397c2bef1fbad6 echo c - ./files mkdir -p ./files > /dev/null 2>&1 echo x - ./files/patch-SRC+sp_coletree.c sed 's/^X//' >./files/patch-SRC+sp_coletree.c << 'e83dfe18c1d85c6574b6b73a9f0cc262' X--- SRC/sp_coletree.c.orig Fri Sep 26 08:22:05 2003 X+++ SRC/sp_coletree.c Thu Apr 1 20:29:10 2004 X@@ -2,6 +2,9 @@ X /* Elimination tree computation and layout routines */ X X #include <stdio.h> X+#ifndef __STDC__ X+#include <malloc.h> X+#endif X #include <stdlib.h> X #include "dsp_defs.h" X e83dfe18c1d85c6574b6b73a9f0cc262 echo x - ./files/patch-make.inc sed 's/^X//' >./files/patch-make.inc << '650cc8fcfb41dfc9614199c32fdf2980' X--- make.inc.orig 2006-01-02 00:52:00.000000000 +0100 X+++ make.inc 2012-03-13 14:59:15.000000000 +0100 X@@ -19,22 +19,23 @@ X # X TMGLIB = libtmglib.a X SUPERLULIB = libsuperlu_3.0.a X-BLASLIB = ../libblas.a X+SUPERLULIB_SHARED = libsuperlu_3.0.so X+BLASLIB = -L/usr/local/lib -lblas X X # X # The archiver and the flag(s) to use when building archive (library) X # If your system has no ranlib, set RANLIB = echo. X # X-ARCH = ar X+ARCMD = ar X ARCHFLAGS = cr X RANLIB = ranlib X X-CC = cc X-CFLAGS = -xO3 -xcg92 X-FORTRAN = f77 X-FFLAGS = -O X-LOADER = cc X-LOADOPTS = -xO3 X+CC ?= gcc46 X+CFLAGS ?= -O2 -pipe -O2 -fno-strict-aliasing -pipe -O3 -pipe -fno-strict-aliasing -march=native -Wl,-rpath=/usr/local/lib/gcc46 X+FORTRAN ?= gfortran46 X+FFLAGS ?= -O -Wl,-rpath=/usr/local/lib/gcc46 X+LOADER ?= gfortran46 X+LOADOPTS = X X # X # C preprocessor defs for compilation (-DNoChange, -DAdd_, or -DUpCase) 650cc8fcfb41dfc9614199c32fdf2980 echo x - ./files/patch-SRC-Makefile sed 's/^X//' >./files/patch-SRC-Makefile << '69c59906d11ae90b6b88c4e4f5f8dbd1' X--- SRC/Makefile.orig 2006-01-06 00:09:14.000000000 +0100 X+++ SRC/Makefile 2012-03-13 15:14:50.000000000 +0100 X@@ -89,28 +89,31 @@ X zcolumn_dfs.o zcolumn_bmod.o zpivotL.o zpruneL.o \ X zmemory.o zutil.o zmyblas2.o X X-all: single double complex complex16 X+all: single double complex complex16 shared X X single: $(SLUSRC) $(ALLAUX) $(LAAUX) $(SLASRC) $(SCLAUX) X- $(ARCH) $(ARCHFLAGS) ../$(SUPERLULIB) \ X+ $(ARCMD) $(ARCHFLAGS) ../$(SUPERLULIB) \ X $(SLUSRC) $(ALLAUX) $(LAAUX) $(SLASRC) $(SCLAUX) X $(RANLIB) ../$(SUPERLULIB) X X double: $(DLUSRC) $(ALLAUX) $(LAAUX) $(DLASRC) $(DZLAUX) X- $(ARCH) $(ARCHFLAGS) ../$(SUPERLULIB) \ X+ $(ARCMD) $(ARCHFLAGS) ../$(SUPERLULIB) \ X $(DLUSRC) $(ALLAUX) $(LAAUX) $(DLASRC) $(DZLAUX) X $(RANLIB) ../$(SUPERLULIB) X X complex: $(CLUSRC) $(ALLAUX) $(LAAUX) $(CLASRC) $(SCLAUX) X- $(ARCH) $(ARCHFLAGS) ../$(SUPERLULIB) \ X+ $(ARCMD) $(ARCHFLAGS) ../$(SUPERLULIB) \ X $(CLUSRC) $(ALLAUX) $(LAAUX) $(CLASRC) $(SCLAUX) X $(RANLIB) ../$(SUPERLULIB) X X complex16: $(ZLUSRC) $(ALLAUX) $(LAAUX) $(ZLASRC) $(DZLAUX) X- $(ARCH) $(ARCHFLAGS) ../$(SUPERLULIB) \ X+ $(ARCMD) $(ARCHFLAGS) ../$(SUPERLULIB) \ X $(ZLUSRC) $(ALLAUX) $(LAAUX) $(ZLASRC) $(DZLAUX) X $(RANLIB) ../$(SUPERLULIB) X X+shared: single double complex complex16 X+ $(CC) -shared -Wl,-soname=$(SUPERLULIB_SHARED) -o ../$(SUPERLULIB_SHARED) ../$(SUPERLULIB) X+ X X ################################## X # Do not optimize these routines # X@@ -125,3 +128,4 @@ X X clean: X rm -f *.o ../libsuperlu_3.0.a X+ rm -f *.o ../libsuperlu_3.0.so 69c59906d11ae90b6b88c4e4f5f8dbd1 exit >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201203131434.q2DEYhtj005641>