This repository contains the packaging metadata and automation needed to publish selected upstream software through Fedora COPR.
The COPR project that publishes the available packages is iolaum/aitoolkit.
Current published package status:
| Package | Status |
|---|---|
bun |
![]() |
llm-wiki |
![]() |
open-code |
![]() |
python-hf-xet |
![]() |
python-huggingface-hub |
![]() |
The repository is intentionally focused on packaging and publication, not on mirroring upstream source trees or storing a hand-managed RPM repository.
It is used to:
- keep RPM spec files under version control
- let COPR fetch upstream release artifacts during builds
- build RPMs in Fedora infrastructure via COPR
- publish installable Fedora repositories for supported packages
- document packaging constraints, architecture choices, and maintenance workflow
It is not used to:
- maintain a local
createrepo_crepository - commit upstream release tarballs or binaries into git
- rebuild large upstream projects from source unless that becomes necessary later
- package name in this repository and in RPM metadata should be
open-code - approach: repackage the upstream desktop
.rpmrelease and install the matching standalone CLI release artifact - primary architecture:
x86_64 - secondary architecture:
aarch64is planned but not yet enabled - preserve the upstream desktop application payload as-is
- preserve the packaged
opencode-clicommand
This approach is chosen because it matches the current local workflow of consuming upstream release artifacts and publishing them as installable packages, while moving repository generation and hosting into COPR.
Packaging note:
open-codedisables Fedora RPM strip-related BRP post-processing during rebuilds- this protects upstream-provided binary payloads from being modified during repackaging
- the spec includes smoke checks to verify the packaged CLI still reports the expected OpenCode version and help output
Install on Fedora:
sudo dnf copr enable iolaum/aitoolkit
sudo dnf install open-code
opencode-cli --versionDesktop verification after install:
- confirm
OpenCodeappears in the desktop launcher - launch
OpenCodeonce to verify the desktop entry, icons, and bundled runtime work as expected
- package name in this repository and in RPM metadata should be
llm-wiki - initial approach: repackage the upstream Tauri-generated
.rpmrelease - primary architecture:
x86_64 - preserve the upstream desktop application payload as-is for the first version
- preserve the bundled
libpdfium.soresource shipped by upstream
This approach keeps the package aligned with upstream's existing release process while letting COPR publish an installable Fedora repository for the RPM artifact.
Packaging note:
llm-wikidisables Fedora RPM strip-related BRP post-processing during rebuilds- this avoids mutating the upstream Tauri binary or bundled
libpdfium.sopayload while republishing the upstream RPM contents - the spec includes smoke checks for the executable, desktop file, and bundled PDFium resource
Install on Fedora:
sudo dnf copr enable iolaum/aitoolkit
sudo dnf install llm-wikiDesktop verification after install:
- confirm
LLM Wikiappears in the desktop launcher - launch
LLM Wikionce to verify the desktop entry, icons, bundled runtime, and PDF support work as expected
- COPR package name:
python-hf-xet - installable RPM name:
python3-hf-xet - primary architecture:
x86_64 - package the upstream Linux
cp37-abi3wheel for the standard Fedora CPython build - do not switch to the upstream
cp313torcp314twheels for normal Fedora builds; those target free-threaded Python variants
This approach keeps the repository aligned with its current binary-repackaging strategy while still selecting a Python-compatible upstream artifact across supported Fedora releases.
Packaging note:
hf-xetis built upstream from Rust sources using maturin/PyO3- the published
cp37-abi3wheel works across supported Fedora Python versions with the default interpreter - rebuilding from source would require a much heavier Rust workspace toolchain and is intentionally avoided here
Install on Fedora:
sudo dnf copr enable iolaum/aitoolkit
sudo dnf install python3-hf-xet
python3 -c "import hf_xet"- COPR package name:
python-huggingface-hub - installable RPM name:
python3-huggingface-hub - initial target architecture:
x86_64 - package the upstream PyPI source release
- preserve the upstream
hfandtiny-agentsCLI entry points
This approach keeps the repository aligned with its Python source-packaging workflow while relying on separately packaged Fedora or COPR dependencies for the components that upstream expects at runtime.
Packaging note:
huggingface_hubdepends onhf-xeton supported Linux architectures, so this package currently follows the repository's activex86_64targettiny-agentsis installed upstream unconditionally, so the package adds an explicit runtime dependency onpython3-mcpto keep that CLI functional- the PyPI source release currently includes upstream tests, but this repository keeps
%checkto import and CLI smoke checks rather than running the full upstream test suite
Install on Fedora:
sudo dnf copr enable iolaum/aitoolkit
sudo dnf install python3-huggingface-hub
python3 -c "import huggingface_hub"
hf --helpbun is packaged from upstream GitHub release binaries.
- primary architecture:
x86_64 - secondary architecture:
aarch64is planned but not yet enabled x86_64will use the optimized upstream Linuxx64release, not the baseline buildaarch64will use the standard upstream Linux ARM64 release once support is added
This favors performance on modern x86_64 systems over backward compatibility with older CPUs.
Current Bun deployment status:
- COPR package name:
bun - current working chroot:
fedora-43-x86_64 - source package method: COPR SCM build from this repository
Install on Fedora:
sudo dnf copr enable iolaum/aitoolkit
sudo dnf install bun
bun --versionor in Fedora Silverblue:
sudo curl -Lo /etc/yum.repos.d/iolaum-aitoolkit.repo \
https://copr.fedorainfracloud.org/coprs/iolaum/aitoolkit/repo/fedora-$(rpm -E %fedora)/iolaum-aitoolkit-fedora-$(rpm -E %fedora).repo
sudo rpm-ostree install bun
For Silverblue and related rpm-ostree systems, reboot into the new deployment or start a new shell session before verifying the install with bun --version.
Project page:
https://copr.fedorainfracloud.org/coprs/iolaum/aitoolkit/
Each package now lives in its own directory so COPR package subdirectories, build separation, and any future package-specific metadata stay isolated.
The repository is expected to grow into a small packaging repo with files such as:
bun/bun.specllm-wiki/llm-wiki.specopen-code/open-code.specpython-hf-xet/python-hf-xet.specpython-huggingface-hub/python-huggingface-hub.specdocs/developer.md.github/workflows/check.ymlrenovate.json
The intended workflow is:
- update spec files in this repository
- let Renovate propose
Version:bumps for annotated spec files when supported upstream releases change - validate changes in CI with
rpmlint, source fetching, and RPM builds - review and merge the resulting pull request
- configure COPR packages to build from this repository with source type
SCM, clone URL set to this GitHub repository, andCommittishset tomain - set each package
subdirectoryto its package folder, such asbun/,llm-wiki/,open-code/,python-hf-xet/, orpython-huggingface-hub/, and set the matching spec path inside that folder - enable
Webhook rebuildfor each COPR SCM package - add the COPR webhook URL to the GitHub repository webhook settings with content type
application/json - let COPR rebuild from new commits on
main, generate and host repository metadata for Fedora users, and publish the updated package - verify the published package in COPR and test installation from a Fedora system
This repository uses the Renovate GitHub App from Mend (https://github.com/apps/renovate) to automate supported package version updates.
Maintainer-facing notes for Renovate and related workflow details are documented in docs/developer.md.
This replaces the local workflow of downloading release files, renaming them manually, and running createrepo_c by hand.
For routine package updates:
- wait for Renovate to open a pull request for supported upstream releases, or update the spec manually when needed
- run local validation or open a pull request and let CI validate the change
- review whether the change is a straightforward
Version:bump or also needs packaging adjustments - merge the change to
mainso GitHub sends the webhook event to COPR - confirm that COPR starts a new SCM build from
mainfor the updated package - confirm the new build appears in the expected Fedora chroot
- install or upgrade from the COPR repository and verify the packaged application behavior
For automatic COPR rebuilds from GitHub:
- open the package configuration in the COPR project
- set
Source TypetoSCM - set
Clone URLto the GitHub repository URL - set
Committishtomain - set the package subdirectory to the package folder, such as
bun/,llm-wiki/,open-code/,python-hf-xet/, orpython-huggingface-hub/, and set the matching spec path inside that folder - enable
Webhook rebuild - copy the webhook URL shown by COPR
- add that URL in GitHub under repository
Settings->Webhooks - set the GitHub webhook content type to
application/json - save the webhook and verify that a new commit to
maintriggers a COPR rebuild
The repository uses GitHub Actions to validate spec changes.
Prefer running the same checks in a temporary Fedora container with Podman so the host worktree stays clean and the toolchain stays close to CI.
podman run --rm -i \
-v "$PWD":/src:ro,Z \
--workdir /root \
fedora:43 \
bash <<'EOF'
set -euo pipefail
dnf install -y glibc-langpack-en dnf-plugins-core git rpmlint rpmdevtools rpm-build 'dnf-command(builddep)'
dnf copr enable -y iolaum/aitoolkit
mkdir -p /work
cp -a /src/. /work/
cd /work
for file in */*.spec; do
dnf builddep -y "$file"
rpmlint "$file" --strict
spectool -Rg "$file"
rpmbuild -ba "$file"
done
EOFFor a single package, use the same container setup and replace the loop with the spec path you want to validate.




