Python 2.7.13 support based on https://github.com/kivy/kivy-ios/pull/242
This commit is contained in:
parent
822c712956
commit
45b97ea28e
17 changed files with 240 additions and 204 deletions
73
recipes/hostopenssl/__init__.py
Normal file
73
recipes/hostopenssl/__init__.py
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
from toolchain import Recipe, shprint
|
||||||
|
from os.path import join, exists, basename, dirname
|
||||||
|
from os import makedirs
|
||||||
|
import sh
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def ensure_dir(filename):
|
||||||
|
if not exists(filename):
|
||||||
|
makedirs(filename)
|
||||||
|
|
||||||
|
class HostOpenSSLRecipe(Recipe):
|
||||||
|
version = "1.0.2l"
|
||||||
|
url = "http://www.openssl.org/source/openssl-{version}.tar.gz"
|
||||||
|
archs = ["x86_64"]
|
||||||
|
libraries = ["libssl.a", "libcrypto.a"]
|
||||||
|
include_dir = "include"
|
||||||
|
|
||||||
|
def build_x86_64(self):
|
||||||
|
arch = self.archs[0]
|
||||||
|
sdk_path = sh.xcrun("--sdk", "macosx", "--show-sdk-path").strip()
|
||||||
|
dist_dir = join(self.ctx.dist_dir,"hostopenssl")
|
||||||
|
print("OpenSSL for host to be installed at: {}").format(dist_dir)
|
||||||
|
sh.perl(join(self.build_dir, "Configure"), "darwin64-x86_64-cc",
|
||||||
|
"--openssldir={}".format(dist_dir),
|
||||||
|
"--prefix={}".format(dist_dir))
|
||||||
|
|
||||||
|
shprint(sh.make, "clean")
|
||||||
|
shprint(sh.make, "-j4", "build_libs")
|
||||||
|
|
||||||
|
def install_include(self):
|
||||||
|
arch = self.archs[0]
|
||||||
|
print("Custom include file install...")
|
||||||
|
print("Dist dir = {}".format(self.ctx.dist_dir))
|
||||||
|
dest_dir = join(self.ctx.dist_dir,"hostopenssl","include")
|
||||||
|
if exists(dest_dir):
|
||||||
|
shutil.rmtree(dest_dir)
|
||||||
|
src_dir = join(self.ctx.build_dir,"hostopenssl",arch,"openssl-{}".format(self.version),"include")
|
||||||
|
shutil.copytree(src_dir,dest_dir)
|
||||||
|
|
||||||
|
def build_all(self):
|
||||||
|
filtered_archs = self.filtered_archs
|
||||||
|
print("Build {} for {} (filtered)".format(
|
||||||
|
self.name,
|
||||||
|
", ".join([x.arch for x in filtered_archs])))
|
||||||
|
for arch in self.filtered_archs:
|
||||||
|
self.build(arch)
|
||||||
|
|
||||||
|
name = self.name
|
||||||
|
if self.library:
|
||||||
|
print("Create lipo library for {}".format(name))
|
||||||
|
if not name.startswith("lib"):
|
||||||
|
name = "lib{}".format(name)
|
||||||
|
static_fn = join(self.ctx.dist_dir, "hostopenssl", "lib", "{}.a".format(name))
|
||||||
|
ensure_dir(dirname(static_fn))
|
||||||
|
print("Lipo {} to {}".format(self.name, static_fn))
|
||||||
|
self.make_lipo(static_fn)
|
||||||
|
if self.libraries:
|
||||||
|
print("Create multiple lipo for {}".format(name))
|
||||||
|
for library in self.libraries:
|
||||||
|
static_fn = join(self.ctx.dist_dir, "hostopenssl", "lib", basename(library))
|
||||||
|
ensure_dir(dirname(static_fn))
|
||||||
|
print(" - Lipo-ize {}".format(library))
|
||||||
|
self.make_lipo(static_fn, library)
|
||||||
|
print("Install include files for {}".format(self.name))
|
||||||
|
self.install_include()
|
||||||
|
print("Install frameworks for {}".format(self.name))
|
||||||
|
self.install_frameworks()
|
||||||
|
print("Install sources for {}".format(self.name))
|
||||||
|
self.install_sources()
|
||||||
|
print("Install {}".format(self.name))
|
||||||
|
self.install()
|
||||||
|
|
||||||
|
recipe = HostOpenSSLRecipe()
|
|
@ -8,7 +8,7 @@ zipimport zipimport.c
|
||||||
_symtable symtablemodule.c
|
_symtable symtablemodule.c
|
||||||
array arraymodule.c # array objects
|
array arraymodule.c # array objects
|
||||||
cmath cmathmodule.c # -lm # complex math library functions
|
cmath cmathmodule.c # -lm # complex math library functions
|
||||||
math mathmodule.c # -lm # math library functions, e.g. sin()
|
math _math.c mathmodule.c # -lm # math library functions, e.g. sin()
|
||||||
_struct _struct.c # binary structure packing/unpacking
|
_struct _struct.c # binary structure packing/unpacking
|
||||||
time timemodule.c # -lm # time operations and variables
|
time timemodule.c # -lm # time operations and variables
|
||||||
operator operator.c # operator.add() and similar goodies
|
operator operator.c # operator.add() and similar goodies
|
||||||
|
|
|
@ -6,10 +6,10 @@ import shutil
|
||||||
|
|
||||||
|
|
||||||
class HostpythonRecipe(Recipe):
|
class HostpythonRecipe(Recipe):
|
||||||
version = "2.7.1"
|
version = "2.7.13"
|
||||||
url = "https://www.python.org/ftp/python/{version}/Python-{version}.tar.bz2"
|
url = "https://www.python.org/ftp/python/{version}/Python-{version}.tgz"
|
||||||
depends = ["hostlibffi"]
|
depends = ["hostlibffi"]
|
||||||
optional_depends = ["openssl"]
|
optional_depends = ["hostopenssl", "openssl"]
|
||||||
archs = ["x86_64"]
|
archs = ["x86_64"]
|
||||||
|
|
||||||
def init_with_ctx(self, ctx):
|
def init_with_ctx(self, ctx):
|
||||||
|
@ -66,8 +66,8 @@ class HostpythonRecipe(Recipe):
|
||||||
])
|
])
|
||||||
|
|
||||||
if "openssl.build_all" in self.ctx.state:
|
if "openssl.build_all" in self.ctx.state:
|
||||||
build_env["CFLAGS"] += " -I{}".format(join(self.ctx.dist_dir, "include",
|
build_env["CFLAGS"] += " -I{}".format(join(self.ctx.dist_dir, "hostopenssl", "include"))
|
||||||
"x86_64", "openssl"))
|
build_env["LDFLAGS"] += " -L{}".format(join(self.ctx.dist_dir, "hostopenssl", "lib"))
|
||||||
|
|
||||||
configure = sh.Command(join(self.build_dir, "configure"))
|
configure = sh.Command(join(self.build_dir, "configure"))
|
||||||
shprint(configure,
|
shprint(configure,
|
||||||
|
|
|
@ -8,6 +8,20 @@ class IosRecipe(CythonRecipe):
|
||||||
depends = ["python"]
|
depends = ["python"]
|
||||||
pbx_frameworks = ["MessageUI", "CoreMotion", "UIKit"]
|
pbx_frameworks = ["MessageUI", "CoreMotion", "UIKit"]
|
||||||
|
|
||||||
|
def prebuild_arch(self, arch):
|
||||||
|
from os.path import join
|
||||||
|
destdir = self.get_build_dir(arch.arch)
|
||||||
|
local_arch = arch.arch
|
||||||
|
if arch.arch == "arm64" :
|
||||||
|
local_arch = "aarch64"
|
||||||
|
if arch.arch == "armv7" :
|
||||||
|
local_arch = "arm"
|
||||||
|
build_dir = join(destdir, "../../../python", arch.arch, "Python-2.7.13", "build", "lib.darwin-{}-2.7".format(local_arch))
|
||||||
|
print("build_dir = "+build_dir)
|
||||||
|
copyfile = join(build_dir,"_sysconfigdata.py")
|
||||||
|
# Copy _sysconfigdata.py for this architecture across
|
||||||
|
self.copy_file(copyfile, destdir)
|
||||||
|
|
||||||
def install(self):
|
def install(self):
|
||||||
self.install_python_package(name="ios.so", is_dir=False)
|
self.install_python_package(name="ios.so", is_dir=False)
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,20 @@ class KivyRecipe(CythonRecipe):
|
||||||
join(self.ctx.dist_dir, "include", "common", "sdl2_mixer")])
|
join(self.ctx.dist_dir, "include", "common", "sdl2_mixer")])
|
||||||
return env
|
return env
|
||||||
|
|
||||||
|
def prebuild_arch(self, arch):
|
||||||
|
from os.path import join
|
||||||
|
destdir = self.get_build_dir(arch.arch)
|
||||||
|
local_arch = arch.arch
|
||||||
|
if arch.arch == "arm64" :
|
||||||
|
local_arch = "aarch64"
|
||||||
|
if arch.arch == "armv7" :
|
||||||
|
local_arch = "arm"
|
||||||
|
build_dir = join(destdir, "../../../python", arch.arch, "Python-2.7.13", "build", "lib.darwin-{}-2.7".format(local_arch))
|
||||||
|
print("build_dir = "+build_dir)
|
||||||
|
copyfile = join(build_dir,"_sysconfigdata.py")
|
||||||
|
# Copy _sysconfigdata.py for this architecture across
|
||||||
|
self.copy_file(copyfile, destdir)
|
||||||
|
|
||||||
def build_arch(self, arch):
|
def build_arch(self, arch):
|
||||||
self._patch_setup()
|
self._patch_setup()
|
||||||
super(KivyRecipe, self).build_arch(arch)
|
super(KivyRecipe, self).build_arch(arch)
|
||||||
|
|
|
@ -10,8 +10,9 @@ arch_mapper = {'i386': 'darwin-i386-cc',
|
||||||
|
|
||||||
|
|
||||||
class OpensslRecipe(Recipe):
|
class OpensslRecipe(Recipe):
|
||||||
version = "1.0.2k"
|
version = "1.0.2l"
|
||||||
url = "http://www.openssl.org/source/openssl-{version}.tar.gz"
|
url = "http://www.openssl.org/source/openssl-{version}.tar.gz"
|
||||||
|
depends = ["hostopenssl"]
|
||||||
libraries = ["libssl.a", "libcrypto.a"]
|
libraries = ["libssl.a", "libcrypto.a"]
|
||||||
include_dir = "include"
|
include_dir = "include"
|
||||||
include_per_arch = True
|
include_per_arch = True
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
from toolchain import CythonRecipe, shprint
|
from toolchain import CythonRecipe, shprint
|
||||||
from os.path import join
|
from os.path import join
|
||||||
|
from os import walk
|
||||||
|
import fnmatch
|
||||||
import sh
|
import sh
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,16 +12,44 @@ class PyobjusRecipe(CythonRecipe):
|
||||||
depends = ["python"]
|
depends = ["python"]
|
||||||
pre_build_ext = True
|
pre_build_ext = True
|
||||||
|
|
||||||
|
def prebuild_arch(self, arch):
|
||||||
|
from os.path import join
|
||||||
|
destdir = self.get_build_dir(arch.arch)
|
||||||
|
local_arch = arch.arch
|
||||||
|
if arch.arch == "arm64" :
|
||||||
|
local_arch = "aarch64"
|
||||||
|
if arch.arch == "armv7" :
|
||||||
|
local_arch = "arm"
|
||||||
|
build_dir = join(destdir, "../../../python", arch.arch, "Python-2.7.13", "build", "lib.darwin-{}-2.7".format(local_arch))
|
||||||
|
print("build_dir = "+build_dir)
|
||||||
|
copyfile = join(build_dir,"_sysconfigdata.py")
|
||||||
|
# Copy _sysconfigdata.py for this architecture across
|
||||||
|
self.copy_file(copyfile,destdir)
|
||||||
|
|
||||||
def get_recipe_env(self, arch):
|
def get_recipe_env(self, arch):
|
||||||
env = super(PyobjusRecipe, self).get_recipe_env(arch)
|
env = super(PyobjusRecipe, self).get_recipe_env(arch)
|
||||||
env["CC"] += " -I{}".format(
|
env["CC"] += " -I{}".format(
|
||||||
join(self.ctx.dist_dir, "include", arch.arch, "libffi"))
|
join(self.ctx.dist_dir, "include", arch.arch, "libffi"))
|
||||||
return env
|
return env
|
||||||
|
|
||||||
|
def cythonize_file(self, filename):
|
||||||
|
if filename.startswith(self.build_dir):
|
||||||
|
filename = filename[len(self.build_dir) + 1:]
|
||||||
|
print("Cython {}".format(filename))
|
||||||
|
cmd = sh.Command("/usr/local/bin/cython")
|
||||||
|
shprint(cmd, filename)
|
||||||
|
|
||||||
def cythonize_build(self):
|
def cythonize_build(self):
|
||||||
# don't use the cythonize, pyobjus don't support method rewriting
|
if not self.cythonize:
|
||||||
shprint(sh.find, self.build_dir, "-iname", "*.pyx",
|
return
|
||||||
"-exec", "cython", "{}", ";")
|
root_dir = self.build_dir
|
||||||
|
|
||||||
|
for root, dirnames, filenames in walk(root_dir):
|
||||||
|
#print(filenames)
|
||||||
|
for filename in fnmatch.filter(filenames, "*.pyx"):
|
||||||
|
#print("DBJ pyx files "+filename)
|
||||||
|
#shprint(cmd, filename)
|
||||||
|
self.cythonize_file(join(root, filename))
|
||||||
# ffi is installed somewhere else, this include doesn't work
|
# ffi is installed somewhere else, this include doesn't work
|
||||||
# XXX ideally, we need to fix libffi installation...
|
# XXX ideally, we need to fix libffi installation...
|
||||||
shprint(sh.sed,
|
shprint(sh.sed,
|
||||||
|
@ -28,5 +58,3 @@ class PyobjusRecipe(CythonRecipe):
|
||||||
"pyobjus/pyobjus.c")
|
"pyobjus/pyobjus.c")
|
||||||
|
|
||||||
recipe = PyobjusRecipe()
|
recipe = PyobjusRecipe()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#_symtable symtablemodule.c
|
#_symtable symtablemodule.c
|
||||||
array arraymodule.c # array objects
|
array arraymodule.c # array objects
|
||||||
cmath cmathmodule.c # -lm # complex math library functions
|
cmath cmathmodule.c # -lm # complex math library functions
|
||||||
math mathmodule.c # -lm # math library functions, e.g. sin()
|
math _math.c mathmodule.c # -lm # math library functions, e.g. sin()
|
||||||
_struct _struct.c # binary structure packing/unpacking
|
_struct _struct.c # binary structure packing/unpacking
|
||||||
time timemodule.c # -lm # time operations and variables
|
time timemodule.c # -lm # time operations and variables
|
||||||
operator operator.c # operator.add() and similar goodies
|
operator operator.c # operator.add() and similar goodies
|
||||||
|
|
|
@ -5,8 +5,8 @@ import os
|
||||||
|
|
||||||
|
|
||||||
class PythonRecipe(Recipe):
|
class PythonRecipe(Recipe):
|
||||||
version = "2.7.1"
|
version = "2.7.13"
|
||||||
url = "https://www.python.org/ftp/python/{version}/Python-{version}.tar.bz2"
|
url = "https://www.python.org/ftp/python/{version}/Python-{version}.tgz"
|
||||||
depends = ["hostpython", "libffi", ]
|
depends = ["hostpython", "libffi", ]
|
||||||
optional_depends = ["openssl"]
|
optional_depends = ["openssl"]
|
||||||
library = "libpython2.7.a"
|
library = "libpython2.7.a"
|
||||||
|
@ -15,7 +15,6 @@ class PythonRecipe(Recipe):
|
||||||
def init_with_ctx(self, ctx):
|
def init_with_ctx(self, ctx):
|
||||||
super(PythonRecipe, self).init_with_ctx(ctx)
|
super(PythonRecipe, self).init_with_ctx(ctx)
|
||||||
self.ctx.python_ver_dir = "python2.7"
|
self.ctx.python_ver_dir = "python2.7"
|
||||||
self.ctx.python_prefix = join(ctx.dist_dir, "root", "python")
|
|
||||||
self.ctx.site_packages_dir = join(
|
self.ctx.site_packages_dir = join(
|
||||||
ctx.dist_dir, "root", "python", "lib", ctx.python_ver_dir,
|
ctx.dist_dir, "root", "python", "lib", ctx.python_ver_dir,
|
||||||
"site-packages")
|
"site-packages")
|
||||||
|
@ -31,36 +30,41 @@ class PythonRecipe(Recipe):
|
||||||
self.copy_file("_scproxy.py", "Lib/_scproxy.py")
|
self.copy_file("_scproxy.py", "Lib/_scproxy.py")
|
||||||
self.apply_patch("xcompile.patch")
|
self.apply_patch("xcompile.patch")
|
||||||
self.apply_patch("setuppath.patch")
|
self.apply_patch("setuppath.patch")
|
||||||
|
self.apply_patch("posixmodule.patch")
|
||||||
self.append_file("ModulesSetup.mobile", "Modules/Setup.local")
|
self.append_file("ModulesSetup.mobile", "Modules/Setup.local")
|
||||||
self.apply_patch("ipv6.patch")
|
|
||||||
if "openssl.build_all" in self.ctx.state:
|
if "openssl.build_all" in self.ctx.state:
|
||||||
self.append_file("ModulesSetup.openssl", "Modules/Setup.local")
|
self.append_file("ModulesSetup.openssl", "Modules/Setup.local")
|
||||||
self.apply_patch("posixmodule.patch")
|
|
||||||
|
|
||||||
self.set_marker("patched")
|
self.set_marker("patched")
|
||||||
|
|
||||||
def build_arch(self, arch):
|
def build_arch(self, arch):
|
||||||
build_env = arch.get_env()
|
build_env = arch.get_env()
|
||||||
configure = sh.Command(join(self.build_dir, "configure"))
|
configure = sh.Command(join(self.build_dir, "configure"))
|
||||||
|
local_arch = arch.arch
|
||||||
|
if arch.arch == "arm64" :
|
||||||
|
local_arch = "aarch64"
|
||||||
shprint(configure,
|
shprint(configure,
|
||||||
"CC={}".format(build_env["CC"]),
|
"CC={}".format(build_env["CC"]),
|
||||||
"LD={}".format(build_env["LD"]),
|
"LD={}".format(build_env["LD"]),
|
||||||
"CFLAGS={}".format(build_env["CFLAGS"]),
|
"CFLAGS={}".format(build_env["CFLAGS"]),
|
||||||
"LDFLAGS={} -undefined dynamic_lookup".format(build_env["LDFLAGS"]),
|
"LDFLAGS={} -undefined dynamic_lookup".format(build_env["LDFLAGS"]),
|
||||||
|
"ac_cv_file__dev_ptmx=no",
|
||||||
|
"ac_cv_file__dev_ptc=no",
|
||||||
"--without-pymalloc",
|
"--without-pymalloc",
|
||||||
"--disable-toolbox-glue",
|
"--disable-toolbox-glue",
|
||||||
"--host={}-apple-darwin".format(arch),
|
"--host={}-apple-darwin".format(local_arch),
|
||||||
|
"--build=x86_64-apple-darwin16.4.0",
|
||||||
"--prefix=/python",
|
"--prefix=/python",
|
||||||
|
"--enable-ipv6",
|
||||||
"--with-system-ffi",
|
"--with-system-ffi",
|
||||||
"--without-doc-strings",
|
"--without-doc-strings",
|
||||||
"--enable-ipv6",
|
|
||||||
_env=build_env)
|
_env=build_env)
|
||||||
|
|
||||||
self._patch_pyconfig()
|
self._patch_pyconfig()
|
||||||
|
self.apply_patch("random.patch")
|
||||||
self.apply_patch("ctypes_duplicate.patch")
|
self.apply_patch("ctypes_duplicate.patch")
|
||||||
self.apply_patch("ctypes_duplicate_longdouble.patch")
|
|
||||||
|
|
||||||
shprint(sh.make, self.ctx.concurrent_make,
|
shprint(sh.make, "-j4",
|
||||||
"CROSS_COMPILE_TARGET=yes",
|
"CROSS_COMPILE_TARGET=yes",
|
||||||
"HOSTPYTHON={}".format(self.ctx.hostpython),
|
"HOSTPYTHON={}".format(self.ctx.hostpython),
|
||||||
"HOSTPGEN={}".format(self.ctx.hostpgen))
|
"HOSTPGEN={}".format(self.ctx.hostpgen))
|
||||||
|
@ -70,7 +74,7 @@ class PythonRecipe(Recipe):
|
||||||
build_env = arch.get_env()
|
build_env = arch.get_env()
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
build_dir = self.get_build_dir(arch.arch)
|
||||||
build_env["PATH"] = os.environ["PATH"]
|
build_env["PATH"] = os.environ["PATH"]
|
||||||
shprint(sh.make, self.ctx.concurrent_make,
|
shprint(sh.make,
|
||||||
"-C", build_dir,
|
"-C", build_dir,
|
||||||
"install",
|
"install",
|
||||||
"CROSS_COMPILE_TARGET=yes",
|
"CROSS_COMPILE_TARGET=yes",
|
||||||
|
@ -90,7 +94,7 @@ class PythonRecipe(Recipe):
|
||||||
for line in lines[:]:
|
for line in lines[:]:
|
||||||
if pattern in line:
|
if pattern in line:
|
||||||
lines.remove(line)
|
lines.remove(line)
|
||||||
with open(pyconfig, "r") as fd:
|
with open(pyconfig) as fd:
|
||||||
lines = fd.readlines()
|
lines = fd.readlines()
|
||||||
_remove_line(lines, "#define HAVE_BIND_TEXTDOMAIN_CODESET 1")
|
_remove_line(lines, "#define HAVE_BIND_TEXTDOMAIN_CODESET 1")
|
||||||
_remove_line(lines, "#define HAVE_FINITE 1")
|
_remove_line(lines, "#define HAVE_FINITE 1")
|
||||||
|
@ -111,7 +115,7 @@ class PythonRecipe(Recipe):
|
||||||
_remove_line(lines, "#define HAVE_TMPNAM_R 1")
|
_remove_line(lines, "#define HAVE_TMPNAM_R 1")
|
||||||
_remove_line(lines, "#define HAVE__GETPTY 1")
|
_remove_line(lines, "#define HAVE__GETPTY 1")
|
||||||
lines.append("#define HAVE_GETHOSTBYNAME 1\n")
|
lines.append("#define HAVE_GETHOSTBYNAME 1\n")
|
||||||
with open(pyconfig, "w") as fd:
|
with open(pyconfig, "wb") as fd:
|
||||||
fd.writelines(lines)
|
fd.writelines(lines)
|
||||||
|
|
||||||
def reduce_python(self):
|
def reduce_python(self):
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
--- Python2.7-old/Modules/_ctypes/cfield.c 2010-05-09 16:46:46.000000000 +0200
|
--- Python-2.7.13/Modules/_ctypes/cfield.c.orig 2017-03-08 16:42:49.000000000 +0000
|
||||||
+++ Python2.7-new/Modules/_ctypes/cfield.c 2013-08-27 00:21:15.000000000 +0200
|
+++ Python-2.7.13/Modules/_ctypes/cfield.c 2017-03-08 16:52:33.000000000 +0000
|
||||||
@@ -1747,24 +1747,6 @@
|
@@ -1725,32 +1725,12 @@
|
||||||
|
struct _ffi_type **elements;
|
||||||
} ffi_type;
|
} ffi_type;
|
||||||
*/
|
*/
|
||||||
|
-
|
||||||
-/* align and size are bogus for void, but they must not be zero */
|
-/* align and size are bogus for void, but they must not be zero */
|
||||||
-ffi_type ffi_type_void = { 1, 1, FFI_TYPE_VOID };
|
-ffi_type ffi_type_void = { 1, 1, FFI_TYPE_VOID };
|
||||||
-
|
-
|
||||||
|
@ -13,8 +14,8 @@
|
||||||
-ffi_type ffi_type_uint16 = { 2, 2, FFI_TYPE_UINT16 };
|
-ffi_type ffi_type_uint16 = { 2, 2, FFI_TYPE_UINT16 };
|
||||||
-ffi_type ffi_type_sint16 = { 2, 2, FFI_TYPE_SINT16 };
|
-ffi_type ffi_type_sint16 = { 2, 2, FFI_TYPE_SINT16 };
|
||||||
-
|
-
|
||||||
-ffi_type ffi_type_uint32 = { 4, 4, FFI_TYPE_UINT32 };
|
-ffi_type ffi_type_uint32 = { 4, INT_ALIGN, FFI_TYPE_UINT32 };
|
||||||
-ffi_type ffi_type_sint32 = { 4, 4, FFI_TYPE_SINT32 };
|
-ffi_type ffi_type_sint32 = { 4, INT_ALIGN, FFI_TYPE_SINT32 };
|
||||||
-
|
-
|
||||||
-ffi_type ffi_type_uint64 = { 8, LONG_LONG_ALIGN, FFI_TYPE_UINT64 };
|
-ffi_type ffi_type_uint64 = { 8, LONG_LONG_ALIGN, FFI_TYPE_UINT64 };
|
||||||
-ffi_type ffi_type_sint64 = { 8, LONG_LONG_ALIGN, FFI_TYPE_SINT64 };
|
-ffi_type ffi_type_sint64 = { 8, LONG_LONG_ALIGN, FFI_TYPE_SINT64 };
|
||||||
|
@ -22,13 +23,15 @@
|
||||||
-ffi_type ffi_type_float = { sizeof(float), FLOAT_ALIGN, FFI_TYPE_FLOAT };
|
-ffi_type ffi_type_float = { sizeof(float), FLOAT_ALIGN, FFI_TYPE_FLOAT };
|
||||||
-ffi_type ffi_type_double = { sizeof(double), DOUBLE_ALIGN, FFI_TYPE_DOUBLE };
|
-ffi_type ffi_type_double = { sizeof(double), DOUBLE_ALIGN, FFI_TYPE_DOUBLE };
|
||||||
-
|
-
|
||||||
|
+#if 0
|
||||||
#ifdef ffi_type_longdouble
|
#ifdef ffi_type_longdouble
|
||||||
#undef ffi_type_longdouble
|
#undef ffi_type_longdouble
|
||||||
#endif
|
#endif
|
||||||
@@ -1772,6 +1754,4 @@
|
/* This is already defined on OSX */
|
||||||
ffi_type ffi_type_longdouble = { sizeof(long double), LONGDOUBLE_ALIGN,
|
ffi_type ffi_type_longdouble = { sizeof(long double), LONGDOUBLE_ALIGN,
|
||||||
FFI_TYPE_LONGDOUBLE };
|
FFI_TYPE_LONGDOUBLE };
|
||||||
|
-
|
||||||
-ffi_type ffi_type_pointer = { sizeof(void *), VOID_P_ALIGN, FFI_TYPE_POINTER };
|
-ffi_type ffi_type_pointer = { sizeof(void *), VOID_P_ALIGN, FFI_TYPE_POINTER };
|
||||||
-
|
-
|
||||||
|
+#endif
|
||||||
/*---------------- EOF ----------------*/
|
/*---------------- EOF ----------------*/
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
diff -Naur Python-2.7.1.orig/Modules/_ctypes/cfield.c Python-2.7.1/Modules/_ctypes/cfield.c
|
|
||||||
--- Python-2.7.1.orig/Modules/_ctypes/cfield.c 2015-02-11 13:00:42.000000000 +0100
|
|
||||||
+++ Python-2.7.1/Modules/_ctypes/cfield.c 2015-02-11 13:01:12.000000000 +0100
|
|
||||||
@@ -1747,11 +1747,12 @@
|
|
||||||
} ffi_type;
|
|
||||||
*/
|
|
||||||
|
|
||||||
+#if 0
|
|
||||||
#ifdef ffi_type_longdouble
|
|
||||||
#undef ffi_type_longdouble
|
|
||||||
#endif
|
|
||||||
/* This is already defined on OSX */
|
|
||||||
ffi_type ffi_type_longdouble = { sizeof(long double), LONGDOUBLE_ALIGN,
|
|
||||||
FFI_TYPE_LONGDOUBLE };
|
|
||||||
-
|
|
||||||
+#endif
|
|
||||||
/*---------------- EOF ----------------*/
|
|
|
@ -1,15 +1,9 @@
|
||||||
Index: Python-2.7.1/Modules/posixmodule.c
|
--- Python-2.7.13/Modules/posixmodule.c 2016-12-17 21:05:07.000000000 +0100
|
||||||
IDEA additional info:
|
+++ Python-2.7.13-patch/Modules/posixmodule.c 2018-05-31 20:13:42.000000000 +0100
|
||||||
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
@@ -2828,6 +2828,7 @@
|
||||||
<+>UTF-8
|
|
||||||
===================================================================
|
|
||||||
--- Python-2.7.1/Modules/posixmodule.c (date 1290868829000)
|
|
||||||
+++ Python-2.7.1/Modules/posixmodule.c (revision )
|
|
||||||
@@ -2644,7 +2644,7 @@
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-
|
|
||||||
+#undef HAVE_SYSTEM
|
+#undef HAVE_SYSTEM
|
||||||
#ifdef HAVE_SYSTEM
|
#ifdef HAVE_SYSTEM
|
||||||
PyDoc_STRVAR(posix_system__doc__,
|
PyDoc_STRVAR(posix_system__doc__,
|
||||||
|
|
31
recipes/python/random.patch
Normal file
31
recipes/python/random.patch
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
--- Python-2.7.13/Python/random.c.orig 2017-02-19 13:55:43.000000000 +0000
|
||||||
|
+++ Python-2.7.13/Python/random.c 2017-02-19 13:56:29.000000000 +0000
|
||||||
|
@@ -3,7 +3,7 @@
|
||||||
|
#include <windows.h>
|
||||||
|
#else
|
||||||
|
#include <fcntl.h>
|
||||||
|
-#if defined(HAVE_GETRANDOM) || defined(HAVE_GETENTROPY)
|
||||||
|
+#if defined(HAVE_GETRANDOM)// || defined(HAVE_GETENTROPY)
|
||||||
|
#include <sys/random.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
@@ -114,7 +114,7 @@
|
||||||
|
|
||||||
|
if (!fatal) {
|
||||||
|
Py_BEGIN_ALLOW_THREADS
|
||||||
|
- res = getentropy(buffer, len);
|
||||||
|
+ res = 0;
|
||||||
|
Py_END_ALLOW_THREADS
|
||||||
|
|
||||||
|
if (res < 0) {
|
||||||
|
@@ -123,8 +123,8 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
- res = getentropy(buffer, len);
|
||||||
|
- if (res < 0)
|
||||||
|
+ res = 0;
|
||||||
|
+ if (res < 0)
|
||||||
|
Py_FatalError("getentropy() failed");
|
||||||
|
}
|
||||||
|
|
|
@ -1,138 +1,28 @@
|
||||||
diff -Naur Python-2.7-old/Makefile.pre.in Python-2.7-new/Makefile.pre.in
|
--- Python-2.7.13/configure.orig 2017-02-08 10:11:52.000000000 +0000
|
||||||
--- Python-2.7-old/Makefile.pre.in 2010-04-11 17:10:46.000000000 -0700
|
+++ Python-2.7.13/configure 2017-02-08 10:15:10.000000000 +0000
|
||||||
+++ Python-2.7-new/Makefile.pre.in 2010-07-09 13:40:47.000000000 -0700
|
@@ -3242,6 +3242,9 @@
|
||||||
@@ -179,6 +179,7 @@
|
*-*-linux*)
|
||||||
|
ac_sys_system=Linux
|
||||||
PYTHON= python$(EXE)
|
;;
|
||||||
BUILDPYTHON= python$(BUILDEXE)
|
+ *-*-darwin*)
|
||||||
+HOSTPYTHON= ./$(BUILDPYTHON)
|
+ ac_sys_system=Darwin
|
||||||
|
+ ;;
|
||||||
# The task to run while instrument when building the profile-opt target
|
*-*-cygwin*)
|
||||||
PROFILE_TASK= $(srcdir)/Tools/pybench/pybench.py -n 2 --with-gc --with-syscheck
|
ac_sys_system=Cygwin
|
||||||
@@ -212,6 +213,8 @@
|
;;
|
||||||
# Parser
|
@@ -3288,6 +3291,15 @@
|
||||||
PGEN= Parser/pgen$(EXE)
|
_host_cpu=$host_cpu
|
||||||
|
esac
|
||||||
+HOSTPGEN= $(PGEN)
|
;;
|
||||||
+
|
+ *-*-darwin*)
|
||||||
POBJS= \
|
+ case "$host_cpu" in
|
||||||
Parser/acceler.o \
|
+ arm*)
|
||||||
Parser/grammar1.o \
|
+ _host_cpu=arm
|
||||||
@@ -404,8 +407,8 @@
|
+ ;;
|
||||||
# Build the shared modules
|
+ *)
|
||||||
sharedmods: $(BUILDPYTHON)
|
+ _host_cpu=$host_cpu
|
||||||
@case $$MAKEFLAGS in \
|
+ esac
|
||||||
- *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \
|
+ ;;
|
||||||
- *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \
|
*-*-cygwin*)
|
||||||
+ *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' PYTHONXCPREFIX='$(DESTDIR)$(prefix)' $(HOSTPYTHON) -E $(srcdir)/setup.py -q build;; \
|
_host_cpu=
|
||||||
+ *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' PYTHONXCPREFIX='$(DESTDIR)$(prefix)' $(HOSTPYTHON) -E $(srcdir)/setup.py build;; \
|
;;
|
||||||
esac
|
|
||||||
|
|
||||||
# Build static library
|
|
||||||
@@ -538,7 +541,7 @@
|
|
||||||
|
|
||||||
$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
|
|
||||||
-@$(INSTALL) -d Include
|
|
||||||
- -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
|
|
||||||
+ -$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
|
|
||||||
|
|
||||||
$(PGEN): $(PGENOBJS)
|
|
||||||
$(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
|
|
||||||
@@ -919,26 +922,26 @@
|
|
||||||
done; \
|
|
||||||
done
|
|
||||||
$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
|
|
||||||
- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
|
||||||
- ./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
||||||
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
|
||||||
+ $(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
||||||
-d $(LIBDEST) -f \
|
|
||||||
-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
|
|
||||||
$(DESTDIR)$(LIBDEST)
|
|
||||||
- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
|
||||||
- ./$(BUILDPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
||||||
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
|
||||||
+ $(HOSTPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
||||||
-d $(LIBDEST) -f \
|
|
||||||
-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
|
|
||||||
$(DESTDIR)$(LIBDEST)
|
|
||||||
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
|
||||||
- ./$(BUILDPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
||||||
+ $(HOSTPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
||||||
-d $(LIBDEST)/site-packages -f \
|
|
||||||
-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
|
|
||||||
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
|
||||||
- ./$(BUILDPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
||||||
+ $(HOSTPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
|
|
||||||
-d $(LIBDEST)/site-packages -f \
|
|
||||||
-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
|
|
||||||
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
|
|
||||||
- ./$(BUILDPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"
|
|
||||||
+ $(HOSTPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"
|
|
||||||
|
|
||||||
# Create the PLATDIR source directory, if one wasn't distributed..
|
|
||||||
$(srcdir)/Lib/$(PLATDIR):
|
|
||||||
@@ -1042,8 +1045,10 @@
|
|
||||||
|
|
||||||
# Install the dynamically loadable modules
|
|
||||||
# This goes into $(exec_prefix)
|
|
||||||
-sharedinstall: sharedmods
|
|
||||||
- $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \
|
|
||||||
+sharedinstall: sharedmods
|
|
||||||
+ CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
|
|
||||||
+ $(RUNSHARED) $(HOSTPYTHON) -E $(srcdir)/setup.py install \
|
|
||||||
+ --skip-build \
|
|
||||||
--prefix=$(prefix) \
|
|
||||||
--install-scripts=$(BINDIR) \
|
|
||||||
--install-platlib=$(DESTSHARED) \
|
|
||||||
diff -Naur Python-2.7-old/setup.py Python-2.7-new/setup.py
|
|
||||||
--- Python-2.7-old/setup.py 2010-06-27 05:36:16.000000000 -0700
|
|
||||||
+++ Python-2.7-new/setup.py 2010-07-09 13:54:29.000000000 -0700
|
|
||||||
@@ -23,6 +23,10 @@
|
|
||||||
# This global variable is used to hold the list of modules to be disabled.
|
|
||||||
disabled_module_list = []
|
|
||||||
|
|
||||||
+# _ctypes fails to cross-compile due to the libffi configure script.
|
|
||||||
+if os.environ.has_key('PYTHONXCPREFIX'):
|
|
||||||
+ disabled_module_list.append('_ctypes')
|
|
||||||
+
|
|
||||||
def add_dir_to_list(dirlist, dir):
|
|
||||||
"""Add the directory 'dir' to the list 'dirlist' (at the front) if
|
|
||||||
1) 'dir' is not already in 'dirlist'
|
|
||||||
@@ -278,6 +282,14 @@
|
|
||||||
(ext.name, sys.exc_info()[1]))
|
|
||||||
self.failed.append(ext.name)
|
|
||||||
return
|
|
||||||
+
|
|
||||||
+ # Inport check will not work when cross-compiling.
|
|
||||||
+ if os.environ.has_key('PYTHONXCPREFIX'):
|
|
||||||
+ self.announce(
|
|
||||||
+ 'WARNING: skipping inport check for cross-compiled: "%s"' %
|
|
||||||
+ ext.name)
|
|
||||||
+ return
|
|
||||||
+
|
|
||||||
# Workaround for Mac OS X: The Carbon-based modules cannot be
|
|
||||||
# reliably imported into a command-line Python
|
|
||||||
if 'Carbon' in ext.extra_link_args:
|
|
||||||
|
|
||||||
--- Python-2.7Orig/configure 2011-04-29 22:30:59.231331437 +1000
|
|
||||||
+++ Python-2.7/configure 2010-05-29 01:28:47.000000000 +1000
|
|
||||||
@@ -13517,7 +13517,7 @@
|
|
||||||
$as_echo_n "(cached) " >&6
|
|
||||||
else
|
|
||||||
if test "$cross_compiling" = yes; then :
|
|
||||||
- ac_cv_have_long_long_format=no
|
|
||||||
+ ac_cv_have_long_long_format="cross -- assuming yes"
|
|
||||||
else
|
|
||||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
/* end confdefs.h. */
|
|
||||||
@@ -13569,7 +13569,7 @@
|
|
||||||
$as_echo "$ac_cv_have_long_long_format" >&6; }
|
|
||||||
fi
|
|
||||||
|
|
||||||
-if test "$ac_cv_have_long_long_format" = yes
|
|
||||||
+if test "$ac_cv_have_long_long_format" != no
|
|
||||||
then
|
|
||||||
|
|
||||||
$as_echo "#define PY_FORMAT_LONG_LONG \"ll\"" >>confdefs.h
|
|
||||||
|
|
||||||
|
|
|
@ -3,14 +3,14 @@ import sh
|
||||||
|
|
||||||
|
|
||||||
class LibSDL2Recipe(Recipe):
|
class LibSDL2Recipe(Recipe):
|
||||||
#version = "2.0.3"
|
version = "2.0.5"
|
||||||
#url = "https://www.libsdl.org/release/SDL2-{version}.tar.gz"
|
url = "https://www.libsdl.org/release/SDL2-{version}.tar.gz"
|
||||||
version = "iOS-improvements"
|
#version = "iOS-improvements"
|
||||||
url = "https://bitbucket.org/slime73/sdl-experiments/get/{version}.tar.gz"
|
#url = "https://bitbucket.org/slime73/sdl-experiments/get/{version}.tar.gz"
|
||||||
library = "Xcode-iOS/SDL/build/Release-{arch.sdk}/libSDL2.a"
|
library = "Xcode-iOS/SDL/build/Release-{arch.sdk}/libSDL2.a"
|
||||||
include_dir = "include"
|
include_dir = "include"
|
||||||
pbx_frameworks = ["OpenGLES", "AudioToolbox", "QuartzCore", "CoreGraphics",
|
pbx_frameworks = ["OpenGLES", "AudioToolbox", "QuartzCore", "CoreGraphics",
|
||||||
"CoreMotion"]
|
"CoreMotion", "AVFoundation", "GameController"]
|
||||||
|
|
||||||
def prebuild_arch(self, arch):
|
def prebuild_arch(self, arch):
|
||||||
if self.has_marker("patched"):
|
if self.has_marker("patched"):
|
||||||
|
|
|
@ -947,6 +947,7 @@ class CythonRecipe(PythonRecipe):
|
||||||
env["LDSHARED"] = join(self.ctx.root_dir, "tools", "liblink")
|
env["LDSHARED"] = join(self.ctx.root_dir, "tools", "liblink")
|
||||||
env["ARM_LD"] = env["LD"]
|
env["ARM_LD"] = env["LD"]
|
||||||
env["ARCH"] = arch.arch
|
env["ARCH"] = arch.arch
|
||||||
|
env["PYTHONPATH"] = dirname(realpath(__file__))
|
||||||
return env
|
return env
|
||||||
|
|
||||||
def build_arch(self, arch):
|
def build_arch(self, arch):
|
||||||
|
|
|
@ -234,7 +234,7 @@
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/bash;
|
shellPath = /bin/bash;
|
||||||
shellScript = "{{ cookiecutter.dist_dir }}/hostpython/bin/python -OO -m compileall \"$PROJECT_DIR\"/YourApp";
|
shellScript = "if [ $arch = \"arm64\" ]; then export local_arch=\"aarch64\"; elif [ $arch = \"armv7\" ]; then export local_arch=\"arm\"; else export local_arch=$arch; fi; export PYTHONPATH={{ cookiecutter.dist_dir }}/../build/python/$arch/Python-2.7.13/build/lib.darwin-$local_arch-2.7; {{ cookiecutter.dist_dir }}/hostpython/bin/python -OO -m compileall \"$PROJECT_DIR\"/YourApp";
|
||||||
};
|
};
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue