• 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

75.0
/pythonforandroid/recipes/freetype-py/__init__.py
1
from pythonforandroid.recipe import PyProjectRecipe
8✔
2

3

4
class FreetypePyRecipe(PyProjectRecipe):
8✔
5
    version = '2.5.1'
8✔
6
    url = 'https://github.com/rougier/freetype-py/archive/refs/tags/v{version}.tar.gz'
8✔
7
    patches = ["fix_import.patch"]
8✔
8
    depends = ['freetype']
8✔
9
    site_packages_name = 'freetype'
8✔
10

11
    def get_recipe_env(self, arch, **kwargs):
8✔
NEW
12
        env = super().get_recipe_env(arch, **kwargs)
×
NEW
13
        env["SETUPTOOLS_SCM_PRETEND_VERSION_FOR_freetype_py"] = self.version
×
NEW
14
        return env
×
15

16

17
recipe = FreetypePyRecipe()
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