• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kivy / python-for-android / 18843127827

27 Oct 2025 01:44PM UTC coverage: 58.503%. First build
18843127827

push

github

web-flow
Update to Python 3.14, remove distutils (#3242)

* Use `pip install` instead of `setup.py install` in `recipe.py`

On Python 3.14, many recipes, notably `msgpack`, no longer byte-
compile with `setup.py install`, because the way that command
byte-compiles relies on `distutils`, which is gone.

* Import from setuptools and not distutils in the `android` recipe

* Remove freetype's distutils "fallback"

It was actually using distutils every time, apparently?

* Bump `freetype` version to match that of `freetype-py`

* On second thought, use the latest freetype version

* Use the latest *released* freetype-py version

* Tell setuptools what freetype-py version we have

* Turn `FreetypePyRecipe` into a `PyProjectRecipe`

I don't think this will require the version hack

* Put the `setuptools-scm` version hack back in

* Fix `FreetypePyRecipe.get_recipe_env`

* Switch to pythonhosted FreetypePy

`setuptools-scm` can't deal with the github hosted one, it seems.

* Update apsw recipe, use pythonhosted package

* Fix `LibffiRecipe.get_include_dirs` for `arch=None`

* Use recent libffi and cffi

* Require setuptools for every recipe

* `python`: update to `3.14.0`

* Use `pip install` instead of `setup.py install` in `recipe.py`

On Python 3.14, many recipes, notably `msgpack`, no longer byte-
compile with `setup.py install`, because the way that command
byte-compiles relies on `distutils`, which is gone.

* Import from setuptools and not distutils in the `android` recipe

* Remove freetype's distutils "fallback"

It was actually using distutils every time, apparently?

* Bump `freetype` version to match that of `freetype-py`

* On second thought, use the latest freetype version

* Use the latest *released* freetype-py version

* Tell setuptools what freetype-py version we have

* Turn `FreetypePyRecipe` into a `PyProjectRecipe`

I don't think this will require the version hack

* Put the `setuptools-scm` version hack back in

* Fix `FreetypePyRecipe.get_recip... (continued)

1068 of 2439 branches covered (43.79%)

Branch coverage included in aggregate %.

25 of 39 new or added lines in 7 files covered. (64.1%)

5007 of 7945 relevant lines covered (63.02%)

5.03 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

55.0
/pythonforandroid/recipes/sqlite3/__init__.py
1
import sh
8✔
2
from pythonforandroid.logger import shprint
8✔
3
from pythonforandroid.util import current_directory
8✔
4
from pythonforandroid.recipe import Recipe
8✔
5
from multiprocessing import cpu_count
8✔
6

7

8
class Sqlite3Recipe(Recipe):
8✔
9
    version = '3.50.4'
8✔
10
    url = 'https://github.com/sqlite/sqlite/archive/refs/tags/version-{version}.tar.gz'
8✔
11
    built_libraries = {'libsqlite3.so': '.'}
8✔
12

13
    def build_arch(self, arch):
8✔
NEW
14
        env = self.get_recipe_env(arch)
×
NEW
15
        build_dir = self.get_build_dir(arch.arch)
×
NEW
16
        config_args = {
×
17
            '--host={}'.format(arch.command_prefix),
18
            '--prefix={}'.format(build_dir),
19
            '--disable-tcl',
20
        }
NEW
21
        with current_directory(build_dir):
×
NEW
22
            configure = sh.Command('./configure')
×
NEW
23
            shprint(configure, *config_args, _env=env)
×
NEW
24
            shprint(sh.make, '-j', str(cpu_count()), _env=env)
×
25

26

27
recipe = Sqlite3Recipe()
8✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc