diff options
author | Justin Lecher <jlec@gentoo.org> | 2010-04-05 21:15:30 +0000 |
---|---|---|
committer | Justin Lecher <jlec@gentoo.org> | 2010-04-05 21:15:30 +0000 |
commit | f9f20d385b99f19de639322a3899e18b1ac35657 (patch) | |
tree | 5185266352cd9ca375ea91de5abaf74ae6e0f17e /sci-chemistry/cns | |
parent | x86 stable wrt bug #305295 (diff) | |
download | historical-f9f20d385b99f19de639322a3899e18b1ac35657.tar.gz historical-f9f20d385b99f19de639322a3899e18b1ac35657.tar.bz2 historical-f9f20d385b99f19de639322a3899e18b1ac35657.zip |
Ifort support
Package-Manager: portage-2.2_rc67/cvs/Linux x86_64
Diffstat (limited to 'sci-chemistry/cns')
-rw-r--r-- | sci-chemistry/cns/ChangeLog | 8 | ||||
-rw-r--r-- | sci-chemistry/cns/Manifest | 10 | ||||
-rw-r--r-- | sci-chemistry/cns/cns-1.2.1-r4.ebuild | 222 | ||||
-rw-r--r-- | sci-chemistry/cns/files/1.2.1-ifort.patch | 126 |
4 files changed, 361 insertions, 5 deletions
diff --git a/sci-chemistry/cns/ChangeLog b/sci-chemistry/cns/ChangeLog index c30aa50ae0ff..07d51acb8a5b 100644 --- a/sci-chemistry/cns/ChangeLog +++ b/sci-chemistry/cns/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for sci-chemistry/cns # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/cns/ChangeLog,v 1.22 2010/04/04 07:08:14 jlec Exp $ +# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/cns/ChangeLog,v 1.23 2010/04/05 21:15:30 jlec Exp $ + +*cns-1.2.1-r4 (05 Apr 2010) + + 05 Apr 2010; Justin Lecher <jlec@gentoo.org> +files/1.2.1-ifort.patch, + +cns-1.2.1-r4.ebuild: + Ifort support 04 Apr 2010; Justin Lecher <jlec@gentoo.org> Manifest: distfile digest fix diff --git a/sci-chemistry/cns/Manifest b/sci-chemistry/cns/Manifest index c32910e4fea4..1af3c73b2618 100644 --- a/sci-chemistry/cns/Manifest +++ b/sci-chemistry/cns/Manifest @@ -7,6 +7,7 @@ AUX 1.2.1-allow-gcc-openmp.patch 926 RMD160 b8ccec007a717c53ca15731b1b5637bb067d AUX 1.2.1-aria.patch 15006 RMD160 b358747845e8d53f450e654f493dedbe400f537f SHA1 234dde547748ba95eb7b94ffac7bfcc9bfd22991 SHA256 08585a1e88b8b8da0f983e934a2859b128e4cba5e714af3b6ed40f334fdbe982 AUX 1.2.1-aria2.3.patch 658 RMD160 a372156b7a783cb78c81aadae2eca5c64c9630e5 SHA1 b3cb35d793d7aa01c2c14ea7848a29b81a735bdd SHA256 c393799beabda5f61a7dcad9aaa4d211c14eb17b1ffd5200c3306c7ef71d19f3 AUX 1.2.1-gentoo.patch 2411 RMD160 a82893524541961a9797fd2bb84982e609fda717 SHA1 7d3168a9cf7622923138022a5683aa65b5d5c34d SHA256 58972606d23d87fdeb08c9e37d9d5c536983e5a1ad4647dedd5b283ef67bc52c +AUX 1.2.1-ifort.patch 5346 RMD160 106cf7dc7b4e13674fdf34ca0fd9af78effbc84b SHA1 26ccc71740ee2539352009f730b79b2ae20b5047 SHA256 bac35147159fac06fcb3a03a4f09c56224d4ee852b86a771121d98c42f3a9c65 AUX 1.2.1-parallel.patch 641 RMD160 dffcaf7a4d7c79b9362640b64e677a7fde04ac80 SHA1 5de790cee7acf9ff4a87a61fdc866c330ef6d6f1 SHA256 7cd3312c35d2dbbd2146fdfa977f9866365c4a7be16787b1ba5d9807ff823d31 AUX cns_solve_env_sh 7070 RMD160 4104b22476a61a80c7adae8a363da1dd4ab4f136 SHA1 30ba978f4862fd94d9fa939cbb7c3eb55ece46cd SHA256 da571cba2a2244e571870b1783fd6cdce1b595e14234cfb43011e9e9eb50151c DIST aria2.2.tar.gz 1710084 RMD160 b96a900befd5521649ccce84d4d5b93d30709799 SHA1 faa5ff9e7682026afc334f1c8b3b10259a5e69f9 SHA256 a1695ee11b06a045c4b4bb9f0113d1e48c86e12d4149c0dcb505ca894069d054 @@ -22,14 +23,15 @@ EBUILD cns-1.2-r1.ebuild 4467 RMD160 cc3f1a26a8c28c111f25b74572dc4af3bb1d56c9 SH EBUILD cns-1.2.1-r1.ebuild 5531 RMD160 93f382ecb94f6b6a21108182a2aae18547bc704a SHA1 f80f7203f79cd527b2ccdd2755971a21a6b87cba SHA256 0866f9e38ce28d128db71974d1832f7fc6124f0d11b02f90111cd8a5434b075c EBUILD cns-1.2.1-r2.ebuild 6085 RMD160 bbf32a77b2c3d84becb95d390704b77943348ac1 SHA1 4e09e5ce780edb8f78eea2456be1aebd0ebef3a9 SHA256 26812e41de70704d1327b5e9abcdd73eb63b03162aa0ff3e340594d1da0506ec EBUILD cns-1.2.1-r3.ebuild 6212 RMD160 c42de027f4b43219617f1ff14ee7f2183719ba38 SHA1 d4c2c9155047d1da4225af0f9f8d391ed02b53f9 SHA256 9bb0e75981db8f7feff60465311b4840b398c1f8a095dfe0ebc9a3888d59addc +EBUILD cns-1.2.1-r4.ebuild 6536 RMD160 2d6ffd2f5d33cb1ee82f1941a845f2880b7196f1 SHA1 862abc4c0324cda2bff4a1624b8172517f7e833e SHA256 c7c92a842e450e203f1098b05edd9a82545c331b008b4b7ece8a63539685774f EBUILD cns-1.2.1.ebuild 5574 RMD160 23000fd54ce250a3dbf40ab71d12c539fda0d9fd SHA1 42c852c40d23eeec1280359d5adfe8c51a7ebf24 SHA256 7c1f6871416f516773af3cd23d8be9c2b0e978401898d5932622a2dd2b121301 EBUILD cns-1.2.ebuild 3497 RMD160 9e097171ebd44f1a7e5dd317beeb6b65aefac2f6 SHA1 3afc4b415d2ef559b717843a05bc6afb8ee651a2 SHA256 1a6094c8bca3797e62c375a2370cc7425e9c1dd1106d20f202681bc5a87da1fc -MISC ChangeLog 4009 RMD160 128a7099f4c412edfaad7262854e15673d40c83e SHA1 68560988c3e219ea3861064468ca5526471918d1 SHA256 3d0805ba87e9381040bd1c1c6dcea16fafb1a7b67764f863b2ae35c74e05be4a +MISC ChangeLog 4152 RMD160 3cb037666c2b579e81527d08e8917d72fce107ec SHA1 03d46a719f4af3051e22e004ee9044975d41ad76 SHA256 470bf8329e75d21ddd59f7ea31f3b037f00da24ce6a76bc7ae0d358b888b636f MISC metadata.xml 302 RMD160 d60d9cd875115eaba68ad4b504bff76b39a136b0 SHA1 ecdd8feeea2de489927403f1941acfc582c17222 SHA256 a374144760a8ac1f72b1c625c41f98cee3f74511c964133bda119da580664c50 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (GNU/Linux) -iEYEARECAAYFAku4OuQACgkQgAnW8HDreRaHgwCdHYhbgIsFMAHJLLP4uGnENpL5 -GVsAn0OQUTBs9Qp+r32tx4XSex5yNuA7 -=6J6J +iEYEARECAAYFAku6UvcACgkQgAnW8HDreRYpsgCfXT5xGtA0TaZIx2eFf0wzdIxa +Ei0AoIbsOb831iB/oM9XBi1f8mqM3h47 +=rN// -----END PGP SIGNATURE----- diff --git a/sci-chemistry/cns/cns-1.2.1-r4.ebuild b/sci-chemistry/cns/cns-1.2.1-r4.ebuild new file mode 100644 index 000000000000..47f07c3a834e --- /dev/null +++ b/sci-chemistry/cns/cns-1.2.1-r4.ebuild @@ -0,0 +1,222 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/cns/cns-1.2.1-r4.ebuild,v 1.1 2010/04/05 21:15:30 jlec Exp $ + +EAPI="3" + +inherit eutils fortran toolchain-funcs versionator flag-o-matic + +MY_PN="${PN}_solve" +MY_PV="$(delete_version_separator 2)" +MY_P="${MY_PN}_${MY_PV}" + +DESCRIPTION="Crystallography and NMR System" +HOMEPAGE="http://cns.csb.yale.edu/" +SRC_URI="${MY_P}_all-mp.tar.gz + aria? ( aria2.3.1.tar.gz )" + +SLOT="0" +LICENSE="cns" +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" +IUSE="aria openmp" + +RDEPEND="app-shells/tcsh + !app-text/dos2unix" +DEPEND="${RDEPEND}" +PDEPEND="aria? ( ~sci-chemistry/aria-2.3.1 )" + +RESTRICT="fetch" +S="${WORKDIR}/${MY_P}" + +FORTRAN="gfortran ifc" + +pkg_nofetch() { + elog "Fill out the form at http://cns.csb.yale.edu/cns_request/" + use aria && elog "and http://aria.pasteur.fr/" + elog "and place these files:" + elog ${A} + elog "in ${DISTDIR}." +} + +pkg_setup() { + fortran_pkg_setup + + if [[ $(tc-getCC) == *gcc* ]] && + ( [[ $(gcc-major-version)$(gcc-minor-version) -lt 42 ]] || + ! built_with_use sys-devel/gcc openmp ) + then + ewarn "You are using gcc and OpenMP is only available with gcc >= 4.2 " + ewarn "Switch CC to an OpenMP capable compiler" + fi +} + +src_prepare() { + epatch "${FILESDIR}"/${PV}-gentoo.patch + epatch "${FILESDIR}"/${PV}-parallel.patch + + if use aria; then + pushd "${WORKDIR}"/aria* >& /dev/null + # Update the cns sources in aria for version 1.2.1 + epatch "${FILESDIR}"/1.2.1-aria2.3.patch + + # Update the code with aria specific things + cp -rf cns/src/* "${S}"/source/ + popd >& /dev/null + fi + + # the code uses Intel-compiler-specific directives + if [[ ${FORTRANC} == gfortran ]]; then + epatch "${FILESDIR}"/${PV}-allow-gcc-openmp.patch + use openmp && \ + OMPLIB="-lgomp" && append-flags -fopenmp + COMP="gfortran" + use amd64 && \ + append-fflags -fdefault-integer-8 + else + epatch "${FILESDIR}"/${PV}-ifort.patch + use openmp && OMPLIB="-lgomp" && \ + append-flags -openmp && append-ldflags -openmp + COMP="ifort" + use amd64 && append-fflags -i8 + append-fflags -Vaxlib + append-ldflags -Vaxlib + fi + + use amd64 && \ + append-cflags "-DINTEGER='long long int'" + + # Set up location for the build directory + # Uses obsolete `sort` syntax, so we set _POSIX2_VERSION + cp "${FILESDIR}"/cns_solve_env_sh "${T}"/ + sed -i \ + -e "s:_CNSsolve_location_:${S}:g" \ + -e "17 s:\(.*\):\1\nsetenv _POSIX2_VERSION 199209:g" \ + "${S}"/cns_solve_env + sed -i \ + -e "s:_CNSsolve_location_:${S}:g" \ + -e "17 s:\(.*\):\1\nexport _POSIX2_VERSION; _POSIX2_VERSION=199209:g" \ + "${T}"/cns_solve_env_sh + + einfo "Fixing shebangs..." + find "${S}" -type f \ + -exec sed "s:/bin/csh:${EPREFIX}/bin/csh:g" -i '{}' \; || die +} + +src_compile() { + local GLOBALS + local MALIGN + if [[ ${FORTRANC} = g77 ]]; then + GLOBALS="-fno-globals" + MALIGN='\$(CNS_MALIGN_I86)' + fi + + # Set up the compiler to use + pushd instlib/machine/unsupported/g77-unix 2>/dev/null + ln -s Makefile.header Makefile.header.${FORTRANC} || die + popd 2>/dev/null + + # make install really means build, since it's expected to be used in-place + # -j1 doesn't mean we do no respect MAKEOPTS! + emake -j1 \ + CC="$(tc-getCC)" \ + F77="${FORTRANC}" \ + LD="${FORTRANC}" \ + CCFLAGS="${CFLAGS} -DCNS_ARCH_TYPE_\$(CNS_ARCH_TYPE) \$(EXT_CCFLAGS)" \ + LDFLAGS="${LDFLAGS}" \ + F77OPT="${FFLAGS:- -O2} ${MALIGN}" \ + F77STD="${GLOBALS}" \ + OMPLIB="${OMPLIB}" \ + compiler="${COMP}" \ + install \ + || die "emake failed" + +} + +src_test() { + # We need to force on g77 manually, because we can't get aliases working + # when we source in a -c + einfo "Running tests ..." + sh -c \ + "export CNS_G77=ON; source ${T}/cns_solve_env_sh; make run_tests" \ + || die "tests failed" + einfo "Displaying test results ..." + cat "${S}"/*_g77/test/*.diff-test +} + +src_install() { + # Install to locations resembling FHS + sed -i \ + -e "s:${S}:usr:g" \ + -e "s:^\(setenv CNS_SOLVE.*\):\1\nsetenv CNS_ROOT ${EPREFIX}/usr:g" \ + -e "s:^\(setenv CNS_SOLVE.*\):\1\nsetenv CNS_DATA \$CNS_ROOT/share/cns:g" \ + -e "s:^\(setenv CNS_SOLVE.*\):\1\nsetenv CNS_DOC \$CNS_ROOT/share/doc/${PF}:g" \ + -e "s:CNS_LIB \$CNS_SOLVE/libraries:CNS_LIB \$CNS_DATA/libraries:g" \ + -e "s:CNS_MODULE \$CNS_SOLVE/modules:CNS_MODULE \$CNS_DATA/modules:g" \ + -e "s:CNS_HELPLIB \$CNS_SOLVE/helplib:CNS_HELPLIB \$CNS_DATA/helplib:g" \ + -e "s:\$CNS_SOLVE/bin/cns_info:\$CNS_DATA/cns_info:g" \ + "${S}"/cns_solve_env + # I don't entirely understand why the sh version requires a leading / + # for CNS_SOLVE and CNS_ROOT, but it does + sed -i \ + -e "s:${S}:/usr:g" \ + -e "s:^\(^[[:space:]]*CNS_SOLVE=.*\):\1\nexport CNS_ROOT=${EPREFIX}/usr:g" \ + -e "s:^\(^[[:space:]]*CNS_SOLVE=.*\):\1\nexport CNS_DATA=\$CNS_ROOT/share/cns:g" \ + -e "s:^\(^[[:space:]]*CNS_SOLVE=.*\):\1\nexport CNS_DOC=\$CNS_ROOT/share/doc/${PF}:g" \ + -e "s:CNS_LIB=\$CNS_SOLVE/libraries:CNS_LIB=\$CNS_DATA/libraries:g" \ + -e "s:CNS_MODULE=\$CNS_SOLVE/modules:CNS_MODULE=\$CNS_DATA/modules:g" \ + -e "s:CNS_HELPLIB=\$CNS_SOLVE/helplib:CNS_HELPLIB=\$CNS_DATA/helplib:g" \ + -e "s:\$CNS_SOLVE/bin/cns_info:\$CNS_DATA/cns_info:g" \ + "${T}"/cns_solve_env_sh + + # Get rid of setup stuff we don't need in the installed script + sed -i \ + -e "83,$ d" \ + -e "37,46 d" \ + "${S}"/cns_solve_env + sed -i \ + -e "84,$ d" \ + -e "39,50 d" \ + "${T}"/cns_solve_env_sh + + newbin "${S}"/*linux*/bin/cns_solve* cns_solve \ + || die "install cns_solve failed" + + # Can be run by either cns_solve or cns + dosym cns_solve /usr/bin/cns + + # Don't want to install this + rm -f "${S}"/*linux*/utils/Makefile + + dobin "${S}"/*linux*/utils/* || die "install utils failed" + + sed -i \ + -e "s:\$CNS_SOLVE/doc/:\$CNS_SOLVE/share/doc/${PF}/:g" \ + "${S}"/bin/cns_web || die + + dobin "${S}"/bin/cns_{edit,header,transfer,web} || die "install bin failed" + + insinto /usr/share/cns + doins -r "${S}"/libraries "${S}"/modules "${S}"/helplib || die + doins "${S}"/bin/cns_info || die + + insinto /etc/profile.d + newins "${S}"/cns_solve_env cns_solve_env.csh || die + newins "${T}"/cns_solve_env_sh cns_solve_env.sh || die + + dohtml \ + -A iq,cgi,csh,cv,def,fm,gif,hkl,inp,jpeg,lib,link,list,mask,mtf,param,pdb,pdf,pl,ps,sc,sca,sdb,seq,tbl,top \ + -f all_cns_info_template,omac,def \ + -r doc/html/* || die +} + +pkg_info() { + if use openmp; then + elog "Set OMP_NUM_THREADS to the number of threads you want." + elog "If you get segfaults on large structures, set the GOMP_STACKSIZE" + elog "variable if using gcc (16384 should be good)." + fi +} + +pkg_postinst() { + pkg_info +} diff --git a/sci-chemistry/cns/files/1.2.1-ifort.patch b/sci-chemistry/cns/files/1.2.1-ifort.patch new file mode 100644 index 000000000000..ba44bebd1b68 --- /dev/null +++ b/sci-chemistry/cns/files/1.2.1-ifort.patch @@ -0,0 +1,126 @@ +diff --git a/source/angledb.f b/source/angledb.f +index 28ad657..eaa847d 100644 +--- a/source/angledb.f ++++ b/source/angledb.f +@@ -1416,10 +1416,10 @@ C include files + C local variables + INTEGER COUNT, SPTR, OLDCLASS, OLDMAXANGLEDBS + INTEGER THETYPE, CURPSIS, CURPHIS +- INTEGER CLASSINDEX ++ INTEGER CLASINDEX + DOUBLE PRECISION K1, CUTOFF + CHARACTER*4 THENAME +- CHARACTER*20 CLASSNAME ++ CHARACTER*20 CLASNAME + C begin + C + IF (ANGLEDBFLAG) THEN +@@ -1450,10 +1450,10 @@ C + ELSE IF (WD(1:4).EQ.'CLAS') THEN + OLDCLASS = CURANGLEDBCLASS + CALL NEXTWD('class name =') +- CLASSNAME = WD(1:20) ++ CLASNAME = WD(1:20) + ANGLEDBMODE = NEW + DO COUNT = 1, NANGLEDBCLASSES +- IF (ANGDBCLASSNAMES(COUNT).EQ.CLASSNAME) THEN ++ IF (ANGDBCLASSNAMES(COUNT).EQ.CLASNAME) THEN + ANGLEDBMODE = UPDATE + CURANGLEDBCLASS = COUNT + END IF +@@ -1472,7 +1472,7 @@ C + END IF + NANGLEDBCLASSES = NANGLEDBCLASSES + 1 + CURANGLEDBCLASS = NANGLEDBCLASSES +- ANGDBCLASSNAMES(CURANGLEDBCLASS) = CLASSNAME ++ ANGDBCLASSNAMES(CURANGLEDBCLASS) = CLASNAME + ANGLEDBASSNDX(CURANGLEDBCLASS) = NANGLEDBS + END IF + C +@@ -1733,16 +1733,16 @@ C + & HEAP(ANGLEDBTPTR)) + ELSE IF (WD(1:4).EQ.'CLAS') THEN + CALL NEXTWD('Class name>') +- CLASSNAME = WD(1:20) +- CLASSINDEX = 0 ++ CLASNAME = WD(1:20) ++ CLASINDEX = 0 + DO COUNT = 1, NANGLEDBCLASSES + IF (ANGDBCLASSNAMES(COUNT).EQ. +- & CLASSNAME) THEN ++ & CLASNAME) THEN + PRINTTHISCLASS(COUNT) = .TRUE. +- CLASSINDEX = COUNT ++ CLASINDEX = COUNT + END IF + END DO +- IF (CLASSINDEX.EQ.0) THEN ++ IF (CLASINDEX.EQ.0) THEN + CALL DSPERR('ANGLEDB', + & 'unknown class. Using first.') + PRINTTHISCLASS(1) = .TRUE. +diff --git a/source/rama.f b/source/rama.f +index c5d14f2..3063e7b 100644 +--- a/source/rama.f ++++ b/source/rama.f +@@ -1468,11 +1468,11 @@ C include files + C local variables + INTEGER COUNT, SPTR, OLDCLASS, OLDMAXRAMAS, + & THETYPE, CURPSIS, CURPHIS, +- & CURCHIS, CURTHTS, CLASSINDEX ++ & CURCHIS, CURTHTS, CLASINDEX + INTEGER CLEN + DOUBLE PRECISION K1, CUTOFF + CHARACTER*4 THENAME +- CHARACTER*50 CLASSNAME ++ CHARACTER*50 CLASNAME + C begin + C + C this is used by READRAMA2 to hold the selection +@@ -1503,10 +1503,10 @@ C + ELSE IF (WD(1:4).EQ.'CLAS') THEN + OLDCLASS = CURRAMACLASS + CALL NEXTWD('class name =') +- CLASSNAME = WD(1:50) ++ CLASNAME = WD(1:50) + RAMAMODE = NEW + DO COUNT = 1, NRAMACLASSES +- IF (RAMACLASSNAMES(COUNT).EQ.CLASSNAME) THEN ++ IF (RAMACLASSNAMES(COUNT).EQ.CLASNAME) THEN + RAMAMODE = UPDATE + CURRAMACLASS = COUNT + END IF +@@ -1525,7 +1525,7 @@ C + END IF + NRAMACLASSES = NRAMACLASSES + 1 + CURRAMACLASS = NRAMACLASSES +- RAMACLASSNAMES(CURRAMACLASS) = CLASSNAME ++ RAMACLASSNAMES(CURRAMACLASS) = CLASNAME + END IF + C + C set force constant for current class, +@@ -1954,18 +1954,18 @@ C + & HEAP(RAMAATOMPTR), 0) + ELSE IF (WD(1:4).EQ.'CLAS') THEN + CALL NEXTWD('Class name>') +- CLASSINDEX = 0 ++ CLASINDEX = 0 + DO COUNT = 1, NRAMACLASSES +- IF (RAMACLASSNAMES(COUNT).EQ.CLASSNAME) +- & CLASSINDEX = COUNT ++ IF (RAMACLASSNAMES(COUNT).EQ.CLASNAME) ++ & CLASINDEX = COUNT + END DO +- IF (CLASSINDEX.EQ.0) THEN ++ IF (CLASINDEX.EQ.0) THEN + CALL DSPERR('RAMA', + & 'unknown class. Using first.') +- CLASSINDEX = 1 ++ CLASINDEX = 1 + END IF + CALL PRINTRAMAS(CUTOFF, HEAP(CALCRAMAPTR), +- & HEAP(RAMAATOMPTR), CLASSINDEX) ++ & HEAP(RAMAATOMPTR), CLASINDEX) + ELSE + CALL DSPERR('RAMA', + & 'Expected ALL or CLASs.') |