• 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

61.54
/pythonforandroid/recipes/apsw/__init__.py
1
from pythonforandroid.recipe import PyProjectRecipe
8✔
2

3

4
class ApswRecipe(PyProjectRecipe):
8✔
5
    version = '3.50.4.0'
8✔
6
    url = 'https://github.com/rogerbinns/apsw/releases/download/{version}/apsw-{version}.tar.gz'
8✔
7
    depends = ['sqlite3']
8✔
8
    site_packages_name = 'apsw'
8✔
9

10
    def get_recipe_env(self, arch, **kwargs):
8✔
NEW
11
        env = super().get_recipe_env(arch, **kwargs)
×
12
        sqlite_recipe = self.get_recipe('sqlite3', self.ctx)
×
13
        env['CFLAGS'] += ' -I' + sqlite_recipe.get_build_dir(arch.arch)
×
14
        env['LIBS'] = env.get('LIBS', '') + ' -lsqlite3'
×
15
        return env
×
16

17

18
recipe = ApswRecipe()
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