blob: e455cffd64e28b8f8487ed0ce358a2439b3c968e (
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI="4"
JAVA_PKG_IUSE="doc examples source"
inherit eutils java-pkg-2 java-ant-2 python-utils-r1
DESCRIPTION="An implementation of Python written in Java"
HOMEPAGE="http://www.jython.org"
SRC_URI="http://central.maven.org/maven2/org/python/${PN}-installer/${PV}/${PN}-installer-${PV}.jar"
LICENSE="PSF-2"
SLOT="2.5"
KEYWORDS="amd64 x86 ~x86-freebsd ~amd64-linux ~x86-linux ~x86-macos"
IUSE="readline"
# Missing in installer jar.
RESTRICT="test"
COMMON_DEP="
!<=dev-java/freemarker-2.3.10
dev-java/antlr:3
dev-java/asm:3
dev-java/guava:0
>=dev-java/java-config-2.1.11-r3
dev-java/jffi:1.0
dev-java/jline:0
dev-java/jnr-constants:0.8.2
dev-java/jnr-posix:1.1
java-virtuals/script-api:0
java-virtuals/servlet-api:2.5
readline? ( >=dev-java/libreadline-java-0.8.0:0 )"
RDEPEND="${COMMON_DEP}
>=virtual/jre-1.5"
DEPEND="${COMMON_DEP}
>=virtual/jdk-1.5
app-arch/unzip"
S="${WORKDIR}"
java_prepare() {
# src/META-INF/services missing - taking from prebuilt jar
pushd src > /dev/null || die
jar -xf ../${PN}.jar META-INF/services || die
popd > /dev/null
find \( -name '*.jar' -o -name '*.class' \
-o -name '*.pyc' -o -name '*.exe' \) -delete
epatch "${FILESDIR}/${PN}-2.5.2-build.xml.patch"
epatch "${FILESDIR}/${PN}-2.5.2-distutils_byte_compilation.patch"
epatch "${FILESDIR}/${PN}-2.5.2-distutils_scripts_location.patch"
epatch "${FILESDIR}/${PN}-2.5.2-respect_PYTHONPATH.patch"
if ! use readline; then
rm -v src/org/python/util/ReadlineConsole.java || die
fi
}
JAVA_ANT_REWRITE_CLASSPATH="yes"
JAVA_ANT_CLASSPATH_TAGS+=" java"
EANT_BUILD_TARGET="developer-build"
EANT_GENTOO_CLASSPATH="asm-3,guava,jffi-1.0,jline,jnr-constants-0.8.2,script-api,servlet-api-2.5"
# jdbc-informix and jdbc-oracle-bin (requires registration) aren't exposed.
# Uncomment and add to COMMON_DEP if you want either of them
#EANT_GENTOO_CLASSPATH+=",jdbc-informix" EANT_EXTRA_ARGS+=" -Dinformix.present"
#EANT_GENTOO_CLASSPATH+=",jdbc-oracle-bin" EANT_EXTRA_ARGS+=" -Doracle.present"
src_compile() {
use readline && EANT_GENTOO_CLASSPATH+=",libreadline-java"
EANT_GENTOO_CLASSPATH_EXTRA="$(java-pkg_getjars --with-dependencies antlr-3,jnr-posix-1.1)"
EANT_GENTOO_CLASSPATH_EXTRA+=":$(java-pkg_getjars --build-only ant-core)"
sed -i -e "1 a\
CLASSPATH=\"$(java-pkg_getjars "${EANT_GENTOO_CLASSPATH}"):${EANT_GENTOO_CLASSPATH_EXTRA}\"" \
bin/jython || die
java-pkg-2_src_compile
}
EANT_TEST_EXTRA_ARGS="-Dpython.home=dist"
src_test() {
java-pkg-2_src_test
}
src_install() {
java-pkg_newjar dist/${PN}-dev.jar
java-pkg_register-optional-dependency jdbc-mysql
java-pkg_register-optional-dependency jdbc-postgresql
insinto /usr/share/${PN}-${SLOT}
doins -r dist/{Lib,registry}
dodoc ACKNOWLEDGMENTS NEWS README.txt
use doc && java-pkg_dojavadoc dist/Doc/javadoc
use source && java-pkg_dosrc src/*
use examples && java-pkg_doexamples Demo/*
local java_args=(
-Dpython.home="${EPREFIX}"/usr/share/${PN}-${SLOT}
-Dpython.executable="${EPREFIX}"/usr/bin/jython${SLOT}
-Dpython.cachedir="\${HOME}/.jythoncachedir"
)
java-pkg_dolauncher jython${SLOT} \
--main org.python.util.jython \
--java_args "${java_args[*]}"
if use readline; then
sed -i -e "/#python.console.readlinelib=JavaReadline/a \
python.console=org.python.util.ReadlineConsole\npython.console.readlinelib=GnuReadline" \
"${ED}"/usr/share/${PN}-${SLOT}/registry || die
fi
# the jvm opens classfiles rw ...
dodir /etc/sandbox.d
echo "SANDBOX_PREDICT=/usr/share/${PN}-${SLOT}" > "${ED}/etc/sandbox.d/20${P}-${SLOT}"
# we need a wrapper to help python_optimize
cat > "${T}"/jython <<_EOF_ || die
exec java -cp "$(java-pkg_getjars "${EANT_GENTOO_CLASSPATH}"):${EANT_GENTOO_CLASSPATH_EXTRA}:dist/${PN}-dev.jar" \
-Dpython.home="${ED}"/usr/share/${PN}-${SLOT} \
-Dpython.cachedir="${T}/.jythoncachedir" \
-Duser.home="${T}" \
org.python.util.jython "\${@}"
_EOF_
chmod +x "${T}"/jython || die
local -x PYTHON="${T}"/jython
python_export jython${SLOT} EPYTHON PYTHON_SITEDIR
# compile tests (everything else is compiled already)
# we're keeping it quiet since jython reports errors verbosely
# and some of the tests are supposed to trigger compile errors
python_optimize "${ED}"/usr/share/jython-${SLOT}/Lib/test &>/dev/null
# for python-exec
echo "EPYTHON='${EPYTHON}'" > epython.py || die
python_domodule epython.py
}
|