0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kivyを自前でビルド (Linux)

0
Last updated at Posted at 2026-10-04

何故自前でするか

PyPIにあるビルド済Kivyの最終リリースは2024/12/27と古く、対応しているPythonが3.13までなのがしんどいから。

git clone

$ git clone git@github.com:kivy/kivy.git

ちょっと修正

そのままだとpillowのversion指定が一貫していない事によるエラーと

pyproject.toml
[project.optional-dependencies]
base = ["pillow>=9.5.0,<12"]
full = ["pillow>=12.3,<13"]

sphinxがPython3.12以上を求めるのに3.11以上対応を謳っている事によるエラーと

[project]
requires-python = ">=3.11"

依存ライブラリをビルドする際の実行権限のエラーが起きるので以下のように修正してあげる。

diff --git a/pyproject.toml b/pyproject.toml
index f8109e02c..8dcfe2bc2 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -18,7 +18,7 @@ name = "Kivy"
 dynamic = ["version"]
 description = "An open-source Python framework for developing GUI apps that work cross-platform, including desktop, mobile and embedded platforms."
 readme = "README.md"
-requires-python = ">=3.11"
+requires-python = ">=3.12"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [
@@ -95,7 +95,7 @@ dev = [
 docs = [
     "sphinx==9.1.0"
 ]
-base = ["pillow>=9.5.0,<12"]
+#base = ["pillow>=9.5.0,<12"]
 media = [
     'kivy_deps.gstreamer~=0.3.3; sys_platform == "win32"',
     # todo(cclauss): modify when python3.14 -m pip install ffpyplayer works
diff --git a/tools/build_linux_dependencies.sh b/tools/build_linux_dependencies.sh
index 6fee847c0..318f53f94 100755
--- a/tools/build_linux_dependencies.sh
+++ b/tools/build_linux_dependencies.sh
@@ -100,7 +100,7 @@ popd
 
 echo "-- Build SDL3_mixer"
 pushd $MANYLINUX__SDL3_MIXER__FOLDER
-  ./external/download.sh;
+  bash ./external/download.sh;
 
   sdl_mixer_builds_args=(
     -DCMAKE_POSITION_INDEPENDENT_CODE="ON"
@@ -124,7 +124,7 @@ popd
 
 echo "-- Build SDL3_image"
 pushd $MANYLINUX__SDL3_IMAGE__FOLDER
-  ./external/download.sh;
+  bash ./external/download.sh;
   cmake -B build -DBUILD_SHARED_LIBS=ON \
           -DCMAKE_BUILD_TYPE=Release \
           -DSDLIMAGE_VENDORED=ON \
@@ -136,7 +136,7 @@ popd
 
 echo "-- Build SDL3_ttf"
 pushd $MANYLINUX__SDL3_TTF__FOLDER
-  ./external/download.sh;
+  bash ./external/download.sh;
   cmake -B build-cmake \
           -DBUILD_SHARED_LIBS=ON \
           -DSDLTTF_HARFBUZZ=ON \

依存ライブラリ達をビルド

$ cd ./tools
$ bash ./build_linux_dependencies.sh

ビルドに成功するとkivy-dependenciesというディレクトが出来上がっている。

$ ls ./kivy-dependencies/
build  dist  download

この中で要るのはdistだけなので他は削除して良い。というか容量が馬鹿にならないので削除した方が良い。

依存ライブラリの場所をKivyに伝える為の環境変数

$ export KIVY_DEPS_ROOT=kivy-dependenciesへのパス(絶対パスが無難だと思う)

これはKivyをビルドする時のみ必要な変数で、Kivyアプリ実行時には要らない。

Kivyをビルド

$ cd ../
$ uv sync --extra dev --extra full

ユニットテストで問題が出なければ萬歳。

$ uv run make test

Cythonファイルを弄りたい場合

Cythonファイルに手を加えた後は当然Kivyの再ビルドが必要となるが、そうしようと次のコマンドを打つとCythonが無いと怒られる。

$ uv run python ./setup.py build_ext --inplace

意外な事に先程Kivyのビルドに用いたであろうCythonは仮想環境には入っていないのだ。なので別に入れないといけない。

$ grep cython ./pyproject.toml 
    "cython>=0.29.1,<=3.2.0",
    "cython==3.2.0",
cython_min = "0.29.1"
cython_max = "3.2.0"
cython_exclude = ""

$ uv pip install Cython==3.2.0

ここでは $ uv pip install を用いたが代えて $ uv add を用いると勝手にKivyの再ビルドが始まってしまい待たされてしまう。(ここら辺は単に私がuv或いは仮想環境全般を理解していないだけだと思いますが自分が思っている以上に不必要な再ビルドが起きてしまう事がある)。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?