How to contribute to the SIG¶
Automotive SIG members have several repositories where they can find or contribute to automotive-specific code and RPM packages. For more information about contributing to these repositories, see Contributing packages to Automotive repositories.
Automotive SIG repositories¶
The Automotive SIG git repository offers additional or divergent packages that are tailored for
automotive use cases and compatible with AutoSD and CentOS Stream.
It has the same structure as the CentOS Stream rpms
and src
namespaces.
All SIG members can request packages to be distributed through these repositories, provided they meet CentOS requirements for SIG. The Automotive SIG recommends using different branches with clear names for your work in the Automotive SIG repository.
Automotive SIG community members can use and contribute to projects within Automotive SIG repositories to develop and test public proofs of concept for CentOS automotive variants, like AutoSD, automotive software infrastructure, and automotive hardware reference platforms.
Not all innovation attempts succeed. These Automotive SIG packages might be works in progress that eventually land in AutoSD, or they might be experimental work that remains outside of AutoSD, such as research and development concepts or integration ideas.
AutoSD repositories¶
Because AutoSD is the public, in-development version of the Red Hat Automotive product, direct access to the AutoSD repositories is restricted to Red Hat employees. However, anyone in the community can propose changes the AutoSD repositories. Change proposals for AutoSD can take many forms, you can submit a change request using one or more of the following methods:
- Submit a pull or merge request against an AutoSD package.
- Post a request on the centos-automotive-sig mailing list.
- Contact your Red Hat partner manager when you open a pull or merge request.
AutoSD nightly RPM package composes¶
The AutoSD nightly repo stores all AutoSD RPM packages composed by Red Hat Automotive SIG members.
Red Hat Automotive SIG members use configurations of the distribution compose tool Pungi, stored in the AutoSD repository of PipeX, to compose Automotive SIG source code and RPM packages into the AutoSD builds using the Koji build system. PipeX is a Red Hat Edge continuous improvement / continuous development (CI/CD) workflow system built upon repositories for tooling and package-level pipelines-as-code using GitLab CI.
For more information about the CentOS Build System (CBS) tags you need to contribute packages to AutoSD, see AutoSD CBS tags.
Downloading AutoSD nightly RPM package composes¶
The latest version of AutoSD is available at https://autosd.sig.centos.org. You do not need to download the entire AutoSD repository unless you intend to build offline using customized manifests. All sample image manifests require a remote connection to the main CentOS repositories.
Prerequisites
wget
- At least 52 GB of available disk space, which changes frequently as the SIG enhances the
aarch64
,x86_64
, andnoarch
package set
Procedure
-
Optional: Install
wget
: -
Download a local copy of the repository using
wget
or your preferred download method:
CentOS Stream git repositories¶
The CentOS Stream repository stores the CentOS Stream source code and RPM packages used for Automotive and AutoSD in the following namespaces:
rpms
- The CentOS Stream
dist-git
is the dedicated git repository for each CentOS package. It contains the spec files and patches used to build CentOS Stream RPMs, and it has asources
file that points to a specific file that the build system retrieves from the lookaside-cache. src
- The CentOS Stream source-git is the
source code git repository for CentOS Stream 9 and
10 where the packages files as well as the untarballed source code
is stored. It has automation that automatically syncs from the
source-git
to thedist-git
. However, it does not store every CentOS stream package, only those that have opted into this model.
You can browse Automotive and AutoSD packages available from CentOS Stream in the the CentOS Stream mirror. For more information, see the CentOS Stream Quick start guide for new contributors.
Fedora and EPEL repositories¶
The Fedora community works on a project called Extra Packages for Enterprise Linux (EPEL). RPM packages that are part of EPEL are compatible with CentOS Stream, AutoSD, RHEL, and Red Hat In-Vehicle OS.
You can browse available Fedora RPM packages at Fedora Package Sources, or browse Fedora-based builds from the Automotive SIG on the Fedora build system, copr.
For examples of how you might use EPEL packages in AutoSD, see Non-sample images.
Contributing packages to Automotive repositories¶
There are three ways to contribute automotive-related packages to AutoSD:
- Package the application for AutoSD, and submit it to the CentOS Automotive SIG.
- Package the application for Fedora, and bring it to EPEL.
- Contact your partner manager to discuss incorporating the application into Red Hat In-Vehicle OS.
You might find it helpful to understand how code flows into and through AutoSD before determining which contribution method is right for you. For more information about AutoSD and its upstream and downstream relationships, see AutoSD upstream and downstream.
Cloning an Automotive project repository¶
Clone and fork the Automotive SIG repository, so you can contribute code to AutoSD by submitting a merge request to Automotive SIG maintainers.
Prerequisites
- git
Procedure
- From the Automotive SIG repository, choose a project repository.
- Select Code, and copy the value from Clone with HTTPS.
-
Paste the value into the following command:
Note
GitLab has several methods you can use to clone repositories. These example commands only show the HTTPS method. For more information about working with GitLab through your terminal, the graphical user interface (GUI), or your preferred integrated development environment (IDE), see the GitLab Docs.
Creating a fork¶
Procedure
- From GitLab, select Fork.
- Optional: Enter a project name. If you don’t enter a project name, the fork inherits the name of the origin.
- Select your name from the Namespace menu.
- Optional: Enter a project description.
- Select your preferred visibility level.
- Select Fork project to create your fork.
Adding your fork as a remote¶
Procedure
- From GitLab, select Code, and copy the value from Clone with HTTPS.
-
From a terminal window, go to your local clone, and add your fork as a remote repository:
-
Optional: Confirm that you added your fork as a remote:
Note
You can run this command at any time to view details about all of the remotes in the cloned repository.
Submitting a merge request to the Automotive SIG project repository¶
Procedure
-
Create a feature branch on your fork:
-
Push updates to your fork:
-
From the project repository you chose from the Automotive SIG repository, select New merge request.
- Select the
main
branch as the target. -
Select both of the following merge options:
- Delete source branch when merge request is accepted.
- Squash commits when merge request is accepted.
-
Request a review from a maintainer who can review and merge your changes.
Contributing packages upstream to the CentOS Build System¶
Code submitted to the Automotive SIG RPM repository must be under an approved free and open source license.
Similar to the relationship between Fedora, CentOS Stream, and RHEL, when you build in the Automotive SIG RPM repository, you’re building against AutoSD, which is the future of Red Hat In-Vehicle OS.
The contribution process for the Automotive SIG RPM repository is somewhat simpler than the EPEL process because the Automotive SIG controls the process. Unlike EPEL, the Automotive SIG repository can override packages that are in RHEL or AutoSD. This allows SIG members to experiment with new versions or different configurations than those in Red Hat products.
To request a package, send an email to the CentOS Automotive SIG mailing list to present the project you want to package in the Automotive SIG RPM repository. After they receive your email, the Automotive SIG will create a subgroup or project for you in the CentOS Automotive SIG RPMs repo.
Prerequisites
-
lookaside_upload_sig
script from centos-git-common -
centos-packager
to build packages using CentOS Build System (CBS)
Procedure
-
Run
git add
andgit commit
to add the spec file and patches to your repo. -
Upload the tarball of the project sources to the lookaside cache:
Note
The lookaside cache stores a copy of all upstream archives used when building RPMs. This allows the Automotive SIG to reproduce a build, even if the upstream project’s website disappears. After your sources are uploaded to the lookaside cache, create a
sources
file in your git repository to enable the build system to identify the correct archive to retrieve from the lookaside cache. -
Create a
sources
file in your repo in the same directory as the spec file: -
Push your spec file,
sources
file, and any patches to GitLab. -
The first time you package your code, add your package to the tags you want to build against:
Note
You must do this for the
-candidate
,-testing
and-release
tags. For more information, see Automotive SIG CBS tags. -
Build the package using CBS:
Alternatively, to build the latest commit of the branch you’re in:
cbs build <tag> git+https://gitlab.com/centos/automotive/rpms/<pkg_name>.git#`git log -1 --format=format:"%H"`
Note
For more information about build tags, see Automotive SIG CBS tags
-
After the build succeeds, push it to the testing repository:
Using the Automotive SIG testing repository for CentOS Stream 9 as an example:
Note
This makes the package show up in the CentOS Buildlogs mirror.
-
Push the package to the stable repository in the CentOS mirror network:
Using the Automotive SIG release repository for CentOS Stream 9 as an example:
Note
This makes the package show up in the CentOS Stream mirror.
Contributing packages to Fedora and EPEL¶
To contribute packages to Fedora and EPEL, you must become a Fedora package maintainer, and follow the package process to publish your software on Koji or Copr as described in the Fedora Project user documentation site.
Note
EPEL packages cannot override RHEL packages. If you want a package that already exists in RHEL but with a different configuration or version, you must build your package so that it does not conflict with RHEL packages.
See the Fedora docs for more information about Using the Koji build system and Publishing RPMs on Copr.
If you are a visual learner, the Fedora Community publishes videos about how to add a package to the official Fedora repositories on the Fedora Project YouTube channel.
CentOS Build System¶
Automotive SIG and AutoSD packages are built by the CentOS Build System (CBS). The procedure to contribute RPM packages is similar for both the Automotive SIG and AutoSD. The only difference is the CBS tags used, which classify packages in the build system based on their destination.
CBS appends the root tag to reflect one of the following four targets, which specifies where each RPM package is routed according to its stage of acceptance:
-build
- where the packages are built
-candidate
- where the packages land after they are built
-testing
- where the packages are tested
-release
- where stable, released packages land
Automotive SIG CBS tags¶
- automotive9s-packages-main-el9s
-
This is the tag you specify when using the
cbs build
command for RPM packages based on CentOS Stream 9 intended for the main Automotive SIG RPM repository. - automotive9s-packages-experimental-el9s
-
This is the tag you specify when using the
cbs build
command for experimental RPM packages based on CentOS Stream 9 intended for the main Automotive SIG RPM repository. - automotive10s-packages-main-el10s
-
This is the tag you specify when using the
cbs build
command for RPM packages based on CentOS Stream 10 intended for the main Automotive SIG RPM repository.
AutoSD CBS tags¶
- autosd9s-packages-main-el9s
-
This is the tag you specify when using the
cbs build
command for RPM packages based on CentOS Stream 9 intended for the main AutoSD RPM repository. - autosd10s-packages-main-el10s
-
This is the tag you specify when using the
cbs build
command for RPM packages based on CentOS Stream 9 intended for the main AutoSD RPM repository.