summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org>2010-12-13 14:11:43 +0000
committerArfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org>2010-12-13 14:11:43 +0000
commitb3b34b515032dc1f4877dfd9be041d83df3e23e7 (patch)
tree7c0a6a9fa0aac787ca82869732552e5c6071288b /dev-java
parentRevision bump to fix crashing when using qt-4.7 (diff)
downloadgentoo-2-b3b34b515032dc1f4877dfd9be041d83df3e23e7.tar.gz
gentoo-2-b3b34b515032dc1f4877dfd9be041d83df3e23e7.tar.bz2
gentoo-2-b3b34b515032dc1f4877dfd9be041d83df3e23e7.zip
Properly use python.eclass. Add "readline", "ssl", "threads" and "xml" USE flags. Support PYTHONDONTWRITEBYTECODE in Distutils. Rename "jython-2.5" script to "jython2.5". Respect JYTHON_SYSTEM_CACHEDIR and delete unsetting of EPYTHON in "jython2.5" script.
(Portage version: 2.2.0_alpha8/cvs/Linux x86_64)
Diffstat (limited to 'dev-java')
-rw-r--r--dev-java/jython/ChangeLog13
-rw-r--r--dev-java/jython/files/jython-2.5.1-distutils_byte_compilation.patch48
-rw-r--r--dev-java/jython/files/python-2.5.5-distutils_byte_compilation.patch37
-rw-r--r--dev-java/jython/jython-2.5.1-r2.ebuild178
4 files changed, 275 insertions, 1 deletions
diff --git a/dev-java/jython/ChangeLog b/dev-java/jython/ChangeLog
index 453cd69146c0..c022e2e6876c 100644
--- a/dev-java/jython/ChangeLog
+++ b/dev-java/jython/ChangeLog
@@ -1,6 +1,17 @@
# ChangeLog for dev-java/jython
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-java/jython/ChangeLog,v 1.69 2010/03/20 13:17:20 arfrever Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-java/jython/ChangeLog,v 1.70 2010/12/13 14:11:43 arfrever Exp $
+
+*jython-2.5.1-r2 (13 Dec 2010)
+
+ 13 Dec 2010; Arfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org>
+ +jython-2.5.1-r2.ebuild,
+ +files/jython-2.5.1-distutils_byte_compilation.patch,
+ +files/python-2.5.5-distutils_byte_compilation.patch:
+ Properly use python.eclass. Add "readline", "ssl", "threads" and "xml" USE
+ flags. Support PYTHONDONTWRITEBYTECODE in Distutils. Rename "jython-2.5"
+ script to "jython2.5". Respect JYTHON_SYSTEM_CACHEDIR and delete unsetting of
+ EPYTHON in "jython2.5" script.
20 Mar 2010; Arfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org>
jython-2.5.1-r1.ebuild,
diff --git a/dev-java/jython/files/jython-2.5.1-distutils_byte_compilation.patch b/dev-java/jython/files/jython-2.5.1-distutils_byte_compilation.patch
new file mode 100644
index 000000000000..9ba2cc51924c
--- /dev/null
+++ b/dev-java/jython/files/jython-2.5.1-distutils_byte_compilation.patch
@@ -0,0 +1,48 @@
+--- Lib/distutils/tests/test_build_py.py
++++ Lib/distutils/tests/test_build_py.py
+@@ -92,6 +92,25 @@
+ os.chdir(cwd)
+ sys.stdout = sys.__stdout__
+
++ def test_dont_write_bytecode(self):
++ # makes sure byte_compile is not used
++ pkg_dir, dist = self.create_dist()
++ cmd = build_py(dist)
++ cmd.compile = 1
++ cmd.optimize = 1
++
++ old_dont_write_bytecode = os.environ.get("PYTHONDONTWRITEBYTECODE")
++ os.environ["PYTHONDONTWRITEBYTECODE"] = "1"
++ try:
++ cmd.byte_compile([])
++ finally:
++ if old_dont_write_bytecode is None:
++ del os.environ["PYTHONDONTWRITEBYTECODE"]
++ else:
++ os.environ["PYTHONDONTWRITEBYTECODE"] = old_dont_write_bytecode
++
++ self.assertTrue('byte-compiling is disabled' in self.logs[0][1])
++
+ def test_suite():
+ return unittest.makeSuite(BuildPyTestCase)
+
+--- Lib/distutils/util.py
++++ Lib/distutils/util.py
+@@ -11,6 +11,7 @@
+ from distutils.dep_util import newer
+ from distutils.spawn import spawn
+ from distutils import log
++from distutils.errors import DistutilsByteCompileError
+
+ def get_platform ():
+ """Return a string that identifies the current platform. This is used
+@@ -397,6 +398,9 @@
+ generated in indirect mode; unless you know what you're doing, leave
+ it set to None.
+ """
++ # nothing is done if PYTHONDONTWRITEBYTECODE environment variable is set
++ if os.environ.get("PYTHONDONTWRITEBYTECODE") is not None:
++ raise DistutilsByteCompileError('byte-compiling is disabled.')
+
+ # First, if the caller didn't force us into direct or indirect mode,
+ # figure out which mode we should be in. We take a conservative
diff --git a/dev-java/jython/files/python-2.5.5-distutils_byte_compilation.patch b/dev-java/jython/files/python-2.5.5-distutils_byte_compilation.patch
new file mode 100644
index 000000000000..d029247dd256
--- /dev/null
+++ b/dev-java/jython/files/python-2.5.5-distutils_byte_compilation.patch
@@ -0,0 +1,37 @@
+--- Lib/distutils/command/build_py.py
++++ Lib/distutils/command/build_py.py
+@@ -418,6 +418,10 @@
+
+
+ def byte_compile (self, files):
++ if os.environ.get("PYTHONDONTWRITEBYTECODE") is not None:
++ self.warn('byte-compiling is disabled, skipping.')
++ return
++
+ from distutils.util import byte_compile
+ prefix = self.build_lib
+ if prefix[-1] != os.sep:
+--- Lib/distutils/command/install_lib.py
++++ Lib/distutils/command/install_lib.py
+@@ -121,6 +121,10 @@
+ return outfiles
+
+ def byte_compile (self, files):
++ if os.environ.get("PYTHONDONTWRITEBYTECODE") is not None:
++ self.warn('byte-compiling is disabled, skipping.')
++ return
++
+ from distutils.util import byte_compile
+
+ # Get the "--root" directory supplied to the "install" command,
+--- Lib/distutils/errors.py
++++ Lib/distutils/errors.py
+@@ -76,6 +76,8 @@
+ class DistutilsTemplateError (DistutilsError):
+ """Syntax error in a file list template."""
+
++class DistutilsByteCompileError(DistutilsError):
++ """Byte compile error."""
+
+ # Exception classes used by the CCompiler implementation classes
+ class CCompilerError (Exception):
diff --git a/dev-java/jython/jython-2.5.1-r2.ebuild b/dev-java/jython/jython-2.5.1-r2.ebuild
new file mode 100644
index 000000000000..980574fc8819
--- /dev/null
+++ b/dev-java/jython/jython-2.5.1-r2.ebuild
@@ -0,0 +1,178 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-java/jython/jython-2.5.1-r2.ebuild,v 1.1 2010/12/13 14:11:43 arfrever Exp $
+
+JAVA_PKG_IUSE="source doc examples oracle"
+#informix missing. This is a jdbc driver, similar to oracle use flag
+#functionality.
+
+EAPI="3"
+
+inherit base java-pkg-2 java-ant-2 python
+
+DESCRIPTION="An implementation of Python written in Java"
+HOMEPAGE="http://www.jython.org"
+
+PYVER="2.5.5"
+
+SRC_URI="http://www.python.org/ftp/python/${PYVER%_*}/Python-${PYVER}.tgz
+ mirror://gentoo/${P}.tar.bz2"
+
+LICENSE="PSF-2.2"
+SLOT="2.5"
+PYTHON_ABI="${SLOT}-jython"
+KEYWORDS="~amd64 ~x86"
+IUSE="+readline +ssl +threads +xml"
+
+#>=dev-java/jdbc-mysql-3.1
+#dev-java/jdbc-postgresql
+CDEPEND="=dev-java/jakarta-oro-2.0*
+ >=dev-java/libreadline-java-0.8.0
+ dev-java/asm:3
+ oracle? ( dev-java/jdbc-oracle-bin:10.2 )
+ java-virtuals/servlet-api:2.5
+ !<=dev-java/freemarker-2.3.10
+ dev-java/constantine:0
+ dev-java/jline:0
+ dev-java/jna-posix:0
+ dev-java/jna:0
+ dev-java/antlr:0
+ dev-java/antlr:3
+ dev-java/stringtemplate:0
+ dev-java/xerces:2
+ dev-java/jsr223:0
+ >=dev-java/java-config-2.1.11-r3"
+RDEPEND=">=virtual/jre-1.5
+ ${CDEPEND}"
+DEPEND=">=virtual/jdk-1.5
+ dev-java/ant-core:0
+ dev-java/junit:0
+ ${CDEPEND}"
+
+pkg_setup() {
+ java-pkg-2_pkg_setup
+ python_pkg_setup
+}
+
+java_prepare() {
+ epatch "${FILESDIR}/${P}-build.patch"
+ epatch "${FILESDIR}/${P}-distutils_byte_compilation.patch"
+ epatch "${FILESDIR}/${P}-distutils_scripts_location.patch"
+ epatch "${FILESDIR}/${P}-respect_PYTHONPATH.patch"
+
+ rm -Rfv org || die "Unable to remove class files."
+ find extlibs -iname '*.jar' | xargs rm -fv || die "Unable to remove bundled jars"
+ find "${WORKDIR}" -iname '*.pyc' | xargs rm -fv
+ java-pkg_jar-from --into extlibs libreadline-java libreadline-java.jar \
+ libreadline-java-0.8.jar
+ java-pkg_jar-from --into extlibs antlr-3 antlr3.jar antlr-3.1.3.jar
+ java-pkg_jar-from --into extlibs antlr antlr.jar antlr-2.7.7.jar
+ java-pkg_jar-from --into extlibs stringtemplate stringtemplate.jar \
+ stringtemplate-3.2.jar
+ java-pkg_jar-from --into extlibs servlet-api-2.5 servlet-api.jar \
+ servlet-api-2.5.jar
+ java-pkg_jar-from --into extlibs asm-3 asm.jar asm-3.1.jar
+ java-pkg_jar-from --into extlibs asm-3 asm-commons.jar \
+ asm-commons-3.1.jar
+ java-pkg_jar-from --into extlibs constantine constantine.jar \
+ constantine-0.4.jar
+ java-pkg_jar-from --into extlibs jline jline.jar \
+ jline-0.9.95-SNAPSHOT.jar
+ java-pkg_jar-from --into extlibs jna jna.jar
+ java-pkg_jar-from --into extlibs jna-posix jna-posix.jar
+ java-pkg_jar-from --build-only --into extlibs ant-core ant.jar
+ java-pkg_jar-from --build-only --into extlibs junit junit.jar \
+ junit-3.8.2.jar
+ java-pkg_jar-from --into extlibs xerces-2 xercesImpl.jar
+ java-pkg_jar-from --into extlibs jsr223 script-api.jar \
+ livetribe-jsr223-2.0.5.jar
+
+ echo "has.repositories.connection=false" > ant.properties
+
+ if use oracle; then
+ echo \
+ "oracle.jar=$(java-pkg-getjar jdbc-oracle-bin-10.2 ojdbc14.jar)" \
+ >> ant.properties
+ fi
+
+ pushd "${WORKDIR}/Python-${PYVER}" > /dev/null
+ epatch "${FILESDIR}/python-${PYVER}-distutils_byte_compilation.patch"
+ popd > /dev/null
+}
+
+src_compile() {
+ local antflags=""
+ local pylib="../Python-${PYVER}/Lib"
+ antflags="${antflags} -Dpython.lib=${pylib}"
+ eant ${antflags} developer-build $(use_doc javadoc)
+}
+
+# Restrict tests as some dont compile and others (a couple) are broken.
+RESTRICT="test"
+src_test() {
+#[exec] 311 tests OK.
+#[exec] 3 tests skipped:
+#[exec] test_subprocess test_urllib2net test_urllibnet
+#[exec] 2 tests failed:
+#[exec] test_pbcvm test_pkgimport
+#[exec] 2 fails unexpected:
+#[exec] test_pbcvm test_pkgimport
+ local antflags=""
+ antflags+=" -Dgentoo.library.path=$(java-config -di jna-posix)"
+ antflags+=" -Dpython.home=dist"
+ local pylib="../Python-${PYVER}/Lib"
+ antflags+=" -Dpython.lib=${pylib}"
+ ANT_TASKS="ant-junit" eant ${antflags} test
+}
+
+src_install() {
+ dodoc README.txt NEWS ACKNOWLEDGMENTS README.txt
+ cd dist || die
+ java-pkg_newjar "${PN}-dev.jar"
+
+ local java_args="-Dpython.home=/usr/share/${PN}-${SLOT}"
+ java_args+=" -Dpython.cachedir=\$([[ -n \"\${JYTHON_SYSTEM_CACHEDIR}\" ]] && echo ${EPREFIX}/var/cache/${PN}/${SLOT}-\${EUID} || echo \${HOME}/.jythoncachedir)"
+ java_args+=" -Dpython.executable=${EPREFIX}/usr/bin/jython${SLOT}"
+
+ java-pkg_dolauncher jython${SLOT} \
+ --main "org.python.util.jython" \
+ --pkg_args "${java_args}"
+
+ java-pkg_register-optional-dependency jdbc-mysql
+ java-pkg_register-optional-dependency jdbc-postgresql
+
+ insinto /usr/share/${PN}-${SLOT}
+ doins -r Lib registry
+ python_clean_installation_image -q
+
+ use doc && java-pkg_dojavadoc Doc/javadoc
+ use source && java-pkg_dosrc ../src
+ cd "${S}"
+ use examples && java-pkg_doexamples Demo/*
+
+ if use readline; then
+ sed \
+ -e "s/#\(python.console=org.python.util.ReadlineConsole\)/\1/" \
+ -e "/#python.console.readlinelib=JavaReadline/a python.console.readlinelib=GnuReadline" \
+ -i "${ED}usr/share/${PN}-${SLOT}/registry" || die "sed failed"
+ fi
+}
+
+pkg_postinst() {
+ python_mod_optimize -f -x "/(site-packages|test|tests)/" $(python_get_libdir)
+
+ elog
+ elog "readline can be configured in the registry:"
+ elog
+ elog "python.console=org.python.util.ReadlineConsole"
+ elog "python.console.readlinelib=GnuReadline"
+ elog
+ elog "Global registry: '${EROOT}usr/share/${PN}-${SLOT}/registry'"
+ elog "User registry: '~/.jython'"
+ elog "See http://www.jython.org/docs/registry.html for more information."
+ elog
+}
+
+pkg_postrm() {
+ python_mod_cleanup $(python_get_libdir)
+}