• 1. The SPECS must not include any local sources, everything should be downloaded from the repository.
  • 2. As a consequence of point 2, we do not include sources into any source package ( like SRPM for RHEl-based distros ). SRPM itself should contain rules for initial downloading and handling sources, apart of their requirements.
  • 3. We use pre-built Docker images for package building.
  • 4. In order to unify the build procedure and to be able to implement point 3, we have negotiated about Git repository structure that is absolutely "must be so, but no other way.

Let's take a closer look at the repository structure using a simple project that provides an RPM packag with .repo file of Asgardahost repository, as an example:

As you can see the following conventions are maintained ( they are pretty simple):
  • A .spec file is placed into the SPEC directory, and its name is the same as the name of repository
  • Put all repositories that are necessary for package building according to BuildRequires directives of your spec file into build-deps.repo file under BUILD_DEPS_REPO directory
Below are the listings of .spec file and build-deps.repo file: