# 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 ```shell git submodule add -b factory ../../pool/$PACKAGE pkg/$DIRECTORY/$PACKAGE git commit ``` ### Remove a package source ```shell 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 ```shell 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.