diff options
-rw-r--r-- | sci-chemistry/mpqc/files/mpqc-2.3.1-wformat-security.patch | 71 | ||||
-rw-r--r-- | sci-chemistry/mpqc/mpqc-2.3.1-r4.ebuild | 106 |
2 files changed, 177 insertions, 0 deletions
diff --git a/sci-chemistry/mpqc/files/mpqc-2.3.1-wformat-security.patch b/sci-chemistry/mpqc/files/mpqc-2.3.1-wformat-security.patch new file mode 100644 index 000000000000..7f25a92ad891 --- /dev/null +++ b/sci-chemistry/mpqc/files/mpqc-2.3.1-wformat-security.patch @@ -0,0 +1,71 @@ +Fix -Werror=format-security errors +https://bugs.gentoo.org/show_bug.cgi?id=542278 + +--- mpqc-2.3.1/src/lib/chemistry/molecule/atominfo.cc ++++ mpqc-2.3.1/src/lib/chemistry/molecule/atominfo.cc +@@ -493,7 +493,7 @@ + if (iname != symbol_to_Z_.end()) return iname->second; + + if (allow_exceptions) { +- ExEnv::err0() << sprintf("AtomInfo: invalid name: %s\n",name.c_str()); ++ ExEnv::err0() << fprintf(stderr, "AtomInfo: invalid name: %s\n",name.c_str()); + throw std::runtime_error("invalid atom name"); + } + +--- mpqc-2.3.1/src/lib/chemistry/molecule/atominfo.h ++++ mpqc-2.3.1/src/lib/chemistry/molecule/atominfo.h +@@ -49,8 +49,8 @@ + struct atom + { + int Z; +- char *name; +- char *symbol; ++ const char *name; ++ const char *symbol; + }; + + static struct atom elements_[Nelement]; +--- mpqc-2.3.1/src/lib/chemistry/molecule/simple.cc ++++ mpqc-2.3.1/src/lib/chemistry/molecule/simple.cc +@@ -214,7 +214,7 @@ + os << scprintf(" %4d", atoms[i]); + + if (mol.nonnull()) { +- char *separator = " "; ++ const char *separator = " "; + os << " "; + for (i=0; i<(4-natoms()); i++) { + os << " "; +--- mpqc-2.3.1/src/lib/chemistry/qc/psi/psiexenv.cc ++++ mpqc-2.3.1/src/lib/chemistry/qc/psi/psiexenv.cc +@@ -147,7 +147,7 @@ + return 0; + } + +-int PsiExEnv::run_psi_module(char *module) ++int PsiExEnv::run_psi_module(const char *module) + { + int errcod; + char *module_cmd = new char[2*cwd_.size()+strlen(module)+psiprefix_.size()+fileprefix_.size()+stdout_.size()+stderr_.size()+40]; +--- mpqc-2.3.1/src/lib/chemistry/qc/psi/psiexenv.h ++++ mpqc-2.3.1/src/lib/chemistry/qc/psi/psiexenv.h +@@ -57,7 +57,7 @@ + /// Executes Psi input+driver + int run_psi(); + /// Executes a Psi module +- int run_psi_module(char *); ++ int run_psi_module(const char *); + + /// Returns current working directory + string get_cwd() const { return cwd_;}; +--- mpqc-2.3.1/src/lib/chemistry/qc/psi/psiwfn.cc ++++ mpqc-2.3.1/src/lib/chemistry/qc/psi/psiwfn.cc +@@ -44,7 +44,7 @@ + bytes = 2000000; + int bytes_str_len = (int)ceil(log10((long double)bytes)); + memory_ = new char[bytes_str_len+5]; +- sprintf(memory_,"(%ld B)",bytes); ++ sprintf(memory_,"(%d B)",bytes); + } + + PsiWavefunction::~PsiWavefunction() diff --git a/sci-chemistry/mpqc/mpqc-2.3.1-r4.ebuild b/sci-chemistry/mpqc/mpqc-2.3.1-r4.ebuild new file mode 100644 index 000000000000..1cf3fd5c09a7 --- /dev/null +++ b/sci-chemistry/mpqc/mpqc-2.3.1-r4.ebuild @@ -0,0 +1,106 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +inherit autotools toolchain-funcs + +DESCRIPTION="The Massively Parallel Quantum Chemistry Program" +HOMEPAGE="http://www.mpqc.org/" +SRC_URI="mirror://sourceforge/mpqc/${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" +IUSE="doc mpi threads static-libs tk" + +RDEPEND=" + virtual/blas + virtual/lapack + mpi? ( virtual/mpi[cxx] ) + tk? ( dev-lang/tk:0 )" +DEPEND="${RDEPEND} + dev-lang/perl + sys-devel/flex + sys-apps/sed + virtual/pkgconfig + doc? ( + app-doc/doxygen + media-gfx/graphviz )" + +PATCHES=( + "${FILESDIR}/${P}-as-needed.patch" + "${FILESDIR}/${P}-respect-ldflags.patch" + "${FILESDIR}/${P}-test-failure-hack.patch" + "${FILESDIR}/${P}-blas.patch" + "${FILESDIR}/${P}-wformat-security.patch" +) +DOCS=(CHANGES CITATION README) + +src_prepare() { + # do not install tkmolrender if not requested + if ! use tk; then + sed \ + -e "s:.*/bin/molrender/tkmolrender.*::" \ + -e "s:.*\$(INSTALLBINOPT) tkmolrender.*::" \ + -e "s:/bin/rm -f tkmolrender::" \ + -i "./src/bin/molrender/Makefile" \ + || die "failed to disable tkmolrender" + fi + default + mv configure.{in,ac} || die + eautoreconf +} + +src_configure() { + tc-export CC CXX + if use mpi; then + export CC=mpicc + export CXX=mpicxx + fi + + econf \ + $(use_enable threads) \ + $(use_enable mpi parallel) \ + $(use_enable static-libs static) + + sed \ + -e "s:^CFLAGS =.*$:CFLAGS=${CFLAGS}:" \ + -e "s:^FFLAGS =.*$:FFLAGS=${FFLAGS:- -O2}:" \ + -e "s:^CXXFLAGS =.*$:CXXFLAGS=${CXXFLAGS}:" \ + -i lib/LocalMakefile || die +} + +src_test() { + cd src/bin/mpqc/validate || die + + # we'll only run the small test set, since the + # medium and large ones take >10h and >24h on my + # 1.8Ghz P4M + emake -j1 check1 +} + +src_install() { + emake installroot="${D}" install install_devel install_inc + + # make extended docs + if use doc; then + cd doc || die + emake all + doman man/man1/* man/man3/* + dodoc -r html/ + fi +} + +pkg_postinst() { + echo + einfo "MPQC can be picky with regard to compilation flags." + einfo "If during mpqc runs you have trouble converging or " + einfo "experience oscillations during SCF interations, " + einfo "consider recompiling with less aggressive CFLAGS/CXXFLAGS." + einfo "Particularly, replacing -march=pentium4 by -march=pentium3" + einfo "might help if you encounter problems with correlation " + einfo "consistent basis sets." + echo +} |