From f146ef38b38c14cf760bf51afe156edd079461dc Mon Sep 17 00:00:00 2001 From: frmdstryr Date: Sat, 25 Jun 2016 15:32:50 -0400 Subject: [PATCH 1/8] Add recipes for enaml (not yet working) --- pythonforandroid/recipes/atom/__init__.py | 29 ++++++++++++++++++ pythonforandroid/recipes/enaml/__init__.py | 10 +++++++ .../recipes/kiwisolver/__init__.py | 30 +++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 pythonforandroid/recipes/atom/__init__.py create mode 100644 pythonforandroid/recipes/enaml/__init__.py create mode 100644 pythonforandroid/recipes/kiwisolver/__init__.py diff --git a/pythonforandroid/recipes/atom/__init__.py b/pythonforandroid/recipes/atom/__init__.py new file mode 100644 index 0000000000..a152d8af0c --- /dev/null +++ b/pythonforandroid/recipes/atom/__init__.py @@ -0,0 +1,29 @@ +from pythonforandroid.recipe import CompiledComponentsPythonRecipe + +class AtomRecipe(CompiledComponentsPythonRecipe): + site_packages_name = 'atom' + version = '0.3.10' + url = 'https://github.com/nucleic/atom/archive/master.zip' + depends = ['python2'] + call_hostpython_via_targetpython = False + + def get_recipe_env(self, arch): + env = super(AtomRecipe, self).get_recipe_env(arch) + keys = dict( + ctx=self.ctx, + arch=arch, + arch_noeabi=arch.arch.replace('eabi', ''), + pyroot=self.ctx.get_python_install_dir() + ) + #env['LDSHARED'] = env['CC'] + ' -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions' + + env['CFLAGS'] += " -I{pyroot}/include/python2.7 " \ + " -I{ctx.ndk_dir}/platforms/android-{ctx.android_api}/arch-{arch_noeabi}/usr/include" \ + " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/include" \ + " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}/include".format(**keys) + + env['LDFLAGS'] += " -L{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}" \ + " -lgnustl_shared".format(**keys) + return env + +recipe = AtomRecipe() diff --git a/pythonforandroid/recipes/enaml/__init__.py b/pythonforandroid/recipes/enaml/__init__.py new file mode 100644 index 0000000000..445bd98f96 --- /dev/null +++ b/pythonforandroid/recipes/enaml/__init__.py @@ -0,0 +1,10 @@ +from pythonforandroid.recipe import CppCompiledComponentsPythonRecipe + +class EnamlRecipe(CppCompiledComponentsPythonRecipe): + site_packages_name = 'enaml' + call_hostpython_via_targetpython = False + version = '0.9.8' + url = 'https://github.com/frmdstryr/enaml/archive/master.zip' + depends = ['python2'] + +recipe = EnamlRecipe() \ No newline at end of file diff --git a/pythonforandroid/recipes/kiwisolver/__init__.py b/pythonforandroid/recipes/kiwisolver/__init__.py new file mode 100644 index 0000000000..fdf4df43d6 --- /dev/null +++ b/pythonforandroid/recipes/kiwisolver/__init__.py @@ -0,0 +1,30 @@ +from pythonforandroid.recipe import CompiledComponentsPythonRecipe + +class KiwiSolverRecipe(CompiledComponentsPythonRecipe): + site_packages_name = 'kiwisolver' + version = '0.1.3' + url = 'https://github.com/nucleic/kiwi/archive/master.zip' + depends = ['python2'] + + call_hostpython_via_targetpython = False + + def get_recipe_env(self, arch): + env = super(KiwiSolverRecipe, self).get_recipe_env(arch) + keys = dict( + ctx=self.ctx, + arch=arch, + arch_noeabi=arch.arch.replace('eabi', ''), + pyroot=self.ctx.get_python_install_dir() + ) + env['CFLAGS'] += " -I{pyroot}/include/python2.7 " \ + " -I{ctx.ndk_dir}/platforms/android-{ctx.android_api}/arch-{arch_noeabi}/usr/include" \ + " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/include" \ + " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}/include".format(**keys) + + env['LDFLAGS'] += " -L{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}" \ + " -lgnustl_shared".format(**keys) + return env + + + +recipe = KiwiSolverRecipe() \ No newline at end of file From 80c9a6652e2dcac09392efc81bba163baac6f5e7 Mon Sep 17 00:00:00 2001 From: frmdstryr Date: Sat, 25 Jun 2016 17:24:18 -0400 Subject: [PATCH 2/8] Add Cpp recipe --- pythonforandroid/recipe.py | 23 ++++++++++++++++ pythonforandroid/recipes/atom/__init__.py | 26 +++---------------- pythonforandroid/recipes/enaml/__init__.py | 3 +-- .../recipes/kiwisolver/__init__.py | 25 ++---------------- 4 files changed, 29 insertions(+), 48 deletions(-) diff --git a/pythonforandroid/recipe.py b/pythonforandroid/recipe.py index 5456b49d9b..628d8601b5 100644 --- a/pythonforandroid/recipe.py +++ b/pythonforandroid/recipe.py @@ -900,6 +900,29 @@ def rebuild_compiled_components(self, arch, env): shprint(hostpython, 'setup.py', self.build_cmd, '-v', _env=env, *self.setup_extra_args) +class CppCompiledComponentsPythonRecipe(CompiledComponentsPythonRecipe): + pass +# call_hostpython_via_targetpython = False +# +# def get_recipe_env(self, arch): +# env = super(CppCompiledComponentsPythonRecipe, self).get_recipe_env(arch) +# keys = dict( +# ctx=self.ctx, +# arch=arch, +# arch_noeabi=arch.arch.replace('eabi', ''), +# pyroot=self.ctx.get_python_install_dir() +# ) +# env['LDSHARED'] = env['CC'] + ' -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions' +# env['CFLAGS'] += " -I{pyroot}/include/python2.7 " \ +# " -I{ctx.ndk_dir}/platforms/android-{ctx.android_api}/arch-{arch_noeabi}/usr/include" \ +# " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/include" \ +# " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}/include".format(**keys) +# +# env['LDFLAGS'] += " -L{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}" \ +# " -lgnustl_shared".format(**keys) +# +# return env + class CythonRecipe(PythonRecipe): pre_build_ext = False diff --git a/pythonforandroid/recipes/atom/__init__.py b/pythonforandroid/recipes/atom/__init__.py index a152d8af0c..57d363bec8 100644 --- a/pythonforandroid/recipes/atom/__init__.py +++ b/pythonforandroid/recipes/atom/__init__.py @@ -1,29 +1,9 @@ -from pythonforandroid.recipe import CompiledComponentsPythonRecipe +from pythonforandroid.recipe import CppCompiledComponentsPythonRecipe -class AtomRecipe(CompiledComponentsPythonRecipe): +class AtomRecipe(CppCompiledComponentsPythonRecipe): site_packages_name = 'atom' version = '0.3.10' url = 'https://github.com/nucleic/atom/archive/master.zip' - depends = ['python2'] - call_hostpython_via_targetpython = False - - def get_recipe_env(self, arch): - env = super(AtomRecipe, self).get_recipe_env(arch) - keys = dict( - ctx=self.ctx, - arch=arch, - arch_noeabi=arch.arch.replace('eabi', ''), - pyroot=self.ctx.get_python_install_dir() - ) - #env['LDSHARED'] = env['CC'] + ' -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions' - - env['CFLAGS'] += " -I{pyroot}/include/python2.7 " \ - " -I{ctx.ndk_dir}/platforms/android-{ctx.android_api}/arch-{arch_noeabi}/usr/include" \ - " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/include" \ - " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}/include".format(**keys) - - env['LDFLAGS'] += " -L{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}" \ - " -lgnustl_shared".format(**keys) - return env + depends = ['python2','setuptools'] recipe = AtomRecipe() diff --git a/pythonforandroid/recipes/enaml/__init__.py b/pythonforandroid/recipes/enaml/__init__.py index 445bd98f96..29d163f692 100644 --- a/pythonforandroid/recipes/enaml/__init__.py +++ b/pythonforandroid/recipes/enaml/__init__.py @@ -2,9 +2,8 @@ class EnamlRecipe(CppCompiledComponentsPythonRecipe): site_packages_name = 'enaml' - call_hostpython_via_targetpython = False version = '0.9.8' url = 'https://github.com/frmdstryr/enaml/archive/master.zip' - depends = ['python2'] + depends = ['python2','setuptools','atom','kiwisolver'] recipe = EnamlRecipe() \ No newline at end of file diff --git a/pythonforandroid/recipes/kiwisolver/__init__.py b/pythonforandroid/recipes/kiwisolver/__init__.py index fdf4df43d6..7d6b570e1a 100644 --- a/pythonforandroid/recipes/kiwisolver/__init__.py +++ b/pythonforandroid/recipes/kiwisolver/__init__.py @@ -1,30 +1,9 @@ -from pythonforandroid.recipe import CompiledComponentsPythonRecipe +from pythonforandroid.recipe import CppCompiledComponentsPythonRecipe -class KiwiSolverRecipe(CompiledComponentsPythonRecipe): +class KiwiSolverRecipe(CppCompiledComponentsPythonRecipe): site_packages_name = 'kiwisolver' version = '0.1.3' url = 'https://github.com/nucleic/kiwi/archive/master.zip' depends = ['python2'] - call_hostpython_via_targetpython = False - - def get_recipe_env(self, arch): - env = super(KiwiSolverRecipe, self).get_recipe_env(arch) - keys = dict( - ctx=self.ctx, - arch=arch, - arch_noeabi=arch.arch.replace('eabi', ''), - pyroot=self.ctx.get_python_install_dir() - ) - env['CFLAGS'] += " -I{pyroot}/include/python2.7 " \ - " -I{ctx.ndk_dir}/platforms/android-{ctx.android_api}/arch-{arch_noeabi}/usr/include" \ - " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/include" \ - " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}/include".format(**keys) - - env['LDFLAGS'] += " -L{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}" \ - " -lgnustl_shared".format(**keys) - return env - - - recipe = KiwiSolverRecipe() \ No newline at end of file From e0f8da0c49d507683fa850495b9ab8c81fdf0a39 Mon Sep 17 00:00:00 2001 From: frmdstryr Date: Sat, 25 Jun 2016 17:25:29 -0400 Subject: [PATCH 3/8] Undo comments --- pythonforandroid/recipe.py | 41 +++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/pythonforandroid/recipe.py b/pythonforandroid/recipe.py index 628d8601b5..2a7e32ad96 100644 --- a/pythonforandroid/recipe.py +++ b/pythonforandroid/recipe.py @@ -901,27 +901,26 @@ def rebuild_compiled_components(self, arch, env): *self.setup_extra_args) class CppCompiledComponentsPythonRecipe(CompiledComponentsPythonRecipe): - pass -# call_hostpython_via_targetpython = False -# -# def get_recipe_env(self, arch): -# env = super(CppCompiledComponentsPythonRecipe, self).get_recipe_env(arch) -# keys = dict( -# ctx=self.ctx, -# arch=arch, -# arch_noeabi=arch.arch.replace('eabi', ''), -# pyroot=self.ctx.get_python_install_dir() -# ) -# env['LDSHARED'] = env['CC'] + ' -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions' -# env['CFLAGS'] += " -I{pyroot}/include/python2.7 " \ -# " -I{ctx.ndk_dir}/platforms/android-{ctx.android_api}/arch-{arch_noeabi}/usr/include" \ -# " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/include" \ -# " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}/include".format(**keys) -# -# env['LDFLAGS'] += " -L{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}" \ -# " -lgnustl_shared".format(**keys) -# -# return env + call_hostpython_via_targetpython = False + + def get_recipe_env(self, arch): + env = super(CppCompiledComponentsPythonRecipe, self).get_recipe_env(arch) + keys = dict( + ctx=self.ctx, + arch=arch, + arch_noeabi=arch.arch.replace('eabi', ''), + pyroot=self.ctx.get_python_install_dir() + ) + env['LDSHARED'] = env['CC'] + ' -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions' + env['CFLAGS'] += " -I{pyroot}/include/python2.7 " \ + " -I{ctx.ndk_dir}/platforms/android-{ctx.android_api}/arch-{arch_noeabi}/usr/include" \ + " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/include" \ + " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}/include".format(**keys) + + env['LDFLAGS'] += " -L{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}" \ + " -lgnustl_shared".format(**keys) + + return env class CythonRecipe(PythonRecipe): From dd8fa6864895a2ed8b52a8d41169075180ba97bc Mon Sep 17 00:00:00 2001 From: frmdstryr Date: Sat, 25 Jun 2016 18:10:53 -0400 Subject: [PATCH 4/8] Copy stl so files... --- pythonforandroid/recipe.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pythonforandroid/recipe.py b/pythonforandroid/recipe.py index 2a7e32ad96..d05924283d 100644 --- a/pythonforandroid/recipe.py +++ b/pythonforandroid/recipe.py @@ -901,6 +901,7 @@ def rebuild_compiled_components(self, arch, env): *self.setup_extra_args) class CppCompiledComponentsPythonRecipe(CompiledComponentsPythonRecipe): + """ Extensions that require the cxx-stl """ call_hostpython_via_targetpython = False def get_recipe_env(self, arch): @@ -921,6 +922,19 @@ def get_recipe_env(self, arch): " -lgnustl_shared".format(**keys) return env + + def build_compiled_components(self,arch): + super(CppCompiledComponentsPythonRecipe, self).build_compiled_components(arch) + + # Copy libgnustl_shared.so + with current_directory(self.get_build_dir(arch.arch)): + lib_dir = join(self.ctx.get_python_install_dir(), "lib") + sh.cp( + sh.glob("{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}/*.so".format(ctx=self.ctx,arch=arch)), + lib_dir + ) + + class CythonRecipe(PythonRecipe): From 24f4db441df8194d40de4839f008fd64c28ca0ab Mon Sep 17 00:00:00 2001 From: frmdstryr Date: Sat, 25 Jun 2016 19:43:58 -0400 Subject: [PATCH 5/8] Add python --- pythonforandroid/recipe.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pythonforandroid/recipe.py b/pythonforandroid/recipe.py index d05924283d..3cf8f9ba49 100644 --- a/pythonforandroid/recipe.py +++ b/pythonforandroid/recipe.py @@ -917,9 +917,11 @@ def get_recipe_env(self, arch): " -I{ctx.ndk_dir}/platforms/android-{ctx.android_api}/arch-{arch_noeabi}/usr/include" \ " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/include" \ " -I{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}/include".format(**keys) - + env['CXXFLAGS'] = env['CFLAGS'] + ' -frtti -fexceptions' env['LDFLAGS'] += " -L{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}" \ + " -lpython2.7" \ " -lgnustl_shared".format(**keys) + return env @@ -928,10 +930,9 @@ def build_compiled_components(self,arch): # Copy libgnustl_shared.so with current_directory(self.get_build_dir(arch.arch)): - lib_dir = join(self.ctx.get_python_install_dir(), "lib") sh.cp( - sh.glob("{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}/*.so".format(ctx=self.ctx,arch=arch)), - lib_dir + "{ctx.ndk_dir}/sources/cxx-stl/gnu-libstdc++/{ctx.toolchain_version}/libs/{arch.arch}/libgnustl_shared.so".format(ctx=self.ctx,arch=arch), + self.ctx.get_libs_dir(arch.arch) ) From 4daa287726b2864c921cf5676fad4d043edd5fbf Mon Sep 17 00:00:00 2001 From: frmdstryr Date: Sat, 25 Jun 2016 23:44:37 -0400 Subject: [PATCH 6/8] Use main repo but apply patch to remove PyQt --- .../recipes/enaml/0001-Update-setup.py.patch | 25 +++++++++++++++++++ pythonforandroid/recipes/enaml/__init__.py | 5 ++-- 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 pythonforandroid/recipes/enaml/0001-Update-setup.py.patch diff --git a/pythonforandroid/recipes/enaml/0001-Update-setup.py.patch b/pythonforandroid/recipes/enaml/0001-Update-setup.py.patch new file mode 100644 index 0000000000..c84f892dc6 --- /dev/null +++ b/pythonforandroid/recipes/enaml/0001-Update-setup.py.patch @@ -0,0 +1,25 @@ +From 156a0426f7350bf49bdfae1aad555e13c9494b9a Mon Sep 17 00:00:00 2001 +From: frmdstryr +Date: Thu, 23 Jun 2016 22:04:32 -0400 +Subject: [PATCH] Update setup.py + +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 3bfd2a2..99817e5 100644 +--- a/setup.py ++++ b/setup.py +@@ -72,7 +72,7 @@ setup( + url='https://github.com/nucleic/enaml', + description='Declarative DSL for building rich user interfaces in Python', + long_description=open('README.rst').read(), +- requires=['atom', 'PyQt', 'ply', 'kiwisolver'], ++ requires=['atom', 'ply', 'kiwisolver'], + install_requires=['distribute', 'atom >= 0.3.8', 'kiwisolver >= 0.1.2', 'ply >= 3.4'], + packages=find_packages(), + package_data={ +-- +2.7.4 + diff --git a/pythonforandroid/recipes/enaml/__init__.py b/pythonforandroid/recipes/enaml/__init__.py index 29d163f692..89c070081e 100644 --- a/pythonforandroid/recipes/enaml/__init__.py +++ b/pythonforandroid/recipes/enaml/__init__.py @@ -3,7 +3,8 @@ class EnamlRecipe(CppCompiledComponentsPythonRecipe): site_packages_name = 'enaml' version = '0.9.8' - url = 'https://github.com/frmdstryr/enaml/archive/master.zip' + url = 'https://github.com/nucleic/enaml/archive/master.zip' + patches = ['0001-Update-setup.py.patch'] # Remove PyQt dependency depends = ['python2','setuptools','atom','kiwisolver'] -recipe = EnamlRecipe() \ No newline at end of file +recipe = EnamlRecipe() From 1124b52b8db2b6ea7203fc867ad745b48398f869 Mon Sep 17 00:00:00 2001 From: frmdstryr Date: Sun, 26 Jun 2016 00:45:24 -0400 Subject: [PATCH 7/8] Fix crash because parent is null --- .../sdl2/build/src/org/kivy/android/PythonActivity.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonActivity.java b/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonActivity.java index 6fd88565da..e1b420f283 100644 --- a/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonActivity.java +++ b/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonActivity.java @@ -310,7 +310,8 @@ public void keepActive() { public void removeLoadingScreen() { runOnUiThread(new Runnable() { public void run() { - if (PythonActivity.mImageView != null) { + if (PythonActivity.mImageView != null && + PythonActivity.mImageView.getParent()!=null) { ((ViewGroup)PythonActivity.mImageView.getParent()).removeView( PythonActivity.mImageView); PythonActivity.mImageView = null; From 19b29eb07595100ffdd17b9daa365fac012441c1 Mon Sep 17 00:00:00 2001 From: frmdstryr Date: Sun, 26 Jun 2016 00:51:45 -0400 Subject: [PATCH 8/8] Fix whitespace --- .../sdl2/build/src/org/kivy/android/PythonActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonActivity.java b/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonActivity.java index e1b420f283..02ee0435e2 100644 --- a/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonActivity.java +++ b/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonActivity.java @@ -311,7 +311,7 @@ public void removeLoadingScreen() { runOnUiThread(new Runnable() { public void run() { if (PythonActivity.mImageView != null && - PythonActivity.mImageView.getParent()!=null) { + PythonActivity.mImageView.getParent() != null) { ((ViewGroup)PythonActivity.mImageView.getParent()).removeView( PythonActivity.mImageView); PythonActivity.mImageView = null;