PyO3 / maturin

Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages
https://maturin.rs
Apache License 2.0
3.32k stars 226 forks source link

Adding support for iOS #1742

Open holzschu opened 9 months ago

holzschu commented 9 months ago

Hi, I'm maintaining a Python distribution that runs on iOS (iPhones and iPads). Some of the packages in that distribution use maturin for building (as one does). Currently, my setup breaks with the following error:

💥 maturin failed
  Caused by: The operating system Ios is not supported

Compiling for iOS is very similar to compiling for OSX; I'd like to expand maturin to add support for iOS.

messense commented 9 months ago
  • is there any documentation on how to add support for a new platform?

See https://maturin.rs/platform_support.

  • is there an interest for this in the project (as in, assuming it works, should I make a PR?)

Sure, pull requests are welcome.

Could you paste a python3 -m sysconfig output for iOS here or make a PR to put it in https://github.com/PyO3/maturin/tree/main/sysconfig first?

holzschu commented 9 months ago

Here you go. The UUID bits (e.g. E7065B62-29FB-465A-A6BC-8FA675DD351A) will be different for another device or installation. There are two of them, one for where the app is located, one for where the user files are located.

``` Platform: "macosx-13.4-arm64" Python version: "3.11" Current installation scheme: "posix_prefix" Paths: data = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library" include = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/include/python3.11" platinclude = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/include/python3.11" platlib = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/lib/python3.11/site-packages" platstdlib = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/lib/python3.11" purelib = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/lib/python3.11/site-packages" scripts = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/bin" stdlib = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/lib/python3.11" Variables: ABIFLAGS = "" AC_APPLE_UNIVERSAL_BUILD = "0" AIX_BUILDDATE = "0" AIX_GENUINE_CPLUSPLUS = "0" ALIGNOF_LONG = "8" ALIGNOF_SIZE_T = "8" ALT_SOABI = "0" ANDROID_API_LEVEL = "0" AR = "ar" ARFLAGS = "rcs" BASECFLAGS = "-Wsign-compare -Wunreachable-code" BASECPPFLAGS = "" BASEMODLIBS = "" BINDIR = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/bin" BINLIBDEST = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11" BLDLIBRARY = "-L. -lpython3.11" BLDSHARED = "clang -v -undefined error -dynamiclib -lz -L. -lpython3.11 -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib -miphoneos-version-min=14.0 -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" BOOTSTRAP_HEADERS = "\" BUILDEXE = ".exe" BUILDPYTHON = "python.exe" BUILD_GNU_TYPE = "x86_64-apple-darwin" BYTESTR_DEPS = "\" CC = "clang" CCSHARED = "" CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -miphoneos-version-min=14.0 -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" CFLAGSFORSHARED = "" CFLAGS_ALIASING = "" CFLAGS_NODIST = "" CONFIGFILES = "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" CONFIGURE_CFLAGS = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" CONFIGURE_CFLAGS_NODIST = "-std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden" CONFIGURE_CPPFLAGS = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" CONFIGURE_LDFLAGS = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" CONFIGURE_LDFLAGS_NODIST = "" CONFIGURE_LDFLAGS_NOLTO = "" CONFIG_ARGS = "'--prefix=/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library' '--enable-shared' '--host' 'arm-apple-darwin' '--build' 'x86_64-apple-darwin' '--enable-ipv6' '--with-openssl=/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos' '--with-build-python=/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11' '--without-computed-gotos' 'with_system_ffi=yes' 'ac_cv_file__dev_ptmx=no' 'ac_cv_file__dev_ptc=no' 'ac_cv_func_getentropy=no' 'ac_cv_func_sendfile=no' 'ac_cv_func_setregid=no' 'ac_cv_func_setreuid=no' 'ac_cv_func_setsid=no' 'ac_cv_func_setpgid=no' 'ac_cv_func_setpgrp=no' 'ac_cv_func_setuid=no' 'ac_cv_func_forkpty=no' 'ac_cv_func_openpty=no' 'ac_cv_func_clock_settime=no' 'build_alias=x86_64-apple-darwin' 'host_alias=arm-apple-darwin' 'CC=clang' 'CFLAGS=-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include' 'LDFLAGS=-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib' 'CPPFLAGS=-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include'" CONFINCLUDEDIR = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include" CONFINCLUDEPY = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include/python3.11" COREPYTHONPATH = "" COVERAGE_INFO = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/coverage.info" COVERAGE_LCOV_OPTIONS = "--rc lcov_branch_coverage=1" COVERAGE_REPORT = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/lcov-report" COVERAGE_REPORT_OPTIONS = "--rc lcov_branch_coverage=1 --branch-coverage --title "CPython 3.11 LCOV report [commit $(shell git --git-dir ./.git rev-parse --short HEAD)]"" CPPFLAGS = "-I. -I./Include -miphoneos-version-min=14.0 -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" CXX = "clang++" DECIMAL_CFLAGS = "-I./Modules/_decimal/libmpdec -DUNIVERSAL=1" DECIMAL_LDFLAGS = "-lm Modules/_decimal/libmpdec/libmpdec.a" DEEPFREEZE_DEPS = "./Tools/scripts/deepfreeze.py ./Programs/_freeze_module.py \" DEEPFREEZE_OBJS = "Python/deepfreeze/deepfreeze.o" DESTDIRS = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11 /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11/lib-dynload" DESTLIB = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11" DESTPATH = "" DESTSHARED = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11/lib-dynload" DFLAGS = "" DIRMODE = "755" DIST = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy" DISTDIRS = "Include Lib Misc Ext-dummy" DISTFILES = "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in" DLINCLDIR = "." DLLLIBRARY = "" DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 = "0" DOUBLE_IS_BIG_ENDIAN_IEEE754 = "0" DOUBLE_IS_LITTLE_ENDIAN_IEEE754 = "1" DTRACE = "" DTRACE_DEPS = "\" DTRACE_HEADERS = "" DTRACE_OBJS = "" DYNLOADFILE = "dynload_shlib.o" ENABLE_IPV6 = "1" ENSUREPIP = "upgrade" EXE = "" EXEMODE = "755" EXPAT_CFLAGS = "-I./Modules/expat" EXPAT_LDFLAGS = "-lm Modules/expat/libexpat.a" EXPORTSFROM = "" EXPORTSYMS = "" EXTRATESTOPTS = "" EXTRA_CFLAGS = "" EXT_SUFFIX = ".cpython-311-darwin.so" FILEMODE = "644" FLOAT_WORDS_BIGENDIAN = "0" FREEZE_MODULE = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11 ./Programs/_freeze_module.py" FREEZE_MODULE_BOOTSTRAP = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11 ./Programs/_freeze_module.py" FREEZE_MODULE_BOOTSTRAP_DEPS = "./Programs/_freeze_module.py" FREEZE_MODULE_DEPS = "./Programs/_freeze_module.py" FROZEN_FILES_IN = "\" FROZEN_FILES_OUT = "\" GETPGRP_HAVE_ARG = "0" GITBRANCH = "git --git-dir ./.git name-rev --name-only HEAD" GITTAG = "git --git-dir ./.git describe --all --always --dirty" GITVERSION = "git --git-dir ./.git rev-parse --short HEAD" GNULD = "no" HAVE_ACCEPT = "1" HAVE_ACCEPT4 = "0" HAVE_ACOSH = "1" HAVE_ADDRINFO = "1" HAVE_ALARM = "1" HAVE_ALIGNED_REQUIRED = "1" HAVE_ALLOCA_H = "1" HAVE_ALTZONE = "0" HAVE_ASINH = "1" HAVE_ASM_TYPES_H = "0" HAVE_ATANH = "1" HAVE_BIND = "1" HAVE_BIND_TEXTDOMAIN_CODESET = "0" HAVE_BLUETOOTH_BLUETOOTH_H = "0" HAVE_BLUETOOTH_H = "0" HAVE_BROKEN_MBSTOWCS = "0" HAVE_BROKEN_NICE = "0" HAVE_BROKEN_PIPE_BUF = "0" HAVE_BROKEN_POLL = "0" HAVE_BROKEN_POSIX_SEMAPHORES = "0" HAVE_BROKEN_PTHREAD_SIGMASK = "0" HAVE_BROKEN_SEM_GETVALUE = "1" HAVE_BROKEN_UNSETENV = "0" HAVE_BUILTIN_ATOMIC = "1" HAVE_BZLIB_H = "1" HAVE_CHFLAGS = "1" HAVE_CHMOD = "1" HAVE_CHOWN = "1" HAVE_CHROOT = "0" HAVE_CLOCK = "1" HAVE_CLOCK_GETRES = "1" HAVE_CLOCK_GETTIME = "1" HAVE_CLOCK_NANOSLEEP = "0" HAVE_CLOCK_SETTIME = "0" HAVE_CLOSE_RANGE = "0" HAVE_COMPUTED_GOTOS = "0" HAVE_CONFSTR = "1" HAVE_CONIO_H = "0" HAVE_CONNECT = "1" HAVE_COPY_FILE_RANGE = "0" HAVE_CRYPT_H = "0" HAVE_CRYPT_R = "0" HAVE_CTERMID = "1" HAVE_CTERMID_R = "1" HAVE_CURSES_FILTER = "1" HAVE_CURSES_H = "1" HAVE_CURSES_HAS_KEY = "1" HAVE_CURSES_IMMEDOK = "1" HAVE_CURSES_IS_PAD = "0" HAVE_CURSES_IS_TERM_RESIZED = "1" HAVE_CURSES_RESIZETERM = "1" HAVE_CURSES_RESIZE_TERM = "1" HAVE_CURSES_SYNCOK = "1" HAVE_CURSES_TYPEAHEAD = "1" HAVE_CURSES_USE_ENV = "1" HAVE_CURSES_WCHGAT = "1" HAVE_DB_H = "1" HAVE_DECL_RTLD_DEEPBIND = "0" HAVE_DECL_RTLD_GLOBAL = "1" HAVE_DECL_RTLD_LAZY = "1" HAVE_DECL_RTLD_LOCAL = "1" HAVE_DECL_RTLD_MEMBER = "0" HAVE_DECL_RTLD_NODELETE = "1" HAVE_DECL_RTLD_NOLOAD = "1" HAVE_DECL_RTLD_NOW = "1" HAVE_DECL_TZNAME = "0" HAVE_DEVICE_MACROS = "1" HAVE_DEV_PTC = "0" HAVE_DEV_PTMX = "0" HAVE_DIRECT_H = "0" HAVE_DIRENT_D_TYPE = "1" HAVE_DIRENT_H = "1" HAVE_DIRFD = "1" HAVE_DLFCN_H = "1" HAVE_DLOPEN = "1" HAVE_DUP = "1" HAVE_DUP2 = "1" HAVE_DUP3 = "0" HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH = "1" HAVE_DYNAMIC_LOADING = "1" HAVE_ENDIAN_H = "1" HAVE_EPOLL = "0" HAVE_EPOLL_CREATE1 = "0" HAVE_ERF = "1" HAVE_ERFC = "1" HAVE_ERRNO_H = "1" HAVE_EVENTFD = "0" HAVE_EXECV = "1" HAVE_EXPLICIT_BZERO = "0" HAVE_EXPLICIT_MEMSET = "0" HAVE_EXPM1 = "1" HAVE_FACCESSAT = "1" HAVE_FCHDIR = "1" HAVE_FCHMOD = "1" HAVE_FCHMODAT = "1" HAVE_FCHOWN = "1" HAVE_FCHOWNAT = "1" HAVE_FCNTL_H = "1" HAVE_FDATASYNC = "0" HAVE_FDOPENDIR = "1" HAVE_FDWALK = "0" HAVE_FEXECVE = "0" HAVE_FLOCK = "1" HAVE_FORK = "1" HAVE_FORK1 = "0" HAVE_FORKPTY = "1" HAVE_FPATHCONF = "1" HAVE_FSEEK64 = "0" HAVE_FSEEKO = "1" HAVE_FSTATAT = "1" HAVE_FSTATVFS = "1" HAVE_FSYNC = "1" HAVE_FTELL64 = "0" HAVE_FTELLO = "1" HAVE_FTIME = "1" HAVE_FTRUNCATE = "1" HAVE_FUTIMENS = "1" HAVE_FUTIMES = "1" HAVE_FUTIMESAT = "0" HAVE_GAI_STRERROR = "1" HAVE_GCC_ASM_FOR_MC68881 = "0" HAVE_GCC_ASM_FOR_X64 = "0" HAVE_GCC_ASM_FOR_X87 = "0" HAVE_GCC_UINT128_T = "1" HAVE_GDBM_DASH_NDBM_H = "0" HAVE_GDBM_H = "0" HAVE_GDBM_NDBM_H = "0" HAVE_GETADDRINFO = "1" HAVE_GETC_UNLOCKED = "1" HAVE_GETEGID = "1" HAVE_GETENTROPY = "0" HAVE_GETEUID = "1" HAVE_GETGID = "1" HAVE_GETGRGID = "1" HAVE_GETGRGID_R = "1" HAVE_GETGRNAM_R = "1" HAVE_GETGROUPLIST = "1" HAVE_GETGROUPS = "1" HAVE_GETHOSTBYADDR = "1" HAVE_GETHOSTBYNAME = "1" HAVE_GETHOSTBYNAME_R = "0" HAVE_GETHOSTBYNAME_R_3_ARG = "0" HAVE_GETHOSTBYNAME_R_5_ARG = "0" HAVE_GETHOSTBYNAME_R_6_ARG = "0" HAVE_GETHOSTNAME = "1" HAVE_GETITIMER = "1" HAVE_GETLOADAVG = "1" HAVE_GETLOGIN = "1" HAVE_GETNAMEINFO = "1" HAVE_GETPAGESIZE = "0" HAVE_GETPEERNAME = "1" HAVE_GETPGID = "1" HAVE_GETPGRP = "1" HAVE_GETPID = "1" HAVE_GETPPID = "1" HAVE_GETPRIORITY = "1" HAVE_GETPROTOBYNAME = "1" HAVE_GETPWENT = "1" HAVE_GETPWNAM_R = "1" HAVE_GETPWUID = "1" HAVE_GETPWUID_R = "1" HAVE_GETRANDOM = "0" HAVE_GETRANDOM_SYSCALL = "0" HAVE_GETRESGID = "0" HAVE_GETRESUID = "0" HAVE_GETRUSAGE = "1" HAVE_GETSERVBYNAME = "1" HAVE_GETSERVBYPORT = "1" HAVE_GETSID = "1" HAVE_GETSOCKNAME = "1" HAVE_GETSPENT = "0" HAVE_GETSPNAM = "0" HAVE_GETUID = "1" HAVE_GETWD = "1" HAVE_GLIBC_MEMMOVE_BUG = "0" HAVE_GRP_H = "1" HAVE_HSTRERROR = "1" HAVE_HTOLE64 = "0" HAVE_IEEEFP_H = "0" HAVE_IF_NAMEINDEX = "1" HAVE_INET_ATON = "1" HAVE_INET_NTOA = "1" HAVE_INET_PTON = "1" HAVE_INITGROUPS = "1" HAVE_INTTYPES_H = "1" HAVE_IO_H = "0" HAVE_IPA_PURE_CONST_BUG = "0" HAVE_KILL = "1" HAVE_KILLPG = "1" HAVE_KQUEUE = "1" HAVE_LANGINFO_H = "1" HAVE_LARGEFILE_SUPPORT = "0" HAVE_LCHFLAGS = "1" HAVE_LCHMOD = "1" HAVE_LCHOWN = "1" HAVE_LIBB2 = "0" HAVE_LIBDB = "0" HAVE_LIBDL = "1" HAVE_LIBDLD = "0" HAVE_LIBGDBM_COMPAT = "0" HAVE_LIBIEEE = "0" HAVE_LIBINTL_H = "0" HAVE_LIBNDBM = "0" HAVE_LIBREADLINE = "1" HAVE_LIBRESOLV = "0" HAVE_LIBSENDFILE = "0" HAVE_LIBSQLITE3 = "1" HAVE_LIBUTIL_H = "0" HAVE_LINK = "1" HAVE_LINKAT = "1" HAVE_LINUX_AUXVEC_H = "0" HAVE_LINUX_CAN_BCM_H = "0" HAVE_LINUX_CAN_H = "0" HAVE_LINUX_CAN_J1939_H = "0" HAVE_LINUX_CAN_RAW_FD_FRAMES = "0" HAVE_LINUX_CAN_RAW_H = "0" HAVE_LINUX_CAN_RAW_JOIN_FILTERS = "0" HAVE_LINUX_MEMFD_H = "0" HAVE_LINUX_NETLINK_H = "0" HAVE_LINUX_QRTR_H = "0" HAVE_LINUX_RANDOM_H = "0" HAVE_LINUX_SOUNDCARD_H = "0" HAVE_LINUX_TIPC_H = "0" HAVE_LINUX_VM_SOCKETS_H = "0" HAVE_LINUX_WAIT_H = "0" HAVE_LISTEN = "1" HAVE_LOCKF = "1" HAVE_LOG1P = "1" HAVE_LOG2 = "1" HAVE_LOGIN_TTY = "1" HAVE_LONG_DOUBLE = "1" HAVE_LSTAT = "1" HAVE_LUTIMES = "1" HAVE_LZMA_H = "0" HAVE_MADVISE = "1" HAVE_MAKEDEV = "1" HAVE_MBRTOWC = "1" HAVE_MEMFD_CREATE = "0" HAVE_MEMORY_H = "1" HAVE_MEMRCHR = "0" HAVE_MKDIRAT = "1" HAVE_MKFIFO = "1" HAVE_MKFIFOAT = "1" HAVE_MKNOD = "1" HAVE_MKNODAT = "1" HAVE_MKTIME = "1" HAVE_MMAP = "1" HAVE_MREMAP = "0" HAVE_NANOSLEEP = "1" HAVE_NCURSES_H = "0" HAVE_NDBM_H = "1" HAVE_NDIR_H = "0" HAVE_NETCAN_CAN_H = "0" HAVE_NETDB_H = "1" HAVE_NETINET_IN_H = "1" HAVE_NETPACKET_PACKET_H = "0" HAVE_NET_IF_H = "1" HAVE_NICE = "1" HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION = "0" HAVE_OPENAT = "1" HAVE_OPENDIR = "1" HAVE_OPENPTY = "1" HAVE_PATHCONF = "1" HAVE_PAUSE = "1" HAVE_PIPE = "1" HAVE_PIPE2 = "0" HAVE_PLOCK = "0" HAVE_POLL = "1" HAVE_POLL_H = "1" HAVE_POSIX_FADVISE = "0" HAVE_POSIX_FALLOCATE = "0" HAVE_POSIX_SPAWN = "1" HAVE_POSIX_SPAWNP = "1" HAVE_PREAD = "1" HAVE_PREADV = "1" HAVE_PREADV2 = "0" HAVE_PRLIMIT = "0" HAVE_PROCESS_H = "0" HAVE_PROTOTYPES = "1" HAVE_PTHREAD_CONDATTR_SETCLOCK = "0" HAVE_PTHREAD_DESTRUCTOR = "0" HAVE_PTHREAD_GETCPUCLOCKID = "0" HAVE_PTHREAD_H = "1" HAVE_PTHREAD_INIT = "0" HAVE_PTHREAD_KILL = "1" HAVE_PTHREAD_SIGMASK = "1" HAVE_PTHREAD_STUBS = "0" HAVE_PTY_H = "0" HAVE_PWRITE = "1" HAVE_PWRITEV = "1" HAVE_PWRITEV2 = "0" HAVE_READLINK = "1" HAVE_READLINKAT = "1" HAVE_READV = "1" HAVE_REALPATH = "1" HAVE_RECVFROM = "1" HAVE_RENAMEAT = "1" HAVE_RL_APPEND_HISTORY = "0" HAVE_RL_CATCH_SIGNAL = "0" HAVE_RL_COMPLETION_APPEND_CHARACTER = "0" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK = "1" HAVE_RL_COMPLETION_MATCHES = "1" HAVE_RL_COMPLETION_SUPPRESS_APPEND = "0" HAVE_RL_PRE_INPUT_HOOK = "1" HAVE_RL_RESIZE_TERMINAL = "0" HAVE_RPC_RPC_H = "1" HAVE_RTPSPAWN = "0" HAVE_SCHED_GET_PRIORITY_MAX = "1" HAVE_SCHED_H = "1" HAVE_SCHED_RR_GET_INTERVAL = "0" HAVE_SCHED_SETAFFINITY = "0" HAVE_SCHED_SETPARAM = "0" HAVE_SCHED_SETSCHEDULER = "0" HAVE_SEM_CLOCKWAIT = "0" HAVE_SEM_GETVALUE = "1" HAVE_SEM_OPEN = "1" HAVE_SEM_TIMEDWAIT = "0" HAVE_SEM_UNLINK = "1" HAVE_SENDFILE = "0" HAVE_SENDTO = "1" HAVE_SETEGID = "1" HAVE_SETEUID = "1" HAVE_SETGID = "1" HAVE_SETGROUPS = "1" HAVE_SETHOSTNAME = "1" HAVE_SETITIMER = "1" HAVE_SETJMP_H = "1" HAVE_SETLOCALE = "1" HAVE_SETPGID = "0" HAVE_SETPGRP = "0" HAVE_SETPRIORITY = "1" HAVE_SETREGID = "0" HAVE_SETRESGID = "0" HAVE_SETRESUID = "0" HAVE_SETREUID = "0" HAVE_SETSID = "0" HAVE_SETSOCKOPT = "1" HAVE_SETUID = "0" HAVE_SETVBUF = "1" HAVE_SHADOW_H = "0" HAVE_SHM_OPEN = "1" HAVE_SHM_UNLINK = "1" HAVE_SHUTDOWN = "1" HAVE_SIGACTION = "1" HAVE_SIGALTSTACK = "1" HAVE_SIGFILLSET = "1" HAVE_SIGINFO_T_SI_BAND = "1" HAVE_SIGINTERRUPT = "1" HAVE_SIGNAL_H = "1" HAVE_SIGPENDING = "1" HAVE_SIGRELSE = "1" HAVE_SIGTIMEDWAIT = "0" HAVE_SIGWAIT = "1" HAVE_SIGWAITINFO = "0" HAVE_SNPRINTF = "1" HAVE_SOCKADDR_ALG = "0" HAVE_SOCKADDR_SA_LEN = "1" HAVE_SOCKADDR_STORAGE = "1" HAVE_SOCKET = "1" HAVE_SOCKETPAIR = "1" HAVE_SPAWN_H = "1" HAVE_SPLICE = "0" HAVE_SSIZE_T = "1" HAVE_STATVFS = "1" HAVE_STAT_TV_NSEC = "0" HAVE_STAT_TV_NSEC2 = "1" HAVE_STDARG_PROTOTYPES = "1" HAVE_STDINT_H = "1" HAVE_STDLIB_H = "1" HAVE_STD_ATOMIC = "1" HAVE_STRFTIME = "1" HAVE_STRINGS_H = "1" HAVE_STRING_H = "1" HAVE_STRLCPY = "1" HAVE_STROPTS_H = "0" HAVE_STRSIGNAL = "1" HAVE_STRUCT_PASSWD_PW_GECOS = "1" HAVE_STRUCT_PASSWD_PW_PASSWD = "1" HAVE_STRUCT_STAT_ST_BIRTHTIME = "1" HAVE_STRUCT_STAT_ST_BLKSIZE = "1" HAVE_STRUCT_STAT_ST_BLOCKS = "1" HAVE_STRUCT_STAT_ST_FLAGS = "1" HAVE_STRUCT_STAT_ST_GEN = "1" HAVE_STRUCT_STAT_ST_RDEV = "1" HAVE_STRUCT_TM_TM_ZONE = "1" HAVE_SYMLINK = "1" HAVE_SYMLINKAT = "1" HAVE_SYNC = "1" HAVE_SYSCONF = "1" HAVE_SYSEXITS_H = "1" HAVE_SYSLOG_H = "1" HAVE_SYSTEM = "1" HAVE_SYS_AUDIOIO_H = "0" HAVE_SYS_AUXV_H = "0" HAVE_SYS_BSDTTY_H = "0" HAVE_SYS_DEVPOLL_H = "0" HAVE_SYS_DIR_H = "0" HAVE_SYS_ENDIAN_H = "0" HAVE_SYS_EPOLL_H = "0" HAVE_SYS_EVENTFD_H = "0" HAVE_SYS_EVENT_H = "1" HAVE_SYS_FILE_H = "1" HAVE_SYS_IOCTL_H = "1" HAVE_SYS_KERN_CONTROL_H = "0" HAVE_SYS_LOADAVG_H = "0" HAVE_SYS_LOCK_H = "1" HAVE_SYS_MEMFD_H = "0" HAVE_SYS_MKDEV_H = "0" HAVE_SYS_MMAN_H = "1" HAVE_SYS_MODEM_H = "0" HAVE_SYS_NDIR_H = "0" HAVE_SYS_PARAM_H = "1" HAVE_SYS_POLL_H = "1" HAVE_SYS_RANDOM_H = "0" HAVE_SYS_RESOURCE_H = "1" HAVE_SYS_SELECT_H = "1" HAVE_SYS_SENDFILE_H = "0" HAVE_SYS_SOCKET_H = "1" HAVE_SYS_SOUNDCARD_H = "0" HAVE_SYS_STATVFS_H = "1" HAVE_SYS_STAT_H = "1" HAVE_SYS_SYSCALL_H = "1" HAVE_SYS_SYSMACROS_H = "0" HAVE_SYS_SYS_DOMAIN_H = "0" HAVE_SYS_TERMIO_H = "0" HAVE_SYS_TIMES_H = "1" HAVE_SYS_TIME_H = "1" HAVE_SYS_TYPES_H = "1" HAVE_SYS_UIO_H = "1" HAVE_SYS_UN_H = "1" HAVE_SYS_UTSNAME_H = "1" HAVE_SYS_WAIT_H = "1" HAVE_SYS_XATTR_H = "1" HAVE_TCGETPGRP = "1" HAVE_TCSETPGRP = "1" HAVE_TEMPNAM = "1" HAVE_TERMIOS_H = "1" HAVE_TERM_H = "0" HAVE_TIMEGM = "1" HAVE_TIMES = "1" HAVE_TMPFILE = "1" HAVE_TMPNAM = "1" HAVE_TMPNAM_R = "0" HAVE_TM_ZONE = "1" HAVE_TRUNCATE = "1" HAVE_TTYNAME = "1" HAVE_TZNAME = "0" HAVE_UMASK = "1" HAVE_UNAME = "1" HAVE_UNISTD_H = "1" HAVE_UNLINKAT = "1" HAVE_USABLE_WCHAR_T = "0" HAVE_UTIL_H = "1" HAVE_UTIMENSAT = "1" HAVE_UTIMES = "1" HAVE_UTIME_H = "1" HAVE_UTMP_H = "0" HAVE_UUID_CREATE = "0" HAVE_UUID_ENC_BE = "0" HAVE_UUID_GENERATE_TIME_SAFE = "0" HAVE_UUID_H = "0" HAVE_UUID_UUID_H = "1" HAVE_VFORK = "1" HAVE_WAIT = "1" HAVE_WAIT3 = "1" HAVE_WAIT4 = "1" HAVE_WAITID = "1" HAVE_WAITPID = "1" HAVE_WCHAR_H = "1" HAVE_WCSCOLL = "1" HAVE_WCSFTIME = "1" HAVE_WCSXFRM = "1" HAVE_WMEMCMP = "1" HAVE_WORKING_TZSET = "0" HAVE_WRITEV = "1" HAVE_ZLIB_COPY = "1" HAVE_ZLIB_H = "1" HAVE__GETPTY = "0" HOSTRUNNER = "" HOST_GNU_TYPE = "arm-apple-darwin" INCLDIRSTOMAKE = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include/python3.11 /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include/python3.11" INCLUDEDIR = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include" INCLUDEPY = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/include/python3.11" INSTALL = "/usr/bin/install -c" INSTALL_DATA = "/usr/bin/install -c -m 644" INSTALL_PROGRAM = "/usr/bin/install -c" INSTALL_SCRIPT = "/usr/bin/install -c" INSTALL_SHARED = "/usr/bin/install -c -m 755" INSTSONAME = "libpython3.11.dylib" IO_H = "Modules/_io/_iomodule.h" IO_OBJS = "\" LDCXXSHARED = "clang -v -undefined error -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -L. -lpython3.11 -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" LDFLAGS = " -miphoneos-version-min=14.0 -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" LDFLAGS_NODIST = "" LDLIBRARY = "libpython3.11.dylib" LDLIBRARYDIR = "" LDSHARED = "clang -v -undefined error -dynamiclib -lz -L. -lpython3.11 -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib -miphoneos-version-min=14.0 -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" LDVERSION = "3.11" LIBC = "" LIBDEST = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11" LIBDIR = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib" LIBEXPAT_A = "Modules/expat/libexpat.a" LIBEXPAT_CFLAGS = "-I./Modules/expat -Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" LIBEXPAT_HEADERS = "\" LIBEXPAT_OBJS = "\" LIBFFI_INCLUDEDIR = "./Frameworks_iphoneos/include/ffi/" LIBM = "" LIBMPDEC_A = "Modules/_decimal/libmpdec/libmpdec.a" LIBMPDEC_CFLAGS = "-I./Modules/_decimal/libmpdec -DUNIVERSAL=1 -Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" LIBMPDEC_HEADERS = "\" LIBMPDEC_OBJS = "\" LIBOBJDIR = "Python/" LIBOBJS = "" LIBPC = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/pkgconfig" LIBPL = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11/config-3.11-darwin" LIBPYTHON = "" LIBRARY = "libpython3.11.a" LIBRARY_DEPS = "libpython3.11.a libpython3.11.dylib" LIBRARY_OBJS = "\" LIBRARY_OBJS_OMIT_FROZEN = "\" LIBS = "-ldl -lutil -lutil -framework CoreFoundation" LIBSUBDIRS = "asyncio \" LINKCC = "clang" LINKFORSHARED = "-Wl,-stack_size,1000000 -framework CoreFoundation" LINK_PYTHON_DEPS = "libpython3.11.a libpython3.11.dylib" LINK_PYTHON_OBJS = "-L. -lpython3.11" LIPO_32BIT_FLAGS = "" LIPO_INTEL64_FLAGS = "" LLVM_PROF_ERR = "no" LLVM_PROF_FILE = "LLVM_PROFILE_FILE="code-%p.profclangr"" LLVM_PROF_MERGER = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin//llvm-profdata merge -output=code.profclangd *.profclangr" LN = "ln" LOCALMODLIBS = "-lz -lz" MACHDEP = "darwin" MACHDEP_OBJS = "" MACHDESTLIB = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11" MACOSX_DEPLOYMENT_TARGET = "13.4" MAINCC = "clang" MAJOR_IN_MKDEV = "0" MAJOR_IN_SYSMACROS = "0" MAKESETUP = "./Modules/makesetup" MANDIR = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/share/man" MKDIR_P = "./install-sh -c -d" MODBUILT_NAMES = "atexit faulthandler posix _signal _tracemalloc _codecs _collections errno _io itertools _sre _thread time _weakref _abc _functools _locale _operator _stat _symtable pwd _asyncio _bisect _contextvars _csv _datetime _heapq _json _pickle _random _socket _statistics _struct _zoneinfo array audioop binascii cmath math mmap select _elementtree pyexpat _blake2 _md5 _sha1 _sha256 _sha512 _sha3 _codecs_cn _codecs_hk _codecs_iso2022 _codecs_jp _codecs_kr _codecs_tw _multibytecodec unicodedata _posixsubprocess fcntl grp resource termios zlib xxsubtype" MODDISABLED_NAMES = "" MODLIBS = "-lz -lz" MODOBJS = "Modules/atexitmodule.o Modules/faulthandler.o Modules/posixmodule.o Modules/signalmodule.o Modules/_tracemalloc.o Modules/_codecsmodule.o Modules/_collectionsmodule.o Modules/errnomodule.o Modules/_io/_iomodule.o Modules/_io/iobase.o Modules/_io/fileio.o Modules/_io/bytesio.o Modules/_io/bufferedio.o Modules/_io/textio.o Modules/_io/stringio.o Modules/itertoolsmodule.o Modules/_sre/sre.o Modules/_threadmodule.o Modules/timemodule.o Modules/_weakref.o Modules/_abc.o Modules/_functoolsmodule.o Modules/_localemodule.o Modules/_operator.o Modules/_stat.o Modules/symtablemodule.o Modules/pwdmodule.o Modules/_asynciomodule.o Modules/_bisectmodule.o Modules/_contextvarsmodule.o Modules/_csv.o Modules/_datetimemodule.o Modules/_heapqmodule.o Modules/_json.o Modules/_pickle.o Modules/_randommodule.o Modules/socketmodule.o Modules/_statisticsmodule.o Modules/_struct.o Modules/_zoneinfo.o Modules/arraymodule.o Modules/audioop.o Modules/binascii.o Modules/cmathmodule.o Modules/mathmodule.o Modules/mmapmodule.o Modules/selectmodule.o Modules/_elementtree.o Modules/expat/xmlparse.o Modules/expat/xmlrole.o Modules/expat/xmltok.o Modules/pyexpat.o Modules/_blake2/blake2module.o Modules/_blake2/blake2b_impl.o Modules/_blake2/blake2s_impl.o Modules/md5module.o Modules/sha1module.o Modules/sha256module.o Modules/sha512module.o Modules/_sha3/sha3module.o Modules/cjkcodecs/_codecs_cn.o Modules/cjkcodecs/_codecs_hk.o Modules/cjkcodecs/_codecs_iso2022.o Modules/cjkcodecs/_codecs_jp.o Modules/cjkcodecs/_codecs_kr.o Modules/cjkcodecs/_codecs_tw.o Modules/cjkcodecs/multibytecodec.o Modules/unicodedata.o Modules/_posixsubprocess.o Modules/fcntlmodule.o Modules/grpmodule.o Modules/resource.o Modules/termios.o Modules/zlibmodule.o Modules/xxsubtype.o" MODSHARED_NAMES = "" MODULE_ARRAY_LDFLAGS = "" MODULE_ARRAY_STATE = "yes" MODULE_ATEXIT_LDFLAGS = "" MODULE_AUDIOOP_LDFLAGS = "" MODULE_AUDIOOP_STATE = "yes" MODULE_BINASCII_CFLAGS = "-DUSE_ZLIB_CRC32" MODULE_BINASCII_LDFLAGS = "-lz" MODULE_BINASCII_STATE = "yes" MODULE_CMATH_DEPS = "./Modules/_math.h" MODULE_CMATH_LDFLAGS = "" MODULE_CMATH_STATE = "yes" MODULE_ERRNO_LDFLAGS = "" MODULE_FAULTHANDLER_LDFLAGS = "" MODULE_FCNTL_LDFLAGS = "" MODULE_FCNTL_STATE = "yes" MODULE_GRP_LDFLAGS = "" MODULE_GRP_STATE = "yes" MODULE_ITERTOOLS_LDFLAGS = "" MODULE_MATH_DEPS = "./Modules/_math.h" MODULE_MATH_LDFLAGS = "" MODULE_MATH_STATE = "yes" MODULE_MMAP_LDFLAGS = "" MODULE_MMAP_STATE = "yes" MODULE_NIS_CFLAGS = "" MODULE_NIS_LDFLAGS = "" MODULE_NIS_STATE = "yes" MODULE_OBJS = "\" MODULE_OSSAUDIODEV_STATE = "n/a" MODULE_POSIX_LDFLAGS = "" MODULE_PWD_LDFLAGS = "" MODULE_PWD_STATE = "yes" MODULE_PYEXPAT_CFLAGS = "-I./Modules/expat" MODULE_PYEXPAT_DEPS = "\ Modules/expat/libexpat.a" MODULE_PYEXPAT_LDFLAGS = "-lm Modules/expat/libexpat.a" MODULE_PYEXPAT_STATE = "yes" MODULE_RESOURCE_LDFLAGS = "" MODULE_RESOURCE_STATE = "yes" MODULE_SELECT_LDFLAGS = "" MODULE_SELECT_STATE = "yes" MODULE_SPWD_STATE = "n/a" MODULE_SYSLOG_STATE = "yes" MODULE_TERMIOS_LDFLAGS = "" MODULE_TERMIOS_STATE = "yes" MODULE_TIME_LDFLAGS = "" MODULE_TIME_STATE = "yes" MODULE_UNICODEDATA_DEPS = "./Modules/unicodedata_db.h ./Modules/unicodename_db.h" MODULE_UNICODEDATA_LDFLAGS = "" MODULE_UNICODEDATA_STATE = "yes" MODULE_XXLIMITED_35_STATE = "yes" MODULE_XXLIMITED_STATE = "yes" MODULE_XXSUBTYPE_LDFLAGS = "" MODULE_ZLIB_CFLAGS = "" MODULE_ZLIB_LDFLAGS = "-lz" MODULE_ZLIB_STATE = "yes" MODULE__ABC_LDFLAGS = "" MODULE__ASYNCIO_LDFLAGS = "" MODULE__ASYNCIO_STATE = "yes" MODULE__BISECT_LDFLAGS = "" MODULE__BISECT_STATE = "yes" MODULE__BLAKE2_CFLAGS = "" MODULE__BLAKE2_DEPS = "./Modules/_blake2/impl/blake2-config.h ./Modules/_blake2/impl/blake2-impl.h ./Modules/_blake2/impl/blake2.h ./Modules/_blake2/impl/blake2b-load-sse2.h ./Modules/_blake2/impl/blake2b-load-sse41.h ./Modules/_blake2/impl/blake2b-ref.c ./Modules/_blake2/impl/blake2b-round.h ./Modules/_blake2/impl/blake2b.c ./Modules/_blake2/impl/blake2s-load-sse2.h ./Modules/_blake2/impl/blake2s-load-sse41.h ./Modules/_blake2/impl/blake2s-load-xop.h ./Modules/_blake2/impl/blake2s-ref.c ./Modules/_blake2/impl/blake2s-round.h ./Modules/_blake2/impl/blake2s.c ./Modules/_blake2/blake2module.h ./Modules/hashlib.h" MODULE__BLAKE2_LDFLAGS = "" MODULE__BLAKE2_STATE = "yes" MODULE__BZ2_CFLAGS = "" MODULE__BZ2_LDFLAGS = "-lbz2" MODULE__BZ2_STATE = "yes" MODULE__CODECS_CN_LDFLAGS = "" MODULE__CODECS_CN_STATE = "yes" MODULE__CODECS_HK_LDFLAGS = "" MODULE__CODECS_HK_STATE = "yes" MODULE__CODECS_ISO2022_LDFLAGS = "" MODULE__CODECS_ISO2022_STATE = "yes" MODULE__CODECS_JP_LDFLAGS = "" MODULE__CODECS_JP_STATE = "yes" MODULE__CODECS_KR_LDFLAGS = "" MODULE__CODECS_KR_STATE = "yes" MODULE__CODECS_LDFLAGS = "" MODULE__CODECS_TW_LDFLAGS = "" MODULE__CODECS_TW_STATE = "yes" MODULE__COLLECTIONS_LDFLAGS = "" MODULE__CONTEXTVARS_LDFLAGS = "" MODULE__CONTEXTVARS_STATE = "yes" MODULE__CRYPT_CFLAGS = "" MODULE__CRYPT_LDFLAGS = "" MODULE__CRYPT_STATE = "yes" MODULE__CSV_LDFLAGS = "" MODULE__CSV_STATE = "yes" MODULE__CTYPES_DEPS = "./Modules/_ctypes/ctypes.h" MODULE__CTYPES_TEST_LDFLAGS = "-lm" MODULE__CTYPES_TEST_STATE = "yes" MODULE__DATETIME_LDFLAGS = "" MODULE__DATETIME_STATE = "yes" MODULE__DECIMAL_CFLAGS = "-I./Modules/_decimal/libmpdec -DUNIVERSAL=1" MODULE__DECIMAL_DEPS = "./Modules/_decimal/docstrings.h \ Modules/_decimal/libmpdec/libmpdec.a" MODULE__DECIMAL_LDFLAGS = "-lm Modules/_decimal/libmpdec/libmpdec.a" MODULE__DECIMAL_STATE = "yes" MODULE__ELEMENTTREE_CFLAGS = "-I./Modules/expat" MODULE__ELEMENTTREE_DEPS = "./Modules/pyexpat.c \ Modules/expat/libexpat.a" MODULE__ELEMENTTREE_LDFLAGS = "" MODULE__ELEMENTTREE_STATE = "yes" MODULE__FUNCTOOLS_LDFLAGS = "" MODULE__GDBM_STATE = "missing" MODULE__HASHLIB_CFLAGS = "-I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" MODULE__HASHLIB_DEPS = "./Modules/hashlib.h" MODULE__HASHLIB_LDFLAGS = "-L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib -lcrypto" MODULE__HASHLIB_STATE = "yes" MODULE__HEAPQ_LDFLAGS = "" MODULE__HEAPQ_STATE = "yes" MODULE__IO_CFLAGS = "-I./Modules/_io" MODULE__IO_DEPS = "./Modules/_io/_iomodule.h" MODULE__IO_LDFLAGS = "" MODULE__IO_STATE = "yes" MODULE__JSON_STATE = "yes" MODULE__LOCALE_LDFLAGS = "" MODULE__LSPROF_STATE = "yes" MODULE__LZMA_CFLAGS = "-I/usr/local/include" MODULE__LZMA_LDFLAGS = "-L/usr/local/lib -llzma" MODULE__LZMA_STATE = "yes" MODULE__MD5_DEPS = "./Modules/hashlib.h" MODULE__MD5_LDFLAGS = "" MODULE__MD5_STATE = "yes" MODULE__MULTIBYTECODEC_LDFLAGS = "" MODULE__MULTIBYTECODEC_STATE = "yes" MODULE__MULTIPROCESSING_CFLAGS = "-I./Modules/_multiprocessing" MODULE__MULTIPROCESSING_STATE = "yes" MODULE__OPCODE_STATE = "yes" MODULE__OPERATOR_LDFLAGS = "" MODULE__PICKLE_LDFLAGS = "" MODULE__PICKLE_STATE = "yes" MODULE__POSIXSHMEM_CFLAGS = "-I./Modules/_multiprocessing" MODULE__POSIXSHMEM_LDFLAGS = "" MODULE__POSIXSHMEM_STATE = "yes" MODULE__POSIXSUBPROCESS_LDFLAGS = "" MODULE__POSIXSUBPROCESS_STATE = "yes" MODULE__QUEUE_STATE = "yes" MODULE__RANDOM_STATE = "yes" MODULE__SCPROXY_LDFLAGS = "-framework SystemConfiguration -framework CoreFoundation" MODULE__SCPROXY_STATE = "yes" MODULE__SHA1_DEPS = "./Modules/hashlib.h" MODULE__SHA1_LDFLAGS = "" MODULE__SHA1_STATE = "yes" MODULE__SHA256_DEPS = "./Modules/hashlib.h" MODULE__SHA256_STATE = "yes" MODULE__SHA3_DEPS = "./Modules/_sha3/sha3.c ./Modules/_sha3/sha3.h ./Modules/hashlib.h" MODULE__SHA3_LDFLAGS = "" MODULE__SHA3_STATE = "yes" MODULE__SHA512_DEPS = "./Modules/hashlib.h" MODULE__SHA512_STATE = "yes" MODULE__SIGNAL_LDFLAGS = "" MODULE__SOCKET_DEPS = "./Modules/socketmodule.h ./Modules/addrinfo.h ./Modules/getaddrinfo.c ./Modules/getnameinfo.c" MODULE__SOCKET_LDFLAGS = "" MODULE__SOCKET_STATE = "yes" MODULE__SQLITE3_CFLAGS = "-I./Modules/_sqlite" MODULE__SQLITE3_DEPS = "./Modules/_sqlite/connection.h ./Modules/_sqlite/cursor.h ./Modules/_sqlite/microprotocols.h ./Modules/_sqlite/module.h ./Modules/_sqlite/prepare_protocol.h ./Modules/_sqlite/row.h ./Modules/_sqlite/util.h" MODULE__SQLITE3_LDFLAGS = "-lsqlite3" MODULE__SQLITE3_STATE = "yes" MODULE__SRE_LDFLAGS = "" MODULE__SSL_CFLAGS = "-I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" MODULE__SSL_DEPS = "./Modules/_ssl.h ./Modules/_ssl/cert.c ./Modules/_ssl/debughelpers.c ./Modules/_ssl/misc.c ./Modules/_ssl_data.h ./Modules/_ssl_data_111.h ./Modules/_ssl_data_300.h ./Modules/socketmodule.h" MODULE__SSL_LDFLAGS = "-L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib -lssl -lcrypto" MODULE__SSL_STATE = "yes" MODULE__STATISTICS_LDFLAGS = "" MODULE__STATISTICS_STATE = "yes" MODULE__STAT_LDFLAGS = "" MODULE__STRUCT_LDFLAGS = "" MODULE__STRUCT_STATE = "yes" MODULE__SYMTABLE_LDFLAGS = "" MODULE__TESTBUFFER_STATE = "yes" MODULE__TESTCAPI_DEPS = "./Modules/testcapi_long.h" MODULE__TESTCAPI_STATE = "yes" MODULE__TESTIMPORTMULTIPLE_STATE = "yes" MODULE__TESTINTERNALCAPI_STATE = "yes" MODULE__TESTMULTIPHASE_STATE = "yes" MODULE__THREAD_LDFLAGS = "" MODULE__TKINTER_STATE = "missing" MODULE__TRACEMALLOC_LDFLAGS = "" MODULE__TYPING_STATE = "yes" MODULE__UUID_CFLAGS = "" MODULE__UUID_LDFLAGS = "" MODULE__UUID_STATE = "yes" MODULE__WEAKREF_LDFLAGS = "" MODULE__XXSUBINTERPRETERS_STATE = "yes" MODULE__XXTESTFUZZ_STATE = "yes" MODULE__ZONEINFO_LDFLAGS = "" MODULE__ZONEINFO_STATE = "yes" MULTIARCH = "darwin" MULTIARCH_CPPFLAGS = "-DMULTIARCH=\"darwin\"" MVWDELCH_IS_EXPRESSION = "1" NO_AS_NEEDED = "-Wl,--no-as-needed" OBJECT_OBJS = "\" OPENSSL_INCLUDES = "-I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" OPENSSL_LDFLAGS = "-L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" OPENSSL_LIBS = "-lssl -lcrypto" OPENSSL_RPATH = "" OPT = "-DNDEBUG -O3 -Wall" OTHER_LIBTOOL_OPT = "" PACKAGE_BUGREPORT = "0" PACKAGE_NAME = "0" PACKAGE_STRING = "0" PACKAGE_TARNAME = "0" PACKAGE_URL = "0" PACKAGE_VERSION = "0" PARSER_HEADERS = "\" PARSER_OBJS = "\ \ Parser/myreadline.o Parser/tokenizer.o" PEGEN_HEADERS = "\" PEGEN_OBJS = "\" PGO_PROF_GEN_FLAG = "-fprofile-instr-generate" PGO_PROF_USE_FLAG = "-fprofile-instr-use=code.profclangd" PLATLIBDIR = "lib" POBJS = "\" POSIX_SEMAPHORES_NOT_ENABLED = "0" PROFILE_TASK = "-m test --pgo --timeout=1200" PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT = "0" PTHREAD_SYSTEM_SCHED_SUPPORTED = "0" PURIFY = "" PY3LIBRARY = "" PYLONG_BITS_IN_DIGIT = "0" PYTHON = "python" PYTHONFRAMEWORK = "" PYTHONFRAMEWORKDIR = "no-framework" PYTHONFRAMEWORKINSTALLDIR = "" PYTHONFRAMEWORKPREFIX = "" PYTHONPATH = "" PYTHON_FOR_BUILD = "_PYTHON_PROJECT_BASE=/Users/holzschu/src/Xcode_iPad/a-Shell/cpython _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/`cat pybuilddir.txt`:)./Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata__darwin_darwin /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11" PYTHON_FOR_BUILD_DEPS = "" PYTHON_FOR_FREEZE = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11" PYTHON_FOR_REGEN = "" PYTHON_HEADERS = "\" PYTHON_OBJS = "\" PY_BUILTIN_HASHLIB_HASHES = ""md5,sha1,sha256,sha512,sha3,blake2"" PY_BUILTIN_MODULE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -DPy_BUILD_CORE_BUILTIN" PY_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -miphoneos-version-min=14.0 -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" PY_CFLAGS_NODIST = "-std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal" PY_COERCE_C_LOCALE = "1" PY_CORE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -miphoneos-version-min=14.0 -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -miphoneos-version-min=14.0 -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -DPy_BUILD_CORE" PY_CORE_LDFLAGS = " -miphoneos-version-min=14.0 -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" PY_CPPFLAGS = "-I. -I./Include -miphoneos-version-min=14.0 -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" PY_ENABLE_SHARED = "1" PY_FORMAT_SIZE_T = ""z"" PY_LDFLAGS = " -miphoneos-version-min=14.0 -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" PY_LDFLAGS_NODIST = "" PY_LDFLAGS_NOLTO = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" PY_SQLITE_ENABLE_LOAD_EXTENSION = "0" PY_SQLITE_HAVE_SERIALIZE = "1" PY_SSL_DEFAULT_CIPHERS = "1" PY_SSL_DEFAULT_CIPHER_STRING = "0" PY_STDMODULE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" PY_SUPPORT_TIER = "0" Py_DEBUG = "0" Py_ENABLE_SHARED = "1" Py_HASH_ALGORITHM = "0" Py_STATS = "0" Py_TRACE_REFS = "0" QUICKTESTOPTS = "-x test_subprocess test_io test_lib2to3 \" READELF = "" RESSRCDIR = "Mac/Resources/framework" RETSIGTYPE = "void" RUNSHARED = "" SCRIPTDIR = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib" SETPGRP_HAVE_ARG = "0" SHELL = "/bin/sh" SHLIBS = "-ldl -lutil -lutil -framework CoreFoundation" SHLIB_SUFFIX = ".so" SIGNED_RIGHT_SHIFT_ZERO_FILLS = "0" SITEPATH = "" SIZEOF_DOUBLE = "8" SIZEOF_FLOAT = "4" SIZEOF_FPOS_T = "8" SIZEOF_INT = "4" SIZEOF_LONG = "8" SIZEOF_LONG_DOUBLE = "8" SIZEOF_LONG_LONG = "8" SIZEOF_OFF_T = "8" SIZEOF_PID_T = "4" SIZEOF_PTHREAD_KEY_T = "8" SIZEOF_PTHREAD_T = "8" SIZEOF_SHORT = "2" SIZEOF_SIZE_T = "8" SIZEOF_TIME_T = "8" SIZEOF_UINTPTR_T = "8" SIZEOF_VOID_P = "8" SIZEOF_WCHAR_T = "4" SIZEOF__BOOL = "1" SOABI = "cpython-311-darwin" SRCDIRS = "Modules Modules/_blake2 Modules/_ctypes Modules/_decimal Modules/_decimal/libmpdec Modules/_io Modules/_multiprocessing Modules/_sha3 Modules/_sqlite Modules/_sre Modules/_xxtestfuzz Modules/cjkcodecs Modules/expat Objects Parser Programs Python Python/frozen_modules Python/deepfreeze" SRC_GDB_HOOKS = "./Tools/gdb/libpython.py" STATIC_LIBPYTHON = "1" STDC_HEADERS = "1" STRICT_SYSV_CURSES = "/* Don't use ncurses extensions */" STRIPFLAG = "-s" SUBDIRS = "" SUBDIRSTOO = "Include Lib Misc" SYSLIBS = "" SYS_SELECT_WITH_SYS_TIME = "1" TESTOPTS = "" TESTPATH = "" TESTPYTHON = "_PYTHON_PROJECT_BASE=/Users/holzschu/src/Xcode_iPad/a-Shell/cpython _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/`cat pybuilddir.txt`:)./Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata__darwin_darwin /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11" TESTPYTHONOPTS = "" TESTRUNNER = "_PYTHON_PROJECT_BASE=/Users/holzschu/src/Xcode_iPad/a-Shell/cpython _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/`cat pybuilddir.txt`:)./Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata__darwin_darwin /Users/holzschu/src/Xcode_iPad/a-Shell/cpython/python3.11 ./Tools/scripts/run_tests.py" TESTSUBDIRS = "ctypes/test \" TESTTIMEOUT = "1200" TEST_MODULES = "yes" THREAD_STACK_SIZE = "0x1000000" TIMEMODULE_LIB = "0" TIME_WITH_SYS_TIME = "1" TM_IN_SYS_TIME = "0" TZPATH = "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" UNICODE_DEPS = "\" UNIVERSALSDK = "" UPDATE_FILE = "./Tools/scripts/update_file.py" USE_COMPUTED_GOTOS = "0" VERSION = "3.11" WASM_ASSETS_DIR = "./Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library" WASM_STDLIB = "./Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/lib/python3.11/os.py" WHEEL_PKG_DIR = "" WINDOW_HAS_FLAGS = "1" WITH_DECIMAL_CONTEXTVAR = "1" WITH_DOC_STRINGS = "1" WITH_DTRACE = "0" WITH_DYLD = "1" WITH_EDITLINE = "0" WITH_FREELISTS = "1" WITH_LIBINTL = "0" WITH_NEXT_FRAMEWORK = "0" WITH_PYMALLOC = "1" WITH_VALGRIND = "0" X87_DOUBLE_ROUNDING = "0" XMLLIBSUBDIRS = "xml xml/dom xml/etree xml/parsers xml/sax" _OSX_SUPPORT_INITIAL_BLDSHARED = "clang -v -undefined error -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -L. -lpython3.11 -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" _OSX_SUPPORT_INITIAL_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" _OSX_SUPPORT_INITIAL_CPPFLAGS = "-I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" _OSX_SUPPORT_INITIAL_LDFLAGS = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" _OSX_SUPPORT_INITIAL_LDSHARED = "clang -v -undefined error -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -L. -lpython3.11 -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" _OSX_SUPPORT_INITIAL_PY_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" _OSX_SUPPORT_INITIAL_PY_CORE_CFLAGS = "-Wsign-compare -Wunreachable-code -DNDEBUG -O3 -Wall -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include -DPy_BUILD_CORE" _OSX_SUPPORT_INITIAL_PY_CORE_LDFLAGS = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" _OSX_SUPPORT_INITIAL_PY_CPPFLAGS = "-I. -I./Include -arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -I/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/include" _OSX_SUPPORT_INITIAL_PY_LDFLAGS = "-arch arm64 -miphoneos-version-min=14.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk -lz -F/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos -framework ios_system -L/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Frameworks_iphoneos/lib" abiflags = "" abs_builddir = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython" abs_srcdir = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython" base = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library" datarootdir = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library/share" exec_prefix = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library" installed_base = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library" installed_platbase = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library" platbase = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library" platlibdir = "lib" prefix = "/Users/holzschu/src/Xcode_iPad/a-Shell/cpython/Library" projectbase = "/private/var/mobile/Containers/Data/Application/15CC78FF-42FD-429B-8492-ECAD5665F737/Documents" py_version = "3.11.0" py_version_nodot = "311" py_version_nodot_plat = "" py_version_short = "3.11" srcdir = "/private/var/containers/Bundle/Application/E7065B62-29FB-465A-A6BC-8FA675DD351A/a-Shell.app/Library/lib/python3.11/config-3.11-darwin" userbase = "/var/mobile/Containers/Data/Application/15CC78FF-42FD-429B-8492-ECAD5665F737/Library" ```
holzschu commented 9 months ago

Update: it builds the extension, but the command line is even scarier than usual:

export PREFIX=...
export OSX_SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
export IOS_SDKROOT=$(xcrun --sdk iphoneos --show-sdk-path)
env SDKROOT="$OSX_SDKROOT" \
    PYO3_CROSS_LIB_DIR="$PREFIX/build/lib.darwin-arm64-3.11/" \
    CARGO_BUILD_TARGET="aarch64-apple-ios" \
    CARGO_TARGET_AARCH64_APPLE_IOS_RUSTFLAGS="-C link-arg=-isysroot -C link-arg=$IOS_SDKROOT -C link-arg=-arch -C link-arg=arm64 -C link-arg=-miphoneos-version-min=14.0 -C link-arg=-L -C link-arg=$PREFIX/build/lib.darwin-arm64-3.11/ -C link-arg=-lpython3.11" \
    $PREFIX/Library/bin/maturin build

I'm not sure if there's anything I can do to make it shorter. I'll check that the extension can be loaded and works, then I'll make the PR.

messense commented 9 months ago

Where can I download a precompiled iOS Python?

messense commented 9 months ago

I find the wheel tags for iOS is a bit strange. Maybe cp311-cp311-macosx_11_0_iphone15,2 should be normalized to cp311-cp311-macosx_11_0_iphone15_2 or cp311-cp311-iphone_15_2?

$ python3 -m pip debug --verbose
pip version: pip 23.1.1 from /private/var/containers/Bundle/Application/4FD43C4F-DF0E-4BF4-82F1-376AE6CFE10D/a-Shell.app/Library/lib/python3.11/site-packages/pip (python 3.11)
sys.version: 3.11.0 (heads/3.11-dirty:2af28c9018, Apr 23 2023, 19:57:14) [Clang 14.0.3 (clang-1403.0.22.14.1)]
sys.executable: python3
sys.getdefaultencoding: utf-8
sys.getfilesystemencoding: utf-8
locale.getpreferredencoding: UTF-8
sys.platform: darwin
sys.implementation:
  name: cpython
'cert' config value: global
REQUESTS_CA_BUNDLE: None
CURL_CA_BUNDLE: None
pip._vendor.certifi.where(): /private/var/containers/Bundle/Application/4FD43C4F-DF0E-4BF4-82F1-376AE6CFE10D/a-Shell.app/Library/lib/python3.11/site-packages/pip/_vendor/certifi/cacert.pem
pip._vendor.DEBUNDLED: False
vendored library versions:
  CacheControl==0.12.11
  colorama==0.4.6
  distlib==0.3.6
  distro==1.8.0
  msgpack==1.0.5
  packaging==21.3
  platformdirs==3.2.0
  pyparsing==3.0.9
  pyproject-hooks==1.0.0
  requests==2.28.2
  certifi==2022.12.07
  chardet==5.1.0
  idna==3.4
  urllib3==1.26.15
  rich==13.3.3 (Unable to locate actual module version, using vendor.txt specified version)
  pygments==2.14.0
  typing_extensions==4.5.0 (Unable to locate actual module version, using vendor.txt specified version)
  resolvelib==1.0.1
  setuptools==65.6.3 (Unable to locate actual module version, using vendor.txt specified version)
  six==1.16.0
  tenacity==8.2.2 (Unable to locate actual module version, using vendor.txt specified version)
  tomli==2.0.1
  webencodings==0.5.1 (Unable to locate actual module version, using vendor.txt specified version)
Compatible tags: 514
  cp311-cp311-macosx_17_0_iphone15,2
  cp311-cp311-macosx_16_0_iphone15,2
  cp311-cp311-macosx_15_0_iphone15,2
  cp311-cp311-macosx_14_0_iphone15,2
  cp311-cp311-macosx_13_0_iphone15,2
  cp311-cp311-macosx_12_0_iphone15,2
  cp311-cp311-macosx_11_0_iphone15,2
  cp311-cp311-macosx_10_16_universal2
  cp311-cp311-macosx_10_15_universal2
  cp311-cp311-macosx_10_14_universal2
  cp311-cp311-macosx_10_13_universal2
  cp311-cp311-macosx_10_12_universal2
  cp311-cp311-macosx_10_11_universal2
  cp311-cp311-macosx_10_10_universal2
  cp311-cp311-macosx_10_9_universal2
  cp311-cp311-macosx_10_8_universal2
  cp311-cp311-macosx_10_7_universal2
  cp311-cp311-macosx_10_6_universal2
  cp311-cp311-macosx_10_5_universal2
  cp311-cp311-macosx_10_4_universal2
  cp311-abi3-macosx_17_0_iphone15,2
  cp311-abi3-macosx_16_0_iphone15,2
  cp311-abi3-macosx_15_0_iphone15,2
  cp311-abi3-macosx_14_0_iphone15,2
  cp311-abi3-macosx_13_0_iphone15,2
  cp311-abi3-macosx_12_0_iphone15,2
  cp311-abi3-macosx_11_0_iphone15,2
  cp311-abi3-macosx_10_16_universal2
  cp311-abi3-macosx_10_15_universal2
  cp311-abi3-macosx_10_14_universal2
  cp311-abi3-macosx_10_13_universal2
  cp311-abi3-macosx_10_12_universal2
  cp311-abi3-macosx_10_11_universal2
  cp311-abi3-macosx_10_10_universal2
  cp311-abi3-macosx_10_9_universal2
  cp311-abi3-macosx_10_8_universal2
  cp311-abi3-macosx_10_7_universal2
  cp311-abi3-macosx_10_6_universal2
  cp311-abi3-macosx_10_5_universal2
  cp311-abi3-macosx_10_4_universal2
  cp311-none-macosx_17_0_iphone15,2
  cp311-none-macosx_16_0_iphone15,2
  cp311-none-macosx_15_0_iphone15,2
  cp311-none-macosx_14_0_iphone15,2
  cp311-none-macosx_13_0_iphone15,2
  cp311-none-macosx_12_0_iphone15,2
  cp311-none-macosx_11_0_iphone15,2
  cp311-none-macosx_10_16_universal2
  cp311-none-macosx_10_15_universal2
  cp311-none-macosx_10_14_universal2
  cp311-none-macosx_10_13_universal2
  cp311-none-macosx_10_12_universal2
  cp311-none-macosx_10_11_universal2
  cp311-none-macosx_10_10_universal2
  cp311-none-macosx_10_9_universal2
  cp311-none-macosx_10_8_universal2
  cp311-none-macosx_10_7_universal2
  cp311-none-macosx_10_6_universal2
  cp311-none-macosx_10_5_universal2
  cp311-none-macosx_10_4_universal2
  cp310-abi3-macosx_17_0_iphone15,2
  cp310-abi3-macosx_16_0_iphone15,2
  cp310-abi3-macosx_15_0_iphone15,2
  cp310-abi3-macosx_14_0_iphone15,2
  cp310-abi3-macosx_13_0_iphone15,2
  cp310-abi3-macosx_12_0_iphone15,2
  cp310-abi3-macosx_11_0_iphone15,2
  cp310-abi3-macosx_10_16_universal2
  cp310-abi3-macosx_10_15_universal2
  cp310-abi3-macosx_10_14_universal2
  cp310-abi3-macosx_10_13_universal2
  cp310-abi3-macosx_10_12_universal2
  cp310-abi3-macosx_10_11_universal2
  cp310-abi3-macosx_10_10_universal2
  cp310-abi3-macosx_10_9_universal2
  cp310-abi3-macosx_10_8_universal2
  cp310-abi3-macosx_10_7_universal2
  cp310-abi3-macosx_10_6_universal2
  cp310-abi3-macosx_10_5_universal2
  cp310-abi3-macosx_10_4_universal2
  cp39-abi3-macosx_17_0_iphone15,2
  cp39-abi3-macosx_16_0_iphone15,2
  cp39-abi3-macosx_15_0_iphone15,2
  cp39-abi3-macosx_14_0_iphone15,2
  cp39-abi3-macosx_13_0_iphone15,2
  cp39-abi3-macosx_12_0_iphone15,2
  cp39-abi3-macosx_11_0_iphone15,2
  cp39-abi3-macosx_10_16_universal2
  cp39-abi3-macosx_10_15_universal2
  cp39-abi3-macosx_10_14_universal2
  cp39-abi3-macosx_10_13_universal2
  cp39-abi3-macosx_10_12_universal2
  cp39-abi3-macosx_10_11_universal2
  cp39-abi3-macosx_10_10_universal2
  cp39-abi3-macosx_10_9_universal2
  cp39-abi3-macosx_10_8_universal2
  cp39-abi3-macosx_10_7_universal2
  cp39-abi3-macosx_10_6_universal2
  cp39-abi3-macosx_10_5_universal2
  cp39-abi3-macosx_10_4_universal2
  cp38-abi3-macosx_17_0_iphone15,2
  cp38-abi3-macosx_16_0_iphone15,2
  cp38-abi3-macosx_15_0_iphone15,2
  cp38-abi3-macosx_14_0_iphone15,2
  cp38-abi3-macosx_13_0_iphone15,2
  cp38-abi3-macosx_12_0_iphone15,2
  cp38-abi3-macosx_11_0_iphone15,2
  cp38-abi3-macosx_10_16_universal2
  cp38-abi3-macosx_10_15_universal2
  cp38-abi3-macosx_10_14_universal2
  cp38-abi3-macosx_10_13_universal2
  cp38-abi3-macosx_10_12_universal2
  cp38-abi3-macosx_10_11_universal2
  cp38-abi3-macosx_10_10_universal2
  cp38-abi3-macosx_10_9_universal2
  cp38-abi3-macosx_10_8_universal2
  cp38-abi3-macosx_10_7_universal2
  cp38-abi3-macosx_10_6_universal2
  cp38-abi3-macosx_10_5_universal2
  cp38-abi3-macosx_10_4_universal2
  cp37-abi3-macosx_17_0_iphone15,2
  cp37-abi3-macosx_16_0_iphone15,2
  cp37-abi3-macosx_15_0_iphone15,2
  cp37-abi3-macosx_14_0_iphone15,2
  cp37-abi3-macosx_13_0_iphone15,2
  cp37-abi3-macosx_12_0_iphone15,2
  cp37-abi3-macosx_11_0_iphone15,2
  cp37-abi3-macosx_10_16_universal2
  cp37-abi3-macosx_10_15_universal2
  cp37-abi3-macosx_10_14_universal2
  cp37-abi3-macosx_10_13_universal2
  cp37-abi3-macosx_10_12_universal2
  cp37-abi3-macosx_10_11_universal2
  cp37-abi3-macosx_10_10_universal2
  cp37-abi3-macosx_10_9_universal2
  cp37-abi3-macosx_10_8_universal2
  cp37-abi3-macosx_10_7_universal2
  cp37-abi3-macosx_10_6_universal2
  cp37-abi3-macosx_10_5_universal2
  cp37-abi3-macosx_10_4_universal2
  cp36-abi3-macosx_17_0_iphone15,2
  cp36-abi3-macosx_16_0_iphone15,2
  cp36-abi3-macosx_15_0_iphone15,2
  cp36-abi3-macosx_14_0_iphone15,2
  cp36-abi3-macosx_13_0_iphone15,2
  cp36-abi3-macosx_12_0_iphone15,2
  cp36-abi3-macosx_11_0_iphone15,2
  cp36-abi3-macosx_10_16_universal2
  cp36-abi3-macosx_10_15_universal2
  cp36-abi3-macosx_10_14_universal2
  cp36-abi3-macosx_10_13_universal2
  cp36-abi3-macosx_10_12_universal2
  cp36-abi3-macosx_10_11_universal2
  cp36-abi3-macosx_10_10_universal2
  cp36-abi3-macosx_10_9_universal2
  cp36-abi3-macosx_10_8_universal2
  cp36-abi3-macosx_10_7_universal2
  cp36-abi3-macosx_10_6_universal2
  cp36-abi3-macosx_10_5_universal2
  cp36-abi3-macosx_10_4_universal2
  cp35-abi3-macosx_17_0_iphone15,2
  cp35-abi3-macosx_16_0_iphone15,2
  cp35-abi3-macosx_15_0_iphone15,2
  cp35-abi3-macosx_14_0_iphone15,2
  cp35-abi3-macosx_13_0_iphone15,2
  cp35-abi3-macosx_12_0_iphone15,2
  cp35-abi3-macosx_11_0_iphone15,2
  cp35-abi3-macosx_10_16_universal2
  cp35-abi3-macosx_10_15_universal2
  cp35-abi3-macosx_10_14_universal2
  cp35-abi3-macosx_10_13_universal2
  cp35-abi3-macosx_10_12_universal2
  cp35-abi3-macosx_10_11_universal2
  cp35-abi3-macosx_10_10_universal2
  cp35-abi3-macosx_10_9_universal2
  cp35-abi3-macosx_10_8_universal2
  cp35-abi3-macosx_10_7_universal2
  cp35-abi3-macosx_10_6_universal2
  cp35-abi3-macosx_10_5_universal2
  cp35-abi3-macosx_10_4_universal2
  cp34-abi3-macosx_17_0_iphone15,2
  cp34-abi3-macosx_16_0_iphone15,2
  cp34-abi3-macosx_15_0_iphone15,2
  cp34-abi3-macosx_14_0_iphone15,2
  cp34-abi3-macosx_13_0_iphone15,2
  cp34-abi3-macosx_12_0_iphone15,2
  cp34-abi3-macosx_11_0_iphone15,2
  cp34-abi3-macosx_10_16_universal2
  cp34-abi3-macosx_10_15_universal2
  cp34-abi3-macosx_10_14_universal2
  cp34-abi3-macosx_10_13_universal2
  cp34-abi3-macosx_10_12_universal2
  cp34-abi3-macosx_10_11_universal2
  cp34-abi3-macosx_10_10_universal2
  cp34-abi3-macosx_10_9_universal2
  cp34-abi3-macosx_10_8_universal2
  cp34-abi3-macosx_10_7_universal2
  cp34-abi3-macosx_10_6_universal2
  cp34-abi3-macosx_10_5_universal2
  cp34-abi3-macosx_10_4_universal2
  cp33-abi3-macosx_17_0_iphone15,2
  cp33-abi3-macosx_16_0_iphone15,2
  cp33-abi3-macosx_15_0_iphone15,2
  cp33-abi3-macosx_14_0_iphone15,2
  cp33-abi3-macosx_13_0_iphone15,2
  cp33-abi3-macosx_12_0_iphone15,2
  cp33-abi3-macosx_11_0_iphone15,2
  cp33-abi3-macosx_10_16_universal2
  cp33-abi3-macosx_10_15_universal2
  cp33-abi3-macosx_10_14_universal2
  cp33-abi3-macosx_10_13_universal2
  cp33-abi3-macosx_10_12_universal2
  cp33-abi3-macosx_10_11_universal2
  cp33-abi3-macosx_10_10_universal2
  cp33-abi3-macosx_10_9_universal2
  cp33-abi3-macosx_10_8_universal2
  cp33-abi3-macosx_10_7_universal2
  cp33-abi3-macosx_10_6_universal2
  cp33-abi3-macosx_10_5_universal2
  cp33-abi3-macosx_10_4_universal2
  cp32-abi3-macosx_17_0_iphone15,2
  cp32-abi3-macosx_16_0_iphone15,2
  cp32-abi3-macosx_15_0_iphone15,2
  cp32-abi3-macosx_14_0_iphone15,2
  cp32-abi3-macosx_13_0_iphone15,2
  cp32-abi3-macosx_12_0_iphone15,2
  cp32-abi3-macosx_11_0_iphone15,2
  cp32-abi3-macosx_10_16_universal2
  cp32-abi3-macosx_10_15_universal2
  cp32-abi3-macosx_10_14_universal2
  cp32-abi3-macosx_10_13_universal2
  cp32-abi3-macosx_10_12_universal2
  cp32-abi3-macosx_10_11_universal2
  cp32-abi3-macosx_10_10_universal2
  cp32-abi3-macosx_10_9_universal2
  cp32-abi3-macosx_10_8_universal2
  cp32-abi3-macosx_10_7_universal2
  cp32-abi3-macosx_10_6_universal2
  cp32-abi3-macosx_10_5_universal2
  cp32-abi3-macosx_10_4_universal2
  py311-none-macosx_17_0_iphone15,2
  py311-none-macosx_16_0_iphone15,2
  py311-none-macosx_15_0_iphone15,2
  py311-none-macosx_14_0_iphone15,2
  py311-none-macosx_13_0_iphone15,2
  py311-none-macosx_12_0_iphone15,2
  py311-none-macosx_11_0_iphone15,2
  py311-none-macosx_10_16_universal2
  py311-none-macosx_10_15_universal2
  py311-none-macosx_10_14_universal2
  py311-none-macosx_10_13_universal2
  py311-none-macosx_10_12_universal2
  py311-none-macosx_10_11_universal2
  py311-none-macosx_10_10_universal2
  py311-none-macosx_10_9_universal2
  py311-none-macosx_10_8_universal2
  py311-none-macosx_10_7_universal2
  py311-none-macosx_10_6_universal2
  py311-none-macosx_10_5_universal2
  py311-none-macosx_10_4_universal2
  py3-none-macosx_17_0_iphone15,2
  py3-none-macosx_16_0_iphone15,2
  py3-none-macosx_15_0_iphone15,2
  py3-none-macosx_14_0_iphone15,2
  py3-none-macosx_13_0_iphone15,2
  py3-none-macosx_12_0_iphone15,2
  py3-none-macosx_11_0_iphone15,2
  py3-none-macosx_10_16_universal2
  py3-none-macosx_10_15_universal2
  py3-none-macosx_10_14_universal2
  py3-none-macosx_10_13_universal2
  py3-none-macosx_10_12_universal2
  py3-none-macosx_10_11_universal2
  py3-none-macosx_10_10_universal2
  py3-none-macosx_10_9_universal2
  py3-none-macosx_10_8_universal2
  py3-none-macosx_10_7_universal2
  py3-none-macosx_10_6_universal2
  py3-none-macosx_10_5_universal2
  py3-none-macosx_10_4_universal2
  py310-none-macosx_17_0_iphone15,2
  py310-none-macosx_16_0_iphone15,2
  py310-none-macosx_15_0_iphone15,2
  py310-none-macosx_14_0_iphone15,2
  py310-none-macosx_13_0_iphone15,2
  py310-none-macosx_12_0_iphone15,2
  py310-none-macosx_11_0_iphone15,2
  py310-none-macosx_10_16_universal2
  py310-none-macosx_10_15_universal2
  py310-none-macosx_10_14_universal2
  py310-none-macosx_10_13_universal2
  py310-none-macosx_10_12_universal2
  py310-none-macosx_10_11_universal2
  py310-none-macosx_10_10_universal2
  py310-none-macosx_10_9_universal2
  py310-none-macosx_10_8_universal2
  py310-none-macosx_10_7_universal2
  py310-none-macosx_10_6_universal2
  py310-none-macosx_10_5_universal2
  py310-none-macosx_10_4_universal2
  py39-none-macosx_17_0_iphone15,2
  py39-none-macosx_16_0_iphone15,2
  py39-none-macosx_15_0_iphone15,2
  py39-none-macosx_14_0_iphone15,2
  py39-none-macosx_13_0_iphone15,2
  py39-none-macosx_12_0_iphone15,2
  py39-none-macosx_11_0_iphone15,2
  py39-none-macosx_10_16_universal2
  py39-none-macosx_10_15_universal2
  py39-none-macosx_10_14_universal2
  py39-none-macosx_10_13_universal2
  py39-none-macosx_10_12_universal2
  py39-none-macosx_10_11_universal2
  py39-none-macosx_10_10_universal2
  py39-none-macosx_10_9_universal2
  py39-none-macosx_10_8_universal2
  py39-none-macosx_10_7_universal2
  py39-none-macosx_10_6_universal2
  py39-none-macosx_10_5_universal2
  py39-none-macosx_10_4_universal2
  py38-none-macosx_17_0_iphone15,2
  py38-none-macosx_16_0_iphone15,2
  py38-none-macosx_15_0_iphone15,2
  py38-none-macosx_14_0_iphone15,2
  py38-none-macosx_13_0_iphone15,2
  py38-none-macosx_12_0_iphone15,2
  py38-none-macosx_11_0_iphone15,2
  py38-none-macosx_10_16_universal2
  py38-none-macosx_10_15_universal2
  py38-none-macosx_10_14_universal2
  py38-none-macosx_10_13_universal2
  py38-none-macosx_10_12_universal2
  py38-none-macosx_10_11_universal2
  py38-none-macosx_10_10_universal2
  py38-none-macosx_10_9_universal2
  py38-none-macosx_10_8_universal2
  py38-none-macosx_10_7_universal2
  py38-none-macosx_10_6_universal2
  py38-none-macosx_10_5_universal2
  py38-none-macosx_10_4_universal2
  py37-none-macosx_17_0_iphone15,2
  py37-none-macosx_16_0_iphone15,2
  py37-none-macosx_15_0_iphone15,2
  py37-none-macosx_14_0_iphone15,2
  py37-none-macosx_13_0_iphone15,2
  py37-none-macosx_12_0_iphone15,2
  py37-none-macosx_11_0_iphone15,2
  py37-none-macosx_10_16_universal2
  py37-none-macosx_10_15_universal2
  py37-none-macosx_10_14_universal2
  py37-none-macosx_10_13_universal2
  py37-none-macosx_10_12_universal2
  py37-none-macosx_10_11_universal2
  py37-none-macosx_10_10_universal2
  py37-none-macosx_10_9_universal2
  py37-none-macosx_10_8_universal2
  py37-none-macosx_10_7_universal2
  py37-none-macosx_10_6_universal2
  py37-none-macosx_10_5_universal2
  py37-none-macosx_10_4_universal2
  py36-none-macosx_17_0_iphone15,2
  py36-none-macosx_16_0_iphone15,2
  py36-none-macosx_15_0_iphone15,2
  py36-none-macosx_14_0_iphone15,2
  py36-none-macosx_13_0_iphone15,2
  py36-none-macosx_12_0_iphone15,2
  py36-none-macosx_11_0_iphone15,2
  py36-none-macosx_10_16_universal2
  py36-none-macosx_10_15_universal2
  py36-none-macosx_10_14_universal2
  py36-none-macosx_10_13_universal2
  py36-none-macosx_10_12_universal2
  py36-none-macosx_10_11_universal2
  py36-none-macosx_10_10_universal2
  py36-none-macosx_10_9_universal2
  py36-none-macosx_10_8_universal2
  py36-none-macosx_10_7_universal2
  py36-none-macosx_10_6_universal2
  py36-none-macosx_10_5_universal2
  py36-none-macosx_10_4_universal2
  py35-none-macosx_17_0_iphone15,2
  py35-none-macosx_16_0_iphone15,2
  py35-none-macosx_15_0_iphone15,2
  py35-none-macosx_14_0_iphone15,2
  py35-none-macosx_13_0_iphone15,2
  py35-none-macosx_12_0_iphone15,2
  py35-none-macosx_11_0_iphone15,2
  py35-none-macosx_10_16_universal2
  py35-none-macosx_10_15_universal2
  py35-none-macosx_10_14_universal2
  py35-none-macosx_10_13_universal2
  py35-none-macosx_10_12_universal2
  py35-none-macosx_10_11_universal2
  py35-none-macosx_10_10_universal2
  py35-none-macosx_10_9_universal2
  py35-none-macosx_10_8_universal2
  py35-none-macosx_10_7_universal2
  py35-none-macosx_10_6_universal2
  py35-none-macosx_10_5_universal2
  py35-none-macosx_10_4_universal2
  py34-none-macosx_17_0_iphone15,2
  py34-none-macosx_16_0_iphone15,2
  py34-none-macosx_15_0_iphone15,2
  py34-none-macosx_14_0_iphone15,2
  py34-none-macosx_13_0_iphone15,2
  py34-none-macosx_12_0_iphone15,2
  py34-none-macosx_11_0_iphone15,2
  py34-none-macosx_10_16_universal2
  py34-none-macosx_10_15_universal2
  py34-none-macosx_10_14_universal2
  py34-none-macosx_10_13_universal2
  py34-none-macosx_10_12_universal2
  py34-none-macosx_10_11_universal2
  py34-none-macosx_10_10_universal2
  py34-none-macosx_10_9_universal2
  py34-none-macosx_10_8_universal2
  py34-none-macosx_10_7_universal2
  py34-none-macosx_10_6_universal2
  py34-none-macosx_10_5_universal2
  py34-none-macosx_10_4_universal2
  py33-none-macosx_17_0_iphone15,2
  py33-none-macosx_16_0_iphone15,2
  py33-none-macosx_15_0_iphone15,2
  py33-none-macosx_14_0_iphone15,2
  py33-none-macosx_13_0_iphone15,2
  py33-none-macosx_12_0_iphone15,2
  py33-none-macosx_11_0_iphone15,2
  py33-none-macosx_10_16_universal2
  py33-none-macosx_10_15_universal2
  py33-none-macosx_10_14_universal2
  py33-none-macosx_10_13_universal2
  py33-none-macosx_10_12_universal2
  py33-none-macosx_10_11_universal2
  py33-none-macosx_10_10_universal2
  py33-none-macosx_10_9_universal2
  py33-none-macosx_10_8_universal2
  py33-none-macosx_10_7_universal2
  py33-none-macosx_10_6_universal2
  py33-none-macosx_10_5_universal2
  py33-none-macosx_10_4_universal2
  py32-none-macosx_17_0_iphone15,2
  py32-none-macosx_16_0_iphone15,2
  py32-none-macosx_15_0_iphone15,2
  py32-none-macosx_14_0_iphone15,2
  py32-none-macosx_13_0_iphone15,2
  py32-none-macosx_12_0_iphone15,2
  py32-none-macosx_11_0_iphone15,2
  py32-none-macosx_10_16_universal2
  py32-none-macosx_10_15_universal2
  py32-none-macosx_10_14_universal2
  py32-none-macosx_10_13_universal2
  py32-none-macosx_10_12_universal2
  py32-none-macosx_10_11_universal2
  py32-none-macosx_10_10_universal2
  py32-none-macosx_10_9_universal2
  py32-none-macosx_10_8_universal2
  py32-none-macosx_10_7_universal2
  py32-none-macosx_10_6_universal2
  py32-none-macosx_10_5_universal2
  py32-none-macosx_10_4_universal2
  py31-none-macosx_17_0_iphone15,2
  py31-none-macosx_16_0_iphone15,2
  py31-none-macosx_15_0_iphone15,2
  py31-none-macosx_14_0_iphone15,2
  py31-none-macosx_13_0_iphone15,2
  py31-none-macosx_12_0_iphone15,2
  py31-none-macosx_11_0_iphone15,2
  py31-none-macosx_10_16_universal2
  py31-none-macosx_10_15_universal2
  py31-none-macosx_10_14_universal2
  py31-none-macosx_10_13_universal2
  py31-none-macosx_10_12_universal2
  py31-none-macosx_10_11_universal2
  py31-none-macosx_10_10_universal2
  py31-none-macosx_10_9_universal2
  py31-none-macosx_10_8_universal2
  py31-none-macosx_10_7_universal2
  py31-none-macosx_10_6_universal2
  py31-none-macosx_10_5_universal2
  py31-none-macosx_10_4_universal2
  py30-none-macosx_17_0_iphone15,2
  py30-none-macosx_16_0_iphone15,2
  py30-none-macosx_15_0_iphone15,2
  py30-none-macosx_14_0_iphone15,2
  py30-none-macosx_13_0_iphone15,2
  py30-none-macosx_12_0_iphone15,2
  py30-none-macosx_11_0_iphone15,2
  py30-none-macosx_10_16_universal2
  py30-none-macosx_10_15_universal2
  py30-none-macosx_10_14_universal2
  py30-none-macosx_10_13_universal2
  py30-none-macosx_10_12_universal2
  py30-none-macosx_10_11_universal2
  py30-none-macosx_10_10_universal2
  py30-none-macosx_10_9_universal2
  py30-none-macosx_10_8_universal2
  py30-none-macosx_10_7_universal2
  py30-none-macosx_10_6_universal2
  py30-none-macosx_10_5_universal2
  py30-none-macosx_10_4_universal2
  cp311-none-any
  py311-none-any
  py3-none-any
  py310-none-any
  py39-none-any
  py38-none-any
  py37-none-any
  py36-none-any
  py35-none-any
  py34-none-any
  py33-none-any
  py32-none-any
  py31-none-any
  py30-none-any
holzschu commented 9 months ago

Where can I download a precompiled iOS Python? Here, if you also want the app around it: https://apps.apple.com/us/app/a-shell/id1473805438?uo=4

If you only want the binaries, you'll have to compiler it from here: https://github.com/holzschu/cpython/

For the tags, that looks like the result of os.uname() (the machine part), which you can also see with uname -m. There might be some side-effects in changing it, I'm not sure.

konstin commented 9 months ago

While this is surprisingly only documented for replacing - and . with _, imho everything outside [a-zA-Z0-9] should be replaced with an underscore, i'm not sure at which level though.

holzschu commented 9 months ago

Hi,

messense commented 2 months ago

N.B. PEP 730 – Adding iOS as a supported platform has been accepted.

marcpabst commented 1 week ago

Hi @holzschu, would you mind providing some context on how you managed to compile for iOS using maturin? I'm trying to do the same but struggle finding a good starting point.

holzschu commented 1 week ago

Hi @marcpabst, I haven't touched this project since last August (but I will during this summer). But basically:

marcpabst commented 1 week ago

Thank you! I think I almost got it working with the briefcase precompiled python 3.12 lib:

export OSX_SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
export IOS_SDKROOT=$(xcrun --sdk iphoneos --show-sdk-path)
export PYO3_CROSS_PYTHON_VERSION=3.12
export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata__ios_iphoneos-arm64"
env SDKROOT="$OSX_SDKROOT" \
    PYO3_CROSS_LIB_DIR="/Users/user/btest3/build/btest3/ios/xcode/Support/Python.xcframework/ios-arm64" \
    CARGO_BUILD_TARGET="aarch64-apple-ios" \
    CARGO_TARGET_AARCH64_APPLE_IOS_RUSTFLAGS="-C link-arg=-isysroot -C link-arg=$IOS_SDKROOT \
    -C link-arg=-arch -C link-arg=arm64 -C link-arg=-miphoneos-version-min=14.0 -C link-arg=-L \
    -C link-arg=/Users/user/btest3/build/btest3/ios/xcode/Support/Python.xcframework/ios-arm64/ -C link-arg=-lpython3.12" \
    maturin build

but I'm running into this error:

  = note: ld: Undefined symbols:
            ___isPlatformVersionAtLeast, referenced from:
                _os_mkfifo in libPython3.12.a[arm64][127](posixmodule.o)
                _os_mknod in libPython3.12.a[arm64][127](posixmodule.o)
                _posixmodule_exec in libPython3.12.a[arm64][127](posixmodule.o)
                _probe_mkfifoat in libPython3.12.a[arm64][127](posixmodule.o)
                _probe_mknodat in libPython3.12.a[arm64][127](posixmodule.o)
          clang: error: linker command failed with exit code 1 (use -v to see invocation)
marcpabst commented 1 week ago

Weirdly, the error goes away when compiling in --release mode but I'm still unable to import the generated package on iOS (I'm compiling for --target aarch64-apple-ios and the apps runs on an iPhone with iOS 17.2):

ModuleNotFoundError: No module named 'guessing_game.guessing_game'
Application has crashed!
========================
Traceback (most recent call last):
  File "/private/var/containers/Bundle/Application/4554AC95-7DC3-4E5D-B547-4366F84FEAFE/btest3.app/app/btest3/__main__.py", line 1, in <module>
    from btest3.app import main
  File "/private/var/containers/Bundle/Application/4554AC95-7DC3-4E5D-B547-4366F84FEAFE/btest3.app/app/btest3/app.py", line 8, in <module>
    import guessing_game
  File "/private/var/containers/Bundle/Application/4554AC95-7DC3-4E5D-B547-4366F84FEAFE/btest3.app/app_packages/guessing_game/__init__.py", line 3, in <module>
    from .guessing_game import *
ModuleNotFoundError: No module named 'guessing_game.guessing_game'
marcpabst commented 1 week ago

Hi @holzschu, one more question: do you remember if you ended up with an *.so or *.dylib library? And did you change anyhing about the way the dynamic lib is loaded?

Looking at https://peps.python.org/pep-0730/, there seem to be lots of limitations on iOS, how do you work them in your app?

holzschu commented 1 week ago

At the end of compiling, you will end up with a dynamic library. How it's named is not important. iOS likes to have its dynamic libraries encapsulated in Frameworks, but that's just a matter of moving things around and changing strings in the binary. I have a script to do that systematically:

echo "Creating: " ${architecture}/Frameworks/${name}.framework
directory=build/${architecture}/Frameworks/
rm -rf $directory/$framework.framework
mkdir -p $directory
mkdir -p $directory/$framework.framework
libraryFile=build/${architecture}/${library}.cpython-311-darwin.so
cp $libraryFile $directory/$framework.framework/$framework
cp plists/basic_Info.plist $directory/$framework.framework/Info.plist
plutil -replace CFBundleExecutable -string $framework $directory/$framework.framework/Info.plist
plutil -replace CFBundleName -string $framework $directory/$framework.framework/Info.plist
# underscore is not allowed in CFBundleIdentifier:
signature=${framework//_/-}
plutil -replace CFBundleIdentifier -string Nicolas-Holzschuch.$signature  $directory/$framework.framework/Info.plist
# change framework id and libpython:
install_name_tool -change $libpython @rpath/${package}.framework/${package} $directory/$framework.framework/$framework
install_name_tool -id @rpath/$framework.framework/$framework  $directory/$framework.framework/$framework
plutil -replace DTPlatformName -string "iphoneos" build/lib.darwin-arm64-3.11/Frameworks/$framework.framework/Info.plist
    plutil -replace DTSDKName -string "iphoneos" build/lib.darwin-arm64-3.11/Frameworks/$framework.framework/Info.plist
    plutil -replace DTPlatformVersion -string "14.0" build/lib.darwin-arm64-3.11/Frameworks/$framework.framework/Info.plist
    plutil -replace MinimumOSVersion -string "14.0" build/lib.darwin-arm64-3.11/Frameworks/$framework.framework/Info.plist

The basic idea is that a framework has the following structure: a directory, containing the dynamic library (renamed with no suffix) and an Info.plist file that describes the content of the framework. The plutil utility lets you change the content of the Info.plist, so you can start with a vanilla Info.plist and edit it.

ls -l ffprobe.framework/
total 52480
drwxr-xr-x  2 holzschu  staff        64 31 Jul  2022 Headers
-rw-r--r--  1 holzschu  staff      1457 26 Apr 03:30 Info.plist
-rwxr-xr-x  1 holzschu  staff  26863680 26 Apr 03:30 ffprobe

I also edited the code in charge of loading dynamic libraries in Python, so that instead of loading dynamicLibrary.so, it insteads loads dynamicLibrary.framework/dynamicLibrary (it's a straightforward change) (that might be already in PEP730, I haven't looked).

marcpabst commented 1 week ago

Thank you, that's very helpful! I think I'm at a point now where Python checks the right place for the library and loads it - but then immediately fails with EXC_BAD_ACCESS. So there's likely still something wrong with how I compile the rust code.

This is what I use to build my (abi3-py38) wheel:

export OSX_SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
export IOS_SDKROOT=$(xcrun --sdk iphoneos --show-sdk-path)
export PYTHONDIR="/Users/marc/btest3/build/btest3/ios/xcode/Support/Python.xcframework/ios-arm64"
export PYO3_CROSS_PYTHON_VERSION=3.12
env SDKROOT="$OSX_SDKROOT" \
PYO3_CROSS_LIB_DIR="$PYTHONDIR" \
CARGO_TARGET_AARCH64_APPLE_IOS_RUSTFLAGS="-C link-arg=-isysroot -C link-arg=$IOS_SDKROOT \
    -C link-arg=-arch -C link-arg=arm64 -C link-arg=-miphoneos-version-min=14.0 -C link-arg=-L \
    -C link-arg=$PYTHONDIR \
    -C link-arg=-lpython3.12" \
maturin build --target aarch64-apple-ios --release

which succesfully builds:

🔗 Found pyo3 bindings with abi3 support for Python ≥ 3.8
🐍 Not using a specific python interpreter
📡 Using build options features from pyproject.toml
...
    Finished release [optimized] target(s) in 0.01s
📦 Built wheel for abi3 Python ≥ 3.8 to /Users/marc/guessing_game/target/wheels/guessing_game-0.1.0-cp38-abi3-ios_23_2_0_arm64.whl
marcpabst commented 1 week ago

I made it work!! I think Briefcase is dynamically linking the Pythin intepreter (?), so I had to replace -C link-arg=-lpython3.12 with -C link-arg=-undefined -C link-arg=dynamic_lookup".