Commit graph

21,074 commits

Author SHA1 Message Date
William S Fulton
e523556be3
Merge pull request #1375 from tlby/issue-1374
repair uses of EXTEND() in Perl typemaps
2018-12-16 15:01:42 +00:00
Robert Stone
871ece78e6 repair uses of EXTEND() in Perl typemaps
closes #1374
 * enhance testing around multiple return values
   Examples/test-suite/perl5/scilab_multivalue_runme.pl fails in
   perl-5.28.1 compiled with -DDEBUGING without the typemap updates
 * repair EXTEND() handling in typemaps
 * Use PL_sv_undef for VOID_Object
2018-12-11 15:51:14 -08:00
William S Fulton
230b979c0f Update changes file with tp_print removal 2018-12-11 08:17:56 +00:00
William S Fulton
b8fc71b5f8 Remove functions associated with tp_print that are now redundant
Removes SwigPyPacked_print and swig_varlink_print
2018-12-11 08:08:14 +00:00
William S Fulton
90221812c6 Revert removal of tp_print slot for Python -builtin
Some users might still want to customize this slot.
2018-12-11 08:00:44 +00:00
Andrew Rogers
23d62a8969 Update changelog. 2018-12-11 07:57:49 +00:00
Andrew Rogers
f8bf286a6e #1368: AV in tp_print caused by mismatched Python/extension CRT usage 2018-12-11 07:54:57 +00:00
William S Fulton
67f5ade7ad Remove -noolddefs command line option
This was a pointless option as it is off by default.
2018-12-10 07:07:49 +00:00
William S Fulton
51dadaeacd Add example to test the Python module being renamed to __init__.py
This examples tests the SWIG generated module being placed into a directory and
then renamed __init__.py to convert the module into a package. This ability
stopped working in swig-3.0.9. However, only Python 2.7 or 3.3 and later work. If
Python 3.2 support is needed, use moduleimport in %module to customise the import
code.

Issue #1282
2018-12-08 22:31:26 +00:00
William S Fulton
b19d3e06b3 Update packages section in Python html docs
Updates given only Python 2.7, 3.2+ are now supported.
2018-12-08 20:25:58 +00:00
William S Fulton
ebb3eb725a Add changes file entry for missing nested destructor wrapper fix
Issue #1359
2018-12-06 20:15:24 +00:00
William S Fulton
45a8c8cfa3 Merge branch 'vadz-fix-dtor-nested-template'
* vadz-fix-dtor-nested-template:
  Stop mangling dtors of nested classes instead a template class
  Remove unused cparse_template_expand() return type
2018-12-06 08:13:25 +00:00
William S Fulton
248039d708 Updates to .gitignore for python and java examples 2018-12-06 07:53:46 +00:00
William S Fulton
0147fb2e64 Workaround for incorrect output formatting 2018-12-06 07:44:34 +00:00
William S Fulton
525c757322 Merge branch 'vadz-add-nested-in-template-test'
* vadz-add-nested-in-template-test:
  Avoid comparing doubles in nested_in_template.i unit test
  Add recently added nested_in_template to the list of test cases
2018-12-06 07:21:04 +00:00
William S Fulton
ba61d51124 Visual C++ 64-bit warning fixes in doxygen sources 2018-12-06 06:56:08 +00:00
William S Fulton
84dcb9bfff Revert "Temporarily remove Python import_packages testcase"
This reverts commit 8d6f3010ea.
2018-12-06 06:55:24 +00:00
William S Fulton
ff93f2e26e Skip Python subprocess calls in import_packages testcase on Windows
Getting these kind of errors on Appveyor which uses mingw/cygwin to run
a Python interpreter:

Native windows Python 3.6 running under cygwin and mingw Python 3.7 running under mingw:
  Fatal Python error: _Py_HashRandomization_Init: failed to get random
  numbers to initialize Python

Cygwin Python 2.7 running under cygwin:
  0 [main] python2.7 496 child_info_fork::abort: address space needed by '_foo.dll' (0x6D0000)
  is already occupied
2018-12-06 06:50:57 +00:00
William S Fulton
8d6f3010ea Temporarily remove Python import_packages testcase
The subprocess.check_call seems broken on Windows, needs investigation.
2018-12-04 22:35:47 +00:00
William S Fulton
009415e43b Cosmetic changes in SWIG_globals
Make local variable name standards compliant
2018-12-04 22:15:52 +00:00
William S Fulton
9fe2b05faa Merge branch 'adr26-master'
* adr26-master:
  Cleanup accessing/decref of globals, to avoid code bloat in init function.
  Fix ISOC build errors.
  Fix unused variable warning.
  #1360: Leak of SWIG var link object

Conflicts:
	CHANGES.current
2018-12-04 20:12:42 +00:00
William S Fulton
9a7e2ed9ed Restore Python docstring location to immediately after the SWIG banner 2018-12-04 20:10:49 +00:00
Vadim Zeitlin
5e7426dcc6 Avoid comparing doubles in nested_in_template.i unit test
This should also have been part of
30bb977a64

See #1358.
2018-12-04 20:46:35 +01:00
William S Fulton
604ae7186b Fix for running 'python -m' when using swig -builtin
Same as e05b5ea for -builtin.

Also added runtime tests to check 'python -m'.
2018-12-04 19:12:13 +00:00
William S Fulton
9e83d5d5d9 Fix nstest.py test
Use subprocess.check_call as os.system won't stop the test in case of
errors.
2018-12-04 06:49:55 +00:00
Andrew Rogers
402d55da52 Merge github.com:swig/swig
# Conflicts:
#	CHANGES.current
2018-11-29 07:02:49 +00:00
William S Fulton
75638e3371 Update comments and docs regarding recent addition to use __package__ for Python module imports 2018-11-28 23:48:58 +00:00
William S Fulton
6b5da094b2 Simpler Python -builtin import
When using -builtin, the two step C-extension module import is now
one step and the wrapped API is only available once and not in an underlying
module attribute like it is without -builtin. To understand this, consider a
module named 'example' (using: %module example). The C-extension is compiled into
a Python module called '_example' and a pure Python module provides the actual
API from the module called 'example'. It was previously possible to additionally
access the API from the module attribute 'example._example'. The latter was an
implementation detail and is no longer available. It shouldn't have been used, but
if necessary it can be resurrected using the moduleimport attribute described in the
Python chapter of the documentation. If both modules are provided in a Python
package, try:

  %module(moduleimport="from . import _example\nfrom ._example import *") example
or more generically:
  %module(moduleimport="from . import $module\nfrom .$module import *") example

and if both are provided as global modules, try:

  %module(moduleimport="import _example\nfrom _example import *") example
or more generically:
  %module(moduleimport="import $module\nfrom $module import *") example

The module import code shown will appear in the example.py file.
2018-11-28 23:36:13 +00:00
William S Fulton
b380de031e Python -builtin %rename constructor refactor
The implementation for a renamed constructor for -builtin no longer
uses the same implementation for non-builtin mode which makes a call
into the compiled C module, eg _constructor_rename for a module called
constructor_rename. The output in the constructor_rename.py file is now:

  RenamedConstructor = new_RenamedConstructor

instead of

  def RenamedConstructor():
      val = _constructor_rename.new_RenamedConstructor()
      return val

when wrapping:

  struct Foo {
      %rename(RenamedConstructor) Foo();
      Foo() {}
  };

See the constructor_rename.i testcase.

This change has been made to make the wrapper more efficient and is a
step towards the next commit which will remove duplicating the symbols
in both the pure Python module and implementation C module
(constructor_rename and _constructor_rename respectively in this case).
2018-11-28 08:20:02 +00:00
William S Fulton
6030f59741 Fix operator Python example for -builtin
Output was incorrect for -builtin as custom __str__ was not being
called.
2018-11-28 08:18:28 +00:00
Andrew Rogers
a9e29d2bc7 Merge github.com:swig/swig 2018-11-27 23:31:27 +00:00
Andrew Rogers
0fecd1538f Cleanup accessing/decref of globals, to avoid code bloat in init function. 2018-11-27 23:30:51 +00:00
Vadim Zeitlin
73ea48ba4a Add recently added nested_in_template to the list of test cases
This should have been part of 30bb977a64

See #1358.
2018-11-25 23:39:15 +01:00
William S Fulton
865dc1e71c Remove Python 2.6 and earlier import code 2018-11-25 22:18:43 +00:00
William S Fulton
e729a868b9 Minimum Python version check correction
Fixes Recent breakage when using -builtin and %import
2018-11-25 21:53:57 +00:00
Andrew Rogers
3c090307a4 Fix ISOC build errors. 2018-11-25 04:23:18 +00:00
Andrew Rogers
493d96a732 Fix unused variable warning. 2018-11-24 20:07:44 +00:00
Andrew Rogers
6814f67cdb Merge branch 'master' of github.com:swig/swig
# Conflicts:
#	CHANGES.current
2018-11-24 20:06:02 +00:00
Vadim Zeitlin
30bb977a64 Fix handling of abstract base classes nested inside templates
Code handling %template in the parser created a totally new top-level
module child of namespace type when handling templates inside a
namespace and copied the nodes from the previously parsed C++ template
declaration to it. However copies of this node kept their original
values of "abstracts" attribute, which contained pointers to the classes
in the original template declaration, i.e. outside of the subtree
created for the instantiated template. This, in turn, meant that during
the types resolution pass, the code in TypePass did not update the types
used in the methods of the classes appearing in the "abstracts" List,
even though it did update the types for the children of the instantiated
template subtree.

And this finally resulted in wrongly detecting overridden virtual
methods as abstract in Allocate::is_abstract_inherit() during the next
pass, as the signatures of the overridden method -- using resolved types
-- and of the method from the class pointed to by "abstract" -- using
the original types from C++ code -- didn't match.

Resolve this simply by not copying "abstracts" attributes when creating
the template subtree and doing another pass over this tree to recreate
them using the new nodes, just as it's already done for "defaultargs"
attribute, presumably for similar reasons. Note that doing another pass
over the tree is not as efficient as doing everything in a single pass,
but merging the new update_abstracts() with update_defaultargs() is not
completely obvious, so for now keep it simple and optimize it later if
necessary.

Also, add a test checking for the situation described above.

Closes #1353.
2018-11-24 19:21:47 +01:00
William S Fulton
0f61c5a847 Python minimum version checking fixes
When  using the moduleimport option, such as:

  %module(moduleimport="import $module") example

the minimum Python version check disappeared from the generated Python
file. The code has been refactored and _swig_python_version_info is
no longer deleted after initial use as it can be used in a few places,
in particular, when -builtin is used.
2018-11-23 18:08:33 +00:00
Andrew Rogers
65edf2258f #1360: Leak of SWIG var link object 2018-11-23 16:02:46 +00:00
Vadim Zeitlin
4af2e95010 Stop mangling dtors of nested classes instead a template class
cparse_template_expand() incorrectly appended template parameters to all
destructor nodes it encountered during the tree traversal, including the
dtors of any nested classes.

This resulted in WARN_LANG_ILLEGAL_DESTRUCTOR warnings from
Language::destructorDeclaration() later and possibly other problems due
to not actually wrapping these dtors.

Fix this by explicitly checking if the dtor is a child or, to account
for %extend, a grandchild of the template node itself before appending
template parameters to it.

This commit is best viewed with "-w" (ignore whitespace changes) option
as it indents, without changing, a block of code.
2018-11-23 02:48:55 +01:00
Vadim Zeitlin
2c16de295b Remove unused cparse_template_expand() return type
No real changes, just make a function which always returned 0 void
as its return value was never used anyhow.
2018-11-23 02:48:55 +01:00
William S Fulton
55e1b5518b Update changes file with runnable Python modules fix 2018-11-22 18:12:37 +00:00
Christian Landsiedel
3208ff2bf5 fix for creating new shadow class in python 3.6 2018-11-22 14:24:49 +01:00
William S Fulton
c8bb566822 Merge branch 'rupertnash-master'
* rupertnash-master:
  Make python shadow sub-modules runable
2018-11-22 08:18:57 +00:00
William S Fulton
1194898206 Update changes file with recent commandline option changes 2018-11-22 08:15:36 +00:00
William S Fulton
902f3f0ac5 Appveyor mingw config changes to test Python
Set paths correctly for msys2 + mingw. With this correction, there is no
need to override the default gcc.

Provide a way to specify the name of the python interpreter using
a WITHLANG env variable. Needed where the native python3 executable is
called python.exe which is needed and not MinGW's pre-installed python3.exe.
2018-11-20 19:47:42 +00:00
William S Fulton
72fc013847 Revert "Stop testing Python on Appveyor msys/mingw"
This reverts commit 6fac581a2b.
2018-11-20 19:47:42 +00:00
William S Fulton
81b0abaf0b Fix MinGW 64bit native windows Python linking problems
Fixes linker error:
  undefined reference to `__imp_Py_InitModule4'
2018-11-20 19:47:42 +00:00