Terra
Terra, originally known as the Andaman Common repositories, is a collection of rolling-release Fedora repositories by Fyra Labs that includes commonly-used programs not packaged in the main Fedora repositories. Its sources are public in a GitHub repository and it is powered by Andaman and Subatomic.
It is hosted on https://repos.fyralabs.com/terra38 and packages are provided for both x86_64 and arm64 architectures.
The development process, guidelines and policies are thoroughly documented in the Fyra Labs devdocs.
Development
Terra is built on the Andaman toolchain, which makes it much easier to create, maintain and build packages compared with Koji. When updates are pushed to the main branches, GitHub actions automatically calls anda to build the corresponding package. If the build succeeds, it will then be uploaded to the actual server that hosts all the RPM packages. The process of uploading and processing the RPM package is done by the Subatomic client and server respectively. Finally, no matter if the build process failed or succeed, the build will be recorded by sending a request to Madoguchi, a server for recording package information.
The above process repeats for each push event happening in the GitHub repository with the following conditions:
- The push happens in a branch with an open pull request with no merge conflicts; or
- The push happens in the
f*
branch
For those push events, the manifest task is first run which detects the files changed in the push, and a build is issued for each package with changes. Unless otherwise specified in the anda configuration file, each anda project that has changes in its directory will have its own build job for both the x86_64 and the arm64 (aka. aarch64) architectures. The x86_64 build jobs use the workers provided by GitHub, and the aarch64 workers are provided by Fyra Labs.
Manual requests for builds are also supported and it is sometimes used when packages are required to be rebuilt.
Updates
Most projects in Terra contains a update.rhai
AndaX script that denotes how the latest version of the package is obtained. Every 30 minutes, anda update
is run in GitHub CI. If a version different from the one in the spec file is detected, anda automatically bumps the package, and a new commit will be created for all the package updates and pushed to the main branch (f38
). Additionally, the commit is also cloned to the other branches (such as f37
) and also pushed. If the cloning process fails (usually due to conflicts), the updates will not be done for the other branches.
Nightly packages are excluded from the above process and they have a separate workflow for the anda update
process which runs daily.
External Links
- Website: https://terra.fyralabs.com
- Repology: https://repology.org/repository/terra_38
- Monorepo: https://github.com/terrapkg/packages
- RPMs: https://repos.fyralabs.com/terra38
- Devdocs: https://developer.fyralabs.com/terra