OSCRC(5)

πŸ“¦ version 1.27.1, in opensuse-leap 16.0

πŸ’… OSCRC(5) πŸ’…

okay bestie, welcome to the osc manual page for oscrc β€” the openSUSE Commander configuration file. yes, it's giving config-file main character energy, and we are going to get through every single detail together. 🫢

The configuration file path is $XDG_CONFIG_HOME/osc/oscrc, which usually translates into ~/.config/osc/oscrc. slay.

The configuration options are loaded with the following priority:

  1. environment variables: OSC_<uppercase_option> or OSC_<uppercase_host_alias>_<uppercase_host_option>
  2. command-line options
  3. oscrc config file

✨ GENERIC OPTIONS ✨

  • apiurl : str = "https://api.opensuse.org" β€” the default URL to the API server. Credentials and other apiurl specific settings must be configured in a [$apiurl] config section or via API in an api_host_options entry. iykyk.

πŸ” AUTHENTICATION OPTIONS πŸ”

  • sshkey : str β€” a pointer to the public SSH key that corresponds with a private SSH key used for authentication. It can be:
    • keep empty for auto detection
    • path to the public SSH key
    • public SSH key filename (must be placed in ~/.ssh)
    • fingerprint of a SSH key (2nd column of ssh-add -l)
NOTE: The private key may not be available on disk because it could be in a GPG keyring, on YubiKey or forwarded through SSH agent. literally so many places.
TIP: To give osc a hint which ssh key from the agent to use during auto detection, append obs=<apiurl-hostname> to the private key's comment. This will also work nicely during SSH agent forwarding, because the comments get forwarded too. 🧚
  • To edit the key, run: ssh-keygen -c -f ~/.ssh/<private-key>
  • To query the key, run: ssh-keygen -y -f ~/.ssh/<private-key>
  • Example comment: <username@host> obs=api.example.com obs=api-test.example.com
  • use_keyring : bool = 0 β€” enable keyring as an option for storing passwords. secure little vibe.

πŸ—£οΈ VERBOSITY OPTIONS πŸ—£οΈ

  • quiet : bool = 0 β€” reduce the amount of printed information to bare minimum. If enabled, automatically sets verbose to False. shhh bestie.
  • verbose : bool = 0 β€” increase the amount of printed information to stdout. Automatically set to False when quiet is enabled.
  • debug : bool = 0 β€” print debug information to stderr.
  • http_debug : bool = 0 β€” print HTTP traffic to stderr. Automatically set to True when http_full_debug is enabled.
  • http_full_debug : bool = 0 β€” [CAUTION!] print HTTP traffic incl. authentication data to stderr. If enabled, automatically sets http_debug to True. authentication data in stderr is a big yikes, protect that.
  • http_manual_approve : bool = 0 β€” a debugging option. Manually approve all requests except GET and HEAD.
  • post_mortem : bool = 0 β€” jump into a debugger when an unandled exception occurs. the manpage said what it said 😭
  • traceback : bool = 0 β€” print full traceback to stderr when an unandled exception occurs.
  • show_download_progress : bool = 1 β€” show download progressbar. progress bar my beloved.

🌐 CONNECTION OPTIONS 🌐

  • http_retries : int = 3 β€” number of retries on HTTP error.
  • cookiejar : str = "/home/abuild/.local/state/osc/cookiejar" β€” path to a cookie jar that stores session cookies. πŸͺ

πŸ“¦ SCM OPTIONS πŸ“¦

  • realname : str β€” name of the user passed to the vc tool via VC_REALNAME env variable.
  • email : str β€” email of the user passed to the vc tool via VC_MAILADDR env variable.
  • local_service_run : bool = 1 β€” run local services during commit.
  • getpac_default_project : str = "openSUSE:Factory" β€” the default project for osc getpac and osc bco. The value is a space separated list of strings.
  • exclude_glob : space-separated-list = ".osc CVS .svn .* _linkerror *~ #*# *.orig *.bak *.changes.vctmp.*" β€” space separated list of files ignored by SCM. The files can contain globs. so many globs, so little time.
  • exclude_files : space-separated-list β€” files that match the listed glob patterns get skipped during checkout.
  • include_files : space-separated-list β€” files that do not match the listed glob patterns get skipped during checkout. The exclude_files option takes priority over include_files.
  • checkout_no_colon : bool = 0 β€” use '/' as project separator instead the default ':' and create corresponding subdirs. If enabled, it takes priority over the project_separator option.
  • project_separator : str = ":" β€” use the specified string to separate projects.
  • check_filelist : bool = 1 β€” check for untracked files and removed files before commit.
  • do_package_tracking : bool = 1 β€” track packages in parent project's .osc/_packages.
  • checkout_rooted : bool = 0 β€” prevent checking out projects inside other projects or packages.
  • status_mtime_heuristic : bool = 0 β€” consider a file with a modified mtime as modified.
  • linkcontrol : bool = 0 β€” no extra description in the manpage, it's just sitting there looking mysterious πŸ’…

πŸ› οΈ BUILD OPTIONS πŸ› οΈ

  • build_repository : str = "openSUSE_Factory" β€” the default repository used when the repository argument is omitted from osc build.
  • buildlog_strip_time : bool = 0 β€” strip the build time from the build logs.
  • packagecachedir : str = "/var/tmp/osbuild-packagecache" β€” the directory where downloaded packages are stored. Must be writable by you. write access check, bestie.
  • no_verify : bool = 0 β€” disable signature verification of packages used for build.
  • builtin_signature_check : bool = 1 β€” use the RPM's built-in package signature verification.
  • disable_hdrmd5_check : bool = 0 β€” disable hdrmd5 checks of downloaded and cached packages in osc build. It is recommended to keep the check enabled.

OBS builds the noarch packages once per binary arch. Such noarch packages are supposed to be nearly identical across all build arches, any discrepancy in the payload and dependencies is considered a packaging bug. But to guarantee that the local builds work identically to builds in OBS, using the arch-specific copy of the noarch package is required. Unfortunatelly only one of the noarch packages gets distributed and can be downloaded from a local mirror. All other noarch packages are available through the OBS API only. Since there is currently no information about hdrmd5 checksums of published noarch packages, we download them, verify hdrmd5 and re-download the package from OBS API on mismatch.

The same can also happen for architecture depend packages when someone is messing around with the source history or the release number handling in a way that it is not increasing.

If you want to save some bandwidth and don't care about the exact rebuilds you can turn this option on to disable hdrmd5 checks completely. bandwidth vs. exact rebuilds, the eternal struggle.


πŸ“¨ REQUEST OPTIONS πŸ“¨

  • include_request_from_project : bool = 1 β€” when querying requests, show also those that originate in the specified projects.
  • request_list_days : int = 0 β€” limit the age of requests shown with osc req list to the given number of days.

This is only the default that can be overridden with osc request list -D <VALUE>. Use 0 for unlimited.

  • check_for_request_on_action : bool = 1 β€” check for pending requests after executing an action (e.g. checkout, update, commit).
  • request_show_interactive : bool = 0 β€” show requests in the interactive mode by default.
  • print_web_links : bool = 0 β€” print links to Web UI that can be directly pasted to a web browser where possible. copy-paste core.
  • request_show_source_buildstatus : bool = 0 β€” print the buildstatus of the source package. Works only with osc request show and the interactive review.
  • submitrequest_accepted_template : str β€” template message for accepting a request.

Supported substitutions: %(reqid)s, %(type)s, %(who)s, %(src_project)s, %(src_package)s, %(src_rev)s, %(tgt_project)s, %(tgt_package)s

Example:

Hi %(who)s, your request %(reqid)s (type: %(type)s) for %(tgt_project)s/%(tgt_package)s has been accepted. Thank you for your contribution.
  • submitrequest_declined_template : str β€” template message for declining a request.

Supported substitutions: %(reqid)s, %(type)s, %(who)s, %(src_project)s, %(src_package)s, %(src_rev)s, %(tgt_project)s, %(tgt_package)s

Example:

Hi %(who)s, your request %(reqid)s (type: %(type)s) for %(tgt_project)s/%(tgt_package)s has been declined because ...
  • request_show_review : bool = 0 β€” review requests interactively.
  • review_inherit_group : bool = 0 β€” if a review was accepted in interactive mode and a group was specified, the review will be accepted for this group.
  • submitrequest_on_accept_action : str β€” what to do with the source package if the request has been accepted. If nothing is specified the API default is used.

Choices: cleanup, update, noupdate

πŸ›  BUILD TOOL OPTIONS πŸ› 

okay bestie these are the knobs that tell the build tool how to do its thing. no cap, there are a lot of them, but they're all here πŸ’–

  • build-jobs : int β€” how many parallel processes go brrr during the build. defaults to the number of available CPU threads. if the value is greater than 0 then it's passed as --jobs to the build tool.
  • build-type : str β€” the type of build environment, passed to the build tool as --vm-type. your options, bestie:
    • <empty> β†’ chroot build
    • kvm β†’ KVM VM build (rootless, needs build-device, build-swap, build-memory)
    • xen β†’ XEN VM build (needs build-device, build-swap, build-memory)
    • qemu β†’ [EXPERIMENTAL] QEMU VM build
    • lxc β†’ [EXPERIMENTAL] LXC build
    • uml
    • zvm
    • openstack
    • ec2
    • docker
    • podman (rootless)
    • pvm
    • nspawn

see build --help for more deets about the supported options 🌸

  • build-memory : int β€” the amount of RAM (in MiB) assigned to a build VM.
  • build-root : str = "/var/tmp/build-root%(dash_user)s/%(repo)s-%(arch)s" β€” the path to the build root directory.

supported substitutions: %(repo)s, %(arch)s, %(project)s, %(package)s, %(apihost)s, %(user)s, %(dash_user)s where:

  • apihost is the hostname extracted from the currently used apiurl.
  • dash_user is the username prefixed with a dash. if user is empty, dash_user is also empty.
NOTE: the configuration holds the original unexpanded string. call osc.build.get_build_root() with proper arguments to retrieve an actual path, ok? πŸ’…

passed as --root <VALUE> to the build tool.

  • build-shell-after-fail : bool = 0 β€” starts a shell prompt in the build environment if a build fails. passed as --shell-after-fail to the build tool.
  • build-uid : str β€” numeric uid:gid to use for the abuild user. neither of the values should be 0. this is literally so useful if you're hacking in the buildroot. and it must be set to the same value if the buildroot is re-used πŸ‘‘ passed as --uid <VALUE> to the build tool.
  • build-kernel : str β€” the kernel used in a VM build.
  • build-initrd : str β€” the initrd used in a VM build.
  • build-device : str β€” the disk image used as rootfs in a VM build. passed as --vm-disk <VALUE> to the build tool.
  • build-vmdisk-filesystem : str β€” the file system type of the disk image used as rootfs in a VM build. supported values: ext3 (default), ext4, xfs, reiserfs, btrfs. passed as --vm-disk-filesystem <VALUE> to the build tool.
  • build-vmdisk-rootsize : int β€” the size of the disk image (in MiB) used as rootfs in a VM build. passed as --vm-disk-size to the build tool.
  • build-swap : str β€” path to the disk image used as a swap for VM builds. passed as --swap to the build tool.
  • build-vmdisk-swapsize : int β€” the size of the disk image (in MiB) used as swap in a VM build. passed as --vm-swap-size to the build tool.
  • build-vm-user : str β€” the username of a user used to run the QEMU/KVM process.
  • icecream : int = 0 β€” use the Icecream distributed compiler 🍦 the value represents the number of parallel build jobs. passed as --icecream <VALUE> to the build tool.
  • ccache : bool = 0 β€” enable compiler cache (ccache) in build roots. passed as --ccache to the build tool.
  • sccache : bool = 0 β€” enable shared compilation cache (sccache) in build roots. conflicts with ccache πŸ’€ passed as --sccache to the build tool.
  • sccache_uri : str β€” optional URI for sccache storage.

supported URIs depend on the sccache configuration. the URI allows the following substitutions:

  • {pkgname}: name of the package to be build

examples:

  • file:///var/tmp/osbuild-sccache-{pkgname}.tar.lzop
  • file:///var/tmp/osbuild-sccache-{pkgname}.tar
  • redis://127.0.0.1:6379

passed as --sccache-uri <VALUE> to the build tool.

  • no_preinstallimage : bool = 0 β€” do not use preinstall images to initialize build roots.
  • extra-pkgs : space-separated-list β€” extra packages to install into the build root when building packages locally with osc build.

this corresponds to osc build -x pkg1 -x pkg2 .... the configured values can be overriden from the command-line with -x ''.

this global setting may leads to dependency problems when the base distro is not providing the package 😭 therefore using server-side cli_debug_packages option instead is recommended.

passed as --extra-packs <VALUE> to the build tool.


🧚 PATHS TO PROGRAMS 🧚

where all the lil helper tools live on your system. don't move them, they're doing their best 🫢

  • build-cmd : str = "/usr/bin/build" β€” path to the 'build' tool.
  • download-assets-cmd : str = "/usr/lib/build/download_assets" β€” path to the 'download_assets' tool used for downloading assets in SCM/Git based builds.
  • queryrecipe-cmd : str = "/usr/lib/build/queryrecipe" β€” path to the 'queryrecipe' tool.
  • queryconfig-cmd : str = "/usr/lib/build/queryconfig" β€” path to the 'queryconfig' tool.
  • obs-scm-bridge-cmd : str = "/usr/lib/obs/service/obs_scm_bridge" β€” path to the 'obs_scm_bridge' tool used for cloning scmsync projects and packages.
  • vc-cmd : str = "/usr/lib/build/vc" β€” path to the 'vc' tool.
  • su-wrapper : str = "sudo" β€” the wrapper to call build tool as root (sudo, su -, ...). if empty, the build tool runs under the current user wich works only with KVM at this moment.

🌈 HOST OPTIONS 🌈

who are you talking to, and how do you prove it's you. main character authentication energy ✨

  • apiurl : str = "NotSet" β€” URL to the API server.
  • aliases : space-separated-list β€” aliases of the apiurl.
  • user : str = "NotSet" β€” username for the apiurl.
  • credentials_mgr_class : str β€” fully qualified name of a class used to fetch a password.
  • pass : Password β€” password for the apiurl. may be empty if the credentials manager fetches the password from a keyring or sshkey is used.
  • sshkey : str β€” a pointer to public SSH key that corresponds with a private SSH used for authentication:
    • keep empty for auto detection
    • path to the public SSH key
    • public SSH key filename (must be placed in ~/.ssh)
    • fingerprint of a SSH key (2nd column of ssh-add -l)
NOTE: the private key may not be available on disk because it could be in a GPG keyring, on YubiKey or forwarded through SSH agent πŸ‘€
TIP: to give osc a hint which ssh key from the agent to use during auto detection, append obs=<apiurl-hostname> to the private key's comment. this will also work nicely during SSH agent forwarding, because the comments get forwarded too πŸ¦‹
  • to edit the key, run: ssh-keygen -c -f ~/.ssh/<private-key>
  • to query the key, run: ssh-keygen -y -f ~/.ssh/<private-key>
  • example comment: <username@host> obs=api.example.com obs=api-test.example.com
  • downloadurl : str β€” redirect downloads of packages used during build to an alternative location. this allows specifying a local mirror or a proxy, which can greatly improve download performance, latency and more πŸ”₯
  • cafile : str β€” the path to a file of concatenated CA certificates in PEM format. if specified, the CA certificates from the path will be used to validate other peers' certificates instead of the system-wide certificates.
  • capath : str β€” the path to a directory containing several CA certificates in PEM format. if specified, the CA certificates from the path will be used to validate other peers' certificates instead of the system-wide certificates.
  • sslcertck : bool = 1 β€” whether to validate the SSL certificate of the server. it is highly recommended to keep this option enabled πŸ™
  • allow_http : bool = 0 β€” whether to allow plain HTTP connections. using HTTP is insecure because it sends passwords and session cookies in plain text πŸ’€ it is highly recommended to keep this option disabled.
  • http_headers : newline-separated-list β€” additional HTTP headers attached to each request. the format is HTTP headers separated with newlines.

example:

http_headers =
    X-Header1: Value1
    X-Header2: Value2
  • trusted_prj : space-separated-list β€” list of names of the trusted projects. the names can contain globs.
please note that some repos may contain malicious packages that can compromise the build result or even your system! 😭 stay safe bestie
  • disable_hdrmd5_check : bool β€” disable hdrmd5 checks of downloaded and cached packages in osc build. it is recommended to keep the check enabled.

OBS builds the noarch packages once per binary arch. such noarch packages are supposed to be nearly identical across all build arches, any discrepancy in the payload and dependencies is considered a packaging bug. but to guarantee that the local builds work identically to builds in OBS, using the arch-specific copy of the noarch package is required. unfortunatelly only one of the noarch packages gets distributed and can be downloaded from a local mirror. all other noarch packages are available through the OBS API only. since there is currently no information about hdrmd5 checksums of published noarch packages, we download them, verify hdrmd5 and re-download the package from OBS API on mismatch.

the same can also happen for architecture depend packages when someone is messing around with the source history or the release number handling in a way that it is not increasing.

if you want to save some bandwidth and don't care about the exact rebuilds you can turn this option on to disable hdrmd5 checks completely.

  • realname : str β€” name of the user passed to the vc tool via VC_REALNAME env variable.
  • email : str β€” email of the user passed to the vc tool via VC_MAILADDR env variable.

πŸ‘‘ AUTHOR πŸ‘‘

openSUSE project <opensuse-buildservice@opensuse.org>


Contributors to the osc project


and that's the whole page, bestie, you ate that fr fr πŸ’…βœ¨ this was OSCRC(5) β€” shoutout to the openSUSE crew for the source, version and everything, dated Jun 04, 2026. now go forth and configure with confidence, icon behavior only πŸ‘‘πŸ’–

πŸ“¦ where this page comes from