summaryrefslogtreecommitdiff
blob: 8e7588594e5fc9bca6df1f5410ab7def0e0bd92a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/pdb2pqr/pdb2pqr-1.9.0-r1.ebuild,v 1.5 2015/05/13 06:47:49 jmorgan Exp $

EAPI=5

PYTHON_COMPAT=( python2_7 )

inherit scons-utils fortran-2 flag-o-matic python-r1 toolchain-funcs

DESCRIPTION="An automated pipeline for performing Poisson-Boltzmann electrostatics calculations"
HOMEPAGE="http://www.poissonboltzmann.org/"
SRC_URI="https://github.com/Electrostatics/apbs-${PN}/releases/download/${P}/${PN}-src-${PV}.tar.gz"

SLOT="0"
LICENSE="BSD"
IUSE="doc examples opal +pdb2pka"
KEYWORDS="~amd64 ppc ~x86 ~amd64-linux ~x86-linux"

REQUIRED_USE="${PYTHON_REQUIRED_USE}"

RDEPEND="${PYTHON_DEPS}
	dev-python/numpy[${PYTHON_USEDEP}]
	sci-chemistry/openbabel-python[${PYTHON_USEDEP}]
	opal? ( dev-python/zsi[${PYTHON_USEDEP}] )
	pdb2pka? ( sci-chemistry/apbs[${PYTHON_USEDEP},-mpi] )"
DEPEND="${RDEPEND}
	dev-lang/swig:0"

PATCHES=(
	"${FILESDIR}"/${P}-flags.patch
	"${FILESDIR}"/${P}-install-py.patch
)

pkg_setup() {
	if [[ -z ${MAXATOMS} ]]; then
		einfo "If you like to have support for more then 10000 atoms,"
		einfo "export MAXATOMS=\"your value\""
		export MAXATOMS=10000
	else
		einfo "Allow usage of ${MAXATOMS} during calculations"
	fi
	fortran-2_pkg_setup
}

src_prepare() {
	find -type f \( -name "*\.pyc" -o -name "*\.pyo" \) -delete || die

	export CXXFLAGS="${CXXFLAGS}"
	export LDFLAGS="${LDFLAGS}"

	epatch ${PATCHES[@]}
	tc-export CXX
	rm -rf scons || die

	python_copy_sources
}

src_configure() {
	python_configure() {
		cd "${BUILD_DIR}" || die

		cat > build_config.py <<- EOF
		PREFIX="${D}/$(python_get_sitedir)/${PN}"
		#URL="http://<COMPUTER NAME>/pdb2pqr/"
		APBS="${EPREFIX}/usr/bin/apbs"
		#OPAL="http://nbcr-222.ucsd.edu/opal2/services/pdb2pqr_1.8"
		#APBS_OPAL="http://nbcr-222.ucsd.edu/opal2/services/apbs_1.3"
		MAX_ATOMS=${MAXATOMS}
		BUILD_PDB2PKA=$(usex pdb2pka True False)
		REBUILD_SWIG=True
		EOF
	}

	python_foreach_impl python_configure
}

src_compile() {
	python_compile() {
		cd "${BUILD_DIR}" || die
		escons
	}
	python_foreach_impl python_compile
}

src_test() {
	python_test() {
		local myesconsargs=( -j1 )
		cd "${BUILD_DIR}" || die
		escons test
		escons advtest
		escons complete-test
	}
	python_foreach_impl python_test
}

src_install() {
	dodir /usr/share/doc/${PF}/html
	python_install() {
		local lib

		cd "${BUILD_DIR}" || die

		escons install

		find "${D}$(python_get_sitedir)"/${PN}/{jmol,examples,doc,contrib} -delete || die

		python_doscript "${FILESDIR}"/{${PN},pdb2pka}

		for lib in apbslib.py{,c,o}; do
			dosym ../../apbs/${lib} $(python_get_sitedir)/${PN}/pdb2pka/${lib}
		done
		dosym ../../_apbslib.so $(python_get_sitedir)/${PN}/pdb2pka/_apbslib.so
		python_optimize
	}
	python_foreach_impl python_install

	if use doc; then
		pushd doc > /dev/null
		docinto html
		dodoc -r *.html images pydoc
		popd > /dev/null
	fi

	use examples && \
		insinto /usr/share/${PN}/ && \
		doins -r examples

	dodoc *md NEWS
}