Files
guru/sci-physics/mbdyn/mbdyn-1.7.3_p20210925-r1.ebuild
Anna (cybertailor) Vyalkova 12088906c5 */*: drop dead py3.9 impl
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo@sysrq.in>
2023-05-02 00:45:35 +05:00

243 lines
6.0 KiB
Bash

# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
COMMIT="ae57618c4e7b030b59707b8c156a6e2a94a6efd0"
MYP="${PN}-${COMMIT}"
PYTHON_COMPAT=( python3_{10..11} )
inherit autotools flag-o-matic fortran-2 pam python-single-r1
DESCRIPTION="A general purpose Multibody Dynamics analysis software"
HOMEPAGE="https://www.mbdyn.org"
SRC_URI="https://public.gitlab.polimi.it/DAER/mbdyn/-/archive/${COMMIT}/${MYP}.tar.bz2"
S="${WORKDIR}/${MYP}"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64"
# FMU # needs fmi-library
# aerodyn # needs aerodyn
# cudatest # needs cuda
MBDYN_MODULE=( asynchronous_machine autodiff_test ballbearing_contact bullet
charm constlaw-f90 constlaw-f95 constlaw cont-contact controller convtest
cyclocopter damper-gandhi damper-graall damper-hydraulic damper diff dot
drive-test drive dummy eu2phi fab-electric fab-motion fab-sbearings fabricate
flightgear friction friction3 hfelem hid hunt-crossley
hydrodynamic_plain_bearing hydrodynamic_plain_bearing2 imu indvel
inline_friction inplane_friction journal_bearing leapmotion loadinc marble md
mds minmaxdrive multi_step_drive muscles namespace nodedistdrive nonsmooth-node
ns octave randdrive rollercoaster rotor-loose-coupling scalarfunc switch_drive
tclpgin triangular_contact udunits uni_in_plane wheel2 wheel4 )
MBDYN_MODULE_REPLACED=( "${MBDYN_MODULE[@]//_/-}" )
IUSE_MBDYN_MODULE="${MBDYN_MODULE_REPLACED[@]/#/mbdyn_module_}"
IUSE="${IUSE_MBDYN_MODULE} ann arpack autodiff blender boost bullet chaco crypt
debug eig ginac jdqz +mbc metis mpi multithread-naive netcdf octave openblas pam
pastix pmpi python qrupdate rt sasl schur sparse superlu tests threads udunits +y12"
# taucs rtai
# dev-libs/blitz
RDEPEND="
dev-libs/libltdl
virtual/blas
virtual/lapack
ann? ( sci-libs/ann )
arpack? ( sci-libs/arpack )
blender? ( media-gfx/blender:= )
boost? ( dev-libs/boost )
bullet? ( sci-physics/bullet )
chaco? ( sci-mathematics/chaco )
crypt? ( virtual/libcrypt )
ginac? ( sci-mathematics/ginac )
jdqz? ( sci-libs/jdqz )
mbdyn_module_damper? ( sci-libs/gsl )
mpi? ( virtual/mpi[cxx] )
metis? ( sci-libs/metis )
netcdf? ( sci-libs/netcdf-cxx:* )
octave? ( sci-mathematics/octave )
openblas? ( sci-libs/openblas )
pam? ( sys-libs/pam )
pastix? ( sci-libs/pastix )
python? (
${PYTHON_DEPS}
$(python_gen_cond_dep 'dev-python/numpy[${PYTHON_USEDEP}]')
)
qrupdate? ( sci-libs/qrupdate )
sasl? ( dev-libs/cyrus-sasl )
sparse? (
sci-libs/klu
sci-libs/umfpack
)
superlu? ( sci-libs/superlu_mt )
threads? ( dev-libs/libatomic_ops )
udunits? ( sci-libs/udunits )
"
# taucs? ( sci-libs/taucs )
DEPEND="
${RDEPEND}
blender? ( sys-apps/pkgcore )
"
BDEPEND="python? ( dev-lang/swig )"
PATCHES=(
"${FILESDIR}/${PN}-find-bullet.patch"
"${FILESDIR}/${PN}-octave-no-global-install.patch"
)
# "${FILESDIR}/${PN}-respect-libtool.patch"
REQUIRED_USE="
mbdyn_module_bullet? ( bullet )
mbdyn_module_octave? ( octave )
mbdyn_module_udunits? ( udunits )
mbdyn_module_wheel4? ( ginac )
multithread-naive? ( threads )
pmpi? ( mpi )
python? ( ${PYTHON_REQUIRED_USE} )
schur? (
|| ( chaco metis )
mpi
)
"
# ?? ( rt rtai )
pkg_setup() {
fortran-2_pkg_setup
}
src_prepare() {
default
eautoreconf
#from bootstrap.sh
if test -d contrib ; then
for i in `find contrib -name 'bootstrap.sh'` ; do
dir=`echo "${i}" | sed "s/\(.*\)\/bootstrap\.sh/\1/"`
pushd "${dir}" || die
eautoreconf
popd || die
done
fi
}
src_configure() {
python_setup
append-cxxflags "-I/usr/include/bullet"
local myconf=(
--disable-static
--disable-Werror
--enable-runtime-loading
--with-lapack
--without-charm
--without-g2c
--without-goto
--without-harwell
--without-pardiso
--without-rtai
--without-static-modules
--without-strumpack
--without-wsmp
$(use_enable autodiff)
$(use_enable crypt)
$(use_enable debug)
$(use_enable eig)
$(use_enable mbc)
$(use_enable multithread-naive)
$(use_enable netcdf)
$(use_enable octave)
$(use_enable octave octave-utils)
$(use_enable python)
$(use_enable schur)
$(use_enable tests install_test_progs)
$(use_enable threads multithread)
$(use_with ann)
$(use_with arpack)
$(use_with boost)
$(use_with bullet)
$(use_with ginac)
$(use_with jdqz)
$(use_with metis)
$(use_with openblas)
$(use_with pam)
$(use_with pastix)
$(use_with qrupdate)
$(use_with rt)
$(use_with sasl sasl2)
$(use_with sparse klu)
$(use_with sparse suitesparseqr)
$(use_with sparse umfpack)
$(use_with superlu)
$(use_with threads)
$(use_with y12)
)
if ( use autodiff && use sparse ); then
myconf+=( "--enable-sparse-autodiff" )
else
myconf+=( "--disable-sparse-autodiff" )
fi
if ( use debug && use mpi ); then
myconf+=( "--enable-debug-mpi" )
else
myconf+=( "--disable-debug-mpi" )
fi
if use mpi; then
if use pmpi; then
myconf+=( "--with-mpi=pmpi" )
else
myconf+=( "--with-mpi" )
fi
else
myconf+=( "--without-mpi" )
fi
local usemodules=""
for m in ${MBDYN_MODULE[@]} ; do
u="${m//_/-}"
use "mbdyn_module_${u}" && usemodules+=" ${m}"
done
# remove leading whitespace characters
usemodules="${usemodules#"${usemodules%%[![:space:]]*}"}"
myconf+=( "--with-module=\"${usemodules}\"" )
econf "${myconf[@]}"
}
src_install() {
mkdir -p "${HOME}/octave" || die
# octave --exec "pkg prefix ${T}" || die
emake DESTDIR="${D}" install
if use blender; then
local blenderslots="$(pquery -I media-gfx/blender --one-attr slot)"
local blenderscriptdir
for i in $blenderslots ; do
blenderscriptdir="/usr/share/blender/${i}/scripts/"
insinto "${blenderscriptdir}"
doins -r contrib/blenderandmbdyn
done
fi
if use python; then
local site="${D}/$(python_get_sitedir)"
mkdir -p "${site}" || die
mv "${D}/usr/libexec/mbpy" "${site}" || die
fi
use pam && dopamd etc/pam.d/mbdyn
mkdir -p "${D}/usr/share/octave/site/m/mbdyn" || die
mv "${D}"/usr/share/octave/*.m "${D}/usr/share/octave/site/m/mbdyn" || die
if use octave; then
insinto "/usr/share/octave/site/m/mbdyn"
doins -r contrib/MLS/.
fi
find "${D}" -name '*.la' -delete || die
}