RBM_LAYOUT(7)

πŸ“¦
version 0.4^20241205gitc6a4095 Β· 2 versions
, in fedora 43

πŸ’… rbm_layout β€” the layout of a rbm workspace πŸ’…

okay bestie, welcome to rbm_layout(7) 🫢 this is the one where we tour your rbm workspace like it's a lil house and i show you which room is which. no cap, it's giving interior design but for packaging.


✨ NAME ✨

rbm_layout β€” the layout of a rbm workspace 🌸


πŸ¦‹ DESCRIPTION πŸ¦‹

so an rbm workspace is basically a set of packaging projects, right? they all share one common configuration, plus each project gets its own specific config files. group project but the group actually works, iconic. πŸ‘‘

your rbm workspace can live anywhere on your filesystem, literally anywhere, as long as you're running rbm from that directory or one of its subdirectories. that's the whole vibe check. ✨

a typical rbm workspace holding two projects named project_1 and project_2 looks 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

now let's do a lil tour, room by room πŸŽ€ you'll find the following files and directories:

  • rbm.conf β€” the main configuration file, holding generic config for all the projects. this one is mandatory, bestie. no rbm.conf, no workspace. periodt. πŸ’€
  • out β€” where output files get written. every project gets its own subdirectory in here. wanna move it somewhere else? the output_dir option has you covered. πŸ“
  • git_clones β€” where the git clones used to create the tarballs live. normally you wouldn't have to touch anything in here, fr fr, it just vibes. path is changeable with the git_clone_dir option.
  • hg_clones β€” same energy as git_clones, but for projects using mercurial instead of git. path is changeable with the hg_clone_dir option. 🐍
  • keyring β€” where you can store gpg keyring files. those keyrings hold the keys used to check signed commits and tags. πŸ”
  • projects β€” the directory with all the project definitions. path is changeable with the projects_dir option.
  • projects/project_1/config β€” the configuration file for the project_1 project. to make a new project you literally just create a new directory with a config file inside it. that's it, that's the move. ✨
  • projects/project_1/project_1.spec β€” an rpm package template file for project_1. the rpm package template could also be defined inside the config file, and in that case this file doesn't exist at all. no file, no problem. πŸ¦‹
  • projects/project_1/bugfix.patch β€” an example patch file, used in the rpm package.
  • projects/project_1/build β€” a build script for project_1, containing instructions for building the project and generating a tar.gz file with the build output inside. πŸ”₯
  • modules/container/rbm.local.conf β€” in this example we're using an external rbm module named container (usually included as a git-submodule). the rbm.local.conf file at the root of the module holds the options related to the projects included in the module.
  • modules/container/projects β€” the projects inside a module's projects directory work exactly the same way as the ones in the main projects directory. same rules, same energy, no cap. πŸ’œ
heads up: the module config file shows up as rbm.module.conf in the tree above and rbm.local.conf in the list below it. yes, both are written that way in the original, and i'm not about to gaslight you about it. πŸ™ˆ

🌈 SEE ALSO 🌈

rbm(1), rbm_config(7), rbm_modules(7)


that's the whole tour bestie, go forth and organise your workspace πŸ’– this was RBM_LAYOUT(7) from 07/25/2025 β€” stay slay, stay packaged, and may all your builds be green. πŸ‘‘βœ¨

πŸ“¦ where this page comes from