Compare commits
2 commits
master
...
pkgresourc
Author | SHA1 | Date | |
---|---|---|---|
|
8655bf279b | ||
|
c74994eb14 |
289 changed files with 34781 additions and 7658 deletions
|
@ -1,4 +0,0 @@
|
||||||
BROKEN_RECIPES = set()
|
|
||||||
|
|
||||||
# recipes that were already built will be skipped
|
|
||||||
CORE_RECIPES = set(["kivy", "hostpython3", "python3"])
|
|
|
@ -1,48 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
"""
|
|
||||||
Continuous Integration helper script.
|
|
||||||
Automatically detects recipes modified in a changeset (compares with master)
|
|
||||||
and recompiles them.
|
|
||||||
|
|
||||||
Current limitations:
|
|
||||||
- will fail on conflicting requirements
|
|
||||||
"""
|
|
||||||
import sh
|
|
||||||
import subprocess
|
|
||||||
from fnmatch import fnmatch
|
|
||||||
from constants import CORE_RECIPES, BROKEN_RECIPES
|
|
||||||
|
|
||||||
|
|
||||||
def modified_recipes(branch="origin/master"):
|
|
||||||
"""
|
|
||||||
Returns a set of modified recipes between the current branch and the one
|
|
||||||
in param.
|
|
||||||
"""
|
|
||||||
# using the contrib version on purpose rather than sh.git, since it comes
|
|
||||||
# with a bunch of fixes, e.g. disabled TTY, see:
|
|
||||||
# https://stackoverflow.com/a/20128598/185510
|
|
||||||
sh.contrib.git.fetch("origin", "master")
|
|
||||||
git_diff = sh.contrib.git.diff("--name-only", branch)
|
|
||||||
recipes = set()
|
|
||||||
for file_path in git_diff:
|
|
||||||
if fnmatch(file_path, "kivy_ios/recipes/*/__init__.py\n"):
|
|
||||||
recipe = file_path.split("/")[2]
|
|
||||||
recipes.add(recipe)
|
|
||||||
return recipes
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
recipes = modified_recipes()
|
|
||||||
recipes -= CORE_RECIPES
|
|
||||||
recipes -= BROKEN_RECIPES
|
|
||||||
updated_recipes = " ".join(recipes)
|
|
||||||
if updated_recipes != "":
|
|
||||||
subprocess.run(
|
|
||||||
f"python3 toolchain.py build {updated_recipes}", shell=True, check=True
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
print("Nothing to do. No updated recipes.")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
|
@ -1,11 +0,0 @@
|
||||||
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eo pipefail
|
|
||||||
|
|
||||||
python3 toolchain.py create Touchtracer kivy-ci-clone/examples/demo/touchtracer
|
|
||||||
|
|
||||||
xcodebuild -project touchtracer-ios/touchtracer.xcodeproj \
|
|
||||||
-scheme touchtracer \
|
|
||||||
-destination generic/platform=iOS\
|
|
||||||
clean build CODE_SIGNING_ALLOWED=NO | xcpretty
|
|
51
.github/ISSUE_TEMPLATE/bug_report.md
vendored
51
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
@ -1,51 +0,0 @@
|
||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Create a report to help us improve
|
|
||||||
title: ''
|
|
||||||
labels: ''
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<!--
|
|
||||||
The issue tracker is a tool to address bugs.
|
|
||||||
Please use the Discord community or Stack Overflow for support questions,
|
|
||||||
more information at https://github.com/kivy/kivy-ios#support
|
|
||||||
|
|
||||||
Before opening a new issue, make sure you do the following:
|
|
||||||
* check that your issue isn't already filed: https://github.com/kivy/kivy-ios/issues
|
|
||||||
* prepare a short, runnable example that reproduces the issue
|
|
||||||
* reproduce the problem with the latest development version (`master`)
|
|
||||||
* double-check that the issue is indeed a bug and not a support request
|
|
||||||
* please use backticks to format code or logs
|
|
||||||
-->
|
|
||||||
|
|
||||||
**Versions**
|
|
||||||
|
|
||||||
* Python :
|
|
||||||
* MacOS version :
|
|
||||||
* XCode Version :
|
|
||||||
* Cython version :
|
|
||||||
|
|
||||||
**Describe the bug**
|
|
||||||
// REPLACE ME: A clear and concise description of what the bug is.
|
|
||||||
|
|
||||||
**To Reproduce**
|
|
||||||
// REPLACE ME: Add your `toolchain.py ....` command or a complete explanation of what you did so We can reproduce your error.
|
|
||||||
|
|
||||||
**Expected behavior**
|
|
||||||
// REPLACE ME: A clear and concise description of what you expected to happen.
|
|
||||||
|
|
||||||
**Logs**
|
|
||||||
```
|
|
||||||
// REPLACE ME: Paste the build output containing the error
|
|
||||||
```
|
|
||||||
|
|
||||||
**Screenshots**
|
|
||||||
<!--
|
|
||||||
ONLY for XCode related errors, use the LOGS section for toolchain.py related problems!
|
|
||||||
If applicable, add screenshots to help explain your problem.
|
|
||||||
-->
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context about the problem here.
|
|
100
.github/workflows/kivy_ios.yml
vendored
100
.github/workflows/kivy_ios.yml
vendored
|
@ -1,100 +0,0 @@
|
||||||
name: kivy-ios
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
flake8:
|
|
||||||
name: Flake8 tests
|
|
||||||
runs-on: macos-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout kivy-ios
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Set up Python 3.7
|
|
||||||
uses: actions/setup-python@v1.1.0
|
|
||||||
with:
|
|
||||||
python-version: 3.7
|
|
||||||
- name: Run flake8
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
pip install tox>=2.0
|
|
||||||
tox -e pep8
|
|
||||||
|
|
||||||
build_python3_kivy:
|
|
||||||
runs-on: macos-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout kivy-ios
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Set up Python 3.7.x
|
|
||||||
uses: actions/setup-python@v1
|
|
||||||
with:
|
|
||||||
python-version: 3.7.x
|
|
||||||
- name: Install requirements
|
|
||||||
run: |
|
|
||||||
pip3 install -r requirements.txt
|
|
||||||
brew install autoconf automake libtool pkg-config
|
|
||||||
brew link libtool
|
|
||||||
pip3 install Cython==0.29.17
|
|
||||||
gem install xcpretty
|
|
||||||
- name: Build Python & Kivy
|
|
||||||
run: |
|
|
||||||
python toolchain.py build python3 kivy
|
|
||||||
- name: Checkout kivy for tests apps
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
repository: kivy/kivy
|
|
||||||
path: kivy-ci-clone
|
|
||||||
- name: Create & Build test project
|
|
||||||
run: |
|
|
||||||
.ci/test_project.sh
|
|
||||||
|
|
||||||
build_python3_kivy_venv:
|
|
||||||
runs-on: macos-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout kivy-ios
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Set up Python 3.7.x
|
|
||||||
uses: actions/setup-python@v1
|
|
||||||
with:
|
|
||||||
python-version: 3.7.x
|
|
||||||
- name: Install requirements
|
|
||||||
run: |
|
|
||||||
python -m venv venv
|
|
||||||
. venv/bin/activate
|
|
||||||
pip install -r requirements.txt
|
|
||||||
pip install sh
|
|
||||||
brew install autoconf automake libtool pkg-config
|
|
||||||
brew link libtool
|
|
||||||
pip install Cython==0.29.17
|
|
||||||
- name: Build Python & Kivy
|
|
||||||
run: |
|
|
||||||
. venv/bin/activate
|
|
||||||
python toolchain.py build python3 kivy
|
|
||||||
- name: Checkout kivy for tests apps
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
repository: kivy/kivy
|
|
||||||
path: kivy-ci-clone
|
|
||||||
- name: Create & Build test project
|
|
||||||
run: |
|
|
||||||
. venv/bin/activate
|
|
||||||
.ci/test_project.sh
|
|
||||||
|
|
||||||
build_updated_recipes:
|
|
||||||
needs: flake8
|
|
||||||
runs-on: macos-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout kivy-ios
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Set up Python 3.7.x
|
|
||||||
uses: actions/setup-python@v1
|
|
||||||
with:
|
|
||||||
python-version: 3.7.x
|
|
||||||
- name: Install requirements
|
|
||||||
run: |
|
|
||||||
pip3 install -r requirements.txt
|
|
||||||
brew install autoconf automake libtool pkg-config
|
|
||||||
brew link libtool
|
|
||||||
pip3 install Cython==0.29.17
|
|
||||||
- name: Build updated recipes
|
|
||||||
run: |
|
|
||||||
python3 .ci/rebuild_updated_recipes.py
|
|
25
.github/workflows/pypi-release.yml
vendored
25
.github/workflows/pypi-release.yml
vendored
|
@ -1,25 +0,0 @@
|
||||||
name: PyPI release
|
|
||||||
on: [push]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
pypi_release:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: Set up Python 3.x
|
|
||||||
uses: actions/setup-python@v2
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade setuptools wheel twine
|
|
||||||
- name: Build
|
|
||||||
run: |
|
|
||||||
python setup.py sdist bdist_wheel
|
|
||||||
twine check dist/*
|
|
||||||
- name: Publish package
|
|
||||||
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
|
|
||||||
uses: pypa/gh-action-pypi-publish@v1.1.0
|
|
||||||
with:
|
|
||||||
user: __token__
|
|
||||||
password: ${{ secrets.pypi_password }}
|
|
35
.github/workflows/setup.yml
vendored
35
.github/workflows/setup.yml
vendored
|
@ -1,35 +0,0 @@
|
||||||
name: setup
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
checks:
|
|
||||||
runs-on: macos-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout kivy-ios
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Set up Python 3.7
|
|
||||||
uses: actions/setup-python@v1.1.0
|
|
||||||
with:
|
|
||||||
python-version: 3.7
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
pip install --upgrade setuptools wheel twine
|
|
||||||
- name: sdist bdist_wheel
|
|
||||||
run: |
|
|
||||||
python setup.py sdist bdist_wheel
|
|
||||||
- name: Twine check
|
|
||||||
run: |
|
|
||||||
twine check dist/*
|
|
||||||
- name: Local install
|
|
||||||
run: |
|
|
||||||
python -m venv venv
|
|
||||||
. venv/bin/activate
|
|
||||||
pip install dist/kivy-ios-*.tar.gz
|
|
||||||
pip install Cython==0.29.17
|
|
||||||
brew install autoconf automake libtool pkg-config
|
|
||||||
- name: Basic toolchain commands
|
|
||||||
run: |
|
|
||||||
. venv/bin/activate
|
|
||||||
toolchain --help
|
|
||||||
toolchain recipes
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -18,6 +18,3 @@ src/ios/iosbuild/
|
||||||
src/ios/ios.c
|
src/ios/ios.c
|
||||||
*.DS_Store*
|
*.DS_Store*
|
||||||
*-ios/
|
*-ios/
|
||||||
__pycache__
|
|
||||||
.tox
|
|
||||||
venv
|
|
||||||
|
|
48
CHANGELOG.md
48
CHANGELOG.md
|
@ -1,48 +0,0 @@
|
||||||
# Changelog
|
|
||||||
|
|
||||||
## [1.1.2] - 2020-05-11
|
|
||||||
### Fixed
|
|
||||||
- Fixes (venv build) reference to SDL\_main.h [\#493](https://github.com/kivy/kivy-ios/issues/493) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
|
|
||||||
## [1.1.1] - 2020-05-11
|
|
||||||
### Added
|
|
||||||
- Add python depends [\#455](https://github.com/kivy/kivy-ios/issues/455) ([misl6](https://github.com/misl6))
|
|
||||||
|
|
||||||
### Removed
|
|
||||||
- Removed Python 2 support [\#482](https://github.com/kivy/kivy-ios/issues/482) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
- Adds initial\_working\_directory [\#489](https://github.com/kivy/kivy-ios/issues/489) ([misl6](https://github.com/misl6))
|
|
||||||
- Adds netifaces recipe, closes #239 [\#488](https://github.com/kivy/kivy-ios/issues/488) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Uses contextlib.suppress to ignore exceptions [\#487](https://github.com/kivy/kivy-ios/issues/487) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- DRY via the find\_xcodeproj() helper method [\#486](https://github.com/kivy/kivy-ios/issues/486) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Uses cd context manager in Python3Recipe.reduce\_python() [\#485](https://github.com/kivy/kivy-ios/issues/485) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Uses Python 3 syntax [\#484](https://github.com/kivy/kivy-ios/issues/484) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Also lints the tools/ folder [\#483](https://github.com/kivy/kivy-ios/issues/483) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Migrates libffi build to Python 3 [\#481](https://github.com/kivy/kivy-ios/issues/481) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Uses a couple of syntax shortcuts [\#479](https://github.com/kivy/kivy-ios/issues/479) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Takes ToolchainCL definition outside the main [\#478](https://github.com/kivy/kivy-ios/issues/478) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
|
|
||||||
## [1.1.0] - 2020-05-05
|
|
||||||
### Added
|
|
||||||
- Automatically publish to PyPI upon tagging [\#475](https://github.com/kivy/kivy-ios/issues/475) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Dedicated setup.py test workflow [\#474](https://github.com/kivy/kivy-ios/issues/474) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
- Fixes a regression introduced during the linting [\#477](https://github.com/kivy/kivy-ios/issues/477) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- More fixes to Numpy so that the binary is accepted by the App Store [\#473](https://github.com/kivy/kivy-ios/issues/473) ([lerela](https://github.com/lerela))
|
|
||||||
- Do not build known broken recipes [\#471](https://github.com/kivy/kivy-ios/issues/471) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Fixes minor typos in the issue template [\#469](https://github.com/kivy/kivy-ios/issues/469) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Activates venv before venv build [\#464](https://github.com/kivy/kivy-ios/issues/464) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Fixes building in venv [\#462](https://github.com/kivy/kivy-ios/issues/462) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Cleanup - Removes vendored deps [\#454](https://github.com/kivy/kivy-ios/issues/454) ([misl6](https://github.com/misl6))
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
- Updates README.md with install/usage from PyPI [\#476](https://github.com/kivy/kivy-ios/issues/476) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Moving to dedicated kivy\_ios/ package directory [\#472](https://github.com/kivy/kivy-ios/issues/472) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
- Bumps Cython version [\#470](https://github.com/kivy/kivy-ios/issues/470) ([misl6](https://github.com/misl6))
|
|
||||||
- Uses new `cd` context manager more [\#465](https://github.com/kivy/kivy-ios/issues/465) ([AndreMiras](https://github.com/AndreMiras))
|
|
||||||
|
|
||||||
|
|
||||||
## [1.0.0] - 2020-05-02
|
|
||||||
- Initial release
|
|
2
LICENSE
2
LICENSE
|
@ -1,4 +1,4 @@
|
||||||
Copyright (c) 2010-2017 Kivy Team and other contributors
|
Copyright (c) 2010-2015 Kivy Team and other contributors
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
327
README.md
327
README.md
|
@ -1,327 +0,0 @@
|
||||||
# Kivy for iOS
|
|
||||||
|
|
||||||
[![kivy-ios](https://github.com/kivy/kivy-ios/workflows/kivy-ios/badge.svg)](https://github.com/kivy/kivy-ios/actions?query=workflow%3Akivy-ios)
|
|
||||||
[![PyPI version](https://badge.fury.io/py/kivy-ios.svg)](https://badge.fury.io/py/kivy-ios)
|
|
||||||
[![Backers on Open Collective](https://opencollective.com/kivy/backers/badge.svg)](#backers)
|
|
||||||
[![Sponsors on Open Collective](https://opencollective.com/kivy/sponsors/badge.svg)](#sponsors)
|
|
||||||
|
|
||||||
This toolchain is designed to compile the necessary libraries for iOS to run
|
|
||||||
your application and manage the creation of the Xcode project.
|
|
||||||
|
|
||||||
We do not provide any binary distributions of this toolchain.
|
|
||||||
You do need to compile it at least once before creating your Xcode project.
|
|
||||||
|
|
||||||
The toolchain supports:
|
|
||||||
|
|
||||||
- iPhone Simulator (x86_64)
|
|
||||||
- iPhone / iOS (armv7 and arm64)
|
|
||||||
|
|
||||||
These recipes are not ported to the new toolchain yet:
|
|
||||||
|
|
||||||
- lxml
|
|
||||||
|
|
||||||
|
|
||||||
## Installation & requirements
|
|
||||||
|
|
||||||
Before we start, we strongly advise to use a Python virtual environment to install Python packages.
|
|
||||||
|
|
||||||
python3 -m venv venv
|
|
||||||
. venv/bin/activate
|
|
||||||
|
|
||||||
Install [Kivy for iOS from PyPI](https://pypi.org/project/kivy-ios) with pip like any Python package.
|
|
||||||
|
|
||||||
pip3 install kivy-ios
|
|
||||||
|
|
||||||
Additionally you would need few system dependencies and configuration.
|
|
||||||
|
|
||||||
- Xcode 10 or above, with an iOS SDK and command line tools installed:
|
|
||||||
|
|
||||||
xcode-select --install
|
|
||||||
|
|
||||||
- Using brew, you can install the following dependencies:
|
|
||||||
|
|
||||||
brew install autoconf automake libtool pkg-config
|
|
||||||
brew link libtool
|
|
||||||
|
|
||||||
## Using the toolchain
|
|
||||||
|
|
||||||
Any Python extensions or C/C++ library must be compiled: you need to have what
|
|
||||||
we call a `recipe` to compile it. For example, Python, libffi, SDL2, SDL_image,
|
|
||||||
freetype... all the dependencies, compilation and packaging instructions are
|
|
||||||
contained in a `recipe`.
|
|
||||||
|
|
||||||
You can list the available recipes and their versions with:
|
|
||||||
|
|
||||||
$ toolchain recipes
|
|
||||||
audiostream master
|
|
||||||
click 7.1.2
|
|
||||||
cymunk master
|
|
||||||
ffmpeg 2.6.3
|
|
||||||
ffpyplayer v3.2
|
|
||||||
flask 1.1.2
|
|
||||||
freetype 2.5.5
|
|
||||||
hostlibffi 3.2.1
|
|
||||||
hostpython3 3.7.1
|
|
||||||
ios master
|
|
||||||
itsdangerous 1.1.0
|
|
||||||
jinja2 2.11.2
|
|
||||||
kivy 1.10.1
|
|
||||||
libffi 3.2.1
|
|
||||||
libjpeg v9a
|
|
||||||
libpng 1.6.26
|
|
||||||
markupsafe 1.1.1
|
|
||||||
moodstocks 4.1.5
|
|
||||||
numpy 1.16.4
|
|
||||||
openssl 1.0.2k
|
|
||||||
photolibrary master
|
|
||||||
pillow 6.1.0
|
|
||||||
plyer master
|
|
||||||
pycrypto 2.6.1
|
|
||||||
pykka 1.2.1
|
|
||||||
pyobjus master
|
|
||||||
python3 3.7.1
|
|
||||||
pyyaml 3.11
|
|
||||||
sdl2 2.0.8
|
|
||||||
sdl2_image 2.0.0
|
|
||||||
sdl2_mixer 2.0.0
|
|
||||||
sdl2_ttf 2.0.12
|
|
||||||
werkzeug 1.0.1
|
|
||||||
|
|
||||||
Then, start the compilation with:
|
|
||||||
|
|
||||||
$ toolchain build python3 kivy
|
|
||||||
|
|
||||||
You can build recipes at the same time by adding them as parameters:
|
|
||||||
|
|
||||||
$ toolchain build python3 openssl kivy
|
|
||||||
|
|
||||||
Recipe builds can be removed via the clean command e.g.:
|
|
||||||
|
|
||||||
$ toolchain clean openssl
|
|
||||||
|
|
||||||
You can install package that don't require compilation with pip::
|
|
||||||
|
|
||||||
$ toolchain pip install plyer
|
|
||||||
|
|
||||||
The Kivy recipe depends on several others, like the sdl\* and python recipes.
|
|
||||||
These may in turn depend on others e.g. sdl2_ttf depends on freetype, etc.
|
|
||||||
You can think of it as follows: the kivy recipe will compile everything
|
|
||||||
necessary for a minimal working version of Kivy.
|
|
||||||
|
|
||||||
Don't grab a coffee, just do diner. Compiling all the libraries for the first
|
|
||||||
time, 3x over (remember, 3 archs, x86_64, armv7, arm64) will take time.
|
|
||||||
|
|
||||||
For a complete list of available commands, type:
|
|
||||||
|
|
||||||
$ toolchain
|
|
||||||
|
|
||||||
## Create the Xcode project
|
|
||||||
|
|
||||||
The `toolchain.py` can create the initial Xcode project for you::
|
|
||||||
|
|
||||||
$ toolchain create <title> <app_directory>
|
|
||||||
$ toolchain create Touchtracer ~/code/kivy/examples/demo/touchtracer
|
|
||||||
|
|
||||||
Your app directory must contain a main.py. A directory named `<title>-ios`
|
|
||||||
will be created, with an Xcode project in it.
|
|
||||||
You can open the Xcode project using::
|
|
||||||
|
|
||||||
$ open touchtracer-ios/touchtracer.xcodeproj
|
|
||||||
|
|
||||||
Then click on `Play`, and enjoy.
|
|
||||||
|
|
||||||
> *Did you know ?*
|
|
||||||
>
|
|
||||||
> Everytime you press `Play`, your application directory will be synced to
|
|
||||||
> the `<title>-ios/YourApp` directory. Don't make changes in the -ios
|
|
||||||
> directory directly.
|
|
||||||
|
|
||||||
|
|
||||||
## Configuring your App
|
|
||||||
|
|
||||||
You can configure and customize your app in various ways:
|
|
||||||
|
|
||||||
- Set the icon and launch images in XCode. Note that XCode requires that you
|
|
||||||
specify these assests per device or/and iOS version.
|
|
||||||
|
|
||||||
- When you first build your XCode project, a 'main.m' file is created in your
|
|
||||||
XCode project folder. This file configures your environment variables and
|
|
||||||
controls your application startup. You can edit this file to customize your
|
|
||||||
launch environment.
|
|
||||||
|
|
||||||
- Kivy uses SDL, and as soon as the application starts the SDL main, the launch
|
|
||||||
image will disappear. To prevent that, you need to have 2 files named
|
|
||||||
`Default.png` and `Default-Landscape.png`, and put them
|
|
||||||
in the `Resources` folder in Xcode (not in your application folder)
|
|
||||||
|
|
||||||
> *Did you know ?*
|
|
||||||
>
|
|
||||||
> If you wish to restrict your apps orientation, you should do this via
|
|
||||||
> the 'export_orientation' function in 'main.m'. The XCode orientation
|
|
||||||
> settings should be set to support all.
|
|
||||||
|
|
||||||
|
|
||||||
## Using recipes
|
|
||||||
|
|
||||||
Recipes are used to install and compile any libraries you may need to use. These
|
|
||||||
recipes follow the same format as those used by the
|
|
||||||
[Python-for-Android](https://github.com/kivy/python-for-android) sister project.
|
|
||||||
Please refer to the
|
|
||||||
[recipe documentation](https://python-for-android.readthedocs.io/en/latest/recipes/)
|
|
||||||
there for more detail.
|
|
||||||
|
|
||||||
|
|
||||||
## Reducing the application size
|
|
||||||
|
|
||||||
If you would like to reduce the size of your distributed app, there are a few
|
|
||||||
things you can do to achieve this:
|
|
||||||
|
|
||||||
- Minimize the `build/pythonX/lib/pythonXX.zip`: this contains all the python
|
|
||||||
modules. You can edit the zip file and remove all the files you'll not use
|
|
||||||
(reduce encodings, remove xml, email...)
|
|
||||||
|
|
||||||
- Go to the settings `panel` > `build`, search for `"strip"` options, and
|
|
||||||
triple-check that they are all set to `NO`. Stripping does not work with
|
|
||||||
Python dynamic modules and will remove needed symbols.
|
|
||||||
|
|
||||||
- By default, the iOS package compiles binaries for all processor
|
|
||||||
architectures, namely x86_64, armv7 and arm64 as per the guidelines from
|
|
||||||
Apple. You can reduce the size of your ipa significantly by removing the
|
|
||||||
x86_64 architecture as they are used only for the emulator.
|
|
||||||
|
|
||||||
The procedure is to first compile/build all the host recipes as is:
|
|
||||||
|
|
||||||
toolchain build hostpython3
|
|
||||||
|
|
||||||
Then build all the rest of the recipes using --arch=armv7 --arch=arm64
|
|
||||||
arguments as follows:
|
|
||||||
|
|
||||||
toolchain build python3 kivy --arch=armv7 --arch=arm64
|
|
||||||
|
|
||||||
Note that these packages will not run in the iOS emulators, so use them
|
|
||||||
only for deployment.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```
|
|
||||||
toolchain <command> [<args>]
|
|
||||||
|
|
||||||
Available commands:
|
|
||||||
build Build a recipe (compile a library for the required target
|
|
||||||
architecture)
|
|
||||||
clean Clean the build of the specified recipe
|
|
||||||
distclean Clean the build and the result
|
|
||||||
recipes List all the available recipes
|
|
||||||
status List all the recipes and their build status
|
|
||||||
|
|
||||||
Xcode:
|
|
||||||
create Create a new xcode project
|
|
||||||
update Update an existing xcode project (frameworks, libraries..)
|
|
||||||
launchimage Create Launch images for your xcode project
|
|
||||||
icon Create Icons for your xcode project
|
|
||||||
pip Install a pip dependency into the distribution
|
|
||||||
pip3 Install a pip dependency into the python 3 distribution
|
|
||||||
```
|
|
||||||
|
|
||||||
## Development
|
|
||||||
|
|
||||||
Alternatively, it's also possible to clone the repository and use all the
|
|
||||||
described commands in the above sections.
|
|
||||||
Clone and install it to your local virtual environment:
|
|
||||||
|
|
||||||
git clone https://github.com/kivy/kivy-ios.git
|
|
||||||
cd kivy-ios/
|
|
||||||
python3 -m venv venv
|
|
||||||
. venv/bin/activate
|
|
||||||
pip install -e .
|
|
||||||
|
|
||||||
Then use the `toolchain.py` script:
|
|
||||||
|
|
||||||
python toolchain.py --help
|
|
||||||
|
|
||||||
|
|
||||||
## FAQ
|
|
||||||
|
|
||||||
### Fatal error: "stdio.h" file not found
|
|
||||||
|
|
||||||
You need to install the Command line tools: `xcode-select --install`
|
|
||||||
|
|
||||||
### You must build with bitcode disabled (Xcode setting ENABLE_BITCODE should be No).
|
|
||||||
|
|
||||||
We don't support bitcode. You need to go to the project setting, and disable bitcode.
|
|
||||||
|
|
||||||
### You don't have permissions to run
|
|
||||||
|
|
||||||
It is due to invalid archs, search for them and check it. Maybe you
|
|
||||||
targetted a simulator but have only armv7/arm64. Maybe you want to target
|
|
||||||
your iPad but it as only x86_64.
|
|
||||||
|
|
||||||
### Why does the python multiprocess/subprocess module not work?
|
|
||||||
|
|
||||||
The iOS application model does not currently support multi-processing in a
|
|
||||||
cross-platform compatible way. The application design focuses on minimizing
|
|
||||||
processor usage (to minimize power consumption) and promotes an
|
|
||||||
[alternative concurrency model](https://developer.apple.com/library/archive/documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html).
|
|
||||||
|
|
||||||
If you need to make use of multiple processes, you should consider using
|
|
||||||
[PyObjus](https://github.com/kivy/pyobjus) to leverage native iOS
|
|
||||||
functionals for this.
|
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
If you need assistance, you can ask for help on our mailing list:
|
|
||||||
|
|
||||||
* User Group : https://groups.google.com/group/kivy-users
|
|
||||||
* Email : kivy-users@googlegroups.com
|
|
||||||
|
|
||||||
We also have a Discord channel:
|
|
||||||
|
|
||||||
* Server : https://chat.kivy.org
|
|
||||||
* Channel : #support
|
|
||||||
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
We love pull requests and discussing novel ideas. Check out our
|
|
||||||
[contribution guide](http://kivy.org/docs/contribute.html) and
|
|
||||||
feel free to improve Kivy for iOS.
|
|
||||||
|
|
||||||
The following mailing list and IRC channel are used exclusively for
|
|
||||||
discussions about developing the Kivy framework and its sister projects:
|
|
||||||
|
|
||||||
* Dev Group : https://groups.google.com/group/kivy-dev
|
|
||||||
* Email : kivy-dev@googlegroups.com
|
|
||||||
|
|
||||||
Discord channel:
|
|
||||||
|
|
||||||
* Server : https://chat.kivy.org
|
|
||||||
* Channel : #dev
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
Kivy for iOS is released under the terms of the MIT License. Please refer to the
|
|
||||||
LICENSE file.
|
|
||||||
|
|
||||||
|
|
||||||
## Backers
|
|
||||||
|
|
||||||
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/kivy#backer)]
|
|
||||||
|
|
||||||
<a href="https://opencollective.com/kivy#backers" target="_blank"><img src="https://opencollective.com/kivy/backers.svg?width=890"></a>
|
|
||||||
|
|
||||||
|
|
||||||
## Sponsors
|
|
||||||
|
|
||||||
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/kivy#sponsor)]
|
|
||||||
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/0/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/0/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/1/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/1/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/2/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/2/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/3/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/3/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/4/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/4/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/5/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/5/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/6/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/6/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/7/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/7/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/8/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/8/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/9/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/9/avatar.svg"></a>
|
|
||||||
|
|
223
README.rst
Normal file
223
README.rst
Normal file
|
@ -0,0 +1,223 @@
|
||||||
|
Kivy for iOS
|
||||||
|
============
|
||||||
|
|
||||||
|
This toolchain is designed to compile the necessary libraries for iOS to run
|
||||||
|
your application and manage the creation of the Xcode project.
|
||||||
|
|
||||||
|
Currently, we do not provide any binary distributions of this toolchain, but we
|
||||||
|
aim to. Until then, you do need to compile it at least once before creating
|
||||||
|
your Xcode project.
|
||||||
|
|
||||||
|
The toolchain supports:
|
||||||
|
|
||||||
|
- iPhone Simulator (x86 and x86_64)
|
||||||
|
- iPhone / iOS (armv7 and arm64)
|
||||||
|
|
||||||
|
These recipes are not ported to the new toolchain yet:
|
||||||
|
|
||||||
|
- lxml
|
||||||
|
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
Currently, the toolchain requires a few tools for compilation. You will need:
|
||||||
|
|
||||||
|
#. Xcode 6 or above, with an iOS SDK and command line tools installed::
|
||||||
|
|
||||||
|
xcode-select --install
|
||||||
|
|
||||||
|
#. Using brew, you can install the following dependencies::
|
||||||
|
|
||||||
|
brew install autoconf automake libtool pkg-config
|
||||||
|
brew link libtool
|
||||||
|
|
||||||
|
#. Install Cython (0.23)::
|
||||||
|
|
||||||
|
# pip method if available (sudo might be needed.)
|
||||||
|
pip install cython==0.23
|
||||||
|
|
||||||
|
|
||||||
|
Using the toolchain
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Any Python extensions or C/C++ library must be compiled: you need to have what
|
||||||
|
we call a `recipe` to compile it. For example, Python, libffi, SDL2, SDL_image,
|
||||||
|
freetype... all the dependencies, compilation and packaging instructions are
|
||||||
|
contained in a `recipe`.
|
||||||
|
|
||||||
|
You can list the available recipes and their versions with::
|
||||||
|
|
||||||
|
$ ./toolchain.py recipes
|
||||||
|
freetype 2.5.5
|
||||||
|
hostpython 2.7.1
|
||||||
|
ios master
|
||||||
|
kivy ios-poly-arch
|
||||||
|
libffi 3.2.1
|
||||||
|
openssl 1.0.2e
|
||||||
|
pyobjus master
|
||||||
|
python 2.7.1
|
||||||
|
sdl2 iOS-improvements
|
||||||
|
sdl2_image 2.0.0
|
||||||
|
sdl2_mixer 2.0.0
|
||||||
|
sdl2_ttf 2.0.12
|
||||||
|
|
||||||
|
Then, start the compilation with::
|
||||||
|
|
||||||
|
$ ./toolchain.py build kivy
|
||||||
|
|
||||||
|
You can build recipes at the same time by adding them as parameters::
|
||||||
|
|
||||||
|
$ ./toolchain.py build openssl kivy
|
||||||
|
|
||||||
|
Recipe builds can be removed via the clean command e.g.::
|
||||||
|
|
||||||
|
$ ./toolchain.py clean openssl
|
||||||
|
|
||||||
|
The Kivy recipe depends on several others, like the sdl* and python recipes.
|
||||||
|
These may in turn depend on others e.g. sdl2_ttf depends on freetype, etc.
|
||||||
|
You can think of it as follows: the kivy recipe will compile everything
|
||||||
|
necessary for a minimal working version of Kivy.
|
||||||
|
|
||||||
|
Don't grab a coffee, just do diner. Compiling all the libraries for the first
|
||||||
|
time, 4x over (remember, 4 archs, 2 per platforms), will take time. (TODO:
|
||||||
|
provide a way to not compile for the simulator.).
|
||||||
|
|
||||||
|
For a complete list of available commands, type::
|
||||||
|
|
||||||
|
$ ./toolchain.py
|
||||||
|
|
||||||
|
Create the Xcode project
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
The `toolchain.py` can create the initial Xcode project for you::
|
||||||
|
|
||||||
|
$ ./toolchain.py create <title> <app_directory>
|
||||||
|
$ ./toolchain.py create Touchtracer ~/code/kivy/examples/demo/touchtracer
|
||||||
|
|
||||||
|
Your app directory must contain a main.py. A directory named `<title>-ios`
|
||||||
|
will be created, with an Xcode project in it.
|
||||||
|
You can open the Xcode project using::
|
||||||
|
|
||||||
|
$ open touchtracer-ios/touchtracer.xcodeproj
|
||||||
|
|
||||||
|
Then click on `Play`, and enjoy.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Everytime you press `Play`, your application directory will be synced to
|
||||||
|
the `<title>-ios/YourApp` directory. Don't make changes in the -ios
|
||||||
|
directory directly.
|
||||||
|
|
||||||
|
Configuring your App
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
You can configure and customize your app in various ways:
|
||||||
|
|
||||||
|
#. Set the icon and launch images in XCode. Note that XCode requires that you
|
||||||
|
specify these assests per device or/and iOS version.
|
||||||
|
|
||||||
|
#. When you first build your XCode project, a 'main.m' file is created in your
|
||||||
|
XCode project folder. This file configures your environment variables and
|
||||||
|
controls your application startup. You can edit this file to customize your
|
||||||
|
launch environment.
|
||||||
|
|
||||||
|
#. Kivy uses SDL, and as soon as the application starts the SDL main, the launch
|
||||||
|
image will disappear. To prevent that, you need to have 2 files named
|
||||||
|
`Default.png` and `Default-Landscape.png`, and put them
|
||||||
|
in the `Resources` folder in Xcode (not in your application folder)
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If you wish to restrict your apps orientation, you should do this via
|
||||||
|
the 'export_orientation' function in 'main.m'. The XCode orientation
|
||||||
|
settings should be set to support all.
|
||||||
|
|
||||||
|
Using recipes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Recipes are used to install and compile any libraries you may need to use. These
|
||||||
|
recipes follow the same format as those used by the
|
||||||
|
`Python-for-Android <https://github.com/kivy/python-for-android>`_ sister project.
|
||||||
|
Please refer to the
|
||||||
|
`recipe documentation <https://python-for-android.readthedocs.io/en/latest/recipes/>`_
|
||||||
|
there for more detail.
|
||||||
|
|
||||||
|
Reducing the application size
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
If you would like to reduce the size of your distributed app, there are a few
|
||||||
|
things you can do to achieve this:
|
||||||
|
|
||||||
|
#. Minimize the `build/python/lib/python27.zip`: this contains all the python
|
||||||
|
modules. You can edit the zip file and remove all the files you'll not use
|
||||||
|
(reduce encodings, remove xml, email...)
|
||||||
|
|
||||||
|
#. Go to the settings panel > build, search for "strip" options, and
|
||||||
|
triple-check that they are all set to NO. Stripping does not work with
|
||||||
|
Python dynamic modules and will remove needed symbols.
|
||||||
|
|
||||||
|
#. By default, the iOS package compiles binaries for all processor
|
||||||
|
architectures, namely x86, x86_64, armv7 and arm64 as per the guidelines from
|
||||||
|
Apple. You can reduce the size of your ipa significantly by removing the
|
||||||
|
x86 and x86_64 architectures as they are usually used only for the emulator.
|
||||||
|
|
||||||
|
The procedure is to first compile/build all the host recipes as is::
|
||||||
|
|
||||||
|
./toolchain.py build hostpython
|
||||||
|
|
||||||
|
Then build all the rest of the recipes using --arch=armv7 --arch=arm64
|
||||||
|
arguments as follows::
|
||||||
|
|
||||||
|
./toolchain.py build kivy --arch=armv7 --arch=arm64
|
||||||
|
|
||||||
|
Note that these packages will not run in the iOS emulators, so use them
|
||||||
|
only for deployment.
|
||||||
|
|
||||||
|
FAQ
|
||||||
|
---
|
||||||
|
|
||||||
|
Fatal error: "stdio.h" file not found
|
||||||
|
You need to install the Command line tools: `xcode-select --install`
|
||||||
|
|
||||||
|
You must build with bitcode disabled (Xcode setting ENABLE_BITCODE should be No).
|
||||||
|
We don't support bitcode. You need to go to the project setting, and disable bitcode.
|
||||||
|
|
||||||
|
Support
|
||||||
|
-------
|
||||||
|
|
||||||
|
If you need assistance, you can ask for help on our mailing list:
|
||||||
|
|
||||||
|
* User Group : https://groups.google.com/group/kivy-users
|
||||||
|
* Email : kivy-users@googlegroups.com
|
||||||
|
|
||||||
|
We also have an IRC channel:
|
||||||
|
|
||||||
|
* Server : irc.freenode.net
|
||||||
|
* Port : 6667, 6697 (SSL only)
|
||||||
|
* Channel : #kivy
|
||||||
|
|
||||||
|
Contributing
|
||||||
|
------------
|
||||||
|
|
||||||
|
We love pull requests and discussing novel ideas. Check out our
|
||||||
|
`contribution guide <http://kivy.org/docs/contribute.html>`_ and
|
||||||
|
feel free to improve Kivy for iOS.
|
||||||
|
|
||||||
|
The following mailing list and IRC channel are used exclusively for
|
||||||
|
discussions about developing the Kivy framework and its sister projects:
|
||||||
|
|
||||||
|
* Dev Group : https://groups.google.com/group/kivy-dev
|
||||||
|
* Email : kivy-dev@googlegroups.com
|
||||||
|
|
||||||
|
IRC channel:
|
||||||
|
|
||||||
|
* Server : irc.freenode.net
|
||||||
|
* Port : 6667, 6697 (SSL only)
|
||||||
|
* Channel : #kivy-dev
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
Kivy for iOS is released under the terms of the MIT License. Please refer to the
|
||||||
|
LICENSE file.
|
|
@ -1,339 +0,0 @@
|
||||||
Metadata-Version: 2.1
|
|
||||||
Name: kivy-ios
|
|
||||||
Version: 1.1.2.dev0
|
|
||||||
Summary: Kivy for iOS
|
|
||||||
Home-page: https://github.com/kivy/kivy-ios
|
|
||||||
Author: The Kivy team
|
|
||||||
Author-email: kivy-dev@googlegroups.com
|
|
||||||
License: UNKNOWN
|
|
||||||
Description: # Kivy for iOS
|
|
||||||
|
|
||||||
[![kivy-ios](https://github.com/kivy/kivy-ios/workflows/kivy-ios/badge.svg)](https://github.com/kivy/kivy-ios/actions?query=workflow%3Akivy-ios)
|
|
||||||
[![PyPI version](https://badge.fury.io/py/kivy-ios.svg)](https://badge.fury.io/py/kivy-ios)
|
|
||||||
[![Backers on Open Collective](https://opencollective.com/kivy/backers/badge.svg)](#backers)
|
|
||||||
[![Sponsors on Open Collective](https://opencollective.com/kivy/sponsors/badge.svg)](#sponsors)
|
|
||||||
|
|
||||||
This toolchain is designed to compile the necessary libraries for iOS to run
|
|
||||||
your application and manage the creation of the Xcode project.
|
|
||||||
|
|
||||||
We do not provide any binary distributions of this toolchain.
|
|
||||||
You do need to compile it at least once before creating your Xcode project.
|
|
||||||
|
|
||||||
The toolchain supports:
|
|
||||||
|
|
||||||
- iPhone Simulator (x86_64)
|
|
||||||
- iPhone / iOS (armv7 and arm64)
|
|
||||||
|
|
||||||
These recipes are not ported to the new toolchain yet:
|
|
||||||
|
|
||||||
- lxml
|
|
||||||
|
|
||||||
|
|
||||||
## Installation & requirements
|
|
||||||
|
|
||||||
Before we start, we strongly advise to use a Python virtual environment to install Python packages.
|
|
||||||
|
|
||||||
python3 -m venv venv
|
|
||||||
. venv/bin/activate
|
|
||||||
|
|
||||||
Install [Kivy for iOS from PyPI](https://pypi.org/project/kivy-ios) with pip like any Python package.
|
|
||||||
|
|
||||||
pip3 install kivy-ios
|
|
||||||
|
|
||||||
Additionally you would need few system dependencies and configuration.
|
|
||||||
|
|
||||||
- Xcode 10 or above, with an iOS SDK and command line tools installed:
|
|
||||||
|
|
||||||
xcode-select --install
|
|
||||||
|
|
||||||
- Using brew, you can install the following dependencies:
|
|
||||||
|
|
||||||
brew install autoconf automake libtool pkg-config
|
|
||||||
brew link libtool
|
|
||||||
|
|
||||||
## Using the toolchain
|
|
||||||
|
|
||||||
Any Python extensions or C/C++ library must be compiled: you need to have what
|
|
||||||
we call a `recipe` to compile it. For example, Python, libffi, SDL2, SDL_image,
|
|
||||||
freetype... all the dependencies, compilation and packaging instructions are
|
|
||||||
contained in a `recipe`.
|
|
||||||
|
|
||||||
You can list the available recipes and their versions with:
|
|
||||||
|
|
||||||
$ toolchain recipes
|
|
||||||
audiostream master
|
|
||||||
click 7.1.2
|
|
||||||
cymunk master
|
|
||||||
ffmpeg 2.6.3
|
|
||||||
ffpyplayer v3.2
|
|
||||||
flask 1.1.2
|
|
||||||
freetype 2.5.5
|
|
||||||
hostlibffi 3.2.1
|
|
||||||
hostpython3 3.7.1
|
|
||||||
ios master
|
|
||||||
itsdangerous 1.1.0
|
|
||||||
jinja2 2.11.2
|
|
||||||
kivy 1.10.1
|
|
||||||
libffi 3.2.1
|
|
||||||
libjpeg v9a
|
|
||||||
libpng 1.6.26
|
|
||||||
markupsafe 1.1.1
|
|
||||||
moodstocks 4.1.5
|
|
||||||
numpy 1.16.4
|
|
||||||
openssl 1.0.2k
|
|
||||||
photolibrary master
|
|
||||||
pillow 6.1.0
|
|
||||||
plyer master
|
|
||||||
pycrypto 2.6.1
|
|
||||||
pykka 1.2.1
|
|
||||||
pyobjus master
|
|
||||||
python3 3.7.1
|
|
||||||
pyyaml 3.11
|
|
||||||
sdl2 2.0.8
|
|
||||||
sdl2_image 2.0.0
|
|
||||||
sdl2_mixer 2.0.0
|
|
||||||
sdl2_ttf 2.0.12
|
|
||||||
werkzeug 1.0.1
|
|
||||||
|
|
||||||
Then, start the compilation with:
|
|
||||||
|
|
||||||
$ toolchain build python3 kivy
|
|
||||||
|
|
||||||
You can build recipes at the same time by adding them as parameters:
|
|
||||||
|
|
||||||
$ toolchain build python3 openssl kivy
|
|
||||||
|
|
||||||
Recipe builds can be removed via the clean command e.g.:
|
|
||||||
|
|
||||||
$ toolchain clean openssl
|
|
||||||
|
|
||||||
You can install package that don't require compilation with pip::
|
|
||||||
|
|
||||||
$ toolchain pip install plyer
|
|
||||||
|
|
||||||
The Kivy recipe depends on several others, like the sdl\* and python recipes.
|
|
||||||
These may in turn depend on others e.g. sdl2_ttf depends on freetype, etc.
|
|
||||||
You can think of it as follows: the kivy recipe will compile everything
|
|
||||||
necessary for a minimal working version of Kivy.
|
|
||||||
|
|
||||||
Don't grab a coffee, just do diner. Compiling all the libraries for the first
|
|
||||||
time, 3x over (remember, 3 archs, x86_64, armv7, arm64) will take time.
|
|
||||||
|
|
||||||
For a complete list of available commands, type:
|
|
||||||
|
|
||||||
$ toolchain
|
|
||||||
|
|
||||||
## Create the Xcode project
|
|
||||||
|
|
||||||
The `toolchain.py` can create the initial Xcode project for you::
|
|
||||||
|
|
||||||
$ toolchain create <title> <app_directory>
|
|
||||||
$ toolchain create Touchtracer ~/code/kivy/examples/demo/touchtracer
|
|
||||||
|
|
||||||
Your app directory must contain a main.py. A directory named `<title>-ios`
|
|
||||||
will be created, with an Xcode project in it.
|
|
||||||
You can open the Xcode project using::
|
|
||||||
|
|
||||||
$ open touchtracer-ios/touchtracer.xcodeproj
|
|
||||||
|
|
||||||
Then click on `Play`, and enjoy.
|
|
||||||
|
|
||||||
> *Did you know ?*
|
|
||||||
>
|
|
||||||
> Everytime you press `Play`, your application directory will be synced to
|
|
||||||
> the `<title>-ios/YourApp` directory. Don't make changes in the -ios
|
|
||||||
> directory directly.
|
|
||||||
|
|
||||||
|
|
||||||
## Configuring your App
|
|
||||||
|
|
||||||
You can configure and customize your app in various ways:
|
|
||||||
|
|
||||||
- Set the icon and launch images in XCode. Note that XCode requires that you
|
|
||||||
specify these assests per device or/and iOS version.
|
|
||||||
|
|
||||||
- When you first build your XCode project, a 'main.m' file is created in your
|
|
||||||
XCode project folder. This file configures your environment variables and
|
|
||||||
controls your application startup. You can edit this file to customize your
|
|
||||||
launch environment.
|
|
||||||
|
|
||||||
- Kivy uses SDL, and as soon as the application starts the SDL main, the launch
|
|
||||||
image will disappear. To prevent that, you need to have 2 files named
|
|
||||||
`Default.png` and `Default-Landscape.png`, and put them
|
|
||||||
in the `Resources` folder in Xcode (not in your application folder)
|
|
||||||
|
|
||||||
> *Did you know ?*
|
|
||||||
>
|
|
||||||
> If you wish to restrict your apps orientation, you should do this via
|
|
||||||
> the 'export_orientation' function in 'main.m'. The XCode orientation
|
|
||||||
> settings should be set to support all.
|
|
||||||
|
|
||||||
|
|
||||||
## Using recipes
|
|
||||||
|
|
||||||
Recipes are used to install and compile any libraries you may need to use. These
|
|
||||||
recipes follow the same format as those used by the
|
|
||||||
[Python-for-Android](https://github.com/kivy/python-for-android) sister project.
|
|
||||||
Please refer to the
|
|
||||||
[recipe documentation](https://python-for-android.readthedocs.io/en/latest/recipes/)
|
|
||||||
there for more detail.
|
|
||||||
|
|
||||||
|
|
||||||
## Reducing the application size
|
|
||||||
|
|
||||||
If you would like to reduce the size of your distributed app, there are a few
|
|
||||||
things you can do to achieve this:
|
|
||||||
|
|
||||||
- Minimize the `build/pythonX/lib/pythonXX.zip`: this contains all the python
|
|
||||||
modules. You can edit the zip file and remove all the files you'll not use
|
|
||||||
(reduce encodings, remove xml, email...)
|
|
||||||
|
|
||||||
- Go to the settings `panel` > `build`, search for `"strip"` options, and
|
|
||||||
triple-check that they are all set to `NO`. Stripping does not work with
|
|
||||||
Python dynamic modules and will remove needed symbols.
|
|
||||||
|
|
||||||
- By default, the iOS package compiles binaries for all processor
|
|
||||||
architectures, namely x86_64, armv7 and arm64 as per the guidelines from
|
|
||||||
Apple. You can reduce the size of your ipa significantly by removing the
|
|
||||||
x86_64 architecture as they are used only for the emulator.
|
|
||||||
|
|
||||||
The procedure is to first compile/build all the host recipes as is:
|
|
||||||
|
|
||||||
toolchain build hostpython3
|
|
||||||
|
|
||||||
Then build all the rest of the recipes using --arch=armv7 --arch=arm64
|
|
||||||
arguments as follows:
|
|
||||||
|
|
||||||
toolchain build python3 kivy --arch=armv7 --arch=arm64
|
|
||||||
|
|
||||||
Note that these packages will not run in the iOS emulators, so use them
|
|
||||||
only for deployment.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```
|
|
||||||
toolchain <command> [<args>]
|
|
||||||
|
|
||||||
Available commands:
|
|
||||||
build Build a recipe (compile a library for the required target
|
|
||||||
architecture)
|
|
||||||
clean Clean the build of the specified recipe
|
|
||||||
distclean Clean the build and the result
|
|
||||||
recipes List all the available recipes
|
|
||||||
status List all the recipes and their build status
|
|
||||||
|
|
||||||
Xcode:
|
|
||||||
create Create a new xcode project
|
|
||||||
update Update an existing xcode project (frameworks, libraries..)
|
|
||||||
launchimage Create Launch images for your xcode project
|
|
||||||
icon Create Icons for your xcode project
|
|
||||||
pip Install a pip dependency into the distribution
|
|
||||||
pip3 Install a pip dependency into the python 3 distribution
|
|
||||||
```
|
|
||||||
|
|
||||||
## Development
|
|
||||||
|
|
||||||
Alternatively, it's also possible to clone the repository and use all the
|
|
||||||
described commands in the above sections.
|
|
||||||
Clone and install it to your local virtual environment:
|
|
||||||
|
|
||||||
git clone https://github.com/kivy/kivy-ios.git
|
|
||||||
cd kivy-ios/
|
|
||||||
python3 -m venv venv
|
|
||||||
. venv/bin/activate
|
|
||||||
pip install -e .
|
|
||||||
|
|
||||||
Then use the `toolchain.py` script:
|
|
||||||
|
|
||||||
python toolchain.py --help
|
|
||||||
|
|
||||||
|
|
||||||
## FAQ
|
|
||||||
|
|
||||||
### Fatal error: "stdio.h" file not found
|
|
||||||
|
|
||||||
You need to install the Command line tools: `xcode-select --install`
|
|
||||||
|
|
||||||
### You must build with bitcode disabled (Xcode setting ENABLE_BITCODE should be No).
|
|
||||||
|
|
||||||
We don't support bitcode. You need to go to the project setting, and disable bitcode.
|
|
||||||
|
|
||||||
### You don't have permissions to run
|
|
||||||
|
|
||||||
It is due to invalid archs, search for them and check it. Maybe you
|
|
||||||
targetted a simulator but have only armv7/arm64. Maybe you want to target
|
|
||||||
your iPad but it as only x86_64.
|
|
||||||
|
|
||||||
### Why does the python multiprocess/subprocess module not work?
|
|
||||||
|
|
||||||
The iOS application model does not currently support multi-processing in a
|
|
||||||
cross-platform compatible way. The application design focuses on minimizing
|
|
||||||
processor usage (to minimize power consumption) and promotes an
|
|
||||||
[alternative concurrency model](https://developer.apple.com/library/archive/documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html).
|
|
||||||
|
|
||||||
If you need to make use of multiple processes, you should consider using
|
|
||||||
[PyObjus](https://github.com/kivy/pyobjus) to leverage native iOS
|
|
||||||
functionals for this.
|
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
If you need assistance, you can ask for help on our mailing list:
|
|
||||||
|
|
||||||
* User Group : https://groups.google.com/group/kivy-users
|
|
||||||
* Email : kivy-users@googlegroups.com
|
|
||||||
|
|
||||||
We also have a Discord channel:
|
|
||||||
|
|
||||||
* Server : https://chat.kivy.org
|
|
||||||
* Channel : #support
|
|
||||||
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
We love pull requests and discussing novel ideas. Check out our
|
|
||||||
[contribution guide](http://kivy.org/docs/contribute.html) and
|
|
||||||
feel free to improve Kivy for iOS.
|
|
||||||
|
|
||||||
The following mailing list and IRC channel are used exclusively for
|
|
||||||
discussions about developing the Kivy framework and its sister projects:
|
|
||||||
|
|
||||||
* Dev Group : https://groups.google.com/group/kivy-dev
|
|
||||||
* Email : kivy-dev@googlegroups.com
|
|
||||||
|
|
||||||
Discord channel:
|
|
||||||
|
|
||||||
* Server : https://chat.kivy.org
|
|
||||||
* Channel : #dev
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
Kivy for iOS is released under the terms of the MIT License. Please refer to the
|
|
||||||
LICENSE file.
|
|
||||||
|
|
||||||
|
|
||||||
## Backers
|
|
||||||
|
|
||||||
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/kivy#backer)]
|
|
||||||
|
|
||||||
<a href="https://opencollective.com/kivy#backers" target="_blank"><img src="https://opencollective.com/kivy/backers.svg?width=890"></a>
|
|
||||||
|
|
||||||
|
|
||||||
## Sponsors
|
|
||||||
|
|
||||||
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/kivy#sponsor)]
|
|
||||||
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/0/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/0/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/1/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/1/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/2/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/2/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/3/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/3/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/4/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/4/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/5/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/5/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/6/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/6/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/7/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/7/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/8/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/8/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/kivy/sponsor/9/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/9/avatar.svg"></a>
|
|
||||||
|
|
||||||
|
|
||||||
Platform: UNKNOWN
|
|
||||||
Requires-Python: >=3.6.0
|
|
||||||
Description-Content-Type: text/markdown
|
|
|
@ -1,256 +0,0 @@
|
||||||
README.md
|
|
||||||
setup.py
|
|
||||||
kivy_ios/__init__.py
|
|
||||||
kivy_ios/context_managers.py
|
|
||||||
kivy_ios/toolchain.py
|
|
||||||
kivy_ios.egg-info/PKG-INFO
|
|
||||||
kivy_ios.egg-info/SOURCES.txt
|
|
||||||
kivy_ios.egg-info/dependency_links.txt
|
|
||||||
kivy_ios.egg-info/entry_points.txt
|
|
||||||
kivy_ios.egg-info/requires.txt
|
|
||||||
kivy_ios.egg-info/top_level.txt
|
|
||||||
kivy_ios/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/__pycache__/context_managers.cpython-37.pyc
|
|
||||||
kivy_ios/__pycache__/context_managers.cpython-38.pyc
|
|
||||||
kivy_ios/__pycache__/toolchain.cpython-37.pyc
|
|
||||||
kivy_ios/__pycache__/toolchain.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/__init__.py
|
|
||||||
kivy_ios/recipes/hostpython.py
|
|
||||||
kivy_ios/recipes/python.py
|
|
||||||
kivy_ios/recipes/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/__pycache__/python.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/__pycache__/python.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/aiohttp/__init__.py
|
|
||||||
kivy_ios/recipes/aioupnp/__init__.py
|
|
||||||
kivy_ios/recipes/appdirs/__init__.py
|
|
||||||
kivy_ios/recipes/appdirs/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/asn1crypto/__init__.py
|
|
||||||
kivy_ios/recipes/asn1crypto/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/async-timeout/__init__.py
|
|
||||||
kivy_ios/recipes/attrs/__init__.py
|
|
||||||
kivy_ios/recipes/attrs/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/audiostream/__init__.py
|
|
||||||
kivy_ios/recipes/audiostream/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/base58/__init__.py
|
|
||||||
kivy_ios/recipes/base58/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/cffi/__init__.py
|
|
||||||
kivy_ios/recipes/cffi/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/chardet/__init__.py
|
|
||||||
kivy_ios/recipes/click/__init__.py
|
|
||||||
kivy_ios/recipes/click/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/coincurve/__init__.py
|
|
||||||
kivy_ios/recipes/coincurve/cross_compile.patch
|
|
||||||
kivy_ios/recipes/coincurve/drop_setup_requires.patch
|
|
||||||
kivy_ios/recipes/coincurve/find_lib.patch
|
|
||||||
kivy_ios/recipes/coincurve/no-download.patch
|
|
||||||
kivy_ios/recipes/coincurve/setup.py.patch
|
|
||||||
kivy_ios/recipes/colorama/__init__.py
|
|
||||||
kivy_ios/recipes/colorama/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/cryptography/__init__.py
|
|
||||||
kivy_ios/recipes/cryptography/getentropy.patch
|
|
||||||
kivy_ios/recipes/cryptography/osrandom.patch
|
|
||||||
kivy_ios/recipes/cryptography/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/curly/__init__.py
|
|
||||||
kivy_ios/recipes/curly/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/cymunk/__init__.py
|
|
||||||
kivy_ios/recipes/cymunk/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/defusedxml/__init__.py
|
|
||||||
kivy_ios/recipes/docopt/__init__.py
|
|
||||||
kivy_ios/recipes/docopt/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/ecdsa/__init__.py
|
|
||||||
kivy_ios/recipes/ecdsa/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/ffmpeg/__init__.py
|
|
||||||
kivy_ios/recipes/ffmpeg/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/ffpyplayer/__init__.py
|
|
||||||
kivy_ios/recipes/ffpyplayer/misc-visibility.patch
|
|
||||||
kivy_ios/recipes/ffpyplayer/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/flask/__init__.py
|
|
||||||
kivy_ios/recipes/flask/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/freetype/__init__.py
|
|
||||||
kivy_ios/recipes/freetype/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/freetype/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/hachoir/__init__.py
|
|
||||||
kivy_ios/recipes/host_cffi/__init__.py
|
|
||||||
kivy_ios/recipes/host_setuptools/__init__.py
|
|
||||||
kivy_ios/recipes/host_setuptools/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/host_setuptools/setuptools/README.rst
|
|
||||||
kivy_ios/recipes/host_setuptools3/__init__.py
|
|
||||||
kivy_ios/recipes/host_setuptools3/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/host_setuptools3/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/host_setuptools3/setuptools/README.rst
|
|
||||||
kivy_ios/recipes/hostlibffi/__init__.py
|
|
||||||
kivy_ios/recipes/hostlibffi/ffi-3.0.13-sysv.S.patch
|
|
||||||
kivy_ios/recipes/hostlibffi/fix-win32-unreferenced-symbol.patch
|
|
||||||
kivy_ios/recipes/hostlibffi/generate-darwin-source-and-headers-python3-items.patch
|
|
||||||
kivy_ios/recipes/hostlibffi/libffi-xcode10.patch
|
|
||||||
kivy_ios/recipes/hostlibffi/public_include.patch
|
|
||||||
kivy_ios/recipes/hostlibffi/staticlib.patch
|
|
||||||
kivy_ios/recipes/hostlibffi/staticlib2.patch
|
|
||||||
kivy_ios/recipes/hostlibffi/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/hostlibffi/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/hostopenssl/__init__.py
|
|
||||||
kivy_ios/recipes/hostopenssl/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/hostopenssl/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/hostpython3/ModulesSetup
|
|
||||||
kivy_ios/recipes/hostpython3/__init__.py
|
|
||||||
kivy_ios/recipes/hostpython3/pyconfig_detection.patch
|
|
||||||
kivy_ios/recipes/hostpython3/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/hostpython3/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/idna/__init__.py
|
|
||||||
kivy_ios/recipes/idna/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/ios/__init__.py
|
|
||||||
kivy_ios/recipes/ios/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/ios/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/ios/src/ios.pyx
|
|
||||||
kivy_ios/recipes/ios/src/ios_browser.m
|
|
||||||
kivy_ios/recipes/ios/src/ios_filechooser.m
|
|
||||||
kivy_ios/recipes/ios/src/ios_mail.m
|
|
||||||
kivy_ios/recipes/ios/src/ios_utils.m
|
|
||||||
kivy_ios/recipes/ios/src/ios_wrapper.h
|
|
||||||
kivy_ios/recipes/ios/src/setup.py
|
|
||||||
kivy_ios/recipes/ipaddress/__init__.py
|
|
||||||
kivy_ios/recipes/ipaddress/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/itsdangerous/__init__.py
|
|
||||||
kivy_ios/recipes/itsdangerous/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/jinja2/__init__.py
|
|
||||||
kivy_ios/recipes/jinja2/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/jsonschema/__init__.py
|
|
||||||
kivy_ios/recipes/jsonschema/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/keyring/__init__.py
|
|
||||||
kivy_ios/recipes/keyring/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/kivent_core/__init__.py
|
|
||||||
kivy_ios/recipes/kivent_core/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/kivy/__init__.py
|
|
||||||
kivy_ios/recipes/kivy/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/kivy/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/lbry/__init__.py
|
|
||||||
kivy_ios/recipes/lbry/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/libcurl/__init__.py
|
|
||||||
kivy_ios/recipes/libcurl/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/libffi/__init__.py
|
|
||||||
kivy_ios/recipes/libffi/ffi-3.0.13-sysv.S.patch
|
|
||||||
kivy_ios/recipes/libffi/fix-win32-unreferenced-symbol.patch
|
|
||||||
kivy_ios/recipes/libffi/generate-darwin-source-and-headers-python3-items.patch
|
|
||||||
kivy_ios/recipes/libffi/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/libffi/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/libjpeg/__init__.py
|
|
||||||
kivy_ios/recipes/libjpeg/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/libpng/__init__.py
|
|
||||||
kivy_ios/recipes/libpng/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/libsecp256k1/__init__.py
|
|
||||||
kivy_ios/recipes/libzbar/__init__.py
|
|
||||||
kivy_ios/recipes/libzbar/werror.patch
|
|
||||||
kivy_ios/recipes/libzbar/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/markupsafe/__init__.py
|
|
||||||
kivy_ios/recipes/markupsafe/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/mock/__init__.py
|
|
||||||
kivy_ios/recipes/msgpack/__init__.py
|
|
||||||
kivy_ios/recipes/multidict/__init__.py
|
|
||||||
kivy_ios/recipes/netifaces/__init__.py
|
|
||||||
kivy_ios/recipes/netifaces/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/numpy/__init__.py
|
|
||||||
kivy_ios/recipes/numpy/numpy-1.16.4.patch
|
|
||||||
kivy_ios/recipes/numpy/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/openssl/__init__.py
|
|
||||||
kivy_ios/recipes/openssl/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/openssl/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/pbkdf2/__init__.py
|
|
||||||
kivy_ios/recipes/pbkdf2/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/photolibrary/__init__.py
|
|
||||||
kivy_ios/recipes/photolibrary/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/pillow/__init__.py
|
|
||||||
kivy_ios/recipes/pillow/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/plyer/__init__.py
|
|
||||||
kivy_ios/recipes/plyer/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/prometheus_client/__init__.py
|
|
||||||
kivy_ios/recipes/protobuf/__init__.py
|
|
||||||
kivy_ios/recipes/protobuf/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/pyasn1/__init__.py
|
|
||||||
kivy_ios/recipes/pyasn1-modules/__init__.py
|
|
||||||
kivy_ios/recipes/pyasn1-modules/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/pyasn1/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/pycparser/__init__.py
|
|
||||||
kivy_ios/recipes/pycrypto/__init__.py
|
|
||||||
kivy_ios/recipes/pycrypto/hash_SHA2_template.c.patch
|
|
||||||
kivy_ios/recipes/pycrypto/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/pykka/__init__.py
|
|
||||||
kivy_ios/recipes/pykka/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/pylru/__init__.py
|
|
||||||
kivy_ios/recipes/pyobjus/__init__.py
|
|
||||||
kivy_ios/recipes/pyobjus/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/pyobjus/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/python3/ModulesSetup
|
|
||||||
kivy_ios/recipes/python3/ModulesSetup.mobile
|
|
||||||
kivy_ios/recipes/python3/__init__.py
|
|
||||||
kivy_ios/recipes/python3/config.sub.patch
|
|
||||||
kivy_ios/recipes/python3/configure.patch
|
|
||||||
kivy_ios/recipes/python3/ctypes_duplicate.patch
|
|
||||||
kivy_ios/recipes/python3/disable_explicit_blake2.patch
|
|
||||||
kivy_ios/recipes/python3/dynload_shlib.patch
|
|
||||||
kivy_ios/recipes/python3/posixmodule.patch
|
|
||||||
kivy_ios/recipes/python3/pyconfig_detection.patch
|
|
||||||
kivy_ios/recipes/python3/random.patch
|
|
||||||
kivy_ios/recipes/python3/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/python3/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/python3/mock_modules/_sqlite3/__init__.py
|
|
||||||
kivy_ios/recipes/python3/mock_modules/_sqlite3/_sqlite3.cpython-38-darwin.so
|
|
||||||
kivy_ios/recipes/pyyaml/__init__.py
|
|
||||||
kivy_ios/recipes/pyyaml/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/sdl2/__init__.py
|
|
||||||
kivy_ios/recipes/sdl2/uikit-transparent.patch
|
|
||||||
kivy_ios/recipes/sdl2/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/sdl2/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/sdl2_image/__init__.py
|
|
||||||
kivy_ios/recipes/sdl2_image/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/sdl2_image/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/sdl2_mixer/__init__.py
|
|
||||||
kivy_ios/recipes/sdl2_mixer/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/sdl2_mixer/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/sdl2_ttf/__init__.py
|
|
||||||
kivy_ios/recipes/sdl2_ttf/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/sdl2_ttf/__pycache__/__init__.cpython-38.pyc
|
|
||||||
kivy_ios/recipes/setuptools/__init__.py
|
|
||||||
kivy_ios/recipes/setuptools/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/six/__init__.py
|
|
||||||
kivy_ios/recipes/six/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/werkzeug/__init__.py
|
|
||||||
kivy_ios/recipes/werkzeug/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/recipes/yarl/__init__.py
|
|
||||||
kivy_ios/recipes/zbarlight/__init__.py
|
|
||||||
kivy_ios/recipes/zbarlight/zbarlight_1_2.patch
|
|
||||||
kivy_ios/recipes/zbarlight/__pycache__/__init__.cpython-37.pyc
|
|
||||||
kivy_ios/tools/__init__.py
|
|
||||||
kivy_ios/tools/biglink
|
|
||||||
kivy_ios/tools/cythonize.py
|
|
||||||
kivy_ios/tools/liblink
|
|
||||||
kivy_ios/tools/external/__init__.py
|
|
||||||
kivy_ios/tools/external/xcassets.py
|
|
||||||
kivy_ios/tools/templates/cookiecutter.json
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/bridge.h
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/bridge.m
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/icon.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/main.m
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/{{ cookiecutter.project_name }}-Info.plist
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/LaunchImages/Default-568h@2x.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/LaunchImages/Default-667h@2x.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/LaunchImages/Default-763h@3x.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/LaunchImages/Default-Landscape.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/LaunchImages/Default-Landscape@2x.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/LaunchImages/Default-Portrait.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/LaunchImages/Default-Portrait@2x~ipad.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/LaunchImages/Default-Portrait@3x~ipad.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/LaunchImages/Default.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/LaunchImages/Default@2x.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/LaunchImages/Default@3x.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/YourApp/README.txt
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/YourApp/android.txt
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/YourApp/pictures.kv
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/YourApp/shadow32.png
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/YourApp/images/5509213687_ffd18df0b9_b.jpg
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/YourApp/images/5552597274_de8b3fb5d2_b.jpg
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/YourApp/images/faust_github.jpg
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/{{ cookiecutter.project_name }}.xcodeproj/project.pbxproj
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/{{ cookiecutter.project_name }}.xcodeproj/project.xcworkspace/contents.xcworkspacedata
|
|
||||||
kivy_ios/tools/templates/{{ cookiecutter.project_name }}-ios/{{ cookiecutter.project_name }}/Images.xcassets/AppIcon.appiconset/Contents.json
|
|
|
@ -1 +0,0 @@
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[console_scripts]
|
|
||||||
toolchain = kivy_ios.toolchain:main
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
cookiecutter
|
|
||||||
pbxproj
|
|
||||||
Pillow
|
|
||||||
requests
|
|
||||||
sh
|
|
|
@ -1 +0,0 @@
|
||||||
kivy_ios
|
|
|
@ -1,46 +0,0 @@
|
||||||
"""
|
|
||||||
This module houses context managers to assist in the managing of state during
|
|
||||||
kivy-ios builds.
|
|
||||||
"""
|
|
||||||
from logging import getLogger
|
|
||||||
from contextlib import contextmanager
|
|
||||||
from os import getcwd, chdir, environ
|
|
||||||
from os.path import expanduser
|
|
||||||
|
|
||||||
|
|
||||||
logger = getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
|
||||||
def cd(newdir):
|
|
||||||
"""
|
|
||||||
Set the current working directory to `newdir` for the duration of the
|
|
||||||
context.
|
|
||||||
"""
|
|
||||||
prevdir = getcwd()
|
|
||||||
logger.info("cd {}".format(newdir))
|
|
||||||
chdir(expanduser(newdir))
|
|
||||||
try:
|
|
||||||
yield
|
|
||||||
finally:
|
|
||||||
logger.info("cd {}".format(prevdir))
|
|
||||||
chdir(prevdir)
|
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
|
||||||
def python_path(newdir):
|
|
||||||
"""
|
|
||||||
Set the PYTHONPATH environmnet variable to `newdir` for the duraiton of the
|
|
||||||
context.
|
|
||||||
"""
|
|
||||||
prevdir = environ.get("PYTHONPATH")
|
|
||||||
logger.debug("Setting PYTHONPATH to {}".format(newdir))
|
|
||||||
environ["PYTHONPATH"] = newdir
|
|
||||||
try:
|
|
||||||
yield
|
|
||||||
finally:
|
|
||||||
logger.debug("Setting PYTHONPATH to {}".format(prevdir))
|
|
||||||
if prevdir is None:
|
|
||||||
environ.pop("PYTHONPATH")
|
|
||||||
else:
|
|
||||||
environ["PYTHONPATH"] = prevdir
|
|
|
@ -1,23 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import CythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
|
|
||||||
|
|
||||||
class AioHttpRecipe(CythonRecipe):
|
|
||||||
version = "3.5.4"
|
|
||||||
url = "https://pypi.python.org/packages/source/a/aiohttp/aiohttp-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = AioHttpRecipe()
|
|
|
@ -1,29 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import CythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
|
|
||||||
class AioupnpRecipe(CythonRecipe):
|
|
||||||
version = "0.0.17"
|
|
||||||
url = "https://pypi.python.org/packages/source/a/aioupnp/aioupnp-{version}.tar.gz"
|
|
||||||
depends = ["python", "defusedxml"]
|
|
||||||
|
|
||||||
def prebuild_arch(self, arch):
|
|
||||||
if self.has_marker("patched"):
|
|
||||||
return
|
|
||||||
self.apply_patch("exclude_netifaces.patch")
|
|
||||||
self.apply_patch("none_netifaces.patch")
|
|
||||||
self.set_marker("patched")
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = AioupnpRecipe()
|
|
|
@ -1,10 +0,0 @@
|
||||||
--- a/setup.py 2020-09-28 10:20:48.000000000 +0100
|
|
||||||
+++ b/setup.py 2020-09-28 10:21:12.000000000 +0100
|
|
||||||
@@ -36,7 +36,6 @@
|
|
||||||
packages=find_packages(exclude=('tests',)),
|
|
||||||
entry_points={'console_scripts': console_scripts},
|
|
||||||
install_requires=[
|
|
||||||
- 'netifaces',
|
|
||||||
'defusedxml'
|
|
||||||
]
|
|
||||||
)
|
|
|
@ -1,16 +0,0 @@
|
||||||
--- a/aioupnp/interfaces.py 2020-09-28 10:23:40.000000000 +0100
|
|
||||||
+++ b/aioupnp/interfaces.py 2020-09-28 10:23:56.000000000 +0100
|
|
||||||
@@ -1,12 +1,11 @@
|
|
||||||
import socket
|
|
||||||
from collections import OrderedDict
|
|
||||||
import typing
|
|
||||||
-import netifaces
|
|
||||||
from aioupnp.fault import UPnPError
|
|
||||||
|
|
||||||
|
|
||||||
def get_netifaces():
|
|
||||||
- return netifaces
|
|
||||||
+ return None
|
|
||||||
|
|
||||||
|
|
||||||
def ifaddresses(iface: str) -> typing.Dict[int, typing.List[typing.Dict[str, str]]]:
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class AppdirsRecipe(PythonRecipe):
|
|
||||||
version = "1.4.3"
|
|
||||||
url = "https://pypi.python.org/packages/source/a/appdirs/appdirs-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = AppdirsRecipe()
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class Asn1CryptoRecipe(PythonRecipe):
|
|
||||||
version = "0.24.0"
|
|
||||||
url = "https://pypi.python.org/packages/source/a/asn1crypto/asn1crypto-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = Asn1CryptoRecipe()
|
|
|
@ -1,22 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
|
|
||||||
|
|
||||||
class AsyncTimeoutRecipe(PythonRecipe):
|
|
||||||
version = "3.0.1"
|
|
||||||
url = "https://pypi.python.org/packages/source/a/async-timeout/async-timeout-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = os.path.join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = os.path.join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = AsyncTimeoutRecipe()
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class AttrsRecipe(PythonRecipe):
|
|
||||||
version = "18.1.0"
|
|
||||||
url = "https://pypi.python.org/packages/source/a/attrs/attrs-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = AttrsRecipe()
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class Base58Recipe(PythonRecipe):
|
|
||||||
version = "1.0.0"
|
|
||||||
url = "https://pypi.python.org/packages/source/b/base58/base58-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = Base58Recipe()
|
|
|
@ -1,23 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
|
|
||||||
|
|
||||||
class CertifiRecipe(PythonRecipe):
|
|
||||||
version = "2020.6.20"
|
|
||||||
url = "https://pypi.python.org/packages/source/c/certifi/certifi-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = os.path.join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = os.path.join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = CertifiRecipe()
|
|
|
@ -1,51 +0,0 @@
|
||||||
from kivy_ios.toolchain import CythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
|
|
||||||
|
|
||||||
class CffiRecipe(CythonRecipe):
|
|
||||||
name = "cffi"
|
|
||||||
version = "1.14.3"
|
|
||||||
url = "https://pypi.python.org/packages/source/c/cffi/cffi-{version}.tar.gz"
|
|
||||||
library = "libcffi.a"
|
|
||||||
depends = ["host_cffi", "libffi", "pycparser"]
|
|
||||||
cythonize = False
|
|
||||||
|
|
||||||
def get_recipe_env(self, arch):
|
|
||||||
env = super(CffiRecipe, self).get_recipe_env(arch)
|
|
||||||
env["CFLAGS"] += " -I{}".format(join(self.ctx.dist_dir, "include", arch.arch, "libffi"))
|
|
||||||
env["LDFLAGS"] = " ".join([
|
|
||||||
env.get('CFLAGS', '')
|
|
||||||
])
|
|
||||||
return env
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
|
|
||||||
# manually create expected directory in build directory
|
|
||||||
scripts_dir = join("build", "scripts-3.8")
|
|
||||||
if not os.path.exists(scripts_dir):
|
|
||||||
os.makedirs(scripts_dir)
|
|
||||||
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "build_ext", _env=build_env)
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
# hack: copy _cffi_backend.so from hostpython
|
|
||||||
so_file = "_cffi_backend.cpython-38-darwin.so"
|
|
||||||
egg_name = "cffi-1.14.3-py3.8-macosx-10.15-x86_64.egg" # harded - needs to change
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3", "lib", "python3.8", "site-packages", egg_name)
|
|
||||||
dest_dir_main = join(self.ctx.dist_dir, "root", "python3", "lib", "python3.8", "site-packages")
|
|
||||||
|
|
||||||
src_dir = join(self.ctx.dist_dir, "hostpython3", "lib", "python3.8", "site-packages", egg_name)
|
|
||||||
sh.cp(join(src_dir, so_file), join(dest_dir, so_file))
|
|
||||||
sh.cp(join(src_dir, so_file), join(dest_dir_main, so_file))
|
|
||||||
|
|
||||||
|
|
||||||
recipe = CffiRecipe()
|
|
|
@ -1,23 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
|
|
||||||
|
|
||||||
class ChardetRecipe(PythonRecipe):
|
|
||||||
version = "3.0.4"
|
|
||||||
url = "https://pypi.python.org/packages/source/c/chardet/chardet-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = os.path.join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = os.path.join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = ChardetRecipe()
|
|
|
@ -1,76 +0,0 @@
|
||||||
import sh
|
|
||||||
import os
|
|
||||||
from os.path import join
|
|
||||||
|
|
||||||
from kivy_ios.toolchain import CythonRecipe, Recipe, shprint
|
|
||||||
from kivy_ios.context_managers import cd
|
|
||||||
|
|
||||||
|
|
||||||
class CoincurveRecipe(CythonRecipe):
|
|
||||||
version = "7.1.0"
|
|
||||||
url = "https://github.com/ofek/coincurve/archive/{version}.tar.gz"
|
|
||||||
depends = ["python3", "libffi", "cffi", "pycparser", "libsecp256k1"]
|
|
||||||
library = 'libcoincurve.a'
|
|
||||||
pre_build_ext = True
|
|
||||||
include_per_arch = True
|
|
||||||
|
|
||||||
def dest_dir(self):
|
|
||||||
return join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
|
|
||||||
def prebuild_arch(self, arch):
|
|
||||||
# common to all archs
|
|
||||||
if self.has_marker("patched"):
|
|
||||||
return
|
|
||||||
self.apply_patch("cross_compile.patch")
|
|
||||||
self.apply_patch("drop_setup_requires.patch")
|
|
||||||
self.apply_patch("find_lib.patch")
|
|
||||||
self.apply_patch("no-download.patch")
|
|
||||||
self.apply_patch("setup.py.patch")
|
|
||||||
self.set_marker("patched")
|
|
||||||
|
|
||||||
def get_recipe_env(self, arch):
|
|
||||||
env = arch.get_env()
|
|
||||||
# sets linker to use the correct gcc (cross compiler)
|
|
||||||
env['TOOLCHAIN_PREFIX'] = arch.triple
|
|
||||||
env['LDSHARED'] = env['CC'] + ' -pthread -shared -Wl'
|
|
||||||
libsecp256k1 = self.get_recipe('libsecp256k1', self.ctx)
|
|
||||||
libsecp256k1_dir = libsecp256k1.get_build_dir(arch.arch)
|
|
||||||
env['LDFLAGS'] += ' -L{}'.format(os.path.join(libsecp256k1_dir, '.libs'))
|
|
||||||
env['CFLAGS'] += ' -I' + os.path.join(libsecp256k1_dir, 'include')
|
|
||||||
|
|
||||||
target_python = Recipe.get_recipe('python3', self.ctx).get_build_dir(arch.arch)
|
|
||||||
env['LDFLAGS'] += ' -L' + target_python
|
|
||||||
|
|
||||||
print(env['LDFLAGS'])
|
|
||||||
|
|
||||||
python_version = '3.8'
|
|
||||||
env["PYTHONPATH"] = join(self.dest_dir(), "lib", "python3.8", "site-packages")
|
|
||||||
env['PYTHON_ROOT'] = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
env['CFLAGS'] += ' -I' + env['PYTHON_ROOT'] + '/include/python{}'.format(python_version)
|
|
||||||
env['LDFLAGS'] += " -lpython{}".format(python_version)
|
|
||||||
env['LDFLAGS'] += " -lsecp256k1 -lssl -lcrypto -lffi -lz"
|
|
||||||
return env
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
def postbuild_arch(self, arch):
|
|
||||||
py_arch = arch.arch
|
|
||||||
if py_arch == "arm64":
|
|
||||||
py_arch = "x86_64"
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
build_env = self.get_recipe_env(arch)
|
|
||||||
tmp_folder = 'build/temp.macosx-10.15-{}-3.8/build/temp.macosx-10.15-{}-3.8'.format(py_arch, py_arch)
|
|
||||||
shprint(sh.Command(build_env['AR']),
|
|
||||||
"-q",
|
|
||||||
"{}/{}".format(self.build_dir, self.library),
|
|
||||||
"{}/{}/_libsecp256k1.o".format(self.build_dir, tmp_folder))
|
|
||||||
|
|
||||||
recipe = CoincurveRecipe()
|
|
|
@ -1,12 +0,0 @@
|
||||||
diff --git a/setup.py b/setup.py
|
|
||||||
index c224fb2..bf925bd 100644
|
|
||||||
--- a/setup.py
|
|
||||||
+++ b/setup.py
|
|
||||||
@@ -182,6 +182,7 @@ class build_clib(_build_clib):
|
|
||||||
'--disable-dependency-tracking',
|
|
||||||
'--with-pic',
|
|
||||||
'--enable-module-recovery',
|
|
||||||
+ "--host=%s" % os.environ['TOOLCHAIN_PREFIX'],
|
|
||||||
'--disable-jni',
|
|
||||||
'--prefix',
|
|
||||||
os.path.abspath(self.build_clib),
|
|
|
@ -1,12 +0,0 @@
|
||||||
diff --git a/setup.py b/setup.py
|
|
||||||
index c224fb2..466e789 100644
|
|
||||||
--- a/setup.py
|
|
||||||
+++ b/setup.py
|
|
||||||
@@ -250,7 +250,6 @@ else:
|
|
||||||
def has_c_libraries(self):
|
|
||||||
return not has_system_lib()
|
|
||||||
setup_kwargs = dict(
|
|
||||||
- setup_requires=['cffi>=1.3.0', 'pytest-runner>=2.6.2'],
|
|
||||||
ext_package='coincurve',
|
|
||||||
cffi_modules=['_cffi_build/build.py:ffi'],
|
|
||||||
cmdclass={
|
|
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/setup_support.py b/setup_support.py
|
|
||||||
index e7a4f2e..72f0c4d 100644
|
|
||||||
--- a/setup_support.py
|
|
||||||
+++ b/setup_support.py
|
|
||||||
@@ -68,6 +69,8 @@ def build_flags(library, type_, path):
|
|
||||||
|
|
||||||
|
|
||||||
def _find_lib():
|
|
||||||
+ # we're picking up the recipe one
|
|
||||||
+ return True
|
|
||||||
from cffi import FFI
|
|
||||||
ffi = FFI()
|
|
||||||
try:
|
|
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/setup.py b/setup.py
|
|
||||||
index c224fb2..d5f6d1a 100644
|
|
||||||
--- a/setup.py
|
|
||||||
+++ b/setup.py
|
|
||||||
@@ -51,6 +51,8 @@ if [int(i) for i in setuptools_version.split('.', 2)[:2]] < [3, 3]:
|
|
||||||
|
|
||||||
|
|
||||||
def download_library(command):
|
|
||||||
+ # we will use the custom libsecp256k1 recipe
|
|
||||||
+ return
|
|
||||||
if command.dry_run:
|
|
||||||
return
|
|
||||||
libdir = absolute('libsecp256k1')
|
|
|
@ -1,22 +0,0 @@
|
||||||
From bf3a0684e9b0af29d9777f61d6e7e1d3cc0f2803 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kieran Prasch <kieranprasch@gmail.com>
|
|
||||||
Date: Thu, 19 Jul 2018 14:11:48 -0700
|
|
||||||
Subject: [PATCH] Exclude tests in setup.py
|
|
||||||
|
|
||||||
---
|
|
||||||
setup.py | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/setup.py b/setup.py
|
|
||||||
index 0b579f1..0a793ed 100644
|
|
||||||
--- a/setup.py
|
|
||||||
+++ b/setup.py
|
|
||||||
@@ -277,7 +277,7 @@ def has_c_libraries(self):
|
|
||||||
install_requires=['asn1crypto', 'cffi>=1.3.0'],
|
|
||||||
tests_require=['pytest>=2.8.7'],
|
|
||||||
|
|
||||||
- packages=find_packages(exclude=('_cffi_build', '_cffi_build.*', 'libsecp256k1')),
|
|
||||||
+ packages=find_packages(exclude=('_cffi_build', '_cffi_build.*', 'libsecp256k1', 'tests')),
|
|
||||||
|
|
||||||
distclass=Distribution,
|
|
||||||
zip_safe=False,
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class ColoramaRecipe(PythonRecipe):
|
|
||||||
version = "0.3.7"
|
|
||||||
url = "https://pypi.python.org/packages/source/c/colorama/colorama-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = ColoramaRecipe()
|
|
|
@ -1,79 +0,0 @@
|
||||||
from os.path import join
|
|
||||||
from kivy_ios.toolchain import CythonRecipe, Recipe, shprint
|
|
||||||
from kivy_ios.context_managers import cd
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
|
|
||||||
|
|
||||||
class CryptographyRecipe(CythonRecipe):
|
|
||||||
name = "cryptography"
|
|
||||||
version = "3.1.1"
|
|
||||||
url = "https://pypi.python.org/packages/source/c/cryptography/cryptography-{version}.tar.gz"
|
|
||||||
library = "libcryptography.a"
|
|
||||||
depends = ["host_setuptools3", "host_cffi", "cffi", "asn1crypto", "idna", "six"]
|
|
||||||
python_depends = ["setuptools"]
|
|
||||||
cythonize = False
|
|
||||||
pre_build_ext = True
|
|
||||||
include_per_arch = True
|
|
||||||
|
|
||||||
def prebuild_arch(self, arch):
|
|
||||||
if self.has_marker("patched"):
|
|
||||||
return
|
|
||||||
self.apply_patch("osrandom.patch")
|
|
||||||
self.set_marker("patched")
|
|
||||||
|
|
||||||
def dest_dir(self):
|
|
||||||
return join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
|
|
||||||
def get_recipe_env(self, arch):
|
|
||||||
env = super(CryptographyRecipe, self).get_recipe_env(arch)
|
|
||||||
r = self.get_recipe('openssl', self.ctx)
|
|
||||||
openssl_dir = r.get_build_dir(arch.arch)
|
|
||||||
target_python = Recipe.get_recipe('python3', self.ctx).get_build_dir(arch.arch)
|
|
||||||
env['TOOLCHAIN_PREFIX'] = arch.triple
|
|
||||||
env['LDSHARED'] = env['CC'] + ' -pthread -shared -Wl'
|
|
||||||
env['LDFLAGS'] += ' -L' + target_python
|
|
||||||
|
|
||||||
env['PYTHON_ROOT'] = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
env['CFLAGS'] += ' -I' + env['PYTHON_ROOT'] + '/include/python3.8' + \
|
|
||||||
' -I' + join(openssl_dir, 'include') + \
|
|
||||||
' -I' + join(self.ctx.dist_dir, "include", arch.arch, "libffi")
|
|
||||||
env['LDFLAGS'] += ' -L' + env['PYTHON_ROOT'] + '/lib' + \
|
|
||||||
' -L' + openssl_dir + \
|
|
||||||
' -lpython3.8' + \
|
|
||||||
' -lssl' + \
|
|
||||||
' -lcrypto' + \
|
|
||||||
' -lffi' + \
|
|
||||||
' -lcffi ' + \
|
|
||||||
' -lz'
|
|
||||||
return env
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
with cd(build_dir):
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
def postbuild_arch(self, arch):
|
|
||||||
py_arch = arch.arch
|
|
||||||
if py_arch == "arm64":
|
|
||||||
py_arch = "x86_64"
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
build_env = self.get_recipe_env(arch)
|
|
||||||
tmp_folder = 'build/temp.macosx-10.15-{}-3.8/build/temp.macosx-10.15-{}-3.8'.format(py_arch, py_arch)
|
|
||||||
for o_file in [
|
|
||||||
"_openssl.o",
|
|
||||||
"_padding.o",
|
|
||||||
]:
|
|
||||||
shprint(sh.Command(build_env['AR']),
|
|
||||||
"-q",
|
|
||||||
"{}/{}".format(self.build_dir, self.library),
|
|
||||||
"{}/{}/{}".format(self.build_dir, tmp_folder, o_file))
|
|
||||||
|
|
||||||
|
|
||||||
recipe = CryptographyRecipe()
|
|
|
@ -1,16 +0,0 @@
|
||||||
--- cryptography-2.2.2/src/_cffi_src/openssl/src/osrandom_engine.h 2018-03-27 15:12:05.000000000 +0100
|
|
||||||
+++ cryptography-2.2.2-patch/src/_cffi_src/openssl/src/osrandom_engine.h 2018-06-02 05:06:04.000000000 +0100
|
|
||||||
@@ -11,13 +11,6 @@
|
|
||||||
#include <sys/syscall.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- #ifdef __APPLE__
|
|
||||||
- #include <sys/random.h>
|
|
||||||
- /* To support weak linking we need to declare this as a weak import even if
|
|
||||||
- * it's not present in sys/random (e.g. macOS < 10.12). */
|
|
||||||
- extern int getentropy(void *buffer, size_t size) __attribute((weak_import));
|
|
||||||
- #endif
|
|
||||||
-
|
|
||||||
#ifdef __linux__
|
|
||||||
/* for SYS_getrandom */
|
|
||||||
#include <sys/syscall.h>
|
|
|
@ -1,12 +0,0 @@
|
||||||
from kivy_ios.toolchain import CythonRecipe
|
|
||||||
|
|
||||||
|
|
||||||
class CurlyRecipe(CythonRecipe):
|
|
||||||
version = "master"
|
|
||||||
url = "https://github.com/tito/curly/archive/{version}.zip"
|
|
||||||
library = "libcurly.a"
|
|
||||||
depends = ["python", "libcurl", "sdl2", "sdl2_image"]
|
|
||||||
pre_build_ext = True
|
|
||||||
|
|
||||||
|
|
||||||
recipe = CurlyRecipe()
|
|
|
@ -1,24 +0,0 @@
|
||||||
"""
|
|
||||||
Author: Lawrence Du, Lukasz Mach
|
|
||||||
E-mail: larrydu88@gmail.com, maho@pagema.net
|
|
||||||
"""
|
|
||||||
|
|
||||||
from kivy_ios.toolchain import CythonRecipe
|
|
||||||
|
|
||||||
|
|
||||||
class CymunkRecipe(CythonRecipe):
|
|
||||||
version = 'master'
|
|
||||||
url = 'https://github.com/kivy/cymunk/archive/{version}.zip'
|
|
||||||
name = 'cymunk'
|
|
||||||
pre_build_ext = True
|
|
||||||
library = 'libcymunk.a'
|
|
||||||
|
|
||||||
depends = ['python']
|
|
||||||
|
|
||||||
def get_recipe_env(self, arch):
|
|
||||||
ret = super(CymunkRecipe, self).get_recipe_env(arch)
|
|
||||||
ret['CFLAGS'] += ' -Wno-implicit-function-declaration'
|
|
||||||
return ret
|
|
||||||
|
|
||||||
|
|
||||||
recipe = CymunkRecipe()
|
|
|
@ -1,23 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
|
|
||||||
|
|
||||||
class DefusedXmlRecipe(PythonRecipe):
|
|
||||||
version = "0.6.0"
|
|
||||||
url = "https://pypi.python.org/packages/source/d/defusedxml/defusedxml-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = os.path.join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = os.path.join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = DefusedXmlRecipe()
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class DocoptRecipe(PythonRecipe):
|
|
||||||
version = "0.6.2"
|
|
||||||
url = "https://pypi.python.org/packages/source/d/docopt/docopt-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = DocoptRecipe()
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class EcdsaRecipe(PythonRecipe):
|
|
||||||
version = "0.13"
|
|
||||||
url = "https://pypi.python.org/packages/source/e/ecdsa/ecdsa-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = EcdsaRecipe()
|
|
|
@ -1,41 +0,0 @@
|
||||||
diff --git a/ffpyplayer/clib/misc.c b/ffpyplayer/clib/misc.c
|
|
||||||
index 55181d1..6011ffa 100644
|
|
||||||
--- a/ffpyplayer/clib/misc.c
|
|
||||||
+++ b/ffpyplayer/clib/misc.c
|
|
||||||
@@ -1,8 +1,7 @@
|
|
||||||
-
|
|
||||||
#include "misc.h"
|
|
||||||
|
|
||||||
#define FLAGS (o->type == AV_OPT_TYPE_FLAGS) ? AV_DICT_APPEND : 0
|
|
||||||
-void print_all_libs_info(int flags, int level)
|
|
||||||
+void __attribute__ ((visibility ("hidden"))) print_all_libs_info(int flags, int level)
|
|
||||||
{
|
|
||||||
#if CONFIG_AVUTIL
|
|
||||||
PRINT_LIB_INFO(avutil, AVUTIL, flags, level);
|
|
||||||
@@ -30,7 +29,7 @@ void print_all_libs_info(int flags, int level)
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
-const AVOption *opt_find(void *obj, const char *name, const char *unit,
|
|
||||||
+const AVOption __attribute__ ((visibility ("hidden"))) *opt_find(void *obj, const char *name, const char *unit,
|
|
||||||
int opt_flags, int search_flags)
|
|
||||||
{
|
|
||||||
const AVOption *o = av_opt_find(obj, name, unit, opt_flags, search_flags);
|
|
||||||
@@ -40,7 +39,7 @@ const AVOption *opt_find(void *obj, const char *name, const char *unit,
|
|
||||||
}
|
|
||||||
|
|
||||||
#define FLAGS (o->type == AV_OPT_TYPE_FLAGS) ? AV_DICT_APPEND : 0
|
|
||||||
-int opt_default(const char *opt, const char *arg,
|
|
||||||
+int __attribute__ ((visibility ("hidden"))) opt_default(const char *opt, const char *arg,
|
|
||||||
struct SwsContext *sws_opts, AVDictionary **sws_dict, AVDictionary **swr_opts,
|
|
||||||
AVDictionary **resample_opts, AVDictionary **format_opts, AVDictionary **codec_opts)
|
|
||||||
{
|
|
||||||
@@ -140,7 +139,7 @@ int opt_default(const char *opt, const char *arg,
|
|
||||||
return AVERROR_OPTION_NOT_FOUND;
|
|
||||||
}
|
|
||||||
|
|
||||||
-int get_plane_sizes(int size[4], int required_plane[4], enum AVPixelFormat pix_fmt,
|
|
||||||
+int __attribute__ ((visibility ("hidden"))) get_plane_sizes(int size[4], int required_plane[4], enum AVPixelFormat pix_fmt,
|
|
||||||
int height, const int linesizes[4])
|
|
||||||
{
|
|
||||||
int i, total_size;
|
|
|
@ -1,23 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
|
|
||||||
|
|
||||||
class HachoirRecipe(PythonRecipe):
|
|
||||||
version = "3.1.1"
|
|
||||||
url = "https://pypi.python.org/packages/source/h/hachoir/hachoir-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = os.path.join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = os.path.join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = HachoirRecipe()
|
|
|
@ -1,61 +0,0 @@
|
||||||
from os.path import join
|
|
||||||
from kivy_ios.toolchain import Recipe, shprint
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
|
|
||||||
libffi_tpl = """
|
|
||||||
prefix=%PREFIX%
|
|
||||||
exec_prefix=${prefix}
|
|
||||||
libdir=${exec_prefix}/build/Release
|
|
||||||
includedir=${libdir}/build_macosx-x86_64/include
|
|
||||||
|
|
||||||
Name: libffi
|
|
||||||
Description: Library supporting Foreign Function Interfaces
|
|
||||||
Version: %VERSION%
|
|
||||||
Libs: -L${libdir} -lffi
|
|
||||||
Cflags: -I${includedir}
|
|
||||||
"""
|
|
||||||
|
|
||||||
class HostCffiRecipe(Recipe):
|
|
||||||
name = "host_cffi"
|
|
||||||
version = "1.14.3"
|
|
||||||
archs = ["x86_64"]
|
|
||||||
url = "https://pypi.python.org/packages/source/c/cffi/cffi-{version}.tar.gz"
|
|
||||||
depends = ["hostlibffi", "pycparser"]
|
|
||||||
|
|
||||||
def get_recipe_env(self, arch):
|
|
||||||
sdk_path = sh.xcrun("--sdk", "macosx", "--show-sdk-path").strip()
|
|
||||||
env = super(HostCffiRecipe, self).get_recipe_env(arch)
|
|
||||||
env["CC"] = "clang -Qunused-arguments -fcolor-diagnostics"
|
|
||||||
env["LDFLAGS"] = " ".join([
|
|
||||||
"-undefined dynamic_lookup",
|
|
||||||
#"-shared",
|
|
||||||
"-L{}".format(join(self.ctx.dist_dir, "hostlibffi", "usr", "local", "lib"))
|
|
||||||
])
|
|
||||||
env["CFLAGS"] = " ".join([
|
|
||||||
"--sysroot={}".format(sdk_path),
|
|
||||||
"-I{}".format(join(self.ctx.dist_dir, "hostlibffi", "usr", "local", "include"))
|
|
||||||
])
|
|
||||||
return env
|
|
||||||
|
|
||||||
def prebuild_arch(self, arch):
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
build_env = self.get_recipe_env(arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
|
|
||||||
# generate a fake libffi pkg-config to let cffi use it
|
|
||||||
hostlibffi = Recipe.get_recipe("hostlibffi", self.ctx)
|
|
||||||
with open("libffi.pc", "w") as fd:
|
|
||||||
tpl = libffi_tpl.replace("%PREFIX%",
|
|
||||||
hostlibffi.get_build_dir(arch.arch))
|
|
||||||
tpl = tpl.replace("%VERSION%", hostlibffi.version)
|
|
||||||
fd.write(tpl)
|
|
||||||
|
|
||||||
build_env["PKG_CONFIG"] = "/usr/local/bin/pkg-config"
|
|
||||||
build_env["PKG_CONFIG_PATH"] = build_dir
|
|
||||||
|
|
||||||
shprint(hostpython, "setup.py", "build_ext", _env=build_env)
|
|
||||||
shprint(hostpython, "setup.py", "install", _env=build_env)
|
|
||||||
|
|
||||||
recipe = HostCffiRecipe()
|
|
|
@ -1,34 +0,0 @@
|
||||||
from kivy_ios.toolchain import Recipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh
|
|
||||||
import os
|
|
||||||
import shutil
|
|
||||||
|
|
||||||
|
|
||||||
class HostSetuptools(Recipe):
|
|
||||||
depends = ["openssl", "hostpython"]
|
|
||||||
archs = ["x86_64"]
|
|
||||||
url = "setuptools"
|
|
||||||
|
|
||||||
def prebuild_arch(self, arch):
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
sh.curl("-O", "https://bootstrap.pypa.io/ez_setup.py")
|
|
||||||
shprint(hostpython, "./ez_setup.py")
|
|
||||||
# Extract setuptools egg and remove .pth files. Otherwise subsequent
|
|
||||||
# python package installations using setuptools will raise exceptions.
|
|
||||||
# Setuptools version 28.3.0
|
|
||||||
site_packages_path = join(
|
|
||||||
self.ctx.dist_dir, 'hostpython3',
|
|
||||||
'lib', 'python3.8', 'site-packages')
|
|
||||||
os.chdir(site_packages_path)
|
|
||||||
with open('setuptools.pth', 'r') as f:
|
|
||||||
setuptools_egg_path = f.read().strip('./').strip('\n')
|
|
||||||
unzip = sh.Command('unzip')
|
|
||||||
shprint(unzip, '-o', setuptools_egg_path)
|
|
||||||
os.remove(setuptools_egg_path)
|
|
||||||
os.remove('setuptools.pth')
|
|
||||||
os.remove('easy-install.pth')
|
|
||||||
shutil.rmtree('EGG-INFO')
|
|
||||||
|
|
||||||
|
|
||||||
recipe = HostSetuptools()
|
|
|
@ -1,24 +0,0 @@
|
||||||
from kivy_ios.toolchain import Recipe, shprint, cache_execution
|
|
||||||
from kivy_ios.context_managers import cd, python_path
|
|
||||||
import sh
|
|
||||||
|
|
||||||
|
|
||||||
class HostSetuptools3(Recipe):
|
|
||||||
depends = ["openssl", "hostpython3", "python3"]
|
|
||||||
archs = ["x86_64"]
|
|
||||||
version = '40.9.0'
|
|
||||||
url = 'https://pypi.python.org/packages/source/s/setuptools/setuptools-{version}.zip'
|
|
||||||
|
|
||||||
@cache_execution
|
|
||||||
def install(self):
|
|
||||||
arch = self.filtered_archs[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
|
|
||||||
with python_path(self.ctx.site_packages_dir):
|
|
||||||
with cd(build_dir):
|
|
||||||
shprint(hostpython, "setup.py", "install",
|
|
||||||
f"--prefix={self.ctx.python_prefix}")
|
|
||||||
|
|
||||||
|
|
||||||
recipe = HostSetuptools3()
|
|
|
@ -1 +0,0 @@
|
||||||
Make toolchain happy
|
|
|
@ -1,12 +0,0 @@
|
||||||
diff -Nru libffi-3.2.1/generate-darwin-source-and-headers.py libffi-3.2.1-new/generate-darwin-source-and-headers.py
|
|
||||||
--- libffi-3.2.1/generate-darwin-source-and-headers.py 2014-11-08 13:47:24.000000000 +0100
|
|
||||||
+++ libffi-3.2.1-new/generate-darwin-source-and-headers.py 2020-05-06 10:30:46.000000000 +0200
|
|
||||||
@@ -194,7 +194,7 @@
|
|
||||||
build_target(desktop64_platform, platform_headers)
|
|
||||||
|
|
||||||
mkdir_p('darwin_common/include')
|
|
||||||
- for header_name, tag_tuples in platform_headers.iteritems():
|
|
||||||
+ for header_name, tag_tuples in platform_headers.items():
|
|
||||||
basename, suffix = os.path.splitext(header_name)
|
|
||||||
with open(os.path.join('darwin_common/include', header_name), 'w') as header:
|
|
||||||
for tag_tuple in tag_tuples:
|
|
|
@ -1,391 +0,0 @@
|
||||||
--- libffi-3.2.1.old/generate-darwin-source-and-headers.py 2018-10-26 17:08:07.000000000 +0200
|
|
||||||
+++ libffi-3.2.1/generate-darwin-source-and-headers.py 2018-10-26 17:08:50.000000000 +0200
|
|
||||||
@@ -174,23 +174,23 @@
|
|
||||||
|
|
||||||
if generate_ios:
|
|
||||||
make_tramp()
|
|
||||||
- copy_src_platform_files(simulator_platform)
|
|
||||||
+ #copy_src_platform_files(simulator_platform)
|
|
||||||
copy_src_platform_files(simulator64_platform)
|
|
||||||
copy_src_platform_files(device_platform)
|
|
||||||
copy_src_platform_files(device64_platform)
|
|
||||||
if generate_osx:
|
|
||||||
- copy_src_platform_files(desktop32_platform)
|
|
||||||
+ #copy_src_platform_files(desktop32_platform)
|
|
||||||
copy_src_platform_files(desktop64_platform)
|
|
||||||
|
|
||||||
platform_headers = collections.defaultdict(set)
|
|
||||||
|
|
||||||
if generate_ios:
|
|
||||||
- build_target(simulator_platform, platform_headers)
|
|
||||||
+ #build_target(simulator_platform, platform_headers)
|
|
||||||
build_target(simulator64_platform, platform_headers)
|
|
||||||
build_target(device_platform, platform_headers)
|
|
||||||
build_target(device64_platform, platform_headers)
|
|
||||||
if generate_osx:
|
|
||||||
- build_target(desktop32_platform, platform_headers)
|
|
||||||
+ #build_target(desktop32_platform, platform_headers)
|
|
||||||
build_target(desktop64_platform, platform_headers)
|
|
||||||
|
|
||||||
mkdir_p('darwin_common/include')
|
|
||||||
--- libffi-3.2.1.old/configure 2014-11-12 12:59:57.000000000 +0100
|
|
||||||
+++ libffi-3.2.1/configure 2018-10-26 09:02:12.000000000 +0200
|
|
||||||
@@ -18725,11 +18725,11 @@
|
|
||||||
toolexecdir="${libdir}"/gcc-lib/'$(target_alias)'
|
|
||||||
toolexeclibdir="${libdir}"
|
|
||||||
fi
|
|
||||||
- multi_os_directory=`$CC $CFLAGS -print-multi-os-directory`
|
|
||||||
- case $multi_os_directory in
|
|
||||||
- .) ;; # Avoid trailing /.
|
|
||||||
- ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
|
|
||||||
- esac
|
|
||||||
+ # multi_os_directory=`$CC $CFLAGS -print-multi-os-directory`
|
|
||||||
+ # case $multi_os_directory in
|
|
||||||
+ # .) ;; # Avoid trailing /.
|
|
||||||
+ # ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
|
|
||||||
+ # esac
|
|
||||||
|
|
||||||
else
|
|
||||||
toolexeclibdir="${libdir}"
|
|
||||||
--- libffi-3.2.1.old/configure.ac 2014-11-12 12:56:51.000000000 +0100
|
|
||||||
+++ libffi-3.2.1/configure.ac 2018-10-26 09:00:50.000000000 +0200
|
|
||||||
@@ -601,11 +601,11 @@
|
|
||||||
toolexecdir="${libdir}"/gcc-lib/'$(target_alias)'
|
|
||||||
toolexeclibdir="${libdir}"
|
|
||||||
fi
|
|
||||||
- multi_os_directory=`$CC $CFLAGS -print-multi-os-directory`
|
|
||||||
- case $multi_os_directory in
|
|
||||||
- .) ;; # Avoid trailing /.
|
|
||||||
- ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
|
|
||||||
- esac
|
|
||||||
+ # multi_os_directory=`$CC $CFLAGS -print-multi-os-directory`
|
|
||||||
+ # case $multi_os_directory in
|
|
||||||
+ # .) ;; # Avoid trailing /.
|
|
||||||
+ # ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
|
|
||||||
+ # esac
|
|
||||||
AC_SUBST(toolexecdir)
|
|
||||||
else
|
|
||||||
toolexeclibdir="${libdir}"
|
|
||||||
--- libffi-3.2.1.old/libffi.xcodeproj/project.pbxproj 2018-10-26 17:31:30.000000000 +0200
|
|
||||||
+++ libffi-3.2.1/libffi.xcodeproj/project.pbxproj 2018-10-26 17:30:17.000000000 +0200
|
|
||||||
@@ -24,20 +24,11 @@
|
|
||||||
DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA716F187F1D9B00A76262 /* ffi_armv7.c */; };
|
|
||||||
DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7170187F1D9B00A76262 /* sysv_armv7.S */; };
|
|
||||||
DBFA717B187F1D9B00A76262 /* trampoline_armv7.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */; };
|
|
||||||
- DBFA717C187F1D9B00A76262 /* darwin64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */; };
|
|
||||||
- DBFA717D187F1D9B00A76262 /* darwin_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7174187F1D9B00A76262 /* darwin_i386.S */; };
|
|
||||||
- DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */; };
|
|
||||||
- DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA7176187F1D9B00A76262 /* ffi_i386.c */; };
|
|
||||||
- DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7182187F1DA100A76262 /* ffi_i386.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
|
||||||
DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7183187F1DA100A76262 /* ffi_x86_64.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
|
||||||
- DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7184187F1DA100A76262 /* fficonfig_i386.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
|
||||||
DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
|
||||||
- DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7186187F1DA100A76262 /* ffitarget_i386.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
|
||||||
DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
|
||||||
DBFA7194187F1DA100A76262 /* darwin64_x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */; };
|
|
||||||
- DBFA7195187F1DA100A76262 /* darwin_i386.S in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718B187F1DA100A76262 /* darwin_i386.S */; };
|
|
||||||
DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */; };
|
|
||||||
- DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */ = {isa = PBXBuildFile; fileRef = DBFA718D187F1DA100A76262 /* ffi_i386.c */; };
|
|
||||||
/* End PBXBuildFile section */
|
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
|
||||||
@@ -81,20 +72,11 @@
|
|
||||||
DBFA716F187F1D9B00A76262 /* ffi_armv7.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_armv7.c; sourceTree = "<group>"; };
|
|
||||||
DBFA7170187F1D9B00A76262 /* sysv_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = sysv_armv7.S; sourceTree = "<group>"; };
|
|
||||||
DBFA7171187F1D9B00A76262 /* trampoline_armv7.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = trampoline_armv7.S; sourceTree = "<group>"; };
|
|
||||||
- DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64_x86_64.S; sourceTree = "<group>"; };
|
|
||||||
- DBFA7174187F1D9B00A76262 /* darwin_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin_i386.S; sourceTree = "<group>"; };
|
|
||||||
- DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = "<group>"; };
|
|
||||||
- DBFA7176187F1D9B00A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = "<group>"; };
|
|
||||||
- DBFA7182187F1DA100A76262 /* ffi_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_i386.h; sourceTree = "<group>"; };
|
|
||||||
DBFA7183187F1DA100A76262 /* ffi_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_x86_64.h; sourceTree = "<group>"; };
|
|
||||||
- DBFA7184187F1DA100A76262 /* fficonfig_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_i386.h; sourceTree = "<group>"; };
|
|
||||||
DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig_x86_64.h; sourceTree = "<group>"; };
|
|
||||||
- DBFA7186187F1DA100A76262 /* ffitarget_i386.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_i386.h; sourceTree = "<group>"; };
|
|
||||||
DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffitarget_x86_64.h; sourceTree = "<group>"; };
|
|
||||||
DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin64_x86_64.S; sourceTree = "<group>"; };
|
|
||||||
- DBFA718B187F1DA100A76262 /* darwin_i386.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = darwin_i386.S; sourceTree = "<group>"; };
|
|
||||||
DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi64_x86_64.c; sourceTree = "<group>"; };
|
|
||||||
- DBFA718D187F1DA100A76262 /* ffi_i386.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ffi_i386.c; sourceTree = "<group>"; };
|
|
||||||
/* End PBXFileReference section */
|
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
|
||||||
@@ -182,7 +164,6 @@
|
|
||||||
children = (
|
|
||||||
DBFA716B187F1D9B00A76262 /* aarch64 */,
|
|
||||||
DBFA716E187F1D9B00A76262 /* arm */,
|
|
||||||
- DBFA7172187F1D9B00A76262 /* x86 */,
|
|
||||||
);
|
|
||||||
path = src;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
@@ -206,17 +187,6 @@
|
|
||||||
path = arm;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
- DBFA7172187F1D9B00A76262 /* x86 */ = {
|
|
||||||
- isa = PBXGroup;
|
|
||||||
- children = (
|
|
||||||
- DBFA7173187F1D9B00A76262 /* darwin64_x86_64.S */,
|
|
||||||
- DBFA7174187F1D9B00A76262 /* darwin_i386.S */,
|
|
||||||
- DBFA7175187F1D9B00A76262 /* ffi64_x86_64.c */,
|
|
||||||
- DBFA7176187F1D9B00A76262 /* ffi_i386.c */,
|
|
||||||
- );
|
|
||||||
- path = x86;
|
|
||||||
- sourceTree = "<group>";
|
|
||||||
- };
|
|
||||||
DBFA7180187F1DA100A76262 /* darwin_osx */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
@@ -229,11 +199,8 @@
|
|
||||||
DBFA7181187F1DA100A76262 /* include */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
- DBFA7182187F1DA100A76262 /* ffi_i386.h */,
|
|
||||||
DBFA7183187F1DA100A76262 /* ffi_x86_64.h */,
|
|
||||||
- DBFA7184187F1DA100A76262 /* fficonfig_i386.h */,
|
|
||||||
DBFA7185187F1DA100A76262 /* fficonfig_x86_64.h */,
|
|
||||||
- DBFA7186187F1DA100A76262 /* ffitarget_i386.h */,
|
|
||||||
DBFA7187187F1DA100A76262 /* ffitarget_x86_64.h */,
|
|
||||||
);
|
|
||||||
path = include;
|
|
||||||
@@ -251,9 +218,7 @@
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
DBFA718A187F1DA100A76262 /* darwin64_x86_64.S */,
|
|
||||||
- DBFA718B187F1DA100A76262 /* darwin_i386.S */,
|
|
||||||
DBFA718C187F1DA100A76262 /* ffi64_x86_64.c */,
|
|
||||||
- DBFA718D187F1DA100A76262 /* ffi_i386.c */,
|
|
||||||
);
|
|
||||||
path = x86;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
@@ -269,12 +234,9 @@
|
|
||||||
DBFA714D187F1D8600A76262 /* ffitarget.h in Headers */,
|
|
||||||
DBFA714B187F1D8600A76262 /* ffi_common.h in Headers */,
|
|
||||||
DBFA718F187F1DA100A76262 /* ffi_x86_64.h in Headers */,
|
|
||||||
- DBFA718E187F1DA100A76262 /* ffi_i386.h in Headers */,
|
|
||||||
- DBFA7192187F1DA100A76262 /* ffitarget_i386.h in Headers */,
|
|
||||||
DBFA7193187F1DA100A76262 /* ffitarget_x86_64.h in Headers */,
|
|
||||||
DBFA714C187F1D8600A76262 /* fficonfig.h in Headers */,
|
|
||||||
DBFA7191187F1DA100A76262 /* fficonfig_x86_64.h in Headers */,
|
|
||||||
- DBFA7190187F1DA100A76262 /* fficonfig_i386.h in Headers */,
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
};
|
|
||||||
@@ -321,7 +283,7 @@
|
|
||||||
DB13B15C1849DEB70010F42D /* Project object */ = {
|
|
||||||
isa = PBXProject;
|
|
||||||
attributes = {
|
|
||||||
- LastUpgradeCheck = 0510;
|
|
||||||
+ LastUpgradeCheck = 1000;
|
|
||||||
};
|
|
||||||
buildConfigurationList = DB13B15F1849DEB70010F42D /* Build configuration list for PBXProject "libffi" */;
|
|
||||||
compatibilityVersion = "Xcode 3.2";
|
|
||||||
@@ -366,7 +328,7 @@
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
- shellScript = "/usr/bin/python generate-darwin-source-and-headers.py --only-osx";
|
|
||||||
+ shellScript = "/usr/bin/python generate-darwin-source-and-headers.py --only-osx\n";
|
|
||||||
};
|
|
||||||
/* End PBXShellScriptBuildPhase section */
|
|
||||||
|
|
||||||
@@ -375,17 +337,13 @@
|
|
||||||
isa = PBXSourcesBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
- DBFA717E187F1D9B00A76262 /* ffi64_x86_64.c in Sources */,
|
|
||||||
DBFA7179187F1D9B00A76262 /* ffi_armv7.c in Sources */,
|
|
||||||
DBFA717B187F1D9B00A76262 /* trampoline_armv7.S in Sources */,
|
|
||||||
DBFA714E187F1D8600A76262 /* closures.c in Sources */,
|
|
||||||
DBFA717A187F1D9B00A76262 /* sysv_armv7.S in Sources */,
|
|
||||||
- DBFA717D187F1D9B00A76262 /* darwin_i386.S in Sources */,
|
|
||||||
DBFA7156187F1D8600A76262 /* prep_cif.c in Sources */,
|
|
||||||
- DBFA717F187F1D9B00A76262 /* ffi_i386.c in Sources */,
|
|
||||||
DBFA7158187F1D8600A76262 /* raw_api.c in Sources */,
|
|
||||||
DBFA7178187F1D9B00A76262 /* sysv_arm64.S in Sources */,
|
|
||||||
- DBFA717C187F1D9B00A76262 /* darwin64_x86_64.S in Sources */,
|
|
||||||
DBFA715A187F1D8600A76262 /* types.c in Sources */,
|
|
||||||
DBFA7177187F1D9B00A76262 /* ffi_arm64.c in Sources */,
|
|
||||||
);
|
|
||||||
@@ -396,9 +354,7 @@
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
DBFA7196187F1DA100A76262 /* ffi64_x86_64.c in Sources */,
|
|
||||||
- DBFA7195187F1DA100A76262 /* darwin_i386.S in Sources */,
|
|
||||||
DBFA7157187F1D8600A76262 /* prep_cif.c in Sources */,
|
|
||||||
- DBFA7197187F1DA100A76262 /* ffi_i386.c in Sources */,
|
|
||||||
DBFA715B187F1D8600A76262 /* types.c in Sources */,
|
|
||||||
DBFA7159187F1D8600A76262 /* raw_api.c in Sources */,
|
|
||||||
DBFA714F187F1D8600A76262 /* closures.c in Sources */,
|
|
||||||
@@ -412,21 +368,74 @@
|
|
||||||
DB13B1601849DEB70010F42D /* Debug */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
||||||
+ CLANG_WARN_BOOL_CONVERSION = YES;
|
|
||||||
+ CLANG_WARN_COMMA = YES;
|
|
||||||
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
||||||
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
||||||
+ CLANG_WARN_EMPTY_BODY = YES;
|
|
||||||
+ CLANG_WARN_ENUM_CONVERSION = YES;
|
|
||||||
+ CLANG_WARN_INFINITE_RECURSION = YES;
|
|
||||||
+ CLANG_WARN_INT_CONVERSION = YES;
|
|
||||||
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
||||||
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
||||||
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
||||||
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
||||||
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
||||||
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
||||||
+ CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
||||||
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
||||||
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
||||||
+ ENABLE_TESTABILITY = YES;
|
|
||||||
+ GCC_NO_COMMON_BLOCKS = YES;
|
|
||||||
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
||||||
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
|
||||||
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
||||||
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
|
||||||
+ GCC_WARN_UNUSED_FUNCTION = YES;
|
|
||||||
+ GCC_WARN_UNUSED_VARIABLE = YES;
|
|
||||||
HEADER_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
darwin_common/include,
|
|
||||||
);
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
|
||||||
+ VALID_ARCHS = x86_64;
|
|
||||||
};
|
|
||||||
name = Debug;
|
|
||||||
};
|
|
||||||
DB13B1611849DEB70010F42D /* Release */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
||||||
+ CLANG_WARN_BOOL_CONVERSION = YES;
|
|
||||||
+ CLANG_WARN_COMMA = YES;
|
|
||||||
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
||||||
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
||||||
+ CLANG_WARN_EMPTY_BODY = YES;
|
|
||||||
+ CLANG_WARN_ENUM_CONVERSION = YES;
|
|
||||||
+ CLANG_WARN_INFINITE_RECURSION = YES;
|
|
||||||
+ CLANG_WARN_INT_CONVERSION = YES;
|
|
||||||
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
||||||
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
||||||
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
||||||
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
||||||
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
||||||
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
||||||
+ CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
||||||
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
||||||
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
||||||
+ GCC_NO_COMMON_BLOCKS = YES;
|
|
||||||
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
||||||
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
|
||||||
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
||||||
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
|
||||||
+ GCC_WARN_UNUSED_FUNCTION = YES;
|
|
||||||
+ GCC_WARN_UNUSED_VARIABLE = YES;
|
|
||||||
HEADER_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
darwin_common/include,
|
|
||||||
);
|
|
||||||
+ VALID_ARCHS = x86_64;
|
|
||||||
};
|
|
||||||
name = Release;
|
|
||||||
};
|
|
||||||
@@ -434,7 +443,6 @@
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
||||||
- ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
|
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
|
||||||
CLANG_ENABLE_MODULES = YES;
|
|
||||||
@@ -467,7 +475,7 @@
|
|
||||||
"$(inherited)",
|
|
||||||
darwin_ios/include,
|
|
||||||
);
|
|
||||||
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
|
|
||||||
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
|
||||||
"IPHONEOS_DEPLOYMENT_TARGET[arch=arm64]" = 7.0;
|
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
|
||||||
PRODUCT_NAME = ffi;
|
|
||||||
@@ -480,7 +488,6 @@
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
||||||
- ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
|
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
|
||||||
CLANG_ENABLE_MODULES = YES;
|
|
||||||
@@ -507,7 +514,7 @@
|
|
||||||
"$(inherited)",
|
|
||||||
darwin_ios/include,
|
|
||||||
);
|
|
||||||
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
|
|
||||||
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
|
||||||
"IPHONEOS_DEPLOYMENT_TARGET[arch=arm64]" = 7.0;
|
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
|
||||||
PRODUCT_NAME = ffi;
|
|
||||||
--- libffi-3.2.1.old/libffi.xcodeproj/project.pbxproj.orig 2018-10-26 17:31:30.000000000 +0200
|
|
||||||
+++ libffi-3.2.1/libffi.xcodeproj/project.pbxproj.orig 2018-10-26 17:27:16.000000000 +0200
|
|
||||||
@@ -54,7 +54,7 @@
|
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
|
||||||
DB13B1661849DF1E0010F42D /* libffi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
- DB13B1911849DF510010F42D /* ffi.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = ffi.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
+ DB13B1911849DF510010F42D /* libffi.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libffi.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
DBFA713E187F1D8600A76262 /* ffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi.h; sourceTree = "<group>"; };
|
|
||||||
DBFA713F187F1D8600A76262 /* ffi_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ffi_common.h; sourceTree = "<group>"; };
|
|
||||||
DBFA7140187F1D8600A76262 /* fficonfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fficonfig.h; sourceTree = "<group>"; };
|
|
||||||
@@ -112,7 +112,7 @@
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
DB13B1661849DF1E0010F42D /* libffi.a */,
|
|
||||||
- DB13B1911849DF510010F42D /* ffi.dylib */,
|
|
||||||
+ DB13B1911849DF510010F42D /* libffi.a */,
|
|
||||||
);
|
|
||||||
name = Products;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
@@ -312,7 +312,7 @@
|
|
||||||
);
|
|
||||||
name = "libffi-Mac";
|
|
||||||
productName = ffi;
|
|
||||||
- productReference = DB13B1911849DF510010F42D /* ffi.dylib */;
|
|
||||||
+ productReference = DB13B1911849DF510010F42D /* libffi.a */;
|
|
||||||
productType = "com.apple.product-type.library.dynamic";
|
|
||||||
};
|
|
||||||
/* End PBXNativeTarget section */
|
|
||||||
@@ -535,6 +535,7 @@
|
|
||||||
COPY_PHASE_STRIP = NO;
|
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
|
||||||
+ EXECUTABLE_EXTENSION = a;
|
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
|
||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
|
||||||
@@ -558,7 +559,7 @@
|
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
|
||||||
OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
|
|
||||||
- PRODUCT_NAME = ffi;
|
|
||||||
+ PRODUCT_NAME = libffi;
|
|
||||||
SDKROOT = macosx;
|
|
||||||
};
|
|
||||||
name = Debug;
|
|
||||||
@@ -583,6 +584,7 @@
|
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
|
||||||
+ EXECUTABLE_EXTENSION = a;
|
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
||||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
||||||
@@ -598,7 +600,7 @@
|
|
||||||
MACH_O_TYPE = staticlib;
|
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
|
||||||
OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
|
|
||||||
- PRODUCT_NAME = ffi;
|
|
||||||
+ PRODUCT_NAME = libffi;
|
|
||||||
SDKROOT = macosx;
|
|
||||||
};
|
|
||||||
name = Release;
|
|
|
@ -1,39 +0,0 @@
|
||||||
from kivy_ios.toolchain import Recipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh
|
|
||||||
import logging
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class HostOpensslRecipe(Recipe):
|
|
||||||
version = "1.1.1f"
|
|
||||||
url = "http://www.openssl.org/source/openssl-{version}.tar.gz"
|
|
||||||
archs = ["x86_64"]
|
|
||||||
|
|
||||||
def get_build_env(self):
|
|
||||||
build_env = self.ctx.env.copy()
|
|
||||||
self.build_env_x86_84 = build_env
|
|
||||||
return build_env
|
|
||||||
|
|
||||||
def build_x86_64(self):
|
|
||||||
build_env = self.get_build_env()
|
|
||||||
configure = sh.Command(join(self.build_dir, "Configure"))
|
|
||||||
shprint(configure,
|
|
||||||
"darwin64-x86_64-cc",
|
|
||||||
_env=build_env)
|
|
||||||
shprint(sh.make, "clean")
|
|
||||||
shprint(sh.make, self.ctx.concurrent_make, "build_libs")
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
sh.mkdir('-p', join(self.ctx.dist_dir, 'hostopenssl'))
|
|
||||||
sh.cp('-r', join(self.get_build_dir('x86_64'), 'include'),
|
|
||||||
join(self.ctx.dist_dir, 'hostopenssl', 'include'))
|
|
||||||
sh.mkdir('-p', join(self.ctx.dist_dir, 'hostopenssl', 'lib'))
|
|
||||||
sh.cp(join(self.get_build_dir('x86_64'), 'libssl.a'),
|
|
||||||
join(self.ctx.dist_dir, 'hostopenssl', 'lib'))
|
|
||||||
sh.cp(join(self.get_build_dir('x86_64'), 'libcrypto.a'),
|
|
||||||
join(self.ctx.dist_dir, 'hostopenssl', 'lib'))
|
|
||||||
|
|
||||||
|
|
||||||
recipe = HostOpensslRecipe()
|
|
|
@ -1,31 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import sys
|
|
||||||
from kivy_ios.toolchain import Recipe
|
|
||||||
import logging
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class HostpythonAliasRecipe(Recipe):
|
|
||||||
"""
|
|
||||||
Note this recipe was created to handle both hostpython2 and hostpython3.
|
|
||||||
As hostpython2 support was dropped, this could probably be simplified.
|
|
||||||
"""
|
|
||||||
is_alias = True
|
|
||||||
|
|
||||||
def init_after_import(self, ctx):
|
|
||||||
hostpython = ctx.state.get("hostpython")
|
|
||||||
if not hostpython:
|
|
||||||
# search in wanted_recipes if it's the first time
|
|
||||||
if "hostpython3" in ctx.wanted_recipes:
|
|
||||||
hostpython = "hostpython3"
|
|
||||||
else:
|
|
||||||
logger.error("No hostpython version set in the build.")
|
|
||||||
logger.error("Add python3 in your recipes:")
|
|
||||||
logger.error("./toolchain.py build python3 ...")
|
|
||||||
sys.exit(1)
|
|
||||||
if hostpython:
|
|
||||||
self.depends = [hostpython]
|
|
||||||
|
|
||||||
|
|
||||||
recipe = HostpythonAliasRecipe()
|
|
|
@ -1 +0,0 @@
|
||||||
zlib zlibmodule.c -I$(prefix)/include -lz
|
|
|
@ -1,100 +0,0 @@
|
||||||
from kivy_ios.toolchain import Recipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
import shutil
|
|
||||||
import logging
|
|
||||||
from kivy_ios.context_managers import cd
|
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class Hostpython3Recipe(Recipe):
|
|
||||||
version = "3.8.2"
|
|
||||||
url = "https://www.python.org/ftp/python/{version}/Python-{version}.tgz"
|
|
||||||
depends = ["hostlibffi", "hostopenssl"]
|
|
||||||
optional_depends = []
|
|
||||||
archs = ["x86_64"]
|
|
||||||
build_subdir = 'native-build'
|
|
||||||
|
|
||||||
def init_with_ctx(self, ctx):
|
|
||||||
super().init_with_ctx(ctx)
|
|
||||||
self.set_hostpython(self, "3.8")
|
|
||||||
self.ctx.so_suffix = ".cpython-38m-darwin.so"
|
|
||||||
self.ctx.hostpython = join(self.ctx.dist_dir, "hostpython3", "bin", "python")
|
|
||||||
self.ctx.hostpgen = join(self.ctx.dist_dir, "hostpython3", "bin", "pgen")
|
|
||||||
logger.info("Global: hostpython located at {}".format(self.ctx.hostpython))
|
|
||||||
logger.info("Global: hostpgen located at {}".format(self.ctx.hostpgen))
|
|
||||||
|
|
||||||
def get_build_subdir(self, arch):
|
|
||||||
return join(self.get_build_dir(arch), self.build_subdir)
|
|
||||||
|
|
||||||
def prebuild_arch(self, arch):
|
|
||||||
if self.has_marker("patched"):
|
|
||||||
return
|
|
||||||
self.apply_patch("pyconfig_detection.patch")
|
|
||||||
self.copy_file("ModulesSetup", "Modules/Setup.local")
|
|
||||||
self.set_marker("patched")
|
|
||||||
|
|
||||||
def postbuild_arch(self, arch):
|
|
||||||
return
|
|
||||||
|
|
||||||
def get_build_env(self):
|
|
||||||
sdk_path = sh.xcrun("--sdk", "macosx", "--show-sdk-path").strip()
|
|
||||||
build_env = self.ctx.env.copy()
|
|
||||||
self.build_env_x86_84 = build_env
|
|
||||||
ccache = (build_env["CCACHE"] + ' ') if 'CCACHE' in build_env else ''
|
|
||||||
build_env["CC"] = ccache + "clang -Qunused-arguments -fcolor-diagnostics"
|
|
||||||
build_env["LDFLAGS"] = " ".join([
|
|
||||||
"-lsqlite3",
|
|
||||||
"-lffi",
|
|
||||||
"-L{}".format(join(self.ctx.dist_dir, "hostlibffi", "usr", "local", "lib"))
|
|
||||||
])
|
|
||||||
build_env["CFLAGS"] = " ".join([
|
|
||||||
"--sysroot={}".format(sdk_path),
|
|
||||||
"-arch x86_64",
|
|
||||||
"-mmacosx-version-min=10.12",
|
|
||||||
"-I{}".format(join(self.ctx.dist_dir, "hostlibffi", "usr", "local", "include"))
|
|
||||||
])
|
|
||||||
return build_env
|
|
||||||
|
|
||||||
def build_x86_64(self):
|
|
||||||
build_env = self.get_build_env()
|
|
||||||
configure = sh.Command(join(self.build_dir, "configure"))
|
|
||||||
arch = self.filtered_archs[0]
|
|
||||||
build_subdir = self.get_build_subdir(arch.arch)
|
|
||||||
os.makedirs(build_subdir, exist_ok=True)
|
|
||||||
with cd(build_subdir):
|
|
||||||
shprint(configure,
|
|
||||||
"--prefix={}".format(join(self.ctx.dist_dir, "hostpython3")),
|
|
||||||
"--with-openssl={}".format(join(self.ctx.dist_dir, 'hostopenssl')),
|
|
||||||
_env=build_env)
|
|
||||||
shprint(sh.make, "-C", build_subdir, self.ctx.concurrent_make,
|
|
||||||
_env=build_env)
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_env = self.get_build_env()
|
|
||||||
build_subdir = self.get_build_subdir(arch.arch)
|
|
||||||
build_env["PATH"] = os.environ["PATH"]
|
|
||||||
shprint(sh.make, self.ctx.concurrent_make,
|
|
||||||
"-C", build_subdir,
|
|
||||||
"install",
|
|
||||||
_env=build_env)
|
|
||||||
shutil.copy(
|
|
||||||
join(self.ctx.dist_dir, "hostpython3", "bin", "python3"),
|
|
||||||
join(self.ctx.dist_dir, "hostpython3", "bin", "python"))
|
|
||||||
"""
|
|
||||||
I don't like this kind of "patches".
|
|
||||||
sysconfig was overriding our cflags and extensions were failing to build.
|
|
||||||
This hack resets the cflags provided by sysconfig.
|
|
||||||
"""
|
|
||||||
with open(join(self.ctx.dist_dir, "hostpython3", "lib", "python3.8", "distutils", "sysconfig.py"), 'r') as sysconfigfile:
|
|
||||||
lines = sysconfigfile.readlines()
|
|
||||||
lines[192] = ' cflags = ""\n'
|
|
||||||
with open(join(self.ctx.dist_dir, "hostpython3", "lib", "python3.8", "distutils", "sysconfig.py"), 'w') as sysconfigfile:
|
|
||||||
sysconfigfile.writelines(lines)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = Hostpython3Recipe()
|
|
|
@ -1,25 +0,0 @@
|
||||||
diff -Nru Python-3.8.2/Lib/site.py Python-3.8.2-new/Lib/site.py
|
|
||||||
--- Python-3.8.2/Lib/site.py 2020-02-24 22:36:25.000000000 +0100
|
|
||||||
+++ Python-3.8.2-new/Lib/site.py 2020-05-01 17:10:43.000000000 +0200
|
|
||||||
@@ -458,9 +458,8 @@
|
|
||||||
|
|
||||||
env = os.environ
|
|
||||||
if sys.platform == 'darwin' and '__PYVENV_LAUNCHER__' in env:
|
|
||||||
- executable = sys._base_executable = os.environ['__PYVENV_LAUNCHER__']
|
|
||||||
- else:
|
|
||||||
- executable = sys.executable
|
|
||||||
+ print("Ignoring __PYVENV_LAUNCHER__")
|
|
||||||
+ executable = sys.executable
|
|
||||||
exe_dir, _ = os.path.split(os.path.abspath(executable))
|
|
||||||
site_prefix = os.path.dirname(exe_dir)
|
|
||||||
sys._home = None
|
|
||||||
@@ -487,7 +486,8 @@
|
|
||||||
if key == 'include-system-site-packages':
|
|
||||||
system_site = value.lower()
|
|
||||||
elif key == 'home':
|
|
||||||
- sys._home = value
|
|
||||||
+ # this is breaking pyconfig.h path detection with venv
|
|
||||||
+ print('Ignoring "sys._home = value" override')
|
|
||||||
|
|
||||||
sys.prefix = sys.exec_prefix = site_prefix
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class IdnaRecipe(PythonRecipe):
|
|
||||||
version = "2.6"
|
|
||||||
url = "https://pypi.python.org/packages/source/i/idna/idna-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = IdnaRecipe()
|
|
|
@ -1,16 +0,0 @@
|
||||||
from kivy_ios.toolchain import CythonRecipe
|
|
||||||
|
|
||||||
|
|
||||||
class IosRecipe(CythonRecipe):
|
|
||||||
version = "master"
|
|
||||||
url = "src"
|
|
||||||
library = "libios.a"
|
|
||||||
depends = ["python"]
|
|
||||||
pbx_frameworks = ["MessageUI", "CoreMotion", "UIKit", "WebKit", "Photos"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
self.install_python_package(
|
|
||||||
name=self.so_filename("ios"), is_dir=False)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = IosRecipe()
|
|
|
@ -1,41 +0,0 @@
|
||||||
/*
|
|
||||||
* Browser support
|
|
||||||
*/
|
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
#include <WebKit/WebKit.h>
|
|
||||||
#include "ios_wrapper.h"
|
|
||||||
|
|
||||||
void ios_open_url(char *url)
|
|
||||||
{
|
|
||||||
NSString *nsurl = [NSString stringWithCString:(char *)url encoding:NSUTF8StringEncoding];
|
|
||||||
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: nsurl]];
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Webview support
|
|
||||||
*/
|
|
||||||
void load_url_webview(char *url, int x, int y, int width, int height)
|
|
||||||
{
|
|
||||||
NSString *nsurl = [NSString stringWithCString:(char *)url encoding:NSUTF8StringEncoding];
|
|
||||||
WKWebView *webView = [[WKWebView alloc] initWithFrame: CGRectMake(x, y, width, height)];
|
|
||||||
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
|
|
||||||
UIView *view = [window.rootViewController view];
|
|
||||||
[view addSubview:webView];
|
|
||||||
NSURL *ur = [[NSURL alloc] initWithString: nsurl];
|
|
||||||
NSURLRequest *req = [[NSURLRequest alloc] initWithURL: ur];
|
|
||||||
[webView loadRequest: req];
|
|
||||||
[req release];
|
|
||||||
[ur release];
|
|
||||||
|
|
||||||
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
|
|
||||||
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
|
|
||||||
[button setTitle:@"X" forState:UIControlStateNormal];
|
|
||||||
button.frame = CGRectMake(0.0, 0.0, 40, 40);
|
|
||||||
[button addTarget:webView
|
|
||||||
action:@selector(removeFromSuperview) forControlEvents:UIControlEventTouchDown];
|
|
||||||
[webView addSubview:button];
|
|
||||||
[button release];
|
|
||||||
[webView release];
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
#import <Foundation/Foundation.h>
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
#include "ios_wrapper.h"
|
|
||||||
|
|
||||||
@interface NativeImagePicker : NSObject
|
|
||||||
@end
|
|
||||||
@implementation NativeImagePicker
|
|
||||||
|
|
||||||
- (NSString*) getFileName:(NSURL *) ns_url {
|
|
||||||
// Return the file name without the path or file extention
|
|
||||||
NSString *image_name = ns_url.pathComponents.lastObject;
|
|
||||||
NSArray *listItems = [image_name componentsSeparatedByString:@"."];
|
|
||||||
NSString *ret = listItems[0];
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSString*) writeToPNG: (NSDictionary *) info {
|
|
||||||
/* Given the info frozen dictionary returned by the file picker, convert
|
|
||||||
the image selected to a PNG and return the full path. */
|
|
||||||
|
|
||||||
// Get the image name, stripped of path and extention
|
|
||||||
NSString *image_name = [self getFileName: info[UIImagePickerControllerImageURL]];
|
|
||||||
|
|
||||||
// Get the png representation of the image
|
|
||||||
UIImage *image = info[UIImagePickerControllerOriginalImage];
|
|
||||||
NSData *imageData = UIImagePNGRepresentation(image);
|
|
||||||
|
|
||||||
// Generate the final image destination
|
|
||||||
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
|
|
||||||
NSString *documentsDirectory = [paths objectAtIndex:0];
|
|
||||||
NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", image_name]];
|
|
||||||
|
|
||||||
// Write the image data to the file
|
|
||||||
if (![imageData writeToFile:imagePath atomically:NO])
|
|
||||||
{
|
|
||||||
NSLog(@"Failed to cache image data to disk");
|
|
||||||
return @"";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
NSLog(@"the cachedImagedPath is %@",imagePath);
|
|
||||||
return imagePath;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@end
|
|
|
@ -1,163 +0,0 @@
|
||||||
/*
|
|
||||||
* iOS utils
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
#import <sys/utsname.h>
|
|
||||||
#include "ios_wrapper.h"
|
|
||||||
|
|
||||||
|
|
||||||
float ios_uiscreen_get_scale() {
|
|
||||||
float scale = 1.0;
|
|
||||||
if ([[UIScreen mainScreen] respondsToSelector:@selector(nativeScale)]) {
|
|
||||||
scale = [[UIScreen mainScreen] nativeScale];
|
|
||||||
};
|
|
||||||
return scale;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ios_uiscreen_get_dpi() {
|
|
||||||
/*
|
|
||||||
* dpi function from src/video/uikit/SDL_uikitmodes.m (SDL2)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* A well up to date list of device info can be found here:
|
|
||||||
* https://github.com/lmirosevic/GBDeviceInfo/blob/master/GBDeviceInfo/GBDeviceInfo_iOS.m
|
|
||||||
*/
|
|
||||||
NSDictionary* devices = @{
|
|
||||||
@"iPhone1,1": @163,
|
|
||||||
@"iPhone1,2": @163,
|
|
||||||
@"iPhone2,1": @163,
|
|
||||||
@"iPhone3,1": @326,
|
|
||||||
@"iPhone3,2": @326,
|
|
||||||
@"iPhone3,3": @326,
|
|
||||||
@"iPhone4,1": @326,
|
|
||||||
@"iPhone5,1": @326,
|
|
||||||
@"iPhone5,2": @326,
|
|
||||||
@"iPhone5,3": @326,
|
|
||||||
@"iPhone5,4": @326,
|
|
||||||
@"iPhone6,1": @326,
|
|
||||||
@"iPhone6,2": @326,
|
|
||||||
@"iPhone7,1": @401,
|
|
||||||
@"iPhone7,2": @326,
|
|
||||||
@"iPhone8,1": @326,
|
|
||||||
@"iPhone8,2": @401,
|
|
||||||
@"iPhone8,4": @326,
|
|
||||||
@"iPhone9,1": @326,
|
|
||||||
@"iPhone9,2": @401,
|
|
||||||
@"iPhone9,3": @326,
|
|
||||||
@"iPhone9,4": @401,
|
|
||||||
@"iPhone10,1": @326,
|
|
||||||
@"iPhone10,2": @401,
|
|
||||||
@"iPhone10,3": @458,
|
|
||||||
@"iPhone10,4": @326,
|
|
||||||
@"iPhone10,5": @401,
|
|
||||||
@"iPhone10,6": @458,
|
|
||||||
@"iPhone11,2": @458,
|
|
||||||
@"iPhone11,4": @458,
|
|
||||||
@"iPhone11,6": @458,
|
|
||||||
@"iPhone11,8": @326,
|
|
||||||
@"iPhone12,1": @326,
|
|
||||||
@"iPhone12,3": @458,
|
|
||||||
@"iPhone12,5": @458,
|
|
||||||
@"iPad1,1": @132,
|
|
||||||
@"iPad2,1": @132,
|
|
||||||
@"iPad2,2": @132,
|
|
||||||
@"iPad2,3": @132,
|
|
||||||
@"iPad2,4": @132,
|
|
||||||
@"iPad2,5": @163,
|
|
||||||
@"iPad2,6": @163,
|
|
||||||
@"iPad2,7": @163,
|
|
||||||
@"iPad3,1": @264,
|
|
||||||
@"iPad3,2": @264,
|
|
||||||
@"iPad3,3": @264,
|
|
||||||
@"iPad3,4": @264,
|
|
||||||
@"iPad3,5": @264,
|
|
||||||
@"iPad3,6": @264,
|
|
||||||
@"iPad4,1": @264,
|
|
||||||
@"iPad4,2": @264,
|
|
||||||
@"iPad4,3": @264,
|
|
||||||
@"iPad4,4": @326,
|
|
||||||
@"iPad4,5": @326,
|
|
||||||
@"iPad4,6": @326,
|
|
||||||
@"iPad4,7": @326,
|
|
||||||
@"iPad4,8": @326,
|
|
||||||
@"iPad4,9": @326,
|
|
||||||
@"iPad5,1": @326,
|
|
||||||
@"iPad5,2": @326,
|
|
||||||
@"iPad5,3": @264,
|
|
||||||
@"iPad5,4": @264,
|
|
||||||
@"iPad6,3": @264,
|
|
||||||
@"iPad6,4": @264,
|
|
||||||
@"iPad6,7": @264,
|
|
||||||
@"iPad6,8": @264,
|
|
||||||
@"iPad6,11": @264,
|
|
||||||
@"iPad6,12": @264,
|
|
||||||
@"iPad7,1": @264,
|
|
||||||
@"iPad7,2": @264,
|
|
||||||
@"iPad7,3": @264,
|
|
||||||
@"iPad7,4": @264,
|
|
||||||
@"iPad7,5": @264,
|
|
||||||
@"iPad7,6": @264,
|
|
||||||
@"iPad7,11": @264,
|
|
||||||
@"iPad7,12": @264,
|
|
||||||
@"iPad8,1": @264,
|
|
||||||
@"iPad8,2": @264,
|
|
||||||
@"iPad8,3": @264,
|
|
||||||
@"iPad8,4": @264,
|
|
||||||
@"iPad8,5": @264,
|
|
||||||
@"iPad8,6": @264,
|
|
||||||
@"iPad8,7": @264,
|
|
||||||
@"iPad8,8": @264,
|
|
||||||
@"iPad11,1": @326,
|
|
||||||
@"iPad11,2": @326,
|
|
||||||
@"iPad11,3": @326,
|
|
||||||
@"iPad11,4": @326,
|
|
||||||
@"iPod1,1": @163,
|
|
||||||
@"iPod2,1": @163,
|
|
||||||
@"iPod3,1": @163,
|
|
||||||
@"iPod4,1": @326,
|
|
||||||
@"iPod5,1": @326,
|
|
||||||
@"iPod7,1": @326,
|
|
||||||
@"iPod9,1": @326,
|
|
||||||
};
|
|
||||||
struct utsname systemInfo;
|
|
||||||
uname(&systemInfo);
|
|
||||||
NSString* deviceName = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
|
|
||||||
id foundDPI = devices[deviceName];
|
|
||||||
if (foundDPI) {
|
|
||||||
return (float)[foundDPI integerValue];
|
|
||||||
} else {
|
|
||||||
/*
|
|
||||||
* Estimate the DPI based on the screen scale multiplied by the base DPI for the device
|
|
||||||
* type (e.g. based on iPhone 1 and iPad 1)
|
|
||||||
*/
|
|
||||||
float scale = ios_uiscreen_get_scale();
|
|
||||||
float dpi = 160 * scale;
|
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
|
||||||
dpi = 132 * scale;
|
|
||||||
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
|
||||||
dpi = 163 * scale;
|
|
||||||
}
|
|
||||||
return dpi;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
padding ios_get_safe_area() {
|
|
||||||
padding safearea;
|
|
||||||
if (@available(iOS 11.0, *)){
|
|
||||||
UIWindow *window = UIApplication.sharedApplication.windows[0];
|
|
||||||
safearea.top = window.safeAreaInsets.top;
|
|
||||||
safearea.bottom = window.safeAreaInsets.bottom;
|
|
||||||
safearea.left = window.safeAreaInsets.left;
|
|
||||||
safearea.right = window.safeAreaInsets.right;
|
|
||||||
} else {
|
|
||||||
safearea.top = 0;
|
|
||||||
safearea.bottom = 0;
|
|
||||||
safearea.left = 0;
|
|
||||||
safearea.right = 0;
|
|
||||||
}
|
|
||||||
return safearea;
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
from distutils.core import setup, Extension
|
|
||||||
|
|
||||||
|
|
||||||
setup(name='ios',
|
|
||||||
version='1.1',
|
|
||||||
ext_modules=[
|
|
||||||
Extension('ios',
|
|
||||||
['ios.c', 'ios_utils.m', 'ios_mail.m', 'ios_browser.m',
|
|
||||||
'ios_filechooser.m'],
|
|
||||||
libraries=[],
|
|
||||||
library_dirs=[],
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class IpaddressRecipe(PythonRecipe):
|
|
||||||
version = "1.0.22"
|
|
||||||
url = "https://pypi.python.org/packages/source/i/ipaddress/ipaddress-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = IpaddressRecipe()
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class JsonschemaRecipe(PythonRecipe):
|
|
||||||
version = "2.6.0"
|
|
||||||
url = "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = JsonschemaRecipe()
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class KeyringRecipe(PythonRecipe):
|
|
||||||
version = "10.4.0"
|
|
||||||
url = "https://pypi.python.org/packages/source/k/keyring/keyring-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = KeyringRecipe()
|
|
|
@ -1,102 +0,0 @@
|
||||||
"""
|
|
||||||
Author: Lawrence Du
|
|
||||||
E-mail: larrydu88@gmail.com
|
|
||||||
"""
|
|
||||||
|
|
||||||
from kivy_ios.toolchain import CythonRecipe, shprint
|
|
||||||
import sh
|
|
||||||
from os.path import join
|
|
||||||
from os import chdir
|
|
||||||
import logging
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class KiventCoreRecipe(CythonRecipe):
|
|
||||||
version = 'master'
|
|
||||||
url = 'https://github.com/kivy/kivent/archive/{version}.zip'
|
|
||||||
name = 'kivent_core'
|
|
||||||
depends = ['libffi', 'kivy'] # note: unsure if libffi is necessary here
|
|
||||||
pre_build_ext = False
|
|
||||||
subbuilddir = False
|
|
||||||
cythonize = True
|
|
||||||
pbx_frameworks = ["OpenGLES"] # note: This line may be unnecessary
|
|
||||||
|
|
||||||
def get_recipe_env(self, arch):
|
|
||||||
env = super(KiventCoreRecipe, self).get_recipe_env(arch)
|
|
||||||
env['CYTHONPATH'] = self.get_recipe(
|
|
||||||
'kivy', self.ctx).get_build_dir(arch.arch)
|
|
||||||
return env
|
|
||||||
|
|
||||||
def get_build_dir(self, arch, sub=False):
|
|
||||||
"""
|
|
||||||
Call this to get the correct build_dir, where setup.py is located which is
|
|
||||||
actually under modules/core/setup.py
|
|
||||||
"""
|
|
||||||
builddir = super(KiventCoreRecipe, self).get_build_dir(str(arch))
|
|
||||||
if sub or self.subbuilddir:
|
|
||||||
core_build_dir = join(builddir, 'modules', 'core')
|
|
||||||
logger.info("Core build directory is located at {}".format(core_build_dir))
|
|
||||||
return core_build_dir
|
|
||||||
else:
|
|
||||||
logger.info("Building in {}".format(builddir))
|
|
||||||
return builddir
|
|
||||||
|
|
||||||
def build_arch(self, arch):
|
|
||||||
"""
|
|
||||||
Override build.arch to avoid calling setup.py here (Call it in
|
|
||||||
install() instead).
|
|
||||||
"""
|
|
||||||
self.subbuildir = True
|
|
||||||
self.cythonize_build()
|
|
||||||
self.biglink()
|
|
||||||
self.subbuilddir = False
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
"""
|
|
||||||
This method simply builds the command line call for calling
|
|
||||||
kivent_core/modules/core/setup.py
|
|
||||||
|
|
||||||
This constructs the equivalent of the command
|
|
||||||
"$python setup.py build_ext install"
|
|
||||||
only with the environment variables altered for each different architecture
|
|
||||||
The appropriate version of kivy also needs to be added to the path, and this
|
|
||||||
differs for each architecture (i386, x86_64, armv7, etc)
|
|
||||||
|
|
||||||
Note: This method is called by build_all() in toolchain.py
|
|
||||||
|
|
||||||
"""
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
|
|
||||||
build_dir = self.get_build_dir(arch.arch, sub=True)
|
|
||||||
logger.info("Building kivent_core {} in {}".format(arch.arch, build_dir))
|
|
||||||
chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
|
|
||||||
# Get the appropriate environment for this recipe (including CYTHONPATH)
|
|
||||||
# build_env = arch.get_env()
|
|
||||||
build_env = self.get_recipe_env(arch)
|
|
||||||
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.7', 'site-packages')
|
|
||||||
|
|
||||||
# Add Architecture specific kivy path for 'import kivy' to PYTHONPATH
|
|
||||||
arch_kivy_path = self.get_recipe('kivy', self.ctx).get_build_dir(arch.arch)
|
|
||||||
build_env['PYTHONPATH'] = join(build_env['PYTHONPATH'], ':', arch_kivy_path)
|
|
||||||
|
|
||||||
# Make sure you call kivent_core/modules/core/setup.py
|
|
||||||
subdir_path = self.get_build_dir(str(arch), sub=True)
|
|
||||||
setup_path = join(subdir_path, "setup.py")
|
|
||||||
|
|
||||||
# Print out directories for sanity check
|
|
||||||
logger.info("ENVS", build_env)
|
|
||||||
logger.info("ROOT", self.ctx.root_dir)
|
|
||||||
logger.info("BUILD", self.ctx.build_dir)
|
|
||||||
logger.info("INCLUDE", self.ctx.include_dir)
|
|
||||||
logger.info("DISTDIR", self.ctx.dist_dir)
|
|
||||||
logger.info("ARCH KIVY LOC", self.get_recipe('kivy', self.ctx).get_build_dir(arch.arch))
|
|
||||||
|
|
||||||
shprint(hostpython, setup_path, "build_ext", "install", _env=build_env)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = KiventCoreRecipe()
|
|
|
@ -1,58 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class LbryRecipe(PythonRecipe):
|
|
||||||
version = "v0.82.0"
|
|
||||||
url = "https://github.com/lbryio/lbry/archive/{version}.tar.gz"
|
|
||||||
depends = [
|
|
||||||
"openssl",
|
|
||||||
"python",
|
|
||||||
"ios",
|
|
||||||
"pyobjus",
|
|
||||||
"sdl2",
|
|
||||||
"setuptools",
|
|
||||||
|
|
||||||
# install_requires dependencies
|
|
||||||
"aiohttp",
|
|
||||||
"aioupnp",
|
|
||||||
"appdirs",
|
|
||||||
"async-timeout",
|
|
||||||
"base58",
|
|
||||||
"certifi",
|
|
||||||
"chardet",
|
|
||||||
"coincurve",
|
|
||||||
"colorama",
|
|
||||||
"cryptography",
|
|
||||||
"defusedxml",
|
|
||||||
"docopt",
|
|
||||||
"ecdsa",
|
|
||||||
"hachoir",
|
|
||||||
"keyring",
|
|
||||||
"mock",
|
|
||||||
"msgpack",
|
|
||||||
"pbkdf2",
|
|
||||||
"prometheus_client",
|
|
||||||
"protobuf",
|
|
||||||
"pylru",
|
|
||||||
"pyyaml",
|
|
||||||
"six"
|
|
||||||
]
|
|
||||||
|
|
||||||
def prebuild_arch(self, arch):
|
|
||||||
if self.has_marker("patched"):
|
|
||||||
return
|
|
||||||
self.apply_patch("setup_override.patch")
|
|
||||||
self.set_marker("patched")
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = LbryRecipe()
|
|
|
@ -1,33 +0,0 @@
|
||||||
--- a/setup.py 2020-09-28 10:43:56.000000000 +0100
|
|
||||||
+++ b/setup.py 2020-09-28 10:44:34.000000000 +0100
|
|
||||||
@@ -32,29 +32,7 @@
|
|
||||||
'orchstr8=lbry.wallet.orchstr8.cli:main',
|
|
||||||
],
|
|
||||||
},
|
|
||||||
- install_requires=[
|
|
||||||
- 'aiohttp==3.5.4',
|
|
||||||
- 'aioupnp==0.0.17',
|
|
||||||
- 'appdirs==1.4.3',
|
|
||||||
- 'certifi>=2018.11.29',
|
|
||||||
- 'colorama==0.3.7',
|
|
||||||
- 'distro==1.4.0',
|
|
||||||
- 'base58==1.0.0',
|
|
||||||
- 'cffi==1.13.2',
|
|
||||||
- 'cryptography==2.5',
|
|
||||||
- 'protobuf==3.6.1',
|
|
||||||
- 'msgpack==0.6.1',
|
|
||||||
- 'prometheus_client==0.7.1',
|
|
||||||
- 'ecdsa==0.13.3',
|
|
||||||
- 'pyyaml==5.3.1',
|
|
||||||
- 'docopt==0.6.2',
|
|
||||||
- 'hachoir',
|
|
||||||
- 'multidict==4.6.1',
|
|
||||||
- 'coincurve==11.0.0',
|
|
||||||
- 'pbkdf2==1.3',
|
|
||||||
- 'attrs==18.2.0',
|
|
||||||
- 'pylru==1.1.0'
|
|
||||||
- ] + PLYVEL,
|
|
||||||
+ install_requires=[],
|
|
||||||
classifiers=[
|
|
||||||
'Framework :: AsyncIO',
|
|
||||||
'Intended Audience :: Developers',
|
|
|
@ -1,29 +0,0 @@
|
||||||
from kivy_ios.toolchain import Recipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh
|
|
||||||
|
|
||||||
|
|
||||||
class CurlRecipe(Recipe):
|
|
||||||
version = "7.65.3"
|
|
||||||
url = "https://curl.haxx.se/download/curl-{version}.tar.gz"
|
|
||||||
library = "lib/.libs/libcurl.a"
|
|
||||||
include_dir = "include"
|
|
||||||
depends = ["openssl"]
|
|
||||||
|
|
||||||
def build_arch(self, arch):
|
|
||||||
build_env = arch.get_env()
|
|
||||||
configure = sh.Command(join(self.build_dir, "configure"))
|
|
||||||
shprint(configure,
|
|
||||||
"CC={}".format(build_env["CC"]),
|
|
||||||
"LD={}".format(build_env["LD"]),
|
|
||||||
"CFLAGS={}".format(build_env["CFLAGS"]),
|
|
||||||
"LDFLAGS={}".format(build_env["LDFLAGS"]),
|
|
||||||
"--prefix=/",
|
|
||||||
"--host={}".format(arch.triple),
|
|
||||||
"--disable-shared",
|
|
||||||
"--without-libidn2")
|
|
||||||
shprint(sh.make, "clean")
|
|
||||||
shprint(sh.make, self.ctx.concurrent_make)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = CurlRecipe()
|
|
|
@ -1,12 +0,0 @@
|
||||||
diff -Nru libffi-3.2.1/generate-darwin-source-and-headers.py libffi-3.2.1-new/generate-darwin-source-and-headers.py
|
|
||||||
--- libffi-3.2.1/generate-darwin-source-and-headers.py 2014-11-08 13:47:24.000000000 +0100
|
|
||||||
+++ libffi-3.2.1-new/generate-darwin-source-and-headers.py 2020-05-06 10:30:46.000000000 +0200
|
|
||||||
@@ -194,7 +194,7 @@
|
|
||||||
build_target(desktop64_platform, platform_headers)
|
|
||||||
|
|
||||||
mkdir_p('darwin_common/include')
|
|
||||||
- for header_name, tag_tuples in platform_headers.iteritems():
|
|
||||||
+ for header_name, tag_tuples in platform_headers.items():
|
|
||||||
basename, suffix = os.path.splitext(header_name)
|
|
||||||
with open(os.path.join('darwin_common/include', header_name), 'w') as header:
|
|
||||||
for tag_tuple in tag_tuples:
|
|
|
@ -1,29 +0,0 @@
|
||||||
from kivy_ios.toolchain import Recipe, shprint
|
|
||||||
from os.path import join, exists
|
|
||||||
from multiprocessing import cpu_count
|
|
||||||
import sh
|
|
||||||
|
|
||||||
class LibSecp256k1Recipe(Recipe):
|
|
||||||
version = 'b0452e6'
|
|
||||||
url = 'https://github.com/bitcoin-core/secp256k1/archive/{version}.zip'
|
|
||||||
library = '.libs/libsecp256k1.a'
|
|
||||||
include_per_arch = True
|
|
||||||
|
|
||||||
def build_arch(self, arch):
|
|
||||||
super(LibSecp256k1Recipe, self).build_arch(arch)
|
|
||||||
env = self.get_recipe_env(arch)
|
|
||||||
|
|
||||||
if not exists(join(self.build_dir, "configure")):
|
|
||||||
shprint(sh.Command('./autogen.sh'))
|
|
||||||
shprint(
|
|
||||||
sh.Command('./configure'),
|
|
||||||
'--host=' + arch.triple,
|
|
||||||
'--prefix=/',
|
|
||||||
'--enable-module-recovery',
|
|
||||||
'--enable-experimental',
|
|
||||||
'--enable-module-ecdh',
|
|
||||||
'--disable-shared',
|
|
||||||
_env=env)
|
|
||||||
shprint(sh.make, '-j' + str(cpu_count()), _env=env)
|
|
||||||
|
|
||||||
recipe = LibSecp256k1Recipe()
|
|
|
@ -1,58 +0,0 @@
|
||||||
from kivy_ios.toolchain import Recipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh
|
|
||||||
|
|
||||||
|
|
||||||
class LibZBarRecipe(Recipe):
|
|
||||||
|
|
||||||
version = '0.10'
|
|
||||||
|
|
||||||
url = 'https://github.com/ZBar/ZBar/archive/{version}.zip'
|
|
||||||
|
|
||||||
depends = ['hostpython3']
|
|
||||||
|
|
||||||
library = 'zbar/.libs/libzbar.a'
|
|
||||||
|
|
||||||
include_per_arch = True
|
|
||||||
include_dir = [
|
|
||||||
("include", "")
|
|
||||||
]
|
|
||||||
|
|
||||||
def prebuild_arch(self, arch):
|
|
||||||
if self.has_marker("patched"):
|
|
||||||
return
|
|
||||||
self.apply_patch("werror.patch")
|
|
||||||
self.set_marker("patched")
|
|
||||||
|
|
||||||
def build_arch(self, arch):
|
|
||||||
super(LibZBarRecipe, self).build_arch(arch)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
build_env["CFLAGS"] = " ".join([
|
|
||||||
"-I{}".format(join(self.ctx.dist_dir, "build", "libiconv", arch.arch)) +
|
|
||||||
" -arch {}".format(arch.arch), build_env['CFLAGS']
|
|
||||||
])
|
|
||||||
shprint(sh.Command('autoreconf'), '-vif')
|
|
||||||
shprint(
|
|
||||||
sh.Command('./configure'),
|
|
||||||
"CC={}".format(build_env["CC"]),
|
|
||||||
"LD={}".format(build_env["LD"]),
|
|
||||||
"CFLAGS={}".format(build_env["CFLAGS"]),
|
|
||||||
"LDFLAGS={}".format(build_env["LDFLAGS"]),
|
|
||||||
"--host={}".format(arch.triple),
|
|
||||||
'--target={}'.format(arch.triple),
|
|
||||||
# Python bindings are compiled in a separated recipe
|
|
||||||
'--with-python=no',
|
|
||||||
'--with-gtk=no',
|
|
||||||
'--with-qt=no',
|
|
||||||
'--with-x=no',
|
|
||||||
'--with-jpeg=no',
|
|
||||||
'--with-imagemagick=no',
|
|
||||||
'--enable-pthread=no',
|
|
||||||
'--enable-video=no',
|
|
||||||
"--disable-shared",
|
|
||||||
_env=build_env)
|
|
||||||
shprint(sh.make, 'clean')
|
|
||||||
shprint(sh.make, _env=build_env)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = LibZBarRecipe()
|
|
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 256aedb..727caba 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -3,7 +3,7 @@ AC_PREREQ([2.61])
|
|
||||||
AC_INIT([zbar], [0.10], [spadix@users.sourceforge.net])
|
|
||||||
AC_CONFIG_AUX_DIR(config)
|
|
||||||
AC_CONFIG_MACRO_DIR(config)
|
|
||||||
-AM_INIT_AUTOMAKE([1.10 -Wall -Werror foreign subdir-objects std-options dist-bzip2])
|
|
||||||
+AM_INIT_AUTOMAKE([1.10 -Wall foreign subdir-objects std-options dist-bzip2])
|
|
||||||
AC_CONFIG_HEADERS([include/config.h])
|
|
||||||
AC_CONFIG_SRCDIR(zbar/scanner.c)
|
|
||||||
LT_PREREQ([2.2])
|
|
|
@ -1,23 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
|
|
||||||
|
|
||||||
class MockRecipe(PythonRecipe):
|
|
||||||
version = "4.0.2"
|
|
||||||
url = "https://pypi.python.org/packages/source/m/mock/mock-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = os.path.join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = os.path.join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = MockRecipe()
|
|
|
@ -1,23 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
|
|
||||||
|
|
||||||
class MsgpackRecipe(PythonRecipe):
|
|
||||||
version = "0.6.1"
|
|
||||||
url = "https://pypi.python.org/packages/source/m/msgpack/msgpack-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = os.path.join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = os.path.join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = MsgpackRecipe()
|
|
|
@ -1,22 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
|
|
||||||
|
|
||||||
class MultidictRecipe(PythonRecipe):
|
|
||||||
version = "4.5.2"
|
|
||||||
url = "https://pypi.python.org/packages/source/m/multidict/multidict-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = os.path.join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = os.path.join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = MultidictRecipe()
|
|
|
@ -1,43 +0,0 @@
|
||||||
import sh
|
|
||||||
|
|
||||||
from os.path import join
|
|
||||||
|
|
||||||
from kivy_ios.toolchain import CythonRecipe, shprint
|
|
||||||
from kivy_ios.context_managers import cd
|
|
||||||
|
|
||||||
|
|
||||||
class NetifacesRecipe(CythonRecipe):
|
|
||||||
version = "0.10.9"
|
|
||||||
url = "https://pypi.io/packages/source/n/netifaces/netifaces-{version}.tar.gz"
|
|
||||||
depends = ["python3", "host_setuptools3"]
|
|
||||||
python_depends = ["setuptools"]
|
|
||||||
library = "libnetifaces.a"
|
|
||||||
cythonize = False
|
|
||||||
|
|
||||||
def dest_dir(self):
|
|
||||||
return join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
|
|
||||||
def get_netifaces_env(self, arch):
|
|
||||||
build_env = arch.get_env()
|
|
||||||
build_env["PYTHONPATH"] = join(
|
|
||||||
self.dest_dir(), "lib", "python3.8", "site-packages"
|
|
||||||
)
|
|
||||||
return build_env
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
build_env = self.get_netifaces_env(arch)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
with cd(build_dir):
|
|
||||||
shprint(
|
|
||||||
hostpython,
|
|
||||||
"setup.py",
|
|
||||||
"install",
|
|
||||||
"--prefix",
|
|
||||||
self.dest_dir(),
|
|
||||||
_env=build_env,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = NetifacesRecipe()
|
|
|
@ -1,128 +0,0 @@
|
||||||
diff --git a/numpy/core/setup.py b/numpy/core/setup.py
|
|
||||||
index aad0aae43..407e64fe3 100644
|
|
||||||
--- a/numpy/core/setup.py
|
|
||||||
+++ b/numpy/core/setup.py
|
|
||||||
@@ -757,7 +757,9 @@ def configuration(parent_package='',top_path=None):
|
|
||||||
join('src', 'common', 'numpyos.c'),
|
|
||||||
]
|
|
||||||
|
|
||||||
- blas_info = get_info('blas_opt', 0)
|
|
||||||
+ # XXX IOS, no blas available
|
|
||||||
+ # blas_info = get_info('blas_opt', 0)
|
|
||||||
+ blas_info = None
|
|
||||||
if blas_info and ('HAVE_CBLAS', None) in blas_info.get('define_macros', []):
|
|
||||||
extra_info = blas_info
|
|
||||||
# These files are also in MANIFEST.in so that they are always in
|
|
||||||
@@ -822,7 +824,10 @@ def configuration(parent_package='',top_path=None):
|
|
||||||
join('include', 'numpy', 'npy_1_7_deprecated_api.h'),
|
|
||||||
# add library sources as distuils does not consider libraries
|
|
||||||
# dependencies
|
|
||||||
- ] + npysort_sources + npymath_sources
|
|
||||||
+
|
|
||||||
+ # XXX This breaks for iOS, it results on duplicate symbols
|
|
||||||
+ # ] + npysort_sources + npymath_sources
|
|
||||||
+ ] #+ npysort_sources + npymath_sources
|
|
||||||
|
|
||||||
multiarray_src = [
|
|
||||||
join('src', 'multiarray', 'alloc.c'),
|
|
||||||
@@ -921,7 +926,7 @@ def configuration(parent_package='',top_path=None):
|
|
||||||
|
|
||||||
config.add_extension('_multiarray_umath',
|
|
||||||
sources=multiarray_src + umath_src +
|
|
||||||
- npymath_sources + common_src +
|
|
||||||
+ common_src +
|
|
||||||
[generate_config_h,
|
|
||||||
generate_numpyconfig_h,
|
|
||||||
generate_numpy_api,
|
|
||||||
diff --git a/numpy/linalg/lapack_lite/python_xerbla.c b/numpy/linalg/lapack_lite/python_xerbla.c
|
|
||||||
index dfc195556..7110d1fc3 100644
|
|
||||||
--- a/numpy/linalg/lapack_lite/python_xerbla.c
|
|
||||||
+++ b/numpy/linalg/lapack_lite/python_xerbla.c
|
|
||||||
@@ -20,7 +20,7 @@
|
|
||||||
info: Number of the invalid parameter.
|
|
||||||
*/
|
|
||||||
|
|
||||||
-int xerbla_(char *srname, integer *info)
|
|
||||||
+int custom_xerbla_(char *srname, integer *info)
|
|
||||||
{
|
|
||||||
static const char format[] = "On entry to %.*s" \
|
|
||||||
" parameter number %d had an illegal value";
|
|
||||||
diff --git a/numpy/linalg/lapack_litemodule.c b/numpy/linalg/lapack_litemodule.c
|
|
||||||
index 696a6d874..d187ad2d1 100644
|
|
||||||
--- a/numpy/linalg/lapack_litemodule.c
|
|
||||||
+++ b/numpy/linalg/lapack_litemodule.c
|
|
||||||
@@ -45,7 +45,7 @@ extern int FNAME(zungqr)(int *m, int *n, int *k, f2c_doublecomplex a[],
|
|
||||||
int *lda, f2c_doublecomplex tau[],
|
|
||||||
f2c_doublecomplex work[], int *lwork, int *info);
|
|
||||||
|
|
||||||
-extern int FNAME(xerbla)(char *srname, int *info);
|
|
||||||
+extern int FNAME(custom_xerbla)(char *srname, int *info);
|
|
||||||
|
|
||||||
static PyObject *LapackError;
|
|
||||||
|
|
||||||
@@ -291,7 +291,7 @@ lapack_lite_xerbla(PyObject *NPY_UNUSED(self), PyObject *args)
|
|
||||||
|
|
||||||
NPY_BEGIN_THREADS_DEF;
|
|
||||||
NPY_BEGIN_THREADS;
|
|
||||||
- FNAME(xerbla)("test", &info);
|
|
||||||
+ FNAME(custom_xerbla)("test", &info);
|
|
||||||
NPY_END_THREADS;
|
|
||||||
|
|
||||||
if (PyErr_Occurred()) {
|
|
||||||
diff --git a/numpy/linalg/setup.py b/numpy/linalg/setup.py
|
|
||||||
index 66c07c9e1..6f81243be 100644
|
|
||||||
--- a/numpy/linalg/setup.py
|
|
||||||
+++ b/numpy/linalg/setup.py
|
|
||||||
@@ -48,7 +48,7 @@ def configuration(parent_package='', top_path=None):
|
|
||||||
# umath_linalg module
|
|
||||||
config.add_extension(
|
|
||||||
'_umath_linalg',
|
|
||||||
- sources=['umath_linalg.c.src', get_lapack_lite_sources],
|
|
||||||
+ sources=['umath_linalg.c.src', lambda e, b: []],
|
|
||||||
depends=['lapack_lite/f2c.h'],
|
|
||||||
extra_info=lapack_info,
|
|
||||||
libraries=['npymath'],
|
|
||||||
diff --git a/numpy/linalg/umath_linalg.c.src b/numpy/linalg/umath_linalg.c.src
|
|
||||||
index 9fc68a7aa..270c9bc32 100644
|
|
||||||
--- a/numpy/linalg/umath_linalg.c.src
|
|
||||||
+++ b/numpy/linalg/umath_linalg.c.src
|
|
||||||
@@ -68,6 +68,8 @@ dbg_stack_trace()
|
|
||||||
# define FNAME(x) x##_
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+# define FNAME_APPLE(x) cblas_##x
|
|
||||||
+
|
|
||||||
typedef struct { float r, i; } f2c_complex;
|
|
||||||
typedef struct { double r, i; } f2c_doublecomplex;
|
|
||||||
/* typedef long int (*L_fp)(); */
|
|
||||||
@@ -284,21 +286,25 @@ FNAME(zpotri)(char *uplo, int *n,
|
|
||||||
int *info);
|
|
||||||
|
|
||||||
extern int
|
|
||||||
-FNAME(scopy)(int *n,
|
|
||||||
+FNAME_APPLE(scopy)(int *n,
|
|
||||||
float *sx, int *incx,
|
|
||||||
float *sy, int *incy);
|
|
||||||
+#define scopy_ FNAME_APPLE(scopy)
|
|
||||||
extern int
|
|
||||||
-FNAME(dcopy)(int *n,
|
|
||||||
+FNAME_APPLE(dcopy)(int *n,
|
|
||||||
double *sx, int *incx,
|
|
||||||
double *sy, int *incy);
|
|
||||||
+#define dcopy_ FNAME_APPLE(dcopy)
|
|
||||||
extern int
|
|
||||||
-FNAME(ccopy)(int *n,
|
|
||||||
+FNAME_APPLE(ccopy)(int *n,
|
|
||||||
f2c_complex *sx, int *incx,
|
|
||||||
f2c_complex *sy, int *incy);
|
|
||||||
+#define ccopy_ FNAME_APPLE(ccopy)
|
|
||||||
extern int
|
|
||||||
-FNAME(zcopy)(int *n,
|
|
||||||
+FNAME_APPLE(zcopy)(int *n,
|
|
||||||
f2c_doublecomplex *sx, int *incx,
|
|
||||||
- f2c_doublecomplex *sy, int *incy);
|
|
||||||
+ f2c_doublecomplex *sy, int *incy);
|
|
||||||
+#define zcopy_ FNAME_APPLE(zcopy)
|
|
||||||
|
|
||||||
extern float
|
|
||||||
FNAME(sdot)(int *n,
|
|
|
@ -1,36 +0,0 @@
|
||||||
from kivy_ios.toolchain import Recipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh
|
|
||||||
|
|
||||||
|
|
||||||
arch_mapper = {'i386': 'darwin-i386-cc',
|
|
||||||
'x86_64': 'darwin64-x86_64-cc',
|
|
||||||
'armv7': 'ios-cross',
|
|
||||||
'arm64': 'ios64-cross'}
|
|
||||||
|
|
||||||
|
|
||||||
class OpensslRecipe(Recipe):
|
|
||||||
version = "1.1.1f"
|
|
||||||
url = "http://www.openssl.org/source/openssl-{version}.tar.gz"
|
|
||||||
libraries = ["libssl.a", "libcrypto.a"]
|
|
||||||
include_dir = "include"
|
|
||||||
include_per_arch = True
|
|
||||||
|
|
||||||
def build_arch(self, arch):
|
|
||||||
build_env = arch.get_env()
|
|
||||||
target = arch_mapper[arch.arch]
|
|
||||||
shprint(sh.env, _env=build_env)
|
|
||||||
sh.perl(join(self.build_dir, "Configure"),
|
|
||||||
target,
|
|
||||||
_env=build_env)
|
|
||||||
if target.endswith('-cross'):
|
|
||||||
with open('Makefile', 'r') as makefile:
|
|
||||||
filedata = makefile.read()
|
|
||||||
filedata = filedata.replace('$(CROSS_TOP)/SDKs/$(CROSS_SDK)', arch.sysroot)
|
|
||||||
with open('Makefile', 'w') as makefile:
|
|
||||||
makefile.write(filedata)
|
|
||||||
shprint(sh.make, "clean")
|
|
||||||
shprint(sh.make, self.ctx.concurrent_make, "build_libs")
|
|
||||||
|
|
||||||
|
|
||||||
recipe = OpensslRecipe()
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class Pbkdf2Recipe(PythonRecipe):
|
|
||||||
version = "1.3"
|
|
||||||
url = "https://pypi.python.org/packages/source/p/pbkdf2/pbkdf2-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = Pbkdf2Recipe()
|
|
|
@ -1,23 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
|
|
||||||
|
|
||||||
class PrometheusClientRecipe(PythonRecipe):
|
|
||||||
version = "0.8.0"
|
|
||||||
url = "https://pypi.python.org/packages/source/p/prometheus_client/prometheus_client-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = os.path.join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = os.path.join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = PrometheusClientRecipe()
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class ProtobufRecipe(PythonRecipe):
|
|
||||||
version = "3.6.1"
|
|
||||||
url = "https://pypi.python.org/packages/source/p/protobuf/protobuf-{version}.tar.gz"
|
|
||||||
depends = ["python", "six"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = ProtobufRecipe()
|
|
|
@ -1,20 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class Pyasn1ModulesRecipe(PythonRecipe):
|
|
||||||
version = "0.2.1"
|
|
||||||
url = "https://pypi.python.org/packages/source/p/pyasn1-modules/pyasn1-modules-{version}.tar.gz"
|
|
||||||
depends = ["python", "pyasn1"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
recipe = Pyasn1ModulesRecipe()
|
|
|
@ -1,21 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
from os.path import join
|
|
||||||
import sh, os
|
|
||||||
|
|
||||||
class Pyasn1Recipe(PythonRecipe):
|
|
||||||
version = "0.4.3"
|
|
||||||
url = "https://pypi.python.org/packages/source/p/pyasn1/pyasn1-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = Pyasn1Recipe()
|
|
|
@ -1,23 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
|
|
||||||
|
|
||||||
class PycparserRecipe(PythonRecipe):
|
|
||||||
version = "2.20"
|
|
||||||
url = "https://pypi.python.org/packages/source/p/pycparser/pycparser-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = os.path.join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = os.path.join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = PycparserRecipe()
|
|
|
@ -1,13 +0,0 @@
|
||||||
from kivy_ios.toolchain import PythonRecipe
|
|
||||||
|
|
||||||
|
|
||||||
class PykkaRecipe(PythonRecipe):
|
|
||||||
version = '1.2.1'
|
|
||||||
url = 'https://github.com/jodal/pykka/archive/v{version}.zip'
|
|
||||||
|
|
||||||
depends = ['python', 'host_setuptools']
|
|
||||||
|
|
||||||
site_packages_name = 'pykka'
|
|
||||||
|
|
||||||
|
|
||||||
recipe = PykkaRecipe()
|
|
|
@ -1,23 +0,0 @@
|
||||||
# pure-python package, this can be removed when we'll support any python package
|
|
||||||
import os
|
|
||||||
import sh
|
|
||||||
from kivy_ios.toolchain import PythonRecipe, shprint
|
|
||||||
|
|
||||||
|
|
||||||
class PylruRecipe(PythonRecipe):
|
|
||||||
version = "1.2.0"
|
|
||||||
url = "https://pypi.python.org/packages/source/p/pylru/pylru-{version}.tar.gz"
|
|
||||||
depends = ["python"]
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
os.chdir(build_dir)
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
build_env = arch.get_env()
|
|
||||||
dest_dir = os.path.join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
build_env['PYTHONPATH'] = os.path.join(dest_dir, 'lib', 'python3.8', 'site-packages')
|
|
||||||
shprint(hostpython, "setup.py", "install", "--prefix", dest_dir, _env=build_env)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = PylruRecipe()
|
|
|
@ -1,12 +0,0 @@
|
||||||
from kivy_ios.toolchain import CythonRecipe
|
|
||||||
|
|
||||||
|
|
||||||
class PyobjusRecipe(CythonRecipe):
|
|
||||||
version = "master"
|
|
||||||
url = "https://github.com/kivy/pyobjus/archive/{version}.zip"
|
|
||||||
library = "libpyobjus.a"
|
|
||||||
depends = ["python"]
|
|
||||||
pre_build_ext = True
|
|
||||||
|
|
||||||
|
|
||||||
recipe = PyobjusRecipe()
|
|
|
@ -1,24 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
from kivy_ios.toolchain import Recipe
|
|
||||||
import logging
|
|
||||||
from os.path import join
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class PythonAliasRecipe(Recipe):
|
|
||||||
"""
|
|
||||||
Note this recipe was created to handle both python2 and python3.
|
|
||||||
As python2 support was dropped, this could probably be simplified.
|
|
||||||
"""
|
|
||||||
is_alias = True
|
|
||||||
|
|
||||||
def init_after_import(self, ctx):
|
|
||||||
python = ctx.state.get("python")
|
|
||||||
if not python:
|
|
||||||
python = "python3"
|
|
||||||
self.depends = [python]
|
|
||||||
self.recipe_dir = join(ctx.root_dir, "recipes", python)
|
|
||||||
|
|
||||||
|
|
||||||
recipe = PythonAliasRecipe()
|
|
|
@ -1,85 +0,0 @@
|
||||||
#####################################################################
|
|
||||||
# Static compilation instructions for all binary modules.
|
|
||||||
#####################################################################
|
|
||||||
|
|
||||||
*static*
|
|
||||||
_asyncio _asynciomodule.c
|
|
||||||
_bisect _bisectmodule.c
|
|
||||||
_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c
|
|
||||||
_sqlite3 -I$(srcdir)/Modules/_sqlite -DMODULE_NAME='\"sqlite3\"' _sqlite/cache.c _sqlite/connection.c _sqlite/cursor.c _sqlite/microprotocols.c _sqlite/module.c _sqlite/prepare_protocol.c _sqlite/row.c _sqlite/statement.c _sqlite/util.c
|
|
||||||
# _bz2 _bz2module.c -I$(srcdir)/../bzip2/include -L$(srcdir)/../Support/BZip2 -lbz2
|
|
||||||
_codecs_cn cjkcodecs/_codecs_cn.c
|
|
||||||
_codecs_hk cjkcodecs/_codecs_hk.c
|
|
||||||
_codecs_iso2022 cjkcodecs/_codecs_iso2022.c
|
|
||||||
_codecs_jp cjkcodecs/_codecs_jp.c
|
|
||||||
_codecs_kr cjkcodecs/_codecs_kr.c
|
|
||||||
_codecs_tw cjkcodecs/_codecs_tw.c
|
|
||||||
_contextvars _contextvarsmodule.c
|
|
||||||
_crypt _cryptmodule.c
|
|
||||||
_csv _csv.c
|
|
||||||
_datetime _datetimemodule.c
|
|
||||||
_elementtree _elementtree.c \
|
|
||||||
-I$(srcdir)/Modules/expat
|
|
||||||
-DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI
|
|
||||||
_hashlib _hashopenssl.c -lssl -DUSE_SSL
|
|
||||||
_heapq _heapqmodule.c
|
|
||||||
_json _json.c
|
|
||||||
_lsprof _lsprof.o rotatingtree.c
|
|
||||||
# _lzma _lzmamodule.c -I$(srcdir)/../xz/include -L$(srcdir)/../Support/XZ -llzma
|
|
||||||
_md5 md5module.c
|
|
||||||
_multibytecodec cjkcodecs/multibytecodec.c
|
|
||||||
#multiprocessing _multiprocessing/multiprocessing.c _multiprocessing/semaphore.c
|
|
||||||
_opcode _opcode.c
|
|
||||||
_queue _queuemodule.c
|
|
||||||
_pickle _pickle.c
|
|
||||||
# _posixsubprocess _posixsubprocess.c
|
|
||||||
_random _randommodule.c
|
|
||||||
_sha1 sha1module.c
|
|
||||||
_sha3 _sha3/sha3module.c
|
|
||||||
_sha256 sha256module.c
|
|
||||||
_sha512 sha512module.c
|
|
||||||
_socket socketmodule.c
|
|
||||||
_ssl _ssl.c -lssl -DUSE_SSL
|
|
||||||
_struct _struct.c
|
|
||||||
array arraymodule.c
|
|
||||||
audioop audioop.c
|
|
||||||
binascii binascii.c
|
|
||||||
cmath cmathmodule.c _math.c
|
|
||||||
fcntl fcntlmodule.c
|
|
||||||
grp grpmodule.c
|
|
||||||
math mathmodule.c
|
|
||||||
mmap mmapmodule.c -I/usr/include
|
|
||||||
parser parsermodule.c
|
|
||||||
pyexpat expat/xmlparse.c \
|
|
||||||
expat/xmlrole.c \
|
|
||||||
expat/xmltok.c \
|
|
||||||
pyexpat.c \
|
|
||||||
-I$(srcdir)/Modules/expat \
|
|
||||||
-DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI -DXML_DEV_URANDOM
|
|
||||||
resource resource.c
|
|
||||||
select selectmodule.c
|
|
||||||
syslog syslogmodule.c
|
|
||||||
termios termios.c
|
|
||||||
unicodedata unicodedata.c
|
|
||||||
zlib zlibmodule.c -I$(prefix)/include -lz
|
|
||||||
|
|
||||||
#####################################################################
|
|
||||||
# Testing modules
|
|
||||||
#####################################################################
|
|
||||||
_ctypes_test _ctypes/_ctypes_test.c
|
|
||||||
_testbuffer _testbuffer.c
|
|
||||||
_testinternalcapi _testinternalcapi.c
|
|
||||||
_testimportmultiple _testimportmultiple.c
|
|
||||||
|
|
||||||
#####################################################################
|
|
||||||
# Modules that require additional frameworks
|
|
||||||
#####################################################################
|
|
||||||
#_curses _cursesmodule.c -lcurses -ltermcap
|
|
||||||
#_curses_panel _curses_panel.c -lpanel -lncurses
|
|
||||||
#_dbm _dbmmodule.c
|
|
||||||
#_gdbm _gdbmmodule.c -I/usr/local/include -L/usr/local/lib -lgdbm
|
|
||||||
#_tkinter _tkinter.c tkappinit.c -DWITH_APPINIT -I... -L...
|
|
||||||
#nis nismodule.c -lnsl
|
|
||||||
#ossaudiodev
|
|
||||||
#readline readline.c -lreadline -ltermcap
|
|
||||||
#spwd spwdmodule.c
|
|
|
@ -1,205 +0,0 @@
|
||||||
from kivy_ios.toolchain import Recipe, shprint
|
|
||||||
from kivy_ios.context_managers import cd
|
|
||||||
from os.path import join
|
|
||||||
import sh
|
|
||||||
import shutil
|
|
||||||
import os
|
|
||||||
import logging
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class Python3Recipe(Recipe):
|
|
||||||
version = "3.8.2"
|
|
||||||
url = "https://www.python.org/ftp/python/{version}/Python-{version}.tgz"
|
|
||||||
depends = ["hostpython3", "libffi", "openssl"]
|
|
||||||
library = "libpython3.8.a"
|
|
||||||
pbx_libraries = ["libz", "libbz2", "libsqlite3"]
|
|
||||||
|
|
||||||
def init_with_ctx(self, ctx):
|
|
||||||
super().init_with_ctx(ctx)
|
|
||||||
self.set_python(self, "3.8")
|
|
||||||
ctx.python_ver_dir = "python3.8"
|
|
||||||
ctx.python_prefix = join(ctx.dist_dir, "root", "python3")
|
|
||||||
ctx.site_packages_dir = join(
|
|
||||||
ctx.python_prefix, "lib", ctx.python_ver_dir, "site-packages")
|
|
||||||
|
|
||||||
def prebuild_arch(self, arch):
|
|
||||||
# common to all archs
|
|
||||||
if self.has_marker("patched"):
|
|
||||||
return
|
|
||||||
self.apply_patch("config.sub.patch")
|
|
||||||
self.apply_patch("configure.patch")
|
|
||||||
self.apply_patch("posixmodule.patch")
|
|
||||||
self.apply_patch("dynload_shlib.patch")
|
|
||||||
self.apply_patch("disable_explicit_blake2.patch")
|
|
||||||
self.apply_patch("disable_mremap.patch")
|
|
||||||
self.apply_patch("pyconfig_detection.patch")
|
|
||||||
self.copy_file("ModulesSetup", "Modules/Setup.local")
|
|
||||||
self.append_file("ModulesSetup.mobile", "Modules/Setup.local")
|
|
||||||
self.set_marker("patched")
|
|
||||||
|
|
||||||
def postbuild_arch(self, arch):
|
|
||||||
# include _sqlite module to .a
|
|
||||||
py_arch = arch.arch
|
|
||||||
if py_arch == "armv7":
|
|
||||||
py_arch = "arm"
|
|
||||||
elif py_arch == "arm64":
|
|
||||||
py_arch = "aarch64"
|
|
||||||
tmp_folder = "temp.ios-{}-3.8{}".format(py_arch, self.build_dir)
|
|
||||||
build_env = self.get_build_env(arch)
|
|
||||||
for o_file in [
|
|
||||||
"cache.o",
|
|
||||||
"cursor.o",
|
|
||||||
"module.o",
|
|
||||||
"row.o",
|
|
||||||
"util.o",
|
|
||||||
"connection.o",
|
|
||||||
"microprotocols.o",
|
|
||||||
"prepare_protocol.o",
|
|
||||||
"statement.o",
|
|
||||||
]:
|
|
||||||
shprint(sh.Command(build_env['AR']),
|
|
||||||
"-r",
|
|
||||||
"{}/{}".format(self.build_dir, self.library),
|
|
||||||
"{}/build/{}/Modules/_sqlite/{}".format(self.build_dir, tmp_folder, o_file))
|
|
||||||
print("Added _sqlite to archive")
|
|
||||||
|
|
||||||
def get_build_env(self, arch):
|
|
||||||
build_env = arch.get_env()
|
|
||||||
build_env["PATH"] = "{}:{}".format(
|
|
||||||
join(self.ctx.dist_dir, "hostpython3", "bin"),
|
|
||||||
os.environ["PATH"])
|
|
||||||
build_env["CFLAGS"] += " --sysroot={}".format(arch.sysroot)
|
|
||||||
return build_env
|
|
||||||
|
|
||||||
def build_arch(self, arch):
|
|
||||||
build_env = self.get_build_env(arch)
|
|
||||||
configure = sh.Command(join(self.build_dir, "configure"))
|
|
||||||
py_arch = arch.arch
|
|
||||||
if py_arch == "armv7":
|
|
||||||
py_arch = "arm"
|
|
||||||
elif py_arch == "arm64":
|
|
||||||
py_arch = "aarch64"
|
|
||||||
prefix = join(self.ctx.dist_dir, "root", "python3")
|
|
||||||
shprint(configure,
|
|
||||||
"CC={}".format(build_env["CC"]),
|
|
||||||
"LD={}".format(build_env["LD"]),
|
|
||||||
"CFLAGS={}".format(build_env["CFLAGS"]),
|
|
||||||
"LDFLAGS={} -undefined dynamic_lookup".format(build_env["LDFLAGS"]),
|
|
||||||
"ac_cv_file__dev_ptmx=yes",
|
|
||||||
"ac_cv_file__dev_ptc=no",
|
|
||||||
"ac_cv_little_endian_double=yes",
|
|
||||||
"ac_cv_func_memrchr=no",
|
|
||||||
"ac_cv_func_getentropy=no",
|
|
||||||
"ac_cv_func_getresuid=no",
|
|
||||||
"ac_cv_func_getresgid=no",
|
|
||||||
"ac_cv_func_setresgid=no",
|
|
||||||
"ac_cv_func_setresuid=no",
|
|
||||||
"ac_cv_func_plock=no",
|
|
||||||
"ac_cv_func_dup3=no",
|
|
||||||
"ac_cv_func_pipe2=no",
|
|
||||||
"ac_cv_func_preadv=no",
|
|
||||||
"ac_cv_func_pwritev=no",
|
|
||||||
"ac_cv_func_preadv2=no",
|
|
||||||
"ac_cv_func_pwritev2=no",
|
|
||||||
"ac_cv_func_mkfifoat=no",
|
|
||||||
"ac_cv_func_mknodat=no",
|
|
||||||
"ac_cv_func_posix_fadvise=no",
|
|
||||||
"ac_cv_func_posix_fallocate=no",
|
|
||||||
"ac_cv_func_sigwaitinfo=no",
|
|
||||||
"ac_cv_func_sigtimedwait=no",
|
|
||||||
"ac_cv_func_clock_settime=no",
|
|
||||||
"ac_cv_func_pthread_getcpuclockid=no",
|
|
||||||
"ac_cv_func_sched_setscheduler=no",
|
|
||||||
"ac_cv_func_sched_setparam=no",
|
|
||||||
"ac_cv_func_clock_gettime=no",
|
|
||||||
"--host={}-apple-ios".format(py_arch),
|
|
||||||
"--build=x86_64-apple-darwin",
|
|
||||||
"--prefix={}".format(prefix),
|
|
||||||
"--without-ensurepip",
|
|
||||||
"--with-system-ffi",
|
|
||||||
"--enable-ipv6",
|
|
||||||
"PYTHON_FOR_BUILD=_PYTHON_PROJECT_BASE=$(abs_builddir) \
|
|
||||||
_PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) \
|
|
||||||
PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib\
|
|
||||||
_PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH)\
|
|
||||||
{}".format(sh.Command(self.ctx.hostpython)),
|
|
||||||
_env=build_env)
|
|
||||||
self.apply_patch("ctypes_duplicate.patch")
|
|
||||||
shprint(sh.make, self.ctx.concurrent_make)
|
|
||||||
|
|
||||||
def install(self):
|
|
||||||
arch = list(self.filtered_archs)[0]
|
|
||||||
build_env = self.get_build_env(arch)
|
|
||||||
build_dir = self.get_build_dir(arch.arch)
|
|
||||||
shprint(sh.make, self.ctx.concurrent_make,
|
|
||||||
"-C", build_dir,
|
|
||||||
"install",
|
|
||||||
"prefix={}".format(join(self.ctx.dist_dir, "root", "python3")),
|
|
||||||
_env=build_env)
|
|
||||||
self.reduce_python()
|
|
||||||
self.install_mock_modules()
|
|
||||||
|
|
||||||
def install_mock_modules(self):
|
|
||||||
logger.info("Install mock modules")
|
|
||||||
sqlite3_src = join(self.recipe_dir, 'mock_modules', '_sqlite3')
|
|
||||||
site_packages_folder = join(
|
|
||||||
self.ctx.dist_dir, "root", "python3", "lib", "python3.8", "site-packages", "_sqlite3")
|
|
||||||
shutil.rmtree(site_packages_folder, ignore_errors=True) # Needed in case of rebuild
|
|
||||||
shutil.copytree(sqlite3_src, site_packages_folder)
|
|
||||||
|
|
||||||
def reduce_python(self):
|
|
||||||
logger.info("Reduce python")
|
|
||||||
logger.info("Remove files unlikely to be used")
|
|
||||||
with cd(join(self.ctx.dist_dir, "root", "python3")):
|
|
||||||
sh.rm("-rf", "bin", "share")
|
|
||||||
# platform binaries and configuration
|
|
||||||
with cd(join(
|
|
||||||
self.ctx.dist_dir, "root", "python3", "lib",
|
|
||||||
"python3.8", "config-3.8-darwin")):
|
|
||||||
sh.rm(
|
|
||||||
"libpython3.8.a",
|
|
||||||
"python.o",
|
|
||||||
"config.c.in",
|
|
||||||
"makesetup",
|
|
||||||
"install-sh",
|
|
||||||
)
|
|
||||||
|
|
||||||
# cleanup pkgconfig and compiled lib
|
|
||||||
with cd(join(self.ctx.dist_dir, "root", "python3", "lib")):
|
|
||||||
sh.rm("-rf", "pkgconfig", "libpython3.8.a")
|
|
||||||
|
|
||||||
# cleanup python libraries
|
|
||||||
with cd(join(
|
|
||||||
self.ctx.dist_dir, "root", "python3", "lib", "python3.8")):
|
|
||||||
sh.rm("-rf", "curses", "idlelib", "lib2to3",
|
|
||||||
"ensurepip", "turtledemo", "lib-dynload", "venv",
|
|
||||||
"pydoc_data")
|
|
||||||
sh.find(".", "-path", "*/test*/*", "-delete")
|
|
||||||
sh.find(".", "-name", "*.exe", "-type", "f", "-delete")
|
|
||||||
sh.find(".", "-name", "test*", "-type", "d", "-delete")
|
|
||||||
sh.find(".", "-iname", "*.pyc", "-delete")
|
|
||||||
sh.find(".", "-path", "*/__pycache__/*", "-delete")
|
|
||||||
sh.find(".", "-name", "__pycache__", "-type", "d", "-delete")
|
|
||||||
|
|
||||||
# now precompile to Python bytecode
|
|
||||||
hostpython = sh.Command(self.ctx.hostpython)
|
|
||||||
shprint(hostpython, "-m", "compileall", "-f", "-b")
|
|
||||||
# sh.find(".", "-iname", "*.py", "-delete")
|
|
||||||
|
|
||||||
# some pycache are recreated after compileall
|
|
||||||
sh.find(".", "-path", "*/__pycache__/*", "-delete")
|
|
||||||
sh.find(".", "-name", "__pycache__", "-type", "d", "-delete")
|
|
||||||
|
|
||||||
# create the lib zip
|
|
||||||
logger.info("Create a python3.8.zip")
|
|
||||||
sh.mv("config-3.8-darwin", "..")
|
|
||||||
sh.mv("site-packages", "..")
|
|
||||||
sh.zip("-r", "../python38.zip", sh.glob("*"))
|
|
||||||
sh.rm("-rf", sh.glob("*"))
|
|
||||||
sh.mv("../config-3.8-darwin", ".")
|
|
||||||
sh.mv("../site-packages", ".")
|
|
||||||
|
|
||||||
|
|
||||||
recipe = Python3Recipe()
|
|
|
@ -1,31 +0,0 @@
|
||||||
diff -Naur Python-3.8.2.orig/.building Python-3.8.2/.building
|
|
||||||
--- Python-3.8.2.orig/.building 2020-04-11 23:53:30.000000000 +0200
|
|
||||||
+++ Python-3.8.2/.building 1970-01-01 01:00:00.000000000 +0100
|
|
||||||
@@ -1 +0,0 @@
|
|
||||||
-ok
|
|
||||||
\ No newline at end of file
|
|
||||||
diff -Naur Python-3.8.2.orig/config.sub Python-3.8.2/config.sub
|
|
||||||
--- Python-3.8.2.orig/config.sub 2020-04-11 23:53:40.000000000 +0200
|
|
||||||
+++ Python-3.8.2/config.sub 2020-04-11 23:51:41.000000000 +0200
|
|
||||||
@@ -249,7 +249,7 @@
|
|
||||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
|
||||||
| am33_2.0 \
|
|
||||||
| arc | arceb \
|
|
||||||
- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv6m | armv[78][arm] \
|
|
||||||
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv6m | armv[78][armk] \
|
|
||||||
| avr | avr32 \
|
|
||||||
| ba \
|
|
||||||
| be32 | be64 \
|
|
||||||
@@ -1524,7 +1524,11 @@
|
|
||||||
;;
|
|
||||||
-nacl*)
|
|
||||||
;;
|
|
||||||
- -ios)
|
|
||||||
+ -ios*)
|
|
||||||
+ ;;
|
|
||||||
+ -tvos*)
|
|
||||||
+ ;;
|
|
||||||
+ -watchos*)
|
|
||||||
;;
|
|
||||||
-none)
|
|
||||||
;;
|
|
|
@ -1,90 +0,0 @@
|
||||||
diff -Naur Python-3.8.2.orig/configure Python-3.8.2/configure
|
|
||||||
--- Python-3.8.2.orig/configure 2020-04-12 00:00:42.000000000 +0200
|
|
||||||
+++ Python-3.8.2/configure 2020-04-12 00:08:45.000000000 +0200
|
|
||||||
@@ -3271,6 +3271,15 @@
|
|
||||||
*-*-cygwin*)
|
|
||||||
ac_sys_system=Cygwin
|
|
||||||
;;
|
|
||||||
+ *-apple-ios)
|
|
||||||
+ ac_sys_system=iOS
|
|
||||||
+ ;;
|
|
||||||
+ *-apple-tvos)
|
|
||||||
+ ac_sys_system=tvOS
|
|
||||||
+ ;;
|
|
||||||
+ *-apple-watchos)
|
|
||||||
+ ac_sys_system=watchOS
|
|
||||||
+ ;;
|
|
||||||
*-*-vxworks*)
|
|
||||||
ac_sys_system=VxWorks
|
|
||||||
;;
|
|
||||||
@@ -3318,6 +3327,15 @@
|
|
||||||
_host_cpu=$host_cpu
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
+ *-apple-*)
|
|
||||||
+ case "$host_cpu" in
|
|
||||||
+ arm*)
|
|
||||||
+ _host_cpu=arm
|
|
||||||
+ ;;
|
|
||||||
+ *)
|
|
||||||
+ _host_cpu=$host_cpu
|
|
||||||
+ esac
|
|
||||||
+ ;;
|
|
||||||
*-*-cygwin*)
|
|
||||||
_host_cpu=
|
|
||||||
;;
|
|
||||||
@@ -3396,6 +3414,13 @@
|
|
||||||
define_xopen_source=no;;
|
|
||||||
Darwin/1[0-9].*)
|
|
||||||
define_xopen_source=no;;
|
|
||||||
+ # On iOS, defining _POSIX_C_SOURCE also disables platform specific features.
|
|
||||||
+ iOS/*)
|
|
||||||
+ define_xopen_source=no;;
|
|
||||||
+ tvOS/*)
|
|
||||||
+ define_xopen_source=no;;
|
|
||||||
+ watchOS/*)
|
|
||||||
+ define_xopen_source=no;;
|
|
||||||
# On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
|
|
||||||
# used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
|
|
||||||
# or has another value. By not (re)defining it, the defaults come in place.
|
|
||||||
@@ -6165,10 +6190,16 @@
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$cross_compiling" = yes; then
|
|
||||||
- case "$READELF" in
|
|
||||||
- readelf|:)
|
|
||||||
- as_fn_error $? "readelf for the host is required for cross builds" "$LINENO" 5
|
|
||||||
- ;;
|
|
||||||
+ case "$host" in
|
|
||||||
+ *-apple-*os)
|
|
||||||
+ # readelf not required for iOS cross builds.
|
|
||||||
+ ;;
|
|
||||||
+ *)
|
|
||||||
+ case "$READELF" in
|
|
||||||
+ readelf|:)
|
|
||||||
+ as_fn_error $? "readelf for the host is required for cross builds" "$LINENO" 5
|
|
||||||
+ ;;
|
|
||||||
+ esac
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
@@ -6920,8 +6951,6 @@
|
|
||||||
# tweak BASECFLAGS based on compiler and platform
|
|
||||||
case $GCC in
|
|
||||||
yes)
|
|
||||||
- CFLAGS_NODIST="$CFLAGS_NODIST -std=c99"
|
|
||||||
-
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Wextra" >&5
|
|
||||||
$as_echo_n "checking for -Wextra... " >&6; }
|
|
||||||
ac_save_cc="$CC"
|
|
||||||
@@ -11438,6 +11467,10 @@
|
|
||||||
;;
|
|
||||||
hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
|
|
||||||
+ # Dynamic loading on iOS
|
|
||||||
+ iOS/*) DYNLOADFILE="dynload_shlib.o";;
|
|
||||||
+ tvOS/*) DYNLOADFILE="dynload_shlib.o";;
|
|
||||||
+ watchOS/*) DYNLOADFILE="dynload_shlib.o";;
|
|
||||||
*)
|
|
||||||
# use dynload_shlib.c and dlopen() if we have it; otherwise stub
|
|
||||||
# out any dynamic loading
|
|
||||||
if test "$ac_cv_func_dlopen" = yes
|
|
|
@ -1,19 +0,0 @@
|
||||||
diff -Naur Python-3.8.2.orig/Modules/_ctypes/cfield.c Python-3.8.2/Modules/_ctypes/cfield.c
|
|
||||||
--- Python-3.8.2.orig/Modules/_ctypes/cfield.c 2020-04-13 12:23:46.000000000 +0200
|
|
||||||
+++ Python-3.8.2/Modules/_ctypes/cfield.c 2020-04-13 12:24:45.000000000 +0200
|
|
||||||
@@ -1636,7 +1636,7 @@
|
|
||||||
struct _ffi_type **elements;
|
|
||||||
} ffi_type;
|
|
||||||
*/
|
|
||||||
-
|
|
||||||
+#if 0
|
|
||||||
/* align and size are bogus for void, but they must not be zero */
|
|
||||||
ffi_type ffi_type_void = { 1, 1, FFI_TYPE_VOID };
|
|
||||||
|
|
||||||
@@ -1663,5 +1663,5 @@
|
|
||||||
FFI_TYPE_LONGDOUBLE };
|
|
||||||
|
|
||||||
ffi_type ffi_type_pointer = { sizeof(void *), VOID_P_ALIGN, FFI_TYPE_POINTER };
|
|
||||||
-
|
|
||||||
+#endif
|
|
||||||
/*---------------- EOF ----------------*/
|
|
|
@ -1,12 +0,0 @@
|
||||||
diff -Naur Python-3.8.2.orig/Modules/_blake2/impl/blake2-impl.h Python-3.8.2/Modules/_blake2/impl/blake2-impl.h
|
|
||||||
--- Python-3.8.2.orig/Modules/_blake2/impl/blake2-impl.h 2020-04-12 01:20:03.000000000 +0200
|
|
||||||
+++ Python-3.8.2/Modules/_blake2/impl/blake2-impl.h 2020-04-12 01:21:11.000000000 +0200
|
|
||||||
@@ -26,6 +26,8 @@
|
|
||||||
#define BLAKE2_IMPL_EVAL(x,y) BLAKE2_IMPL_CAT(x,y)
|
|
||||||
#define BLAKE2_IMPL_NAME(fun) BLAKE2_IMPL_EVAL(fun, SUFFIX)
|
|
||||||
|
|
||||||
+#undef HAVE_EXPLICIT_BZERO
|
|
||||||
+#undef HAVE_EXPLICIT_MEMSET
|
|
||||||
static inline uint32_t load32( const void *src )
|
|
||||||
{
|
|
||||||
#if defined(NATIVE_LITTLE_ENDIAN)
|
|
|
@ -1,34 +0,0 @@
|
||||||
--- a/Modules/mmapmodule.c 2020-09-28 21:41:42.000000000 +0100
|
|
||||||
+++ b/Modules/mmapmodule.c 2020-09-28 21:42:35.000000000 +0100
|
|
||||||
@@ -527,11 +527,11 @@
|
|
||||||
#endif /* MS_WINDOWS */
|
|
||||||
|
|
||||||
#ifdef UNIX
|
|
||||||
-#ifndef HAVE_MREMAP
|
|
||||||
+//#ifndef HAVE_MREMAP
|
|
||||||
PyErr_SetString(PyExc_SystemError,
|
|
||||||
"mmap: resizing not available--no mremap()");
|
|
||||||
return NULL;
|
|
||||||
-#else
|
|
||||||
+/*#else
|
|
||||||
void *newmap;
|
|
||||||
|
|
||||||
if (self->fd != -1 && ftruncate(self->fd, self->offset + new_size) == -1) {
|
|
||||||
@@ -546,7 +546,7 @@
|
|
||||||
newmap = mremap(self->data, self->size, self->data, new_size, 0);
|
|
||||||
#else
|
|
||||||
newmap = mremap(self->data, self->size, new_size, 0);
|
|
||||||
-#endif /* __NetBSD__ */
|
|
||||||
+#endif
|
|
||||||
#endif
|
|
||||||
if (newmap == (void *)-1)
|
|
||||||
{
|
|
||||||
@@ -556,7 +556,7 @@
|
|
||||||
self->data = newmap;
|
|
||||||
self->size = new_size;
|
|
||||||
Py_RETURN_NONE;
|
|
||||||
-#endif /* HAVE_MREMAP */
|
|
||||||
+#endif */
|
|
||||||
#endif /* UNIX */
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
diff -Naur Python-3.8.2.orig/Python/dynload_shlib.c Python-3.8.2/Python/dynload_shlib.c
|
|
||||||
--- Python-3.8.2.orig/Python/dynload_shlib.c 2020-04-12 00:17:24.000000000 +0200
|
|
||||||
+++ Python-3.8.2/Python/dynload_shlib.c 2020-04-12 00:20:10.000000000 +0200
|
|
||||||
@@ -74,6 +74,15 @@
|
|
||||||
|
|
||||||
PyOS_snprintf(funcname, sizeof(funcname),
|
|
||||||
LEAD_UNDERSCORE "%.20s_%.200s", prefix, shortname);
|
|
||||||
+ /* On IOS, dlopen crash as soon as we try to open one of our library.
|
|
||||||
+ * Instead, we have done a redirection of linking to convert our .so into a
|
|
||||||
+ * .a. Then the main executable is linked with theses symbol. So, instead
|
|
||||||
+ * of trying to dlopen, directly do the dlsym.
|
|
||||||
+ * -- Mathieu
|
|
||||||
+ */
|
|
||||||
+ return (dl_funcptr) dlsym(RTLD_SELF, funcname);
|
|
||||||
+
|
|
||||||
+ #if 0
|
|
||||||
|
|
||||||
if (fp != NULL) {
|
|
||||||
int i;
|
|
||||||
@@ -129,4 +138,5 @@
|
|
||||||
handles[nhandles++].handle = handle;
|
|
||||||
p = (dl_funcptr) dlsym(handle, funcname);
|
|
||||||
return p;
|
|
||||||
+ #endif
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
__version__ = 'kivy-ios'
|
|
||||||
from ._sqlite3 import * # noqa: F401, F403
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue