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.
208 lines
5.9 KiB
208 lines
5.9 KiB
# Copyright 1999-2013 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Header: /var/cvsroot/gentoo-x86/sci-libs/cctbx/cctbx-2010.03.29.2334-r6.ebuild,v 1.9 2013/03/17 14:46:03 jlec Exp $
|
|
|
|
EAPI="3"
|
|
|
|
PYTHON_DEPEND="2"
|
|
|
|
inherit eutils fortran-2 multilib prefix python toolchain-funcs
|
|
|
|
MY_PV="${PV//./_}"
|
|
|
|
DESCRIPTION="Computational Crystallography Toolbox"
|
|
HOMEPAGE="http://cctbx.sourceforge.net/"
|
|
SRC_URI="http://cci.lbl.gov/cctbx_build/results/${MY_PV}/${PN}_bundle.tar.gz -> ${P}.tar.gz"
|
|
|
|
LICENSE="cctbx-2.0"
|
|
SLOT="0"
|
|
KEYWORDS="amd64 ~ppc x86 ~amd64-linux ~x86-linux"
|
|
IUSE="+minimal openmp threads"
|
|
|
|
RDEPEND="
|
|
>=dev-libs/boost-1.48[python]
|
|
sci-libs/clipper
|
|
sci-libs/fftw
|
|
!minimal? (
|
|
sci-chemistry/cns
|
|
sci-chemistry/shelx )"
|
|
DEPEND="${RDEPEND}
|
|
!prefix? ( >=dev-util/scons-1.2 )"
|
|
|
|
S="${WORKDIR}"
|
|
MY_S="${WORKDIR}"/cctbx_sources
|
|
MY_B="${WORKDIR}"/cctbx_build
|
|
|
|
pkg_setup() {
|
|
use openmp && FORTRAN_NEED_OPENMP="1"
|
|
if use openmp && ! tc-has-openmp; then
|
|
ewarn "You are using gcc and OpenMP is only available with gcc >= 4.2 and icc"
|
|
ewarn "If you want to build ${PN} with OpenMP, abort now,"
|
|
ewarn "and switch CC to an OpenMP capable compiler"
|
|
FORTRAN_NEED_OPENMP=1
|
|
fi
|
|
fortran-2_pkg_setup
|
|
python_set_active_version 2
|
|
python_pkg_setup
|
|
}
|
|
|
|
src_prepare() {
|
|
local opts
|
|
local optsld
|
|
|
|
epatch \
|
|
"${FILESDIR}"/${PV}-tst_server.py.patch \
|
|
"${FILESDIR}"/${PV}-boost.patch \
|
|
"${FILESDIR}"/${PV}-clipper.patch \
|
|
"${FILESDIR}"/${PV}-flags.patch \
|
|
"${FILESDIR}"/${PV}-soname.patch \
|
|
"${FILESDIR}"/${PV}-gcc-4.6.patch \
|
|
"${FILESDIR}"/${PV}-gcc-4.7.patch
|
|
|
|
eprefixify "${MY_S}"/scitbx/libtbx_refresh.py
|
|
|
|
rm -rf "${MY_S}/boost" "${MY_S}/PyCifRW" || die
|
|
if ! use prefix; then
|
|
rm -rvf "${MY_S}/scons"
|
|
echo "import os, sys; os.execvp('scons', sys.argv)" > "${MY_S}"/libtbx/command_line/scons.py
|
|
fi
|
|
|
|
find "${MY_S}/clipper" -name "*.h" -delete || die
|
|
|
|
sed \
|
|
-e "/LIBS/s:boost_python:boost_python-${PYTHON_ABI}:g" \
|
|
-i "${MY_S}"/boost_adaptbx/SConscript "${MY_S}"/scitbx/boost_python/SConscript || die
|
|
}
|
|
|
|
src_configure() {
|
|
local compiler
|
|
local myconf
|
|
|
|
myconf="${MY_S}/libtbx/configure.py"
|
|
|
|
compiler=$(expr match "$(tc-getCC)" '.*\([a-z]cc\)')
|
|
myconf="${myconf} --compiler=${compiler}"
|
|
|
|
# Additional USE flag usage
|
|
check_use openmp
|
|
myconf="${myconf} --enable-openmp-if-possible=${USE_openmp}"
|
|
|
|
use threads && USEthreads="--enable-boost-threads" && \
|
|
ewarn "If using boost threads openmp support is disabled"
|
|
|
|
myconf="${myconf} ${USE_threads} --scan-boost --use_environment_flags"
|
|
|
|
mkdir "${MY_B}" && myconf="${myconf} --current_working_directory=${MY_B}"
|
|
cd "${MY_B}"
|
|
|
|
myconf="${myconf} --build=release fftw3tbx rstbx smtbx mmtbx clipper_adaptbx fable"
|
|
einfo "configuring with ${python} ${myconf}"
|
|
|
|
$(PYTHON) ${myconf} || die "configure failed"
|
|
}
|
|
|
|
src_compile() {
|
|
local makeopts_exp
|
|
|
|
cd "${MY_B}"
|
|
|
|
makeopts_exp=${MAKEOPTS/j/j }
|
|
makeopts_exp=${makeopts_exp%-l[0-9]*}
|
|
|
|
source setpaths_all.sh
|
|
|
|
einfo "compiling with libtbx.scons ${makeopts_exp}"
|
|
libtbx.scons ${makeopts_exp} .|| die "make failed"
|
|
}
|
|
|
|
src_test(){
|
|
source "${MY_B}"/setpaths_all.sh
|
|
libtbx.python $(libtbx.show_dist_paths boost_adaptbx)/tests/tst_rational.py && \
|
|
libtbx.python ${SCITBX_DIST}/run_tests.py ${MAKEOPTS_EXP} && \
|
|
libtbx.python ${CCTBX_DIST}/run_tests.py ${MAKEOPTS_EXP} \
|
|
|| die "test failed"
|
|
}
|
|
|
|
src_install(){
|
|
local lib baselib
|
|
# find cctbx_build/ -type f \( -name "*.py" -o -name "*sh" \) -exec \
|
|
# sed -e "s:${MY_S}:${EPREFIX}/usr/$(get_libdir)/cctbx/cctbx_sources:g" \
|
|
# -e "s:${MY_B}:${EPREFIX}/usr/$(get_libdir)/cctbx/cctbx_build:g" \
|
|
# -i '{}' \; || die "Fail to correct path"
|
|
|
|
sed \
|
|
-e "s:${MY_B}:${EPREFIX}/usr:g" \
|
|
-e "s:${MY_S}:${EPREFIX}/$(python_get_sitedir):g" \
|
|
-i "${MY_B}/libtbx_env" || die
|
|
|
|
insinto /usr/share/cctbx
|
|
doins "${MY_B}/libtbx_env" || die
|
|
|
|
ebegin "removing unnessary files"
|
|
rm -r "${S}"/cctbx_sources/{clipper,ccp4io,ucs-fonts,TAG} || die "failed to remove uneeded scons"
|
|
find -O3 "${S}" -type f \
|
|
\( -name "*conftest*" -o -name "*.o" -o -name "*.c" -o -name "*.f" -o -name "*.cpp" -o \
|
|
-name "*.pyc" -o -name "SCons*" -o -name "Makefile" -o -name "config.log" \) -delete || die
|
|
find "${S}" -type d -empty -delete || die
|
|
find "${MY_B}" -maxdepth 1 -type f -delete || die
|
|
eend
|
|
|
|
dobin "${MY_B}"/bin/* || die
|
|
rm -rf "${MY_B}/bin"
|
|
dolib.so "${MY_B}"/lib/lib* || die
|
|
mv "${ED}"/usr/$(get_libdir)/libscitbx_min{,i}pack.so || die
|
|
rm -f "${MY_B}"/lib/lib*
|
|
|
|
for lib in "${ED}"/usr/$(get_libdir)/*.so; do
|
|
baselib=$(basename ${lib})
|
|
mv ${lib}{,.0.0}
|
|
dosym ${baselib}.0.0 /usr/$(get_libdir)/${baselib}
|
|
done
|
|
|
|
insinto /usr/include
|
|
doins -r "${MY_B}"/include/* || die
|
|
rm -rf "${MY_B}/include"
|
|
|
|
insinto /usr/libexec/${PN}
|
|
doins -r "${MY_B}"/* || die
|
|
find "${ED}"/usr/libexec/${PN} -type f -exec chmod 755 '{}' \;
|
|
|
|
cd "${MY_S}"
|
|
insinto $(python_get_sitedir)
|
|
doins -r * || die
|
|
exeinto $(python_get_sitedir)
|
|
doexe "${MY_B}"/lib/* || die
|
|
rm -rf "${MY_B}/lib"
|
|
|
|
sed \
|
|
-e "/PYTHONPATH/s:${MY_S}:$(python_get_sitedir):g" \
|
|
-e "/PYTHONPATH/s:${MY_B}:$(python_get_sitedir):g" \
|
|
-e "/LD_LIBRARY_PATH/s:${MY_B}/lib:${EPREFIX}/usr/$(get_libdir):g" \
|
|
-e "/PATH/s:${MY_B}/bin:${EPREFIX}/usr/bin:g" \
|
|
-e "/PATH/s:${MY_B}/exe:${EPREFIX}/usr/bin:g" \
|
|
-e "/exec/s:${MY_S}:$(python_get_sitedir):g" \
|
|
-e "/LIBTBX_BUILD/s:${MY_B}:${EPREFIX}/usr/share/cctbx:g" \
|
|
-e "s:${MY_B}/exe_dev/:${EPREFIX}/usr/libexec/${PN}/exe_dev/:g" \
|
|
-i "${ED}"/usr/bin/* || die
|
|
|
|
}
|
|
|
|
pkg_postinst () {
|
|
python_mod_optimize boost_adaptbx cbflib_adaptbx ccp4io_adaptbx cctbx chiltbx clipper_adaptbx crys3d fable fftw3tbx gltbx iotbx libtbx mmtbx omptbx rstbx scitbx smtbx spotfinder tntbx
|
|
}
|
|
|
|
pkg_postrm () {
|
|
python_mod_cleanup boost_adaptbx cbflib_adaptbx ccp4io_adaptbx cctbx chiltbx clipper_adaptbx crys3d fable fftw3tbx gltbx iotbx libtbx mmtbx omptbx rstbx scitbx smtbx spotfinder tntbx
|
|
}
|
|
|
|
check_use() {
|
|
for var in $@; do
|
|
if use ${var}; then
|
|
printf -v "USE_$var" True
|
|
else
|
|
printf -v "USE_$var" False
|
|
fi
|
|
shift
|
|
done
|
|
}
|