Terra

From Fyra Wiki
Revision as of 10:20, 29 November 2023 by Madomado (talk | contribs) (→‎Installation: new section)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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.

Installation

Use config-manager from dnf-plugins-core to add the repository:

sudo dnf install dnf-plugins-core
sudo dnf config-manager --add-repo https://terra.fyralabs.com/terra.repo

After that, you might also want to install the terra-release package, which automatically manages the Terra installation even when there are any changes (like migrations) to the infrastructure.

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.

History

After Andaman was created, the Ultramarine Project has migrated their repositories into GitHub monorepos. However, a setup was preferred where packages can be shared between both Ultramarine Linux and TauOS, and even other Fedora distributions. This led to the creation of the Andaman Common Repositories, also known as the Andaman Subatomic Repositories. The original GitHub organisation name was andaman-common-pkgs, and the repository for Fedora Extras 37 was located at https://subatomic.fyralabs.com/fe37. It was then renamed to Andaman Common Packages 37 and was moved to https://subatomic.fyralabs.com/ad37. It was later finally renamed to Terra, and now contains many common packages not found in the Fedora repositories.

External Links