The openSUSE Factory project
This project is managing the entire Factory, aka Tumbleweed distribution.
It defines the used package sources and additional configuration settings to build the binaries.
Package Sources
All package sources are organized below the pkgs directory. These are grouped again in subdirectories to avoid too large directory listings.
The _manifest file needs to get adapted in case a new subdirectory
gets created or an existing one gets renamed.
Each package source is defined via a git submodule. The submodules defines
- the origin url of the source (in .gitmodules)
- the branch to follow (in .gitmodules)
- the current used commit hash
Any submodule reference should be relative to allow a full replication on other git servers.
Add a new package source
git submodule add -b factory ../../pool/$PACKAGE pkg/$DIRECTORY/$PACKAGE
git commit
Remove a package source
git rm pkg/$DIRECTORY/$PACKAGE
git commit -a
This modifies also the .gitmodules file
Update a package source
This is usually done via our bot infrastucture. But in case a manual action is needed run
git submodule update --init pkg/$DIRECTORY/$PACKAGE
cd pkg/$DIRECTORY/$PACKAGE
git pull # or checkout a specific commit/branch
cd -
git add pkg/$DIRECTORY/$PACKAGE
git commit
Additional files
_manifest
Is the master git configuration file. Currently it is only used to define the package source structure of the project.
_config
The build configuration (aka prjconf).
workflow.config
Rules for the workflow-pr bot. The bot creates for any pull request against any used pool/$PACKAGE git repository factory branch also a pull request for this git project here.
staging.config
Defines test builds for any pull request to this project.
In any case the modified packages (aka git submodules) are build in the main pull request project. This is name openSUSE:Factory:PullRequest:PR_NUMBER
Additional further builds can be started in QA projects which are also defined in this file. A gitea label can get set on the pull request to create or remove these.
If any of them are used, the :Base project is created. This used to get a fixed binary snapshot to avoid influence from the moving openSUSE:Factory project.
The following templates are currently prepared:
MinimalX
This is building the modifed packages as well, plus all depending packages out of the reduced package set of MinimalX.
MinimalX-Full
This building the modified packages and in any case all package sources from MinimalX package selection. This is useful when a support package is updated (eg. any validation tool like rpmlint-mini), and it should get tested with all MinimalX packages.
Another example is an updated kernel to run stability or regression tests against it.
Factory
This is building the modifed packages as well, plus all depending packages of entire Factory.