aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sci-physics/mbdyn/mbdyn-1.7.3_p20210925.ebuild')
-rw-r--r--sci-physics/mbdyn/mbdyn-1.7.3_p20210925.ebuild301
1 files changed, 301 insertions, 0 deletions
diff --git a/sci-physics/mbdyn/mbdyn-1.7.3_p20210925.ebuild b/sci-physics/mbdyn/mbdyn-1.7.3_p20210925.ebuild
new file mode 100644
index 000000000..5750bf3df
--- /dev/null
+++ b/sci-physics/mbdyn/mbdyn-1.7.3_p20210925.ebuild
@@ -0,0 +1,301 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+COMMIT="ae57618c4e7b030b59707b8c156a6e2a94a6efd0"
+MYP="${PN}-${COMMIT}"
+PYTHON_COMPAT=( python3_{8..10} )
+
+inherit autotools 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"
+# mbdyn-module-FMU # needs fmi-library
+# mbdyn-module-aerodyn # needs aerodyn
+# mbdyn-module-cudatest # needs cuda
+IUSE_MBDYN_MODULE="
+ mbdyn-module-asynchronous_machine
+ mbdyn-module-autodiff_test
+ mbdyn-module-ballbearing_contact
+ mbdyn-module-bullet
+ mbdyn-module-charm
+ mbdyn-module-constlaw-f90
+ mbdyn-module-constlaw-f95
+ mbdyn-module-constlaw
+ mbdyn-module-cont-contact
+ mbdyn-module-controller
+ mbdyn-module-convtest
+ mbdyn-module-cyclocopter
+ mbdyn-module-damper-gandhi
+ mbdyn-module-damper-graall
+ mbdyn-module-damper-hydraulic
+ mbdyn-module-damper
+ mbdyn-module-diff
+ mbdyn-module-dot
+ mbdyn-module-drive-test
+ mbdyn-module-drive
+ mbdyn-module-dummy
+ mbdyn-module-eu2phi
+ mbdyn-module-fab-electric
+ mbdyn-module-fab-motion
+ mbdyn-module-fab-sbearings
+ mbdyn-module-fabricate
+ mbdyn-module-flightgear
+ mbdyn-module-friction
+ mbdyn-module-friction3
+ mbdyn-module-hfelem
+ mbdyn-module-hid
+ mbdyn-module-hunt-crossley
+ mbdyn-module-hydrodynamic_plain_bearing
+ mbdyn-module-hydrodynamic_plain_bearing2
+ mbdyn-module-imu
+ mbdyn-module-indvel
+ mbdyn-module-inline_friction
+ mbdyn-module-inplane_friction
+ mbdyn-module-journal_bearing
+ mbdyn-module-leapmotion
+ mbdyn-module-loadinc
+ mbdyn-module-marble
+ mbdyn-module-md
+ mbdyn-module-mds
+ mbdyn-module-minmaxdrive
+ mbdyn-module-multi_step_drive
+ mbdyn-module-muscles
+ mbdyn-module-namespace
+ mbdyn-module-nodedistdrive
+ mbdyn-module-nonsmooth-node
+ mbdyn-module-ns
+ mbdyn-module-octave
+ mbdyn-module-randdrive
+ mbdyn-module-rollercoaster
+ mbdyn-module-rotor-loose-coupling
+ mbdyn-module-scalarfunc
+ mbdyn-module-switch_drive
+ mbdyn-module-tclpgin
+ mbdyn-module-template
+ mbdyn-module-template2
+ mbdyn-module-triangular_contact
+ mbdyn-module-udunits
+ mbdyn-module-uni_in_plane
+ mbdyn-module-wheel2
+ mbdyn-module-wheel4
+"
+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 taucs tests threads
+udunits +y12"
+
+# 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 )
+ taucs? ( sci-libs/taucs )
+ threads? ( dev-libs/libatomic_ops )
+ udunits? ( sci-libs/udunits )
+"
+# rtai? ( sys-libs/rtai )
+DEPEND="
+ ${RDEPEND}
+ blender? ( sys-apps/pkgcore )
+"
+BDEPEND="python? ( dev-lang/swig )"
+
+PATCHES=(
+ "${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/openmpi/ompi/mpi/cxx/"
+ 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 taucs)
+ $(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
+
+ declare -A mbdynmodules
+ for m in ${IUSE_MBDYN_MODULE} ; do
+ mbdynmodules[${m//_/-}]="${m/mbdyn-module-/}"
+ done
+
+ local usemodules=""
+ for u in ${IUSE_MBDYN_MODULE//_/-} ; do
+ use ${u} && usemodules+=" ${mbdynmodules[${u}]}"
+ 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/mbdyn" || die
+ mv "${D}"/usr/share/octave/*.m "${D}/usr/share/octave/mbdyn" || die
+
+ if use octave; then
+ insinto "/usr/share/octave/mbdyn"
+ doins -r contrib/MLS/.
+ fi
+
+ find "${D}" -name '*.la' -delete || die
+}