diff options
author | band-a-prend <torokhov-s-a@yandex.ru> | 2019-08-14 06:02:03 +0300 |
---|---|---|
committer | Joonas Niilola <juippis@gentoo.org> | 2019-09-06 06:04:00 +0300 |
commit | 386771016f5534e7a99133e0e13eb4b6e001461a (patch) | |
tree | 4c5c55954c8518a4b033f046866cb632168bd5ed /sci-libs/cantera | |
parent | net-vpn/wireguard: version bump (diff) | |
download | gentoo-386771016f5534e7a99133e0e13eb4b6e001461a.tar.gz gentoo-386771016f5534e7a99133e0e13eb4b6e001461a.tar.bz2 gentoo-386771016f5534e7a99133e0e13eb4b6e001461a.zip |
sci-libs/cantera: revision bump (r2) with fix python installation path
Fix python installation path using 'libdirname' env variable.
This patch is backport of upstream patch [1].
[1] https://github.com/Cantera/cantera/pull/674
This patch is backport of upstream patch [1] but with removing of
'setIterator' function instead of it's deprecation.
[1] https://github.com/Cantera/cantera/pull/672
Closes: https://github.com/gentoo/gentoo/pull/12701
Signed-off-by: Sergey Torokhov <torokhov_s_a@mail.ru>
Signed-off-by: Joonas Niilola <juippis@gentoo.org>
Diffstat (limited to 'sci-libs/cantera')
-rw-r--r-- | sci-libs/cantera/cantera-2.4.0-r2.ebuild | 126 | ||||
-rw-r--r-- | sci-libs/cantera/files/cantera_2.4.0_env_python_install.patch | 17 | ||||
-rw-r--r-- | sci-libs/cantera/files/cantera_2.4.0_sundials4.patch | 190 |
3 files changed, 333 insertions, 0 deletions
diff --git a/sci-libs/cantera/cantera-2.4.0-r2.ebuild b/sci-libs/cantera/cantera-2.4.0-r2.ebuild new file mode 100644 index 000000000000..2d69f8d348c6 --- /dev/null +++ b/sci-libs/cantera/cantera-2.4.0-r2.ebuild @@ -0,0 +1,126 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{5,6,7} ) + +FORTRAN_NEEDED=fortran +FORTRAN_STANDARD=90 + +inherit desktop fortran-2 python-single-r1 scons-utils toolchain-funcs + +DESCRIPTION="Object-oriented tool suite for chemical kinetics, thermodynamics, and transport" +HOMEPAGE="https://www.cantera.org" +SRC_URI="https://github.com/Cantera/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+cti fortran pch +python test" + +REQUIRED_USE=" + python? ( cti ) + ${PYTHON_REQUIRED_USE} + " + +RDEPEND=" + ${PYTHON_DEPS} + python? ( + dev-python/numpy[${PYTHON_USEDEP}] + ) + <sci-libs/sundials-5.0.0:0= +" + +DEPEND=" + ${RDEPEND} + dev-cpp/eigen:3 + dev-libs/boost + dev-libs/libfmt + python? ( + dev-python/cython[${PYTHON_USEDEP}] + ) + test? ( + >=dev-cpp/gtest-1.8.0 + ) +" + +PATCHES=( + "${FILESDIR}/${PN}_${PV}_env.patch" + "${FILESDIR}/${PN}_${PV}_env_python_install.patch" + "${FILESDIR}/${PN}_${PV}_sundials4.patch" + ) + +pkg_setup() { + fortran-2_pkg_setup + python-single-r1_pkg_setup +} + +## Full list of configuration options of Cantera is presented here: +## http://cantera.org/docs/sphinx/html/compiling/config-options.html + +src_configure() { + scons_vars=( + CC="$(tc-getCC)" + CXX="$(tc-getCXX)" + cc_flags="${CXXFLAGS}" + cxx_flags="-std=c++11" + debug="no" + FORTRAN="$(tc-getFC)" + FORTRANFLAGS="${CXXFLAGS}" + optimize_flags="-Wno-inline" + renamed_shared_libraries="no" + use_pch=$(usex pch) +## In some cases other order can break the detection of right location of Boost: ## + system_fmt="y" + system_sundials="y" + system_eigen="y" + env_vars="all" + extra_inc_dirs="/usr/include/eigen3" + ) + use test || scons_vars+=( googletest="none" ) + + scons_targets=( + f90_interface=$(usex fortran y n) + python2_package="none" + ) + + if use cti ; then + local scons_python=$(usex python full minimal) + scons_targets+=( python3_package="${scons_python}" python3_cmd="${EPYTHON}" ) + else + scons_targets+=( python3_package="none" ) + fi +} + +src_compile() { + escons build "${scons_vars[@]}" "${scons_targets[@]}" prefix="/usr" +} + +src_test() { + escons test +} + +src_install() { + escons install stage_dir="${D}" libdirname="$(get_libdir)" + if ! use cti ; then + rm -r "${D}/usr/share/man" || die "Can't remove man files." + else + # Run the byte-compile of modules + python_optimize "${D}/$(python_get_sitedir)/${PN}" + fi +} + +pkg_postinst() { + if use cti && ! use python ; then + elog "Cantera was build without 'python' use-flag therefore the CTI tool 'ck2cti'" + elog "will convert Chemkin files to Cantera format without verification of kinetic mechanism." + fi + + local post_msg=$(usex fortran "and Fortran " "") + elog "C++ ${post_msg}samples are installed to '/usr/share/${PN}/samples/' directory." + + if use python ; then + elog "Python examples are installed to '$(python_get_sitedir)/${PN}/examples/' directories." + fi +} diff --git a/sci-libs/cantera/files/cantera_2.4.0_env_python_install.patch b/sci-libs/cantera/files/cantera_2.4.0_env_python_install.patch new file mode 100644 index 000000000000..2e01fed1fa93 --- /dev/null +++ b/sci-libs/cantera/files/cantera_2.4.0_env_python_install.patch @@ -0,0 +1,17 @@ +diff -Nur old/interfaces/cython/SConscript new/interfaces/cython/SConscript +--- old/interfaces/cython/SConscript 2018-08-24 16:24:45.000000000 +0300 ++++ new/interfaces/cython/SConscript 2019-08-14 04:28:41.000000000 +0300 +@@ -83,10 +83,10 @@ + extra = '' + elif localenv['OS'] == 'Darwin': + extra = localenv.subst(' --prefix=${python%s_prefix}' % major) +- elif localenv['libdirname'] == 'lib64': +- # 64-bit RHEL / Fedora ++ elif localenv['libdirname'] != 'lib': ++ # 64-bit RHEL / Fedora etc. or e.g. x32 Gentoo profile + extra = localenv.subst( +- ' --prefix=${python%s_prefix} --install-lib=${python%s_prefix}/lib64/python%s.%s/site-packages' % (major, major, major, minor)) ++ ' --prefix=${python%s_prefix} --install-lib=${python%s_prefix}/${libdirname}/python%s.%s/site-packages' % (major, major, major, minor)) + else: + extra = '--user' + localenv.AppendENVPath( diff --git a/sci-libs/cantera/files/cantera_2.4.0_sundials4.patch b/sci-libs/cantera/files/cantera_2.4.0_sundials4.patch new file mode 100644 index 000000000000..c745f6b6f7ff --- /dev/null +++ b/sci-libs/cantera/files/cantera_2.4.0_sundials4.patch @@ -0,0 +1,190 @@ +diff -Nur old/SConstruct new/SConstruct +--- old/SConstruct 2019-08-14 04:12:50.000000000 +0300 ++++ new/SConstruct 2019-08-14 04:38:55.000000000 +0300 +@@ -1013,23 +1013,29 @@ + + import SCons.Conftest, SCons.SConf + context = SCons.SConf.CheckContext(conf) +-ret = SCons.Conftest.CheckLib(context, +- ['sundials_cvodes'], +- header='#include "cvodes/cvodes.h"', +- language='C++', +- call='CVodeCreate(CV_BDF, CV_NEWTON);', +- autoadd=False, +- extra_libs=env['blas_lapack_libs']) +-if ret: ++ ++# Check initially for Sundials<=3.2 and then for Sundials>=4.0 ++for cvode_call in ['CVodeCreate(CV_BDF, CV_NEWTON);','CVodeCreate(CV_BDF);']: ++ ret = SCons.Conftest.CheckLib(context, ++ ['sundials_cvodes'], ++ header='#include "cvodes/cvodes.h"', ++ language='C++', ++ call=cvode_call, ++ autoadd=False, ++ extra_libs=env['blas_lapack_libs']) + # CheckLib returns False to indicate success ++ if not ret: ++ if env['system_sundials'] == 'default': ++ env['system_sundials'] = 'y' ++ break ++ ++# Execute if the cycle ends without 'break' ++else: + if env['system_sundials'] == 'default': + env['system_sundials'] = 'n' + elif env['system_sundials'] == 'y': + config_error('Expected system installation of Sundials, but it could ' + 'not be found.') +-elif env['system_sundials'] == 'default': +- env['system_sundials'] = 'y' +- + + # Checkout Sundials submodule if needed + if (env['system_sundials'] == 'n' and +@@ -1066,7 +1072,7 @@ + + # Ignore the minor version, e.g. 2.4.x -> 2.4 + env['sundials_version'] = '.'.join(sundials_version.split('.')[:2]) +- if env['sundials_version'] not in ('2.4','2.5','2.6','2.7','3.0','3.1','3.2'): ++ if env['sundials_version'] not in ('2.4','2.5','2.6','2.7','3.0','3.1','3.2','4.0','4.1'): + print("""ERROR: Sundials version %r is not supported.""" % env['sundials_version']) + sys.exit(1) + print("""INFO: Using system installation of Sundials version %s.""" % sundials_version) +diff -Nur old/include/cantera/numerics/CVodesIntegrator.h new/include/cantera/numerics/CVodesIntegrator.h +--- old/include/cantera/numerics/CVodesIntegrator.h 2018-08-24 16:24:45.000000000 +0300 ++++ new/include/cantera/numerics/CVodesIntegrator.h 2019-08-14 04:39:50.000000000 +0300 +@@ -49,7 +49,6 @@ + m_maxord = n; + } + virtual void setMethod(MethodType t); +- virtual void setIterator(IterType t); + virtual void setMaxStepSize(double hmax); + virtual void setMinStepSize(double hmin); + virtual void setMaxSteps(int nmax); +diff -Nur old/include/cantera/numerics/Integrator.h new/include/cantera/numerics/Integrator.h +--- old/include/cantera/numerics/Integrator.h 2018-08-24 16:24:45.000000000 +0300 ++++ new/include/cantera/numerics/Integrator.h 2019-08-14 04:44:27.000000000 +0300 +@@ -34,17 +34,6 @@ + Adams_Method //! Adams + }; + +-//! Specifies the method used for iteration. +-/*! +- * Not all methods are supported by all integrators. +- */ +-enum IterType { +- //! Newton Iteration +- Newton_Iter, +- //! Functional Iteration +- Functional_Iter +-}; +- + //! Abstract base class for ODE system integrators. + /*! + * @ingroup odeGroup +@@ -163,11 +152,6 @@ + warn("setMethodType"); + } + +- //! Set the linear iterator. +- virtual void setIterator(IterType t) { +- warn("setInterator"); +- } +- + //! Set the maximum step size + virtual void setMaxStepSize(double hmax) { + warn("setMaxStepSize"); +diff -Nur old/src/kinetics/ImplicitSurfChem.cpp new/src/kinetics/ImplicitSurfChem.cpp +--- old/src/kinetics/ImplicitSurfChem.cpp 2018-08-24 16:24:45.000000000 +0300 ++++ new/src/kinetics/ImplicitSurfChem.cpp 2019-08-14 04:45:57.000000000 +0300 +@@ -79,7 +79,6 @@ + // numerically, and use a Newton linear iterator + m_integ->setMethod(BDF_Method); + m_integ->setProblemType(DENSE + NOJAC); +- m_integ->setIterator(Newton_Iter); + m_work.resize(ntmax); + } + +diff -Nur old/src/numerics/CVodesIntegrator.cpp new/src/numerics/CVodesIntegrator.cpp +--- old/src/numerics/CVodesIntegrator.cpp 2018-08-24 16:24:45.000000000 +0300 ++++ new/src/numerics/CVodesIntegrator.cpp 2019-08-14 04:49:02.000000000 +0300 +@@ -88,7 +88,6 @@ + m_type(DENSE+NOJAC), + m_itol(CV_SS), + m_method(CV_BDF), +- m_iter(CV_NEWTON), + m_maxord(0), + m_reltol(1.e-9), + m_abstols(1.e-15), +@@ -218,17 +217,6 @@ + } + } + +-void CVodesIntegrator::setIterator(IterType t) +-{ +- if (t == Newton_Iter) { +- m_iter = CV_NEWTON; +- } else if (t == Functional_Iter) { +- m_iter = CV_FUNCTIONAL; +- } else { +- throw CanteraError("CVodesIntegrator::setIterator", "unknown iterator"); +- } +-} +- + void CVodesIntegrator::sensInit(double t0, FuncEval& func) + { + m_np = func.nparams(); +@@ -284,7 +272,11 @@ + //! Specify the method and the iteration type. Cantera Defaults: + //! CV_BDF - Use BDF methods + //! CV_NEWTON - use Newton's method +- m_cvode_mem = CVodeCreate(m_method, m_iter); ++ #if CT_SUNDIALS_VERSION < 40 ++ m_cvode_mem = CVodeCreate(m_method, CV_NEWTON); ++ #else ++ m_cvode_mem = CVodeCreate(m_method); ++ #endif + if (!m_cvode_mem) { + throw CanteraError("CVodesIntegrator::initialize", + "CVodeCreate failed."); +@@ -394,7 +386,11 @@ + #if CT_SUNDIALS_VERSION >= 30 + SUNLinSolFree((SUNLinearSolver) m_linsol); + SUNMatDestroy((SUNMatrix) m_linsol_matrix); +- m_linsol_matrix = SUNBandMatrix(N, nu, nl, nu+nl); ++ #if CT_SUNDIALS_VERSION < 40 ++ m_linsol_matrix = SUNBandMatrix(N, nu, nl, nu+nl); ++ #else ++ m_linsol_matrix = SUNBandMatrix(N, nu, nl); ++ #endif + #if CT_SUNDIALS_USE_LAPACK + m_linsol = SUNLapackBand(m_y, (SUNMatrix) m_linsol_matrix); + #else +diff -Nur old/src/numerics/IDA_Solver.cpp new/src/numerics/IDA_Solver.cpp +--- old/src/numerics/IDA_Solver.cpp 2018-08-24 16:24:45.000000000 +0300 ++++ new/src/numerics/IDA_Solver.cpp 2019-08-14 04:51:01.000000000 +0300 +@@ -442,7 +442,11 @@ + #if CT_SUNDIALS_VERSION >= 30 + SUNLinSolFree((SUNLinearSolver) m_linsol); + SUNMatDestroy((SUNMatrix) m_linsol_matrix); +- m_linsol_matrix = SUNBandMatrix(N, nu, nl, nu+nl); ++ #if CT_SUNDIALS_VERSION < 40 ++ m_linsol_matrix = SUNBandMatrix(N, nu, nl, nu+nl); ++ #else ++ m_linsol_matrix = SUNBandMatrix(N, nu, nl); ++ #endif + #if CT_SUNDIALS_USE_LAPACK + m_linsol = SUNLapackBand(m_y, (SUNMatrix) m_linsol_matrix); + #else +diff -Nur old/src/zeroD/ReactorNet.cpp new/src/zeroD/ReactorNet.cpp +--- old/src/zeroD/ReactorNet.cpp 2018-08-24 16:24:45.000000000 +0300 ++++ new/src/zeroD/ReactorNet.cpp 2019-08-14 04:51:35.000000000 +0300 +@@ -28,7 +28,6 @@ + // numerically, and use a Newton linear iterator + m_integ->setMethod(BDF_Method); + m_integ->setProblemType(DENSE + NOJAC); +- m_integ->setIterator(Newton_Iter); + } + + void ReactorNet::setInitialTime(double time) |