mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-11-04 17:07:08 -08:00
dev-java/jython: treeclean
Closes: https://bugs.gentoo.org/825486 Closes: https://bugs.gentoo.org/828473 Closes: https://bugs.gentoo.org/886363 Signed-off-by: David Seifert <soap@gentoo.org>
This commit is contained in:
@@ -1 +0,0 @@
|
||||
DIST jython-2.7.0-sources.jar 15371691 BLAKE2B 7e1c29f2a2c03b034e89bb9c3a8fdddbaef6a0191a7320c82b76e31b41336f3d99c1995b2e9864c033ec53629d45669ad460fb4a1433ea7bc6b0390919500a24 SHA512 7583810245d694fd1d99a57ad504fcefdfbc1183def2cbb93ae3660f341104205c73041d846bdcf2b564b3cf4b770b481703c1dcdb1458396812c92d30ee9fa6
|
||||
@@ -1,158 +0,0 @@
|
||||
|
||||
# HG changeset patch
|
||||
# User Jim Baker <jim.baker@rackspace.com>
|
||||
# Date 1454384221 25200
|
||||
# Node ID d06e29d100c04576735e86c75a26c5f33669bb72
|
||||
# Parent b6735606c13df95f770527e629954407f82808c5
|
||||
Do not deserialize PyFunction objects. Fixes #2454
|
||||
|
||||
Instead use standard Python pickling; or subclass PyFunction.
|
||||
|
||||
diff --git a/Lib/test/test_java_integration.py b/Lib/test/test_java_integration.py
|
||||
--- a/Lib/test/test_java_integration.py
|
||||
+++ b/Lib/test/test_java_integration.py
|
||||
@@ -14,8 +14,9 @@ import re
|
||||
from collections import deque
|
||||
from test import test_support
|
||||
|
||||
-from java.lang import (ClassCastException, ExceptionInInitializerError, String, Runnable, System,
|
||||
- Runtime, Math, Byte)
|
||||
+from java.lang import (
|
||||
+ ClassCastException, ExceptionInInitializerError, UnsupportedOperationException,
|
||||
+ String, Runnable, System, Runtime, Math, Byte)
|
||||
from java.math import BigDecimal, BigInteger
|
||||
from java.net import URI
|
||||
from java.io import (ByteArrayInputStream, ByteArrayOutputStream, File, FileInputStream,
|
||||
@@ -656,13 +657,30 @@ class SerializationTest(unittest.TestCas
|
||||
self.assertEqual(date_list, roundtrip_serialization(date_list))
|
||||
|
||||
def test_java_serialization_pycode(self):
|
||||
-
|
||||
def universal_answer():
|
||||
return 42
|
||||
|
||||
serialized_code = roundtrip_serialization(universal_answer.func_code)
|
||||
self.assertEqual(eval(serialized_code), universal_answer())
|
||||
|
||||
+ def test_java_serialization_pyfunction(self):
|
||||
+ # Not directly supported due to lack of general utility
|
||||
+ # (globals will usually be in the function object in
|
||||
+ # func_globals), and problems with unserialization
|
||||
+ # vulnerabilities. Users can always subclass from PyFunction
|
||||
+ # for specific cases, as seen in PyCascading
|
||||
+ import new
|
||||
+ def f():
|
||||
+ return 6 * 7 + max(0, 1, 2)
|
||||
+ # However, using the new module, it's possible to create a
|
||||
+ # function with no globals, which means the globals will come
|
||||
+ # from the current context
|
||||
+ g = new.function(f.func_code, {}, "g")
|
||||
+ # But still forbid Java deserialization of this function
|
||||
+ # object. Use pickling or other support instead.
|
||||
+ with self.assertRaises(UnsupportedOperationException):
|
||||
+ roundtrip_serialization(g)
|
||||
+
|
||||
def test_builtin_names(self):
|
||||
import __builtin__
|
||||
names = [x for x in dir(__builtin__)]
|
||||
@@ -872,7 +890,7 @@ class SingleMethodInterfaceTest(unittest
|
||||
future.get()
|
||||
self.assertEqual(x, [42])
|
||||
|
||||
- @unittest.skip("FIXME: not working")
|
||||
+ @unittest.skip("FIXME: not working; see http://bugs.jython.org/issue2115")
|
||||
def test_callable_object(self):
|
||||
callable_obj = CallableObject()
|
||||
future = self.executor.submit(callable_obj)
|
||||
diff --git a/Lib/test/test_new.py b/Lib/test/test_new.py
|
||||
--- a/Lib/test/test_new.py
|
||||
+++ b/Lib/test/test_new.py
|
||||
@@ -24,18 +24,10 @@ class NewTest(unittest.TestCase):
|
||||
c = new.instance(C, {'yolks': 3})
|
||||
|
||||
o = new.instance(C)
|
||||
-
|
||||
- # __dict__ is a non dict mapping in Jython
|
||||
- if test_support.is_jython:
|
||||
- self.assertEqual(len(o.__dict__), 0, "new __dict__ should be empty")
|
||||
- else:
|
||||
- self.assertEqual(o.__dict__, {}, "new __dict__ should be empty")
|
||||
+ self.assertEqual(o.__dict__, {}, "new __dict__ should be empty")
|
||||
del o
|
||||
o = new.instance(C, None)
|
||||
- if test_support.is_jython:
|
||||
- self.assertEqual(len(o.__dict__), 0, "new __dict__ should be empty")
|
||||
- else:
|
||||
- self.assertEqual(o.__dict__, {}, "new __dict__ should be empty")
|
||||
+ self.assertEqual(o.__dict__, {}, "new __dict__ should be empty")
|
||||
del o
|
||||
|
||||
def break_yolks(self):
|
||||
@@ -109,7 +101,14 @@ class NewTest(unittest.TestCase):
|
||||
test_closure(g, (1, 1), ValueError) # closure is wrong size
|
||||
test_closure(f, g.func_closure, ValueError) # no closure needed
|
||||
|
||||
- if hasattr(new, 'code') and not test_support.is_jython:
|
||||
+ # [Obsolete] Note: Jython will never have new.code()
|
||||
+ #
|
||||
+ # Who said that?!!! guess what, we do! :)
|
||||
+ #
|
||||
+ # Unfortunately we still need a way to compile to Python bytecode,
|
||||
+ # so support is still incomplete, as seen in the fact that we need
|
||||
+ # to get values from CPython 2.7.
|
||||
+ if hasattr(new, 'code'):
|
||||
def test_code(self):
|
||||
# bogus test of new.code()
|
||||
def f(a): pass
|
||||
@@ -117,16 +116,16 @@ class NewTest(unittest.TestCase):
|
||||
c = f.func_code
|
||||
argcount = c.co_argcount
|
||||
nlocals = c.co_nlocals
|
||||
- stacksize = c.co_stacksize
|
||||
+ stacksize = 1 # TODO c.co_stacksize
|
||||
flags = c.co_flags
|
||||
- codestring = c.co_code
|
||||
- constants = c.co_consts
|
||||
- names = c.co_names
|
||||
+ codestring = 'd\x00\x00S' # TODO c.co_code
|
||||
+ constants = (None,) # TODO c.co_consts
|
||||
+ names = () # TODO c.co_names
|
||||
varnames = c.co_varnames
|
||||
filename = c.co_filename
|
||||
name = c.co_name
|
||||
firstlineno = c.co_firstlineno
|
||||
- lnotab = c.co_lnotab
|
||||
+ lnotab = '' # TODO c.co_lnotab, but also see http://bugs.jython.org/issue1638
|
||||
freevars = c.co_freevars
|
||||
cellvars = c.co_cellvars
|
||||
|
||||
diff --git a/src/org/python/core/PyBytecode.java b/src/org/python/core/PyBytecode.java
|
||||
--- a/src/org/python/core/PyBytecode.java
|
||||
+++ b/src/org/python/core/PyBytecode.java
|
||||
@@ -66,6 +66,12 @@ public class PyBytecode extends PyBaseCo
|
||||
|
||||
debug = defaultDebug;
|
||||
|
||||
+ if (argcount < 0) {
|
||||
+ throw Py.ValueError("code: argcount must not be negative");
|
||||
+ } else if (nlocals < 0) {
|
||||
+ throw Py.ValueError("code: nlocals must not be negative");
|
||||
+ }
|
||||
+
|
||||
co_argcount = nargs = argcount;
|
||||
co_varnames = varnames;
|
||||
co_nlocals = nlocals; // maybe assert = varnames.length;
|
||||
diff --git a/src/org/python/core/PyFunction.java b/src/org/python/core/PyFunction.java
|
||||
--- a/src/org/python/core/PyFunction.java
|
||||
+++ b/src/org/python/core/PyFunction.java
|
||||
@@ -545,6 +545,9 @@ public class PyFunction extends PyObject
|
||||
@Override
|
||||
public boolean isSequenceType() { return false; }
|
||||
|
||||
+ private Object readResolve() {
|
||||
+ throw new UnsupportedOperationException();
|
||||
+ }
|
||||
|
||||
/* Traverseproc implementation */
|
||||
@Override
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
--- a/Lib/distutils/command/install.py
|
||||
+++ b/Lib/distutils/command/install.py
|
||||
@@ -70,7 +70,7 @@
|
||||
'purelib': '$base/Lib/site-packages',
|
||||
'platlib': '$base/Lib/site-packages',
|
||||
'headers': '$base/Include/$dist_name',
|
||||
- 'scripts': '$base/bin',
|
||||
+ 'scripts': '/usr/bin',
|
||||
'data' : '$base',
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
--- a/src/org/python/core/PySystemState.java
|
||||
+++ b/src/org/python/core/PySystemState.java
|
||||
@@ -646,6 +646,12 @@
|
||||
if (jythonpath != null) {
|
||||
registry.setProperty("python.path", jythonpath);
|
||||
}
|
||||
+ else {
|
||||
+ jythonpath = System.getenv("PYTHONPATH");
|
||||
+ if (jythonpath != null) {
|
||||
+ registry.setProperty("python.path", jythonpath);
|
||||
+ }
|
||||
+ }
|
||||
} catch (SecurityException e) {
|
||||
}
|
||||
registry.putAll(postProperties);
|
||||
@@ -1,11 +0,0 @@
|
||||
--- a/build.xml.orig 2015-06-27 16:12:08.442000000 +0000
|
||||
+++ b/build.xml 2015-06-27 16:12:15.684000000 +0000
|
||||
@@ -448,7 +448,7 @@
|
||||
</target>
|
||||
|
||||
<target name="antlr_gen" depends="prepare-output" unless="antlr.notneeded">
|
||||
- <java classname="org.antlr.Tool" failonerror="true" fork="true" dir="${jython.base.dir}">
|
||||
+ <java classname="org.antlr.Tool" failonerror="false" fork="true" dir="${jython.base.dir}">
|
||||
<jvmarg value="-Xmx512m"/>
|
||||
<arg value="-Xconversiontimeout"/>
|
||||
<arg value="2000"/>
|
||||
@@ -1,28 +0,0 @@
|
||||
--- jython-2.7-b1-sources/build.xml
|
||||
+++ jython-2.7-b1-sources/build.xml
|
||||
@@ -508,6 +509,7 @@
|
||||
</javac>
|
||||
|
||||
<!-- java files used by tests -->
|
||||
+<!--
|
||||
<javac srcdir="${test.source.dir}"
|
||||
destdir="${compile.dir}"
|
||||
target="${jdk.target.version}"
|
||||
@@ -529,6 +531,7 @@
|
||||
<compilerarg line="${javac.Xlint}"/>
|
||||
<classpath refid="test.classpath" />
|
||||
</javac>
|
||||
+-->
|
||||
<copy file="${source.dir}/org/python/modules/ucnhash.dat"
|
||||
todir="${compile.dir}/org/python/modules"
|
||||
preservelastmodified="true" />
|
||||
@@ -826,9 +829,6 @@
|
||||
|
||||
<target name="copy-javalib" unless="full-build">
|
||||
<copy todir="${dist.dir}/javalib">
|
||||
- <fileset dir="${jython.base.dir}/extlibs">
|
||||
- <exclude name="profile.properties"/>
|
||||
- </fileset>
|
||||
<fileset dir="${work.dir}/build">
|
||||
<include name="*.jar"/>
|
||||
<include name="*.properties"/>
|
||||
@@ -1,11 +0,0 @@
|
||||
--- a/src/org/python/core/imp.java
|
||||
+++ b/src/org/python/core/imp.java
|
||||
@@ -228,7 +228,7 @@
|
||||
}
|
||||
if (testing && mtime != NO_MTIME) {
|
||||
long time = ar.getMTime();
|
||||
- if (mtime != time) {
|
||||
+ if (mtime < time) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
diff -r 035eded55c4d lib-python/2.7/sre_constants.py
|
||||
--- a/lib-python/2.7/sre_constants.py Wed Apr 16 18:30:13 2014 -0600
|
||||
+++ b/lib-python/2.7/sre_constants.py Fri Jul 25 10:31:27 2014 -0700
|
||||
@@ -15,7 +15,11 @@
|
||||
|
||||
MAGIC = 20031017
|
||||
|
||||
-from _sre import MAXREPEAT
|
||||
+try:
|
||||
+ from _sre import MAXREPEAT
|
||||
+except ImportError:
|
||||
+ import _sre
|
||||
+ MAXREPEAT = _sre.MAXREPEAT = 65535
|
||||
|
||||
# SRE standard exception (access as sre.error)
|
||||
# should this really be here?
|
||||
@@ -1,156 +0,0 @@
|
||||
# Copyright 1999-2022 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
JAVA_PKG_IUSE="doc source"
|
||||
MAVEN_ID="org.python:jython:2.7.0"
|
||||
|
||||
inherit java-pkg-2 java-ant-2 python-utils-r1 flag-o-matic
|
||||
|
||||
MY_PV=${PV/_beta/-b}
|
||||
MY_P=${PN}-${MY_PV}
|
||||
|
||||
DESCRIPTION="An implementation of Python written in Java"
|
||||
HOMEPAGE="https://www.jython.org"
|
||||
SRC_URI="https://search.maven.org/remotecontent?filepath=org/python/${PN}/${MY_PV}/${MY_P}-sources.jar"
|
||||
|
||||
LICENSE="PSF-2"
|
||||
SLOT="2.7"
|
||||
KEYWORDS="amd64 ~arm arm64 ppc64 x86 ~amd64-linux ~x86-linux"
|
||||
IUSE="examples test"
|
||||
|
||||
CP_DEPEND="dev-java/antlr:3
|
||||
dev-java/netty:0
|
||||
dev-java/asm:9
|
||||
dev-java/commons-compress:0
|
||||
dev-java/guava:0
|
||||
dev-java/jffi:1.3
|
||||
dev-java/jline:2
|
||||
dev-java/icu4j:70
|
||||
dev-java/jnr-constants:0
|
||||
dev-java/jnr-posix:3.0
|
||||
dev-java/jnr-netdb:1.0
|
||||
dev-java/stringtemplate:0
|
||||
dev-java/xerces:2
|
||||
java-virtuals/servlet-api:3.0"
|
||||
RDEPEND="${CP_DEPEND}
|
||||
>=virtual/jre-1.8:*"
|
||||
DEPEND="${CP_DEPEND}
|
||||
>=virtual/jdk-1.8:*
|
||||
dev-java/ant-core:0
|
||||
test? (
|
||||
dev-java/junit:4
|
||||
dev-java/ant-junit:0
|
||||
)"
|
||||
BDEPEND="app-arch/unzip"
|
||||
|
||||
S=${WORKDIR}
|
||||
|
||||
RESTRICT="test"
|
||||
|
||||
JAVA_ANT_REWRITE_CLASSPATH="yes"
|
||||
JAVA_ANT_CLASSPATH_TAGS+=" java"
|
||||
|
||||
EANT_BUILD_TARGET="developer-build"
|
||||
EANT_TEST_EXTRA_ARGS="-Dpython.home=dist"
|
||||
|
||||
# jdbc-informix and jdbc-oracle-bin (requires registration) aren't exposed.
|
||||
# Uncomment and add to CDEPEND 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"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${PN}-2.5.2-distutils_scripts_location.patch
|
||||
"${FILESDIR}"/${PN}-2.5.2-respect_PYTHONPATH.patch
|
||||
"${FILESDIR}"/${PN}-2.7_beta1-ant.patch
|
||||
"${FILESDIR}"/${PN}-2.7_beta1-dont-always-recompile-classes.patch
|
||||
"${FILESDIR}"/${PN}-2.7_beta2-maxrepeat-import.patch
|
||||
"${FILESDIR}"/${PN}-2.7.0-build.xml.patch
|
||||
"${FILESDIR}"/CVE-2016-4000.patch
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
find \( -name '*.jar' -o -name '*.class' \
|
||||
-o -name '*.pyc' -o -name '*.exe' \) -delete
|
||||
|
||||
# needed for launchertest
|
||||
chmod +x tests/shell/test-jython.sh || die
|
||||
|
||||
# https://bugs.gentoo.org/show_bug.cgi?id=833785
|
||||
sed -e 's:\(CharMatcher.\)ASCII:\1ascii():' \
|
||||
-i src/org/python/core/Py{,BaseCode,Unicode}.java || die
|
||||
|
||||
java-pkg-2_src_prepare
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# apparently this can cause problems
|
||||
append-flags -fno-stack-protector
|
||||
|
||||
EANT_GENTOO_CLASSPATH_EXTRA="$(java-pkg_getjars --with-dependencies antlr-3,jnr-posix-3.0)"
|
||||
EANT_GENTOO_CLASSPATH_EXTRA+=":$(java-pkg_getjars --build-only ant-core)"
|
||||
}
|
||||
|
||||
src_test() {
|
||||
java-pkg-2_src_test
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local instdir=/usr/share/${PN}-${SLOT}
|
||||
|
||||
java-pkg_newjar dist/${PN}-dev.jar
|
||||
|
||||
java-pkg_register-optional-dependency jdbc-mysql
|
||||
java-pkg_register-optional-dependency jdbc-postgresql
|
||||
|
||||
insinto ${instdir}
|
||||
doins -r dist/{Lib,registry}
|
||||
|
||||
dodoc ACKNOWLEDGMENTS NEWS README.txt
|
||||
|
||||
use doc && java-pkg_dohtml -r 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[*]}"
|
||||
|
||||
# we need a wrapper to help python_optimize
|
||||
cat <<-EOF > "${T}"/jython
|
||||
exec java -cp "$(java-pkg_getjars "${EANT_GENTOO_CLASSPATH}"):${EANT_GENTOO_CLASSPATH_EXTRA}:dist/${PN}-dev.jar" \
|
||||
-Dpython.home="${ED}${instdir}" \
|
||||
-Dpython.cachedir="${T}/.jythoncachedir" \
|
||||
-Duser.home="${T}" \
|
||||
org.python.util.jython "\${@}"
|
||||
EOF
|
||||
chmod +x "${T}"/jython || die
|
||||
|
||||
local -x PYTHON="${T}"/jython
|
||||
# we can't get the path from the interpreter since it does some
|
||||
# magic that fails on non-installed copy...
|
||||
_python_export jython${SLOT} EPYTHON
|
||||
|
||||
# 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}${instdir}"/Lib/test &>/dev/null
|
||||
|
||||
# for python-exec
|
||||
echo "EPYTHON='${EPYTHON}'" > epython.py || die
|
||||
python_moduleinto "/usr/share/jython-${SLOT}/Lib/site-packages"
|
||||
python_domodule epython.py
|
||||
|
||||
# some of the class files end up with newer timestamps than the files they
|
||||
# were generated from, make sure this doesn't happen
|
||||
find "${ED}${instdir}"/Lib/ -name '*.class' | xargs touch
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="project">
|
||||
<email>java@gentoo.org</email>
|
||||
<name>Java</name>
|
||||
</maintainer>
|
||||
<upstream>
|
||||
<remote-id type="sourceforge">jython</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
||||
Reference in New Issue
Block a user