You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pylucene-commits@lucene.apache.org by va...@apache.org on 2020/08/21 23:31:23 UTC

svn commit: r1881067 - in /lucene/pylucene/trunk/jcc: CHANGES jcc2/cpp.py jcc3/__main__.py jcc3/cpp.py

Author: vajda
Date: Fri Aug 21 23:31:23 2020
New Revision: 1881067

URL: http://svn.apache.org/viewvc?rev=1881067&view=rev
Log:
Fixed bug with class order dependent missing required dependencies.

Modified:
    lucene/pylucene/trunk/jcc/CHANGES
    lucene/pylucene/trunk/jcc/jcc2/cpp.py
    lucene/pylucene/trunk/jcc/jcc3/__main__.py
    lucene/pylucene/trunk/jcc/jcc3/cpp.py

Modified: lucene/pylucene/trunk/jcc/CHANGES
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/CHANGES?rev=1881067&r1=1881066&r2=1881067&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/CHANGES (original)
+++ lucene/pylucene/trunk/jcc/CHANGES Fri Aug 21 23:31:23 2020
@@ -1,6 +1,7 @@
 Version 3.7 ->
 ------------------
  - added support for building wheels via --wheel flag (Chee Yong Teh)
+ - fixed bug with class order dependent missing required dependencies
  - 
 
 Version 3.6 -> 3.7

Modified: lucene/pylucene/trunk/jcc/jcc2/cpp.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc2/cpp.py?rev=1881067&r1=1881066&r2=1881067&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc2/cpp.py (original)
+++ lucene/pylucene/trunk/jcc/jcc2/cpp.py Fri Aug 21 23:31:23 2020
@@ -63,6 +63,13 @@ class InvalidArgsError(Exception):
     pass
 
 
+class RequiredPackageError(Exception):
+
+    def __str__(self):
+        return "%s is required, please add a --package declaration for it, " \
+               "or its parameters, to the JCC invocation." %(self.args[0])
+
+
 _jcc2._set_exception_types(JavaError, InvalidArgsError)
 from _jcc2 import findClass as _findClass
 from _jcc2 import *
@@ -808,6 +815,9 @@ def header(env, out, cls, typeset, packa
                 interfaces.append(interface)
                 if pt is not None:
                     for ta in pt.getActualTypeArguments():
+                        if not known(ta, typeset, declares, packages,
+                                     excludes, True):
+                            raise RequiredPackageError(ta)
                         addRequiredTypes(ta, typeset, True)
     else:
         for interface in cls.getInterfaces():
@@ -827,8 +837,10 @@ def header(env, out, cls, typeset, packa
         if generics:
             for clsParam in getTypeParameters(cls):
                 if Class.instance_(clsParam):
+                    if not known(clsParam, typeset, declares, packages,
+                                 excludes, True):
+                        raise RequiredPackageError(clsParam)
                     addRequiredTypes(clsParam, typeset, True)
-                    known(clsParam, typeset, declares, packages, excludes, True)
     else:
         superClsName = 'JObject'
 

Modified: lucene/pylucene/trunk/jcc/jcc3/__main__.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc3/__main__.py?rev=1881067&r1=1881066&r2=1881067&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc3/__main__.py (original)
+++ lucene/pylucene/trunk/jcc/jcc3/__main__.py Fri Aug 21 23:31:23 2020
@@ -7,7 +7,7 @@ if len(sys.argv) == 1 or '--help' in sys
     help = '''
   JCC - C++/Python Java Native Interface Code Generator
 
-  Usage: python -m jcc [options] [actions]
+  Usage: python -m jcc [options] [actions] classes...
 
   Input options:
     --jar JARFILE           - make JCC wrap all public classes found in
@@ -21,6 +21,7 @@ if len(sys.argv) == 1 or '--help' in sys
     --exclude CLASS         - explicitly don't wrap CLASS
     --package PACKAGE       - add PACKAGE to the list of packages from
                               which dependencies are automatically wrapped
+                              in addition to java.lang, --jar or classes
     --classpath [PATH|JAR]  - add [PATH|JAR] to CLASSPATH while generating
                               wrappers
     --libpath [PATH]        - add [PATH] to java.library.path while generating

Modified: lucene/pylucene/trunk/jcc/jcc3/cpp.py
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc3/cpp.py?rev=1881067&r1=1881066&r2=1881067&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc3/cpp.py (original)
+++ lucene/pylucene/trunk/jcc/jcc3/cpp.py Fri Aug 21 23:31:23 2020
@@ -33,6 +33,13 @@ class InvalidArgsError(Exception):
     pass
 
 
+class RequiredPackageError(Exception):
+
+    def __str__(self):
+        return "%s is required, please add a --package declaration for it, " \
+               "or its parameters, to the JCC invocation." %(self.args[0])
+
+
 _jcc3._set_exception_types(JavaError, InvalidArgsError)
 from ._jcc3 import findClass as _findClass
 from ._jcc3 import *
@@ -797,6 +804,9 @@ def header(env, out, cls, typeset, packa
                 interfaces.append(interface)
                 if pt is not None:
                     for ta in pt.getActualTypeArguments():
+                        if not known(ta, typeset, declares, packages,
+                                     excludes, True):
+                            raise RequiredPackageError(ta)
                         addRequiredTypes(ta, typeset, True)
     else:
         for interface in cls.getInterfaces():
@@ -817,8 +827,10 @@ def header(env, out, cls, typeset, packa
         if generics:
             for clsParam in getTypeParameters(cls):
                 if Class.instance_(clsParam):
+                    if not known(clsParam, typeset, declares, packages,
+                                 excludes, True):
+                        raise RequiredPackageError(clsParam)
                     addRequiredTypes(clsParam, typeset, True)
-                    known(clsParam, typeset, declares, packages, excludes, True)
     else:
         superClsNames = ['JObject']