summaryrefslogtreecommitdiff
path: root/Examples/python
diff options
context:
space:
mode:
authorJohan Hake <hake.dev@gmail.com>2014-08-12 21:48:26 +0200
committerJohan Hake <hake.dev@gmail.com>2014-08-12 21:48:26 +0200
commit1dd297ad9df262c81ddcd1ebd4787b260e26313d (patch)
treeb0f805735b497aad21664779184b0c3be000fb32 /Examples/python
parentc43f84af025b3059e1e76c53c3d4093d2fd7487d (diff)
downloadswig-1dd297ad9df262c81ddcd1ebd4787b260e26313d.tar.gz
Fix issue with relative import when using single header file import.
-- The commit propagates the package option to the newly create module node so it is recognized by SWIG -- Added a relativeimport test for this combination (in lack of py3 I was not able to test it with py3 but it "should just work")
Diffstat (limited to 'Examples/python')
-rw-r--r--Examples/python/import_packages/relativeimport3/Makefile25
-rw-r--r--Examples/python/import_packages/relativeimport3/README22
-rw-r--r--Examples/python/import_packages/relativeimport3/py2/Makefile14
-rw-r--r--Examples/python/import_packages/relativeimport3/py2/__init__.py0
-rw-r--r--Examples/python/import_packages/relativeimport3/py2/pkg2/Makefile18
-rw-r--r--Examples/python/import_packages/relativeimport3/py2/pkg2/__init__.py0
-rw-r--r--Examples/python/import_packages/relativeimport3/py2/pkg2/bar.hpp5
-rw-r--r--Examples/python/import_packages/relativeimport3/py2/pkg2/bar.i6
-rw-r--r--Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/Makefile15
-rw-r--r--Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/__init__.py0
-rw-r--r--Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/foo.hpp4
-rw-r--r--Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/foo.i5
-rw-r--r--Examples/python/import_packages/relativeimport3/py3/Makefile14
-rw-r--r--Examples/python/import_packages/relativeimport3/py3/__init__.py0
-rw-r--r--Examples/python/import_packages/relativeimport3/py3/pkg2/Makefile18
-rw-r--r--Examples/python/import_packages/relativeimport3/py3/pkg2/__init__.py0
-rw-r--r--Examples/python/import_packages/relativeimport3/py3/pkg2/bar.hpp5
-rw-r--r--Examples/python/import_packages/relativeimport3/py3/pkg2/bar.i6
-rw-r--r--Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/Makefile15
-rw-r--r--Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/__init__.py0
-rw-r--r--Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/foo.hpp4
-rw-r--r--Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/foo.i5
-rw-r--r--Examples/python/import_packages/relativeimport3/runme.py9
23 files changed, 190 insertions, 0 deletions
diff --git a/Examples/python/import_packages/relativeimport3/Makefile b/Examples/python/import_packages/relativeimport3/Makefile
new file mode 100644
index 000000000..b9d803a0e
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/Makefile
@@ -0,0 +1,25 @@
+TOP = ../../..
+SWIG = $(realpath $(TOP)/../preinst-swig)
+SWIGOPT =
+LIBS =
+PY3 =
+
+ifeq (,$(PY3))
+ PKG1DIR = "py2"
+else
+ PKG1DIR = "py3"
+endif
+
+check: build
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' python_run
+
+build:
+ cd $(PKG1DIR) && $(MAKE) SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT) -relativeimport' LIBS='$(LIBS)' build
+
+static:
+ cd $(PKG1DIR) && $(MAKE) SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT) -relativeimport' LIBS='$(LIBS)' static
+
+clean:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' python_clean
+ cd py2 && $(MAKE) clean
+ cd py3 && $(MAKE) clean
diff --git a/Examples/python/import_packages/relativeimport3/README b/Examples/python/import_packages/relativeimport3/README
new file mode 100644
index 000000000..a99ef2426
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/README
@@ -0,0 +1,22 @@
+This example tests the %import directive and -relativeimport swig option.
+
+Use 'python runme.py' to run a test.
+
+Overview:
+---------
+
+The example defines 2 different extension modules--each wrapping a separate C++
+class.
+
+ pyX/pkg2/pkg3/foo.i - Pkg3_Foo class
+ pyX/pkg2/bar.i - Pkg2_Bar class derived from Pkg3_Foo
+
+The code is processed by swig with -relativeimport flag. The runtime test
+imports pyX.pkg2.bar module.
+
+If everything works well, the module pyX.pkg2.bar shall load properly.
+
+Unix:
+-----
+- Run make
+- Run the test as described above
diff --git a/Examples/python/import_packages/relativeimport3/py2/Makefile b/Examples/python/import_packages/relativeimport3/py2/Makefile
new file mode 100644
index 000000000..9595397d8
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py2/Makefile
@@ -0,0 +1,14 @@
+TOP = ../../../..
+SWIG = $(realpath $(TOP)/../preinst-swig)
+SWIGOPT =
+LIBS =
+
+build:
+ cd pkg2 && $(MAKE) SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' LIBS='$(LIBS)' build
+
+static:
+ cd pkg2 && $(MAKE) SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' LIBS='$(LIBS)' static
+
+clean:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' python_clean
+ cd pkg2 && $(MAKE) clean
diff --git a/Examples/python/import_packages/relativeimport3/py2/__init__.py b/Examples/python/import_packages/relativeimport3/py2/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py2/__init__.py
diff --git a/Examples/python/import_packages/relativeimport3/py2/pkg2/Makefile b/Examples/python/import_packages/relativeimport3/py2/pkg2/Makefile
new file mode 100644
index 000000000..36e099b78
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py2/pkg2/Makefile
@@ -0,0 +1,18 @@
+TOP = ../../../../..
+SWIG = $(realpath $(TOP)/../preinst-swig)
+SWIGOPT =
+LIBS =
+
+build:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' \
+ LIBS='$(LIBS)' TARGET='bar' INTERFACE='bar.i' python_cpp
+ cd pkg3 && $(MAKE) SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' LIBS='$(LIBS)' build
+
+static:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' \
+ LIBS='$(LIBS)' TARGET='bar' INTERFACE='bar.i' python_cpp
+ cd pkg3 && $(MAKE) SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' LIBS='$(LIBS)' static
+
+clean:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' TARGET='bar' python_clean
+ cd pkg3 && $(MAKE) clean
diff --git a/Examples/python/import_packages/relativeimport3/py2/pkg2/__init__.py b/Examples/python/import_packages/relativeimport3/py2/pkg2/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py2/pkg2/__init__.py
diff --git a/Examples/python/import_packages/relativeimport3/py2/pkg2/bar.hpp b/Examples/python/import_packages/relativeimport3/py2/pkg2/bar.hpp
new file mode 100644
index 000000000..8f09cd5fa
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py2/pkg2/bar.hpp
@@ -0,0 +1,5 @@
+#ifndef PY2_PKG2_BAR_HPP
+#define PY2_PKG2_BAR_HPP
+#include "../../py2/pkg2/pkg3/foo.hpp"
+struct Pkg2_Bar : Pkg3_Foo {};
+#endif /* PY2_PKG2_BAR_HPP */
diff --git a/Examples/python/import_packages/relativeimport3/py2/pkg2/bar.i b/Examples/python/import_packages/relativeimport3/py2/pkg2/bar.i
new file mode 100644
index 000000000..6f4690b25
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py2/pkg2/bar.i
@@ -0,0 +1,6 @@
+%module(package="py2.pkg2") bar
+%{
+#include "../../py2/pkg2/bar.hpp"
+%}
+%import (module="foo", package="py2.pkg2.pkg3") "../../py2/pkg2/pkg3/foo.hpp"
+%include "../../py2/pkg2/bar.hpp"
diff --git a/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/Makefile b/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/Makefile
new file mode 100644
index 000000000..cb20bd25f
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/Makefile
@@ -0,0 +1,15 @@
+TOP = ../../../../../..
+SWIG = $(realpath $(TOP)/../preinst-swig)
+SWIGOPT =
+LIBS =
+
+build:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' \
+ LIBS='$(LIBS)' TARGET='foo' INTERFACE='foo.i' python_cpp
+
+static:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' \
+ LIBS='$(LIBS)' TARGET='foo' INTERFACE='foo.i' python_cpp_static
+
+clean:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' TARGET='foo' python_clean
diff --git a/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/__init__.py b/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/__init__.py
diff --git a/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/foo.hpp b/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/foo.hpp
new file mode 100644
index 000000000..b6c89a431
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/foo.hpp
@@ -0,0 +1,4 @@
+#ifndef PY2_PKG2_PKG3_FOO_HPP
+#define PY2_PKG2_PKG3_FOO_HPP
+struct Pkg3_Foo {};
+#endif /* PY2_PKG2_PKG3_FOO_HPP */
diff --git a/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/foo.i b/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/foo.i
new file mode 100644
index 000000000..ba32483d2
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py2/pkg2/pkg3/foo.i
@@ -0,0 +1,5 @@
+%module(package="py2.pkg2.pkg3") foo
+%{
+#include "../../../py2/pkg2/pkg3/foo.hpp"
+%}
+%include "../../../py2/pkg2/pkg3/foo.hpp"
diff --git a/Examples/python/import_packages/relativeimport3/py3/Makefile b/Examples/python/import_packages/relativeimport3/py3/Makefile
new file mode 100644
index 000000000..9595397d8
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py3/Makefile
@@ -0,0 +1,14 @@
+TOP = ../../../..
+SWIG = $(realpath $(TOP)/../preinst-swig)
+SWIGOPT =
+LIBS =
+
+build:
+ cd pkg2 && $(MAKE) SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' LIBS='$(LIBS)' build
+
+static:
+ cd pkg2 && $(MAKE) SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' LIBS='$(LIBS)' static
+
+clean:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' python_clean
+ cd pkg2 && $(MAKE) clean
diff --git a/Examples/python/import_packages/relativeimport3/py3/__init__.py b/Examples/python/import_packages/relativeimport3/py3/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py3/__init__.py
diff --git a/Examples/python/import_packages/relativeimport3/py3/pkg2/Makefile b/Examples/python/import_packages/relativeimport3/py3/pkg2/Makefile
new file mode 100644
index 000000000..36e099b78
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py3/pkg2/Makefile
@@ -0,0 +1,18 @@
+TOP = ../../../../..
+SWIG = $(realpath $(TOP)/../preinst-swig)
+SWIGOPT =
+LIBS =
+
+build:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' \
+ LIBS='$(LIBS)' TARGET='bar' INTERFACE='bar.i' python_cpp
+ cd pkg3 && $(MAKE) SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' LIBS='$(LIBS)' build
+
+static:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' \
+ LIBS='$(LIBS)' TARGET='bar' INTERFACE='bar.i' python_cpp
+ cd pkg3 && $(MAKE) SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' LIBS='$(LIBS)' static
+
+clean:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' TARGET='bar' python_clean
+ cd pkg3 && $(MAKE) clean
diff --git a/Examples/python/import_packages/relativeimport3/py3/pkg2/__init__.py b/Examples/python/import_packages/relativeimport3/py3/pkg2/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py3/pkg2/__init__.py
diff --git a/Examples/python/import_packages/relativeimport3/py3/pkg2/bar.hpp b/Examples/python/import_packages/relativeimport3/py3/pkg2/bar.hpp
new file mode 100644
index 000000000..408d910d7
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py3/pkg2/bar.hpp
@@ -0,0 +1,5 @@
+#ifndef PY3_PKG2_BAR_HPP
+#define PY3_PKG2_BAR_HPP
+#include "../../py3/pkg2/pkg3/foo.hpp"
+struct Pkg2_Bar : Pkg3_Foo {};
+#endif /* PY3_PKG2_BAR_HPP */
diff --git a/Examples/python/import_packages/relativeimport3/py3/pkg2/bar.i b/Examples/python/import_packages/relativeimport3/py3/pkg2/bar.i
new file mode 100644
index 000000000..157c62e2c
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py3/pkg2/bar.i
@@ -0,0 +1,6 @@
+%module(package="py3.pkg2") bar
+%{
+#include "../../py3/pkg2/bar.hpp"
+%}
+%import (module="foo", package="py3.pkg2.pkg3") "../../py3/pkg2/pkg3/foo.hpp"
+%include "../../py3/pkg2/bar.hpp"
diff --git a/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/Makefile b/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/Makefile
new file mode 100644
index 000000000..cb20bd25f
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/Makefile
@@ -0,0 +1,15 @@
+TOP = ../../../../../..
+SWIG = $(realpath $(TOP)/../preinst-swig)
+SWIGOPT =
+LIBS =
+
+build:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' \
+ LIBS='$(LIBS)' TARGET='foo' INTERFACE='foo.i' python_cpp
+
+static:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' SWIG='$(SWIG)' SWIGOPT='$(SWIGOPT)' \
+ LIBS='$(LIBS)' TARGET='foo' INTERFACE='foo.i' python_cpp_static
+
+clean:
+ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' TARGET='foo' python_clean
diff --git a/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/__init__.py b/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/__init__.py
diff --git a/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/foo.hpp b/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/foo.hpp
new file mode 100644
index 000000000..531721d36
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/foo.hpp
@@ -0,0 +1,4 @@
+#ifndef PY3_PKG2_PKG3_FOO_HPP
+#define PY3_PKG2_PKG3_FOO_HPP
+struct Pkg3_Foo {};
+#endif /* PY3_PKG2_PKG3_FOO_HPP */
diff --git a/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/foo.i b/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/foo.i
new file mode 100644
index 000000000..c6ba529b7
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/py3/pkg2/pkg3/foo.i
@@ -0,0 +1,5 @@
+%module(package="py3.pkg2.pkg3") foo
+%{
+#include "../../../py3/pkg2/pkg3/foo.hpp"
+%}
+%include "../../../py3/pkg2/pkg3/foo.hpp"
diff --git a/Examples/python/import_packages/relativeimport3/runme.py b/Examples/python/import_packages/relativeimport3/runme.py
new file mode 100644
index 000000000..44ce8d1c4
--- /dev/null
+++ b/Examples/python/import_packages/relativeimport3/runme.py
@@ -0,0 +1,9 @@
+# Test import of modules content from within __init__.py
+print "Testing %module(package=...) with -relativeimport"
+import sys
+if sys.version_info < (3,0):
+ import py2.pkg2.bar
+ print " Finished importing py2.pkg2.bar"
+else:
+ import py3.pkg2.bar
+ print " Finished importing py3.pkg2.bar"