Commit graph

20,845 commits

Author SHA1 Message Date
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
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
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
William S Fulton
55e1b5518b Update changes file with runnable Python modules fix 2018-11-22 18:12:37 +00: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
William S Fulton
1540ff451f 2to3 detection for Windows Python distributions
The 2to3 standalone tool does not exist on Windows. Use the 2to3.py
script instead.
2018-11-20 19:47:42 +00:00
William S Fulton
b3cc8fe8f9 configure fix for msys2 + mingw Python
For some unknown reason msys2 and mingw adds trailing whitespace when
running: python3-config --exec-prefix
2018-11-20 19:47:42 +00:00
William S Fulton
f3ad4e030c Don't attempt to detect Python 3.0 and 3.1 2018-11-20 19:47:42 +00:00
William S Fulton
e7638089f7 Don't attempt to detect versions of Python < 2.7 2018-11-20 19:47:42 +00:00
William S Fulton
c7363fd95e Workaround for Python gcc MingGW WIN32 hypot declaration error
Fixes:
In file included from C:/msys64/mingw32/include/c++/7.3.0/math.h:36:0,
                 from C:/Python27/include/pyport.h:325,
                 from C:/Python27/include/Python.h:61,
                 from example_wrap.cxx:174:
C:/msys64/mingw32/include/c++/7.3.0/cmath:1136:11: error: '::hypot' has not been declared
   using ::hypot;
           ^~~~~

See https://stackoverflow.com/questions/28683358/error-hypot-has-not-been-declared-in-cmath-while-trying-to-embed-python/28683412 and https://bugs.python.org/issue11566
2018-11-20 19:47:42 +00:00
William S Fulton
abb2a9259c Remove -noproxyimport command line option (Python)
This option turned off the insertion of Python import statements
derived from a %import directive. For example given:

  %module module_b
  %import "module_a.i"

then module_b.py will contain:

  import module_a

This option was originally added in 658add5, apparently to fix some sort
of circular import problem of which there are no details. It is
undocumented and is now removed as part of the simplification of the
SWIG Python command line options for SWIG 4.

Issue #1340.
2018-11-13 21:55:58 +00:00
William S Fulton
0a9b36d3be Remove -outputtuple and -nooutputtuple command line options (Python)
Both the command line and %module options of the same name have been
removed. These were undocumented. The -outputtuple option returned a
Python tuple instead of a list, mostly typically in the OUTPUT
typemap implementations.

It unclear why a tuple instead of a list return type is needed and
hence this option has been removed as part of the simplification of
the SWIG Python command line options for SWIG 4.

Issue #1340.
2018-11-13 19:46:31 +00:00
William S Fulton
027a38c71c Remove -cppcast and -nocppcast command line options
The -cppcast option is still turned on by default. The -nocppcast option
to turn off the use of c++ casts (const_cast, static_cast etc) has been
removed. However, defining SWIG_NO_CPLUSPLUS_CAST will still generate C casts
instead of C++ casts for C++ wrappers.

This a revert of commit fc79264a48:
"Revert "Remove -cppcast and -nocppcast command line options""

The Scilab and Javascript casting problems are now fixed, so -cppcast
is now switched on as default.
2018-11-13 07:36:09 +00:00
William S Fulton
c0481ce99d Add Python runtime test for const function pointer 2018-11-13 07:35:44 +00:00
William S Fulton
ebce018542 Fix constant function pointer typemaps
The function pointer typemaps were not being used when the function
pointer is const, like ADD_BY_VALUE_C in the funcptr_cpp.i testcase:

  %constant int (* const ADD_BY_VALUE_C)(const int &, int) = addByValue;

Problem affecting Javascript and observable when running test-suite with -cppcast.
2018-11-13 07:35:44 +00:00
William S Fulton
6f5417499a Fix incorrect casts for Scilab enums 2018-11-13 07:35:44 +00:00
William S Fulton
fc79264a48 Revert "Remove -cppcast and -nocppcast command line options"
This reverts commit c06f2b4497.

More work to be done as it breaks Scilab and Javascript tests.
2018-11-06 17:22:05 +00:00
William S Fulton
1251629f06 Add Python struct member limitation documentation
Closes #1336
2018-11-06 17:13:50 +00:00
William S Fulton
c06f2b4497 Remove -cppcast and -nocppcast command line options
The -cppcast option is still turned on by default. The -nocppcast option
to turn off the use of c++ casts (const_cast, static_cast etc) has been
removed. However, defining SWIG_NO_CPLUSPLUS_CAST will still generate C casts
instead of C++ casts for C++ wrappers.
2018-11-06 10:26:06 +00:00
Olly Betts
7a3af70419 Add changes entry for PHP7 reserved word change 2018-10-29 08:44:46 +13:00
Alexander Gabriel
ccbc16f810 PHP: Make reserved keywords to reserved function only (#1335)
[php] Make Keywords which are functions reserved functions
2018-10-29 08:41:16 +13:00
William S Fulton
23ce449ea5 Remove Python -new_vwm
Use the -newvwm alias name instead.
2018-10-24 20:04:31 +01:00
William S Fulton
39b48b8689 Remove Python -oldrepr option
This option controlled the __repr__ proxy class method.

Also removes:
  -old_repr
  -oldrepr
  -new_repr
  -newrepr

Note: -newrepr was and remains on by default. When -oldrepr/-old_repr
option resulted in code that did not run.
2018-10-24 20:04:31 +01:00
William S Fulton
1274c1abfc Remove Python -classptr option
This option was for backwards compatibility with very old versions of
SWIG that generated a shadow 'XPtr' class derived from proxy class X.

If anyone is still using these, they are best off using the actual proxy
class, or otherwise add them in manually using %pythoncode.

Issue #1340.
2018-10-24 20:04:31 +01:00
William S Fulton
0bd7134ffc Merge branch 'hakonhagland-doc_fix'
* hakonhagland-doc_fix:
  Documentation refers to wrong chapter.
2018-10-24 19:56:48 +01:00
William S Fulton
7375d4575a Typemap %apply docs clarification 2018-10-24 19:53:31 +01:00
William S Fulton
411c17f15d Remove Python 3 OSX Travis testing.
Pouring gcc-8.2.0.high_sierra.bottle.1.tar.gz
Error: The  step did not complete successfully

Above error needs fixing
2018-10-24 08:13:21 +01:00