This commit is contained in:
Akinwale Ariwodola 2018-06-01 10:44:31 +01:00
parent 822c712956
commit 45b97ea28e
17 changed files with 240 additions and 204 deletions

View 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()

View file

@ -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

View file

@ -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,

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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()

View file

@ -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

View file

@ -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):

View file

@ -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 ----------------*/

View file

@ -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 ----------------*/

View file

@ -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__,

View 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");
}

View file

@ -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
+HOSTPGEN= $(PGEN)
+
POBJS= \
Parser/acceler.o \
Parser/grammar1.o \
@@ -404,8 +407,8 @@
# Build the shared modules
sharedmods: $(BUILDPYTHON)
@case $$MAKEFLAGS in \
- *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;; \
+ *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' PYTHONXCPREFIX='$(DESTDIR)$(prefix)' $(HOSTPYTHON) -E $(srcdir)/setup.py -q build;; \
+ *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' PYTHONXCPREFIX='$(DESTDIR)$(prefix)' $(HOSTPYTHON) -E $(srcdir)/setup.py build;; \
esac esac
;;
# Build static library + *-*-darwin*)
@@ -538,7 +541,7 @@ + case "$host_cpu" in
+ arm*)
$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT) + _host_cpu=arm
-@$(INSTALL) -d Include + ;;
- -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) + *)
+ -$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) + _host_cpu=$host_cpu
+ esac
$(PGEN): $(PGENOBJS) + ;;
$(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN) *-*-cygwin*)
@@ -919,26 +922,26 @@ _host_cpu=
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

View file

@ -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"):

View file

@ -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):

View file

@ -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 */