-
Story
-
Resolution: Unresolved
-
Undefined
-
None
-
None
-
None
-
False
-
-
False
-
-
Package 'caikit' does not build as-is via the AIPCC self-service pipeline and requires builder repository onboarding.
Build Failure Summary
Root Cause Analysis: `caikit` Build Failure
Summary
The build of caikit 0.28.3 failed because its install dependency alchemy-config 1.1.3 could not be built. The `alchemy-config` package's `setup.py` references a `requirements.txt` file that is missing from its source distribution (sdist).
The Error
FileNotFoundError: [Errno 2] No such file or directory:
'/mnt/work-dir/alchemy_config-1.1.3/alchemy_config-1.1.3/requirements.txt'
This occurs at line 15 of `setup.py` (shown as `File "<string>", line 15, in <module>`) during the `get_requires_for_build_wheel` phase, which means `setup.py` is executed to discover build-time dependencies, and it immediately fails because it tries to open `requirements.txt` to read install requirements.
Root Cause
`alchemy-config==1.1.3`'s sdist does not include the `requirements.txt` file that its `setup.py` expects. This is a packaging defect in `alchemy-config` itself — the `MANIFEST.in` or build configuration likely omits `requirements.txt` from the source distribution tarball, so when the sdist is extracted and `setup.py` is executed, the file is not present.
What Would Fix It
- Check whether a newer version of `alchemy-config` (still within the `<2.0.0,>=1.1.1` constraint) has fixed this packaging issue. If a newer release includes `requirements.txt` in its sdist, upgrading would resolve the problem.
- Patch the `alchemy-config` sdist to include the missing `requirements.txt` file. This can be done by:
1. Inspecting the upstream `alchemy-config` repository to obtain the correct `requirements.txt` contents
2. Adding a source patch (e.g., via a `patches/` directory or a fromager `post_download` hook) that injects the file into the extracted source before `setup.py` is executed - File a bug upstream against `alchemy-config` if the `requirements.txt` is genuinely missing from the sdist — their `MANIFEST.in` or `pyproject.toml` `[tool.setuptools]` configuration needs to include it.
Packaging Analysis Summary
Here is the executive summary formatted as a JIRA comment in JIRA wiki markup:
Executive Summary: caikit Build Analysis
caikit is a Simple complexity (1/10) pure-Python AI toolkit framework with no native compilation requirements. The package contains zero C/C++/Rust/Cython code and produces a universal wheel (py3-none-any). The build system is fully declarative — setuptools with setuptools-scm for version management, PEP 517/518 compliant via pyproject.toml, with no custom build logic. Pre-compiled protobuf stubs are checked into the repository, so no protoc step is needed. There are no blockers for building from source. The package is licensed under Apache-2.0, fully compatible with Red Hat distribution policies, and all core dependencies use permissive licenses (MIT, Apache-2.0, BSD-3-Clause).
The recommended build approach is a straightforward source build. The only notable build-time consideration is setting SETUPTOOLS_SCM_PRETEND_VERSION=0.28.3 when building from a source tarball without git history, to avoid version fallback to 0.0.0. All 17 core runtime dependencies have pre-built manylinux wheels available on PyPI for x86_64. Dependencies with native components — grpcio, numpy, protobuf, psutil, and PyYAML — are all well-established packages with broad platform wheel availability. The grpcio version exclusions (!=1.55.0, !=1.64.0) in pyproject.toml must be respected.
A key finding for AIPCC-10389: caikit itself is hardware-agnostic and contains zero GPU-specific code. The same py3-none-any wheel works identically across CPU, CUDA, and ROCm indexes. Separate per-accelerator builds are not required for this package. GPU/accelerator awareness comes from downstream packages such as caikit-nlp (which depends on PyTorch), not from caikit itself. No open GitHub issues block building or packaging; the only notable dependency concern is a pandas<2 pin on the optional interfaces-ts extra, which does not affect core runtime usage.
Build Command
export SETUPTOOLS_SCM_PRETEND_VERSION=0.28.3 pip wheel --no-deps .
Key Facts
- Source: https://github.com/caikit/caikit — public, IBM-originated, latest v0.28.3 (2025-10-22)
- License: Apache-2.0 — Red Hat distribution compliant, no copyleft dependencies
- Python Support: 3.8, 3.9, 3.10, 3.11, 3.12 (CI-tested on ubuntu-latest)
- Multi-index (CPU/CUDA/ROCm): Single universal wheel covers all — no separate builds needed
- Critical Blockers: None
- is blocked by
-
AIPCC-10744 Add caikit into the RHAI pipeline onboarding collection
-
- In Progress
-
- mentioned on