You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
268 lines
7.4 KiB
268 lines
7.4 KiB
# Copyright 1999-2020 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=7
|
|
PYTHON_COMPAT=( python2_7 )
|
|
|
|
inherit cuda desktop flag-o-matic prefix python-single-r1 toolchain-funcs
|
|
|
|
DESCRIPTION="Visual Molecular Dynamics"
|
|
HOMEPAGE="http://www.ks.uiuc.edu/Research/vmd/"
|
|
SRC_URI="
|
|
https://dev.gentoo.org/~jlec/distfiles/${P}-gentoo-patches.tar.xz
|
|
${P}.src.tar
|
|
"
|
|
|
|
SLOT="0"
|
|
LICENSE="vmd"
|
|
KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
|
|
IUSE="cuda gromacs msms povray sqlite tachyon xinerama"
|
|
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
|
|
|
|
RESTRICT="fetch"
|
|
|
|
# currently, tk-8.5* with USE=truetype breaks some
|
|
# tk apps such as Sequence Viewer or Timeline.
|
|
CDEPEND="
|
|
>=dev-lang/tk-8.6.1:0=
|
|
dev-lang/perl
|
|
dev-libs/expat
|
|
$(python_gen_cond_dep '
|
|
|| (
|
|
dev-python/numpy-python2[${PYTHON_MULTI_USEDEP}]
|
|
dev-python/numpy[${PYTHON_MULTI_USEDEP}]
|
|
)
|
|
')
|
|
sci-libs/netcdf:0=
|
|
virtual/opengl
|
|
>=x11-libs/fltk-1.1.10-r2:1
|
|
x11-libs/libXft
|
|
x11-libs/libXi
|
|
${PYTHON_DEPS}
|
|
cuda? ( >=dev-util/nvidia-cuda-toolkit-4.2.9-r1:= )
|
|
gromacs? ( >=sci-chemistry/gromacs-5.0.4-r1:0=[tng] )
|
|
sqlite? ( dev-db/sqlite:3= )
|
|
tachyon? ( >=media-gfx/tachyon-0.99_beta6 )
|
|
xinerama? ( x11-libs/libXinerama )
|
|
"
|
|
DEPEND="${CDEPEND}"
|
|
BDEPEND="
|
|
virtual/pkgconfig
|
|
dev-lang/swig
|
|
"
|
|
RDEPEND="${CDEPEND}
|
|
sci-biology/stride
|
|
sci-chemistry/surf
|
|
x11-terms/xterm
|
|
msms? ( sci-chemistry/msms-bin )
|
|
povray? ( media-gfx/povray )
|
|
"
|
|
|
|
VMD_DOWNLOAD="http://www.ks.uiuc.edu/Development/Download/download.cgi?PackageName=VMD"
|
|
# Binary only plugin!!
|
|
QA_PREBUILT="usr/lib*/vmd/plugins/LINUX/tcl/intersurf1.1/bin/intersurf.so"
|
|
QA_FLAGS_IGNORED_amd64=" usr/lib64/vmd/plugins/LINUX/tcl/volutil1.3/volutil"
|
|
QA_FLAGS_IGNORED_x86=" usr/lib/vmd/plugins/LINUX/tcl/volutil1.3/volutil"
|
|
|
|
pkg_nofetch() {
|
|
elog "Please download ${P}.src.tar from"
|
|
elog "${VMD_DOWNLOAD}"
|
|
elog "after agreeing to the license and get"
|
|
elog "https://dev.gentoo.org/~jlec/distfiles/${P}-gentoo-patches.tar.xz"
|
|
elog "Place both into your DISTDIR directory"
|
|
elog
|
|
elog "Due to an upstream bug (https://bugs.gentoo.org/640440) sources"
|
|
elog "file may get downloaded as a compressed tarball or not. In that case"
|
|
elog "you will need to ensure you uncompress the file and rename it"
|
|
elog "as ${P}.src.tar"
|
|
}
|
|
|
|
src_prepare() {
|
|
default
|
|
|
|
use cuda && cuda_sanitize
|
|
|
|
eapply "${FILESDIR}"/${PN}-1.9.1-cuda-device_ptr.patch
|
|
|
|
cd "${WORKDIR}"/plugins || die
|
|
|
|
eapply -p2 "${WORKDIR}"/${P}-gentoo-plugins.patch
|
|
|
|
[[ ${SILENT} == yes ]] || sed '/^.SILENT/d' -i $(find -name Makefile)
|
|
|
|
sed \
|
|
-e "s:CC = gcc:CC = $(tc-getCC):" \
|
|
-e "s:CXX = g++:CXX = $(tc-getCXX):" \
|
|
-e "s:COPTO =.*\":COPTO = -fPIC -o \":" \
|
|
-e "s:LOPTO = .*\":LOPTO = ${LDFLAGS} -fPIC -o \":" \
|
|
-e "s:CCFLAGS =.*\":CCFLAGS = ${CFLAGS}\":" \
|
|
-e "s:CXXFLAGS =.*\":CXXFLAGS = ${CXXFLAGS}\":" \
|
|
-e "s:SHLD = gcc:SHLD = $(tc-getCC) -shared:" \
|
|
-e "s:SHXXLD = g++:SHXXLD = $(tc-getCXX) -shared:" \
|
|
-e "s:-ltcl8.5:-ltcl:" \
|
|
-i Make-arch || die "Failed to set up plugins Makefile"
|
|
|
|
sed \
|
|
-e '/^AR /s:=:?=:g' \
|
|
-e '/^RANLIB /s:=:?=:g' \
|
|
-i ../plugins/*/Makefile || die
|
|
|
|
tc-export AR RANLIB
|
|
|
|
sed \
|
|
-e "s:\$(CXXFLAGS)::g" \
|
|
-i hesstrans/Makefile || die
|
|
|
|
# prepare vmd itself
|
|
cd "${S}" || die
|
|
|
|
eapply -p2 "${WORKDIR}"/${P}-gentoo-base.patch
|
|
eapply "${FILESDIR}"/${P}-configure-libtachyon.patch
|
|
|
|
# PREFIX
|
|
sed \
|
|
-e "s:/usr/include/:${EPREFIX}/usr/include:g" \
|
|
-i configure || die
|
|
|
|
sed \
|
|
-e "s:gentoo-bindir:${ED}/usr/bin:g" \
|
|
-e "s:gentoo-libdir:${ED}/usr/$(get_libdir):g" \
|
|
-e "s:gentoo-opengl-include:${EPREFIX}/usr/include/GL:g" \
|
|
-e "s:gentoo-opengl-libs:${EPREFIX}/usr/$(get_libdir):g" \
|
|
-e "s:gentoo-gcc:$(tc-getCC):g" \
|
|
-e "s:gentoo-g++:$(tc-getCXX):g" \
|
|
-e "s:gentoo-nvcc:${EPREFIX}/opt/cuda/bin/nvcc:g" \
|
|
-e "s:gentoo-cflags:${CFLAGS}:g" \
|
|
-e "s:gentoo-cxxflags:${CXXFLAGS}:g" \
|
|
-e "s:gentoo-nvflags::g" \
|
|
-e "s:gentoo-ldflags:${LDFLAGS}:g" \
|
|
-e "s:gentoo-plugindir:${WORKDIR}/plugins:g" \
|
|
-e "s:gentoo-fltk-include:$(fltk-config --includedir):g" \
|
|
-e "s:gentoo-fltk-libs:$(dirname $(fltk-config --libs)) -Wl,-rpath,$(dirname $(fltk-config --libs)):g" \
|
|
-e "s:gentoo-libtachyon-include:${EPREFIX}/usr/include/tachyon:g" \
|
|
-e "s:gentoo-libtachyon-libs:${EPREFIX}/usr/$(get_libdir):g" \
|
|
-e "s:gentoo-netcdf-include:${EPREFIX}/usr/include:g" \
|
|
-e "s:gentoo-netcdf-libs:${EPREFIX}/usr/$(get_libdir):g" \
|
|
-i configure || die
|
|
|
|
if use cuda; then
|
|
sed \
|
|
-e "s:gentoo-cuda-lib:${EPREFIX}/opt/cuda/$(get_libdir):g" \
|
|
-e "/NVCCFLAGS/s:=:= ${NVCCFLAGS}:g" \
|
|
-i configure src/Makefile || die
|
|
sed \
|
|
-e '/compute_/d' \
|
|
-i configure || die
|
|
sed \
|
|
-e 's:-gencode .*code=sm_..::' \
|
|
-i src/Makefile || die
|
|
fi
|
|
|
|
sed \
|
|
-e "s:LINUXPPC:LINUX:g" \
|
|
-e "s:LINUXALPHA:LINUX:g" \
|
|
-e "s:LINUXAMD64:LINUX:g" \
|
|
-e "s:gentoo-stride:${EPREFIX}/usr/bin/stride:g" \
|
|
-e "s:gentoo-surf:${EPREFIX}/usr/bin/surf:g" \
|
|
-e "s:gentoo-tachyon:${EPREFIX}/usr/bin/tachyon:g" \
|
|
-i "${S}"/bin/vmd.sh || die "failed setting up vmd wrapper script"
|
|
|
|
EMAKEOPTS=(
|
|
TCLINC="-I${EPREFIX}/usr/include"
|
|
TCLLIB="-L${EPREFIX}/usr/$(get_libdir)"
|
|
TCLLDFLAGS="-shared"
|
|
NETCDFLIB="$($(tc-getPKG_CONFIG) --libs-only-L netcdf)${EPREFIX}/usr/$(get_libdir)/libnetcdf.so"
|
|
NETCDFINC="$($(tc-getPKG_CONFIG) --cflags-only-I netcdf)${EPREFIX}/usr/include"
|
|
NETCDFLDFLAGS="$($(tc-getPKG_CONFIG) --libs netcdf)"
|
|
NETCDFDYNAMIC=1
|
|
EXPATINC="-I${EPREFIX}/usr/include"
|
|
EXPATLIB="$($(tc-getPKG_CONFIG) --libs expat)"
|
|
EXPATLDFLAGS="-shared"
|
|
EXPATDYNAMIC=1
|
|
)
|
|
if use gromacs; then
|
|
EMAKEOPTS+=(
|
|
TNGLIB="$($(tc-getPKG_CONFIG) --libs libgromacs)"
|
|
TNGINC="-I${EPREFIX}/usr/include"
|
|
TNGLDFLAGS="-shared"
|
|
TNGDYNAMIC=1
|
|
)
|
|
fi
|
|
if use sqlite; then
|
|
EMAKEOPTS+=(
|
|
SQLITELIB="$($(tc-getPKG_CONFIG) --libs sqlite3)"
|
|
SQLITEINC="-I${EPREFIX}/usr/include"
|
|
SQLITELDFLAGS="-shared"
|
|
SQLITEDYNAMIC=1
|
|
)
|
|
fi
|
|
}
|
|
|
|
src_configure() {
|
|
local myconf="OPENGL OPENGLPBUFFER COLVARS FLTK TK TCL PTHREADS PYTHON IMD NETCDF NUMPY NOSILENT XINPUT"
|
|
rm -f configure.options && echo $myconf >> configure.options
|
|
|
|
use cuda && myconf+=" CUDA"
|
|
# use mpi && myconf+=" MPI"
|
|
use tachyon && myconf+=" LIBTACHYON"
|
|
use xinerama && myconf+=" XINERAMA"
|
|
|
|
export \
|
|
PYTHON_INCLUDE_DIR="$(python_get_includedir)" \
|
|
PYTHON_LIBRARY_DIR="$(python_get_library_path)" \
|
|
PYTHON_LIBRARY="$(python_get_LIBS)" \
|
|
NUMPY_INCLUDE_DIR="$(python_get_sitedir)/numpy/core/include" \
|
|
NUMPY_LIBRARY_DIR="$(python_get_sitedir)/numpy/core/include"
|
|
|
|
perl ./configure LINUX \
|
|
${myconf} || die
|
|
}
|
|
|
|
src_compile() {
|
|
# build plugins
|
|
cd "${WORKDIR}"/plugins || die
|
|
|
|
emake \
|
|
${EMAKEOPTS[@]} \
|
|
LINUX
|
|
|
|
# build vmd
|
|
cd "${S}"/src || die
|
|
emake
|
|
}
|
|
|
|
src_install() {
|
|
# install plugins
|
|
cd "${WORKDIR}"/plugins || die
|
|
emake \
|
|
PLUGINDIR="${ED}/usr/$(get_libdir)/${PN}/plugins" \
|
|
distrib
|
|
|
|
# install vmd
|
|
cd "${S}"/src || die
|
|
emake install
|
|
|
|
# install docs
|
|
cd "${S}" || die
|
|
dodoc Announcement README doc/ig.pdf doc/ug.pdf
|
|
|
|
# remove some of the things we don't want and need in
|
|
# /usr/lib
|
|
cd "${ED}"/usr/$(get_libdir)/vmd || die
|
|
rm -fr doc README Announcement LICENSE || \
|
|
die "failed to clean up /usr/lib/vmd directory"
|
|
|
|
# adjust path in vmd wrapper
|
|
sed \
|
|
-e "s:${ED}::" -i "${ED}"/usr/bin/${PN} \
|
|
-e "/^defaultvmddir/s:^.*$:defaultvmddir=\"${EPREFIX}/usr/$(get_libdir)/${PN}\":g" \
|
|
|| die "failed to set up vmd wrapper script"
|
|
|
|
# install icon and generate desktop entry
|
|
insinto /usr/share/pixmaps
|
|
doins "${WORKDIR}"/vmd.png
|
|
eprefixify "${WORKDIR}"/vmd.desktop
|
|
sed -i '/^Path/d' "${WORKDIR}"/vmd.desktop || die
|
|
domenu "${WORKDIR}"/vmd.desktop
|
|
}
|