Build ===== Compiling Themerr-jellyfin requires the following: - `git `__ - `.net9.0 SDK `__ - `python >=3.14 `__ - `uv `__ Clone ----- Ensure `git `__ is installed and run the following: .. code-block:: bash git clone https://github.com/lizardbyte/themerr-jellyfin.git cd ./themerr-jellyfin Setup Python ------------ Python dependencies are managed with ``uv``. Install uv outside this repository's ``.venv`` if it is not already available: .. code-block:: bash pipx install uv # or python -m pip install --user uv If Python 3.14 is not already installed, install it with uv: .. code-block:: bash uv python install 3.14 Install Dependencies -------------------- Create or update the project ``.venv`` environment, including build dependencies: .. code-block:: bash uv sync --only-group dev --no-install-project Compile ------- .. code-block:: bash uv run --no-sync python ./scripts/build_plugin.py --output ./build The generated ``build.yaml`` is printed to stdout before JPRM runs and is left in the repository root by default. Use ``--remove-build-yaml`` to delete it after the script finishes. Release builds can pass an explicit plugin version: .. code-block:: bash uv run --no-sync python ./scripts/build_plugin.py --version v1.2.3 --output ./build Any generated ``build.yaml`` field can be overridden with a ``THEMERR_`` environment variable. Use the field name in upper snake case, such as ``THEMERR_NAME``, ``THEMERR_TARGET_ABI``, ``THEMERR_FRAMEWORK``, ``THEMERR_VERSION``, or ``THEMERR_CHANGELOG``. ``THEMERR_ARTIFACTS`` accepts a YAML list, a JSON string array, a newline-separated list, or a comma-separated list. CI sets ``THEMERR_CHANGELOG`` from the release body automatically. When Python dependencies change, update the lock file and include it in the same pull request: .. code-block:: bash uv lock CI installs from ``uv.lock`` with ``uv sync --frozen``. To check the lock file and install build dependencies locally, run: .. code-block:: bash uv lock --check uv sync --frozen --only-group dev --no-install-project Remote Build ------------ It may be beneficial to build remotely in some cases. This will enable easier building on different operating systems. #. Fork the project #. Activate workflows #. Trigger the `CI` workflow manually #. Download the artifacts from the workflow run summary