summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Seifert <soap@gentoo.org>2016-01-24 10:52:13 +0100
committerDavid Seifert <soap@gentoo.org>2016-01-24 10:54:47 +0100
commitf9904c3ee7b9a0690a972f8f7eae415a4e871c0d (patch)
treef1b6a3f13e9e8e9db9cd5adf9a47ba45eb39faf0
parentnet-analyzer/dosdetector: Drop bzero calls with wrong size argument since cal... (diff)
downloadgentoo-f9904c3ee7b9a0690a972f8f7eae415a4e871c0d.tar.gz
gentoo-f9904c3ee7b9a0690a972f8f7eae415a4e871c0d.tar.bz2
gentoo-f9904c3ee7b9a0690a972f8f7eae415a4e871c0d.zip
sci-chemistry/mpqc: Fix -Werror=format-security errors
Gentoo-Bug: 542278 Also update to EAPI=6. Package-Manager: portage-2.2.27
-rw-r--r--sci-chemistry/mpqc/files/mpqc-2.3.1-wformat-security.patch71
-rw-r--r--sci-chemistry/mpqc/mpqc-2.3.1-r4.ebuild106
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
+}