rbm_layout - Man Page
The layout of a rbm workspace
Description
An rbm workspace is a set of packaging projects, with a common configuration, and projects' specific configuration files.
An rbm workspace can be located anywhere on your filesystem, as long as your are running rbm from this directory or one of its subdirectories.
A typical rbm workspace that contains two projects named project_1 and project_2 will look like this :
(rbm-workspace) | |-- rbm.conf | |-- out | | | |-- project_1 | | | | | |-- project_1-0.1-src.tar.gz | | | | | +-- project_1-0.1-1.x86_64.rpm | | | | | +-- project_1-0.1-1.x86_64.tar.gz | | | +-- project_2 | | | |-- project_2-7.3.tar-src.bz2 | | | +-- project_2-7.1-1.x86_64.tar.gz | |-- git_clones | | | |-- project_1 | | +-- source files | | | +-- project_2 | +-- source files | |-- keyring | | | |-- project_1.gpg | | | +-- project_2.gpg | +-- projects | | | |-- project_1 | | | | | |-- config | | | | | |-- project_1.spec | | | | | |-- bugfix.patch | | | +-- project_2 | | | |-- config | | | +-- build | +-- modules | +-- container | |-- rbm.module.conf | |-- projects | | | +-- container-image | | | |-- config | | | +-- build | +-- keyring | +-- container-image.gpg
You will file the following files and directories :
- rbm.conf
This is the main configuration file, containing generic configuration for all projects. This file is mandatory.
- out
This is the directory where output files are written. Each project has its own subdirectory. The output directory path can be changed with the output_dir option.
- git_clones
This is the directory where git clones used to create the tarballs are stored. Normally you wouldn’t have to do anything inside this directory. The path of this directory can be changed with the git_clone_dir option.
- hg_clones
This is the same as git_clones, but for projects that use mercurial rather than git. The path of this directory can be changed with the hg_clone_dir option.
- keyring
This is the directory where you can store gpg keyring files. Those keyrings contains the keys that are used to check signed commits and tags.
- projects
This is the directory containing projects definitions. The path of this directory can be changed with the projects_dir option.
- projects/project_1/config
This is the configuration file for the project_1 project. To create a new project, you need to create a new directory with a config file inside.
- projects/project_1/project_1.spec
This is an rpm package template file for project_1. The rpm package template could also be defined inside the config file, in which case this file does not exist.
- projects/project_1/bugfix.patch
This is an example patch file, used in the rpm package.
- projects/project_1/build
This is a build script for project_1, containing instructions for building the project and generating a tar.gz file containing the build output.
- modules/container/rbm.local.conf
In this example we use an external rbm module named container (usually included as a git-submodule). The rbm.local.conf file located at the root of the module contains the options related to the projects included in the module.
- modules/container/projects
The projects included in the projects directory of a module work in the same way as those in the main projects directory.