fedpkg(1)
π fedpkg β the rpm-packager manual, but make it make sense π
okay bestie, welcome to the fedpkg page of the rpm-packager manual. yes, this is the whole thing, and no, we are not skimming, because every single flag matters. grab a strawberry π and let's go.
β¨ NAME β¨
fedpkg β the RPM Packaging utility. that's it, that's the name, she's simple but she runs the whole group chat.
β¨ SYNOPSIS β¨
so here's how you actually talk to her:
fedpkg [ global_options ] command [ command_options ] [
command_arguments ]
fedpkg help
fedpkg command --help
three whole ways to pull up: throw global options + a command + that command's options + args, or just ask for help, or ask a specific command for --help. iconic behaviour honestly.
β¨ DESCRIPTION β¨
fedpkg is a script that talks to the RPM Packaging system for you. she's the friend who handles the awkward stuff so you don't have to.
πΈ Global Options πΈ
these are the settings that apply no matter which command you're running. the main-character flags, if you will π
--config,-CCONFIG β tell her which config file to use. like, "bestie, use this one."--dry-runβ do a whole dry run. all the vibes, none of the consequences π--releaseRELEASE β override the release she discovered, e.g.f25. and heads up, this has to match the remote branch name that was created in the package repository. specifically: use therawhide/mainbranch to build RPMs for rawhide. fr fr, it has to match.--nameNAME β override the repository name. if you wanna change the namespace too, that's what--namespaceis for. and if you don't specify a name at all, she goes hunting for it in this exact order: from the Git push URL, or from the Git URL (that's the last part of the path with the.gitextension removed), or from theNamemacro in the spec file. first one she finds wins.--namespaceNAMESPACE β the package repository namespace. leave it out and it defaults torpmsif namespace is enabled.--userUSER β override the user name she discovered.--passwordPASSWORD β the password for Koji login π--runasRUNAS β run Koji commands as a different user. main character energy, borrowed account edition.--pathPATH β define the directory to work in. defaults tocwd, obviously.--verbose,-vβ run with verbose debug output. she will tell you everything.--debug,-dβ run with debug output.-qβ run quietly, only displaying errors. the "no thoughts, only problems" mode π--user-configUSER_CONFIG β specify a user config file to use.
and that's just the warm-up, because there's so much more coming. stay tuned bestie π¦
πΈ COMMAND OVERVIEW πΈ
okay bestie, this is the master list β every single subcommand fedpkg has, with its exact usage line and a lil sum-up of what it does. bookmark this one, fr fr. π
fedpkg buildβ bestie this one requests a build, like the whole point of your life rn π₯
fedpkg build [-h] [--arches [ARCHES ...]] [--md5] [--nowait] [--target TARGET] [--background] [--fail-fast] [--skip-remote-rules-validation] [--skip-nvr-check] [--custom-user-metadata CUSTOM_USER_METADATA] [--skip-tag] [--scratch | --draft] [--srpm [SRPM]] [--srpm-mock] [--root CONFIG]
fedpkg chain-buildβ builds the current package in order with the other packages you name, like a lil conga line of builds π
fedpkg chain-build [-h] [--arches [ARCHES ...]] [--md5] [--nowait] [--target TARGET] [--background] [--fail-fast] [--skip-remote-rules-validation] [--skip-nvr-check] [--custom-user-metadata CUSTOM_USER_METADATA] package [package ...]
fedpkg ciβ literally just an alias forcommit, nothing more, we love a shortcut β¨
fedpkg ci [-h] [-m MESSAGE] [--with-changelog] [-c] [--raw] [-t] [-F FILE] [-p] [-s] [files ...]
fedpkg cleanβ yeets the untracked files out of your tree, so satisfying π§Ή
fedpkg clean [-h] [-x]
fedpkg clogβ makes aclogfile holding the top changelog entry, chef's kiss for writing commit messages π
fedpkg clog [-h] [--raw]
fedpkg cloneβ clones and checks out a repository, the classic π
fedpkg clone [-h] [--branches] [--branch BRANCH] [--anonymous] [--depth DEPTH] repo [clone_target] ...
fedpkg coβ alias forclone, shorter to type, main character energy β¨οΈ
fedpkg co [-h] [--branches] [--branch BRANCH] [--anonymous] [--depth DEPTH] repo [clone_target] ...
fedpkg commitβ commits your changes, the moment of truth π«Ά
fedpkg commit [-h] [-m MESSAGE] [--with-changelog] [-c] [--raw] [-t] [-F FILE] [-p] [-s] [files ...]
fedpkg compileβ a local testrpmbuild compile, for when you wanna see it before you commit to it π¦
fedpkg compile [-h] [--builddir BUILDDIR] [--buildrootdir BUILDROOTDIR] [--arch ARCH] [--define DEFINE] [--short-circuit] [--nocheck] ...
fedpkg container-buildβ builds a container, periodt π¦
fedpkg container-build [-h] [--target TARGET] [--nowait] [--background] [--build-release BUILD_RELEASE] [--isolated] [--koji-parent-build KOJI_PARENT_BUILD] [--scratch] [--arches [ARCHES ...]] [--repo-url URL [URL ...]] [--signing-intent SIGNING_INTENT] [--skip-remote-rules-validation] [--skip-build] [--compose-id COMPOSE_ID [COMPOSE_ID ...]] [--replace-dependency PKG_MANAGER:NAME:VERSION[:NEW_NAME] [PKG_MANAGER:NAME:VERSION[:NEW_NAME] ...]]
fedpkg container-build-setupβ sets the options forcontainer-buildβοΈ
fedpkg container-build-setup [-h] (--get-autorebuild | --set-autorebuild {true,false})
fedpkg copr-buildβ builds the package over in Copr, cute lil side quest ποΈ
fedpkg copr-build [-h] [--config CONFIG] [--nowait] project ...
fedpkg diffβ shows changes between commits, between a commit and the working tree, etc etc etc π
fedpkg diff [-h] [--cached] [files ...]
fedpkg disable-monitoringβ turns OFF monitoring for the current repo, she's on do-not-disturb mode π
fedpkg disable-monitoring [-h]
fedpkg flatpak-buildβ builds a Flatpak π
fedpkg flatpak-build [-h] [--target TARGET] [--nowait] [--background] [--build-release BUILD_RELEASE] [--isolated] [--koji-parent-build KOJI_PARENT_BUILD] [--scratch] [--arches [ARCHES ...]] [--repo-url URL [URL ...]] [--signing-intent SIGNING_INTENT] [--skip-remote-rules-validation] [--skip-build]
fedpkg forkβ makes a brand new fork of the current repository, go get your own copy bestie π΄
fedpkg fork [-h] [--anonymous]
fedpkg gimmespecβ prints the spec file name. that's it. that's the command. π
fedpkg gimmespec [-h]
fedpkg gitbuildhashβ prints the git hash that was used to build the n-v-r you hand it π
fedpkg gitbuildhash [-h] build
fedpkg giturlβ prints the git url used for building π
fedpkg giturl [-h]
fedpkg helpβ shows usage, your lil safety net π
fedpkg help [-h]
fedpkg importβ imports srpm content into a module π₯
fedpkg import [-h] [--skip-diffs] [--offline] [--do-not-check-specfile-name] srpm
fedpkg installβ a local testrpmbuild installπ οΈ
fedpkg install [-h] [--builddir BUILDDIR] [--buildrootdir BUILDROOTDIR] [--arch ARCH] [--define DEFINE] [--short-circuit] [--nocheck] [--with BCOND_WITH] [--without BCOND_WITHOUT] ...
fedpkg lintβ runsrpmlintagainst the local spec and the build output, if present π§Ό
fedpkg lint [-h] [--info] [--rpmlintconf RPMLINTCONF]
fedpkg list-side-tagsβ lists the side-tags that already exist π·οΈ
fedpkg list-side-tags [-h] [--mine | --user TAG_OWNER | --base-tag BASE_TAG]
fedpkg localβ a local testrpmbuild binary, lowkey the quickest vibe check π«
fedpkg local [-h] [--builddir BUILDDIR] [--buildrootdir BUILDROOTDIR] [--arch ARCH] [--define DEFINE] [--md5] [--with BCOND_WITH] [--without BCOND_WITHOUT] ...
fedpkg mock-configβ generates a mock config π§ͺ
fedpkg mock-config [-h] [--target TARGET] [--arch ARCH]
fedpkg mockbuildβ a local test build using mock, the real deal π₯
fedpkg mockbuild [-h] [--root CONFIG] [--md5] [--no-clean] [--no-cleanup-after] [--no-clean-all] [--with BCOND_WITH] [--without BCOND_WITHOUT] [--shell] [--enablerepo ENABLEREPO] [--disablerepo DISABLEREPO] [--enable-network] [--srpm-mock] [--use-koji-mock-config | --use-local-mock-config] [--default-mock-resultdir] [--extra-pkgs [EXTRA_PKGS ...]] ...
fedpkg newβ diffs against the last tag π
fedpkg new [-h]
fedpkg new-packageβ scaffolds a whole new package directory with a spec template, like a starter pack π
fedpkg new-package [-h] [-t TYPE] [--list-types] [name]
fedpkg new-sourcesβ uploads source files π
fedpkg new-sources [-h] [--offline] files [files ...]
fedpkg overrideβ manages buildroot overrides ποΈ
fedpkg override [-h] {create,extend} ...
fedpkg patchβ creates and adds a gendiff patch file π©Ή
fedpkg patch [-h] [--rediff] suffix
fedpkg pre-push-checkβ checks whether the eventualgit pushcommand could actually go through, a lil pre-flight check βοΈ
fedpkg pre-push-check [-h] [ref]
fedpkg prepβ a local testrpmbuild prepπ§΄
fedpkg prep [-h] [--builddir BUILDDIR] [--buildrootdir BUILDROOTDIR] [--arch ARCH] [--define DEFINE] [--check-deps] ...
fedpkg pullβ pulls changes from the remote repository and updates the working copy, stay in sync bestie π
fedpkg pull [-h] [--rebase] [--no-rebase]
fedpkg pushβ pushes your changes to the remote repository, moment of truth part two π
fedpkg push [-h] [--force] [--no-verify]
fedpkg releases-infoβ prints the Fedora or EPEL releases that are currently active π
fedpkg releases-info [-h] [-e | -f | -j]
fedpkg remoteβ operations with tracked repositories (remotes). β οΈ heads up: this is an experimental interface, so treat it gently π§ͺ
fedpkg remote [-h] {add} ...
fedpkg remove-side-tagβ removes a side tag, and no, it does not merge the packages, don't come for me ποΈ
fedpkg remove-side-tag [-h] TAG
fedpkg repo-statusβ prints the package version in the Fedora/EPEL repositories π
fedpkg repo-status [-h] [-a | -e | -f] [--package NAME]
fedpkg request-branchβ requests a brand new dist-git branch πΏ
fedpkg request-branch [-h] [--repo NAME] [--namespace {rpms,container,flatpaks}] [--sl [SL ...]] [--no-git-branch] [--no-auto-module] [--all-releases] [branch]
fedpkg request-repoβ requests a whole new dist-git repository π
fedpkg request-repo [-h] [--namespace {rpms,container,flatpaks}] [--description DESCRIPTION] [--monitor {no-monitoring,monitoring,monitoring-with-scratch}] [--upstreamurl UPSTREAMURL] [--summary SUMMARY] [--exception] [--project-name PROJECT_NAME] [--backend {BitBucket,Cgit,CPAN,CRAN,crates.io,Debian project,Drupal6,Drupal7,folder,Freshmeat,GitHub,GitLab,Gitea,GNOME,GNU Project,Gogs,Google code,Hackage,Launchpad,Maven Central,npmjs,Packagist,pagure,PEAR,PECL,PyPI,Rubygems,Sourceforge,Sourceforge (git),SourceHut,Stackage,custom}] [--no-initial-commit] [--onboard-packit {no,pull-request,push}] name [bug]
fedpkg request-side-tagβ creates a new side tag β¨
fedpkg request-side-tag [-h] [--base-tag BASE_TAG] [--suffix SUFFIX]
fedpkg request-tests-repoβ requests a new tests dist-git repository π§ͺ
fedpkg request-tests-repo [-h] [--bug BUG] name description
fedpkg request-unretirementβ requests an unretirement of the package branch, bringing it back from the dead π§
fedpkg request-unretirement [-h] [--repo NAME] [--namespace NS] [--bz_bug_id BUG_ID] [-b BRANCHES [BRANCHES ...]]
fedpkg retireβ retires a package/module. sad girl hours π
fedpkg retire [-h] reason
fedpkg scratch-buildβ requests a scratch build (throwaway build, no tag, no stress) π―
fedpkg scratch-build [-h] [--arches [ARCHES ...]] [--md5] [--nowait] [--target TARGET] [--background] [--fail-fast] [--skip-remote-rules-validation] [--skip-nvr-check] [--custom-user-metadata CUSTOM_USER_METADATA] [--srpm [SRPM]] [--srpm-mock] [--root CONFIG]
fedpkg set-distgit-tokenβ updates thefedpkg.distgitAPI token in the~/.config/rpkg/fedpkg.conffile. π
fedpkg set-distgit-token [-h]
tokens are length 64 and contain ONLY uppercase and numerical values, no lowercase bestie. the new API token can be generated at: https://src.fedoraproject.org/settings/token/new
fedpkg set-forgejo-tokenβ updates thefedpkg.forgejoAPI token in the~/.config/rpkg/fedpkg.conffile. π
fedpkg set-forgejo-token [-h]
the new API token can be generated at: https://forge.fedoraproject.org/user/settings/applications
fedpkg sourcesβ downloads the source files β¬οΈ
fedpkg sources [-h] [--outdir OUTDIR] [--force] [--offline]
fedpkg srpmβ creates a source rpm π¦
fedpkg srpm [-h] [--builddir BUILDDIR] [--buildrootdir BUILDROOTDIR] [--arch ARCH] [--define DEFINE] [--md5] [--srpm-mock] [--no-clean] [--no-cleanup-after] [--no-clean-all] [--offline] [--root CONFIG] ...
fedpkg switch-branchβ works with branches, hop between them like it's nothing πΏ
fedpkg switch-branch [-h] [-l] [--fetch] [branch]
fedpkg tagβ management of git tags π·οΈ
fedpkg tag [-h] [-f] [-m MESSAGE] [-c] [--raw] [-F FILE] [-l] [-d] [tag]
fedpkg unused-patchesβ prints the list of patches that are NOT referenced by name in the specfile, the forgotten ones π₯²
fedpkg unused-patches [-h]
fedpkg updateβ submits the last build as an update π’
fedpkg update [-h] [--type {bugfix,security,enhancement,newpackage,unspecified}] [--request {testing,stable}] [--bugs BUGS [BUGS ...]] [--notes NOTES | --notes-file NOTES_FILE] [--disable-autokarma] [--stable-karma KARMA] [--unstable-karma KARMA] [--not-close-bugs] [--no-require-bugs] [--no-require-testcases] [--severity {unspecified,low,medium,high,urgent}] [--suggest-reboot | --suggest-logout]
fedpkg uploadβ uploads source files ‴οΈ
fedpkg upload [-h] [--offline] files [files ...]
fedpkg verify-filesβ locally verifies the%%filessection, catching problems before anyone else has to ππ
fedpkg verify-files [-h] [--builddir BUILDDIR] [--buildrootdir BUILDROOTDIR] [--arch ARCH] [--define DEFINE] ...
fedpkg verrelβ prints the name-version-release. iconic. π
fedpkg verrel [-h] [--json]
π COMMAND REFERENCE π
π fedpkg build
here's the full tea on the big one π
usage: fedpkg build [-h] [--arches [ARCHES ...]] [--md5] [--nowait]
[--target TARGET] [--background] [--fail-fast]
[--skip-remote-rules-validation]
[--skip-nvr-check]
[--custom-user-metadata CUSTOM_USER_METADATA]
[--skip-tag] [--scratch | --draft]
[--srpm [SRPM]] [--srpm-mock] [--root CONFIG]
so this command requests a build of the package in the build system. by default it figures out the target to build for all on its own based on branch data (slay, it just knows), and it uses the latest commit as the build source. β¨
and bestie, it gets better: fedpkg can also submit multiple builds to Koji at once from a stream branch, based on a local config that lives inside the repository. π«Ά the config file is named package.cfg and it's in INI format. for example:
[koji]
targets = rawhide fedora epel7
you only need to put Fedora releases and EPEL in the targets option and fedpkg will convert it into the proper Koji build target for submitting builds. and beside regular release names, the targets option also accepts two shortcut names: fedora and epel, just like you can see in the example above. π
fedorastands for the current active Fedora releasesepelstands for the active EPEL releases, which areel6andepel7currently
no cap, that's the whole thing. π
Oh and one quick PSA before we get into the flags β that config file is a branch specific file. Which means you could literally create a package.cfg for each stream branch <em>separately</em>, to indicate which targets to build the package for on that particular stream. π
Per-stream customisation, we love to see it.
β¨ options β¨
-h,--helpβ show this help message and exit, the classic--arches [ARCHES ...]β build for specific arches--md5β use md5 checksums (for older rpm hosts) π«Ά--nowaitβ don't wait on build, we're busy--target TARGETβ define the build target to build into--backgroundβ run the build at a low priority--fail-fastβ fail the build immediately if any arch fails--skip-remote-rules-validationβ don't check if there's a validgating.yamlfile in the repo, where you can define additional policies for Greenwave gating.--skip-nvr-checkβ submit build to buildsystem without check if NVR was already built. NVR is constructed locally and may be different from NVR constructed during build on builder.--custom-user-metadata CUSTOM_USER_METADATAβ provide a JSON string of custom metadata to be deserialized and stored under the build'sextra.custom_user_metadatafield--skip-tagβ do not attempt to tag package--scratchβ perform a scratch build--draftβ perform a draft build--srpm [SRPM]β build from an srpm. If no srpm is provided with this option an srpm will be generated from current module content.--srpm-mockβ build from an srpm. Source rpm will be generated in'mock'instead of'rpmbuild'.--root,--mock-config,-r CONFIGβ override mock configuration (likemock -r)
π fedpkg chain-build π
okay this one is the collab era of builds, bestie. usage be like:
usage: fedpkg chain-build [-h] [--arches [ARCHES ...]] [--md5] [--nowait]
[--target TARGET] [--background] [--fail-fast]
[--skip-remote-rules-validation] [--skip-nvr-check]
[--custom-user-metadata CUSTOM_USER_METADATA]
package [package ...]
Build current package in order with other packages. π₯
example:
fedpkg chain-build libwidget libgizmo
The current package is added to the end of the CHAIN list.
Colons (:) can be used in the CHAIN parameter to define groups of packages. Packages in any single group will be built in parallel, and all packages in a group must build successfully and populate the repository before the next group will begin building. No skipping the queue, periodt.
For example:
fedpkg chain-build libwidget libaselib : libgizmo :
will cause libwidget and libaselib to be built in parallel, followed by libgizmo, and then the current directory package. If no groups are defined, packages will be built sequentially. π’
positional arguments
packageβ list the packages and the order you want to build in
options
-h,--helpβ show this help message and exit--arches [ARCHES ...]β build for specific arches--md5β use md5 checksums (for older rpm hosts)--nowaitβ don't wait on build--target TARGETβ define build target to build into--backgroundβ run the build at a low priority--fail-fastβ fail the build immediately if any arch fails--skip-remote-rules-validationβ don't check if there's a validgating.yamlfile in the repo, where you can define additional policies for Greenwave gating.--skip-nvr-checkβ submit build to buildsystem without check if NVR was already built. NVR is constructed locally and may be different from NVR constructed during build on builder.--custom-user-metadata CUSTOM_USER_METADATAβ provide a JSON string of custom metadata to be deserialized and stored under the build'sextra.custom_user_metadatafield
π fedpkg ci π
usage: fedpkg ci [-h] [-m MESSAGE] [--with-changelog] [-c] [--raw]
[-t] [-F FILE] [-p] [-s]
[files ...]
Alias for commit. literally just commit in a cuter outfit π
positional arguments
filesβ optional list of specific files to commit
options
-h,--helpβ show this help message and exit-m,--message MESSAGEβ use the given<msg>as the commit message summary--with-changelogβ get the last changelog from SPEC as commit message content. This option must be used with-mtogether.-c,--clogβ generate the commit message from the Changelog section--rawβ make the clog raw-t,--tagβ create a tag for this commit-F,--file FILEβ take the commit message from the given file-p,--pushβ commit and push as one action-s,--signoffβ include a signed-off-by
π§ fedpkg clean π§
usage: fedpkg clean [-h] [-x]
This command can be used to clean up your working directory. By default it will follow .gitignore rules. Patterns listed in .git/info/exclude won't be removed either.
options
-h,--helpβ show this help message and exit-xβ do not follow.gitignoreand.git/info/excluderules
careful bestie β -x means the safety net is OFF, so it'll go for stuff that the ignore rules were protecting. π
π fedpkg clog π
usage: fedpkg clog [-h] [--raw]
This will create a file named "clog" that contains the latest rpm changelog entry. The leading "- " text will be stripped. βοΈ
options
-h,--helpβ show this help message and exit--rawβ generate a more"raw"clog without twiddling the contents
π¦ fedpkg clone π¦
usage: fedpkg clone [-h] [--branches] [--branch BRANCH]
[--anonymous] [--depth DEPTH]
repo [clone_target] ...
This command will clone the named repository from the configured repository base URL. By default it will also checkout the master branch for your working copy. π
positional arguments
repoβ name of the repository to clone. It should not be a Git URL. Should be'namespace/repo-name'in case of namespaced dist-git. Otherwise, just'repo-name'. Namespace examples are'rpms','container','modules','flatpaks'. Default namespace'rpms'can be ignored.clone_targetβ directory in which to clone the repositoryextra_argsβ custom arguments that are passed to the'git clone'. Use'--'to separate them from other arguments.
options
-h,--helpβ show this help message and exit--branches,-Bβ do an old style checkout with subdirs for branches--branch,-b BRANCHβ check out a specific branch--anonymous,-aβ check out a module anonymously--depth DEPTHβ create a shallow clone with a history truncated to the specified number of commits
π fedpkg co π
usage: fedpkg co [-h] [--branches] [--branch BRANCH] [--anonymous]
[--depth DEPTH]
repo [clone_target] ...
Alias for clone. π«Ά same energy, shorter name, main character energy.
positional arguments
repoβ name of the repository to clone. It should not be a Git URL. Should be'namespace/repo-name'in case of namespaced dist-git. Otherwise, just'repo-name'. Namespace examples are'rpms','container','modules','flatpaks'. Default namespace'rpms'can be ignored.clone_targetβ directory in which to clone the repositoryextra_argsβ custom arguments that are passed to the'git clone'. Use'--'to separate them from other arguments.
options
-h,--helpβ show this help message and exit--branches,-Bβ do an old style checkout with subdirs for branches--branch,-b BRANCHβ check out a specific branch--anonymous,-aβ check out a module anonymously--depth DEPTHβ create a shallow clone with a history truncated to the specified number of commits
πΈ fedpkg commit πΈ
usage: fedpkg commit [-h] [-m MESSAGE] [--with-changelog] [-c] [--raw]
[-t] [-F FILE] [-p] [-s]
[files ...]
This invokes a git commit. All tracked files with changes will be committed unless a specific file list is provided. $EDITOR will be used to generate a changelog message unless one is given to the command. A push can be done at the same time. β¨
positional arguments
filesβ optional list of specific files to commit
options
-h,--helpβ show this help message and exit-m,--message MESSAGEβ use the given<msg>as the commit message summary--with-changelogβ get the last changelog from SPEC as commit message content. This option must be used with-mtogether.-c,--clogβ generate the commit message from the Changelog section--rawβ make the clog raw-t,--tagβ create a tag for this commit-F,--file FILEβ take the commit message from the given file-p,--pushβ commit and push as one action-s,--signoffβ include a signed-off-by
β fedpkg compile β
and here's where we're at with compile:
usage: fedpkg compile [-h] [--builddir BUILDDIR]
[--buildrootdir BUILDROOTDIR] [--arch ARCH]
[--define DEFINE] [--short-circuit] [--nocheck]
...
β¦and the rest of this one is coming right up, don't you worry.
This command calls rpmbuild to compile the source. By default the prep and configure stages will be done as well, unless the short-circuit option is used. β¨
π§© positional arguments
extra_argsβ Custom arguments that are passed to the'rpmbuild'. Use--to separate them from other arguments. π
π options
-h,--helpβ show this help message and exit--builddir BUILDDIRβ Define an alternate builddir--buildrootdir BUILDROOTDIRβ Define an alternate buildrootdir--arch ARCHβ Prep for a specific arch--define DEFINEβ Pass custom macros to rpmbuild, may specify multiple times--short-circuitβ short-circuit compile--nocheckβ nocheck compile
π³ fedpkg container-build
usage: fedpkg container-build [-h] [--target TARGET] [--nowait]
[--background]
[--build-release BUILD_RELEASE]
[--isolated]
[--koji-parent-build KOJI_PARENT_BUILD]
[--scratch] [--arches [ARCHES ...]]
[--repo-url URL [URL ...]]
[--signing-intent SIGNING_INTENT]
[--skip-remote-rules-validation]
[--skip-build]
[--compose-id COMPOSE_ID [COMPOSE_ID ...]]
[--replace-dependency PKG_MANAGER:NAME:VERSION[:NEW_NAME] [PKG_MANAGER:NAME:VERSION[:NEW_NAME] ...]]
Build a container π bestie we're making containers now
options
-h,--helpβ show this help message and exit--target TARGETβ Override the default target--nowaitβ Don't wait on build--backgroundβ Run the build at a lower priority--build-release BUILD_RELEASEβ Specify a release value for this build's NVR--isolatedβ Do not update floating tags in the registry. You must use the--build-releaseargument--koji-parent-build KOJI_PARENT_BUILDβ Specify a Koji NVR for the parent container image. This will override the"FROM"value in your Dockerfile.--scratchβ Scratch build--arches [ARCHES ...]β Limit a scratch or a isolated build to an arch. May have multiple arches.--repo-url URL [URL ...]β URLs of yum repo files--signing-intent SIGNING_INTENTβ Signing intent of the ODCS composes. If specified, this must be one of the signing intent names configured on the OSBS server. If unspecified, the server will use the signing intent of thecompose_idsyou specify, or the server'sdefault_signing_intent. To view the full list of possible names, seeatomic_reactor.configinosbs-build.log.--skip-remote-rules-validationβ Don't check if there's a validgating.yamlfile in the repo--skip-buildβ Don't create build, but just modify settings for autorebuilds--compose-id COMPOSE_ID [COMPOSE_ID ...]β Existing ODCS composes to use (specify integers). OSBS will not generate new ODCS composes. Cannot be used with--signing-intent.--replace-dependency PKG_MANAGER:NAME:VERSION[:NEW_NAME] [PKG_MANAGER:NAME:VERSION[:NEW_NAME] ...]β Cachito dependency replacement
βοΈ fedpkg container-build-setup
usage: fedpkg container-build-setup [-h] (--get-autorebuild | --set-autorebuild {true,false})
set options for container-build. πΈ
options
-h,--helpβ show this help message and exit--get-autorebuildβ Get autorebuild value--set-autorebuild {true,false}β Turn autorebuilds on/off
ποΈ fedpkg copr-build
usage: fedpkg copr-build [-h] [--config CONFIG] [--nowait] project ...
Build package in Copr. π₯
Note: you need to have set up correct api key. For more information see API KEY section of copr-cli(1) man page.
positional arguments
projectβ Name of the project in formatUSER/PROJECTextra_argsβ Custom arguments that are passed to the'copr-cli'. Use--to separate them from other arguments.
options
-h,--helpβ show this help message and exit--config CONFIGβ Path to an alternative Copr configuration file--nowaitβ Don't wait on build
π fedpkg diff
usage: fedpkg diff [-h] [--cached] [files ...]
Use git diff to show changes that have been made to tracked files. By default cached changes (changes that have been git added) will not be shown. π
positional arguments
filesβ Optionally diff specific files
options
-h,--helpβ show this help message and exit--cachedβ View staged changes
π« fedpkg disable-monitoring
usage: fedpkg disable-monitoring [-h]
Disable monitoring of the current (retired) repository. π
Currently, it doesn't run automatically after the retire operation β only manually. fr fr.
No arguments are required but a valid token is needed. Before the operation, you need to generate a pagure.io API token at:
https://src.fedoraproject.org/settings/token/new
ACL required:
"Modify an existing project"
Update your token with the following command:
fedpkg set-distgit-token
Command saves token to fedpkg config file:
~/.config/rpkg/fedpkg.conf
For example:
[fedpkg.distgit]
token = <api_key_here>
This operation can be run repeatedly till it succeeds. π«Ά
options
-h,--helpβ show this help message and exit
π§ fedpkg flatpak-build
usage: fedpkg flatpak-build [-h] [--target TARGET] [--nowait]
[--background]
[--build-release BUILD_RELEASE]
[--isolated]
[--koji-parent-build KOJI_PARENT_BUILD]
[--scratch] [--arches [ARCHES ...]]
[--repo-url URL [URL ...]]
[--signing-intent SIGNING_INTENT]
[--skip-remote-rules-validation]
[--skip-build]
Build a Flatpak π
options
-h,--helpβ show this help message and exit--target TARGETβ Override the default target--nowaitβ Don't wait on build--backgroundβ Run the build at a lower priority--build-release BUILD_RELEASEβ Specify a release value for this build's NVR--isolatedβ Do not update floating tags in the registry. You must use the--build-releaseargument--koji-parent-build KOJI_PARENT_BUILDβ Specify a Koji NVR for the parent container image. This will override the"FROM"value in your Dockerfile.--scratchβ Scratch build--arches [ARCHES ...]β Limit a scratch or a isolated build to an arch. May have multiple arches.--repo-url URL [URL ...]β URLs of yum repo files--signing-intent SIGNING_INTENTβ Signing intent of the ODCS composes. If specified, this must be one of the signing intent names configured on the OSBS server. If unspecified, the server will use the signing intent of thecompose_idsyou specify, or the server'sdefault_signing_intent. To view the full list of possible names, seeatomic_reactor.configinosbs-build.log.--skip-remote-rules-validationβ Don't check if there's a validgating.yamlfile in the repo--skip-buildβ Don't create build, but just modify settings for autorebuilds
π΄ fedpkg fork
usage: fedpkg fork [-h] [--anonymous]
Create a new fork of the current repository π¦
Before the operation, you need to generate a pagure.io API token at:
https://src.fedoraproject.org/settings/token/new
ACL required:
"Fork a project"
Update your token with the following command:
fedpkg set-distgit-token
Command saves token to fedpkg config file:
~/.config/rpkg/fedpkg.conf
For example:
[fedpkg.distgit]
token = <api_key_here>
Below is a basic example of the command to fork a current repository:
fedpkg fork
Operation requires username (FAS_ID). by default, current logged username is taken. It could be overridden by reusing an argument:
fedpkg --user FAS_ID fork
options
-h,--helpβ show this help message and exit--anonymous,-aβ In this mode, it is possible to fork the repository which was cloned "anonymously" (fedpkg clone -a). The forked repository useshttpsprotocol insteadssh. π
π fedpkg gimmespec
usage: fedpkg gimmespec [-h]
Print the spec file name. that's it, that's the whole job π
options
-h,--helpβ show this help message and exit
π fedpkg gitbuildhash
usage: fedpkg gitbuildhash [-h] build
This will show you the commit hash string used to build the provided build n-v-r π§
positional arguments
buildβname-version-releaseof the build to query.
options
-h,--helpβ show this help message and exit
π fedpkg giturl
usage: fedpkg giturl [-h]
This will show you which git URL would be used in a build command. It uses the git hashsum of the HEAD of the current branch (which may not be pushed). β
options
-h,--helpβ show this help message and exit
π fedpkg help
You forgot what a command does and now you're asking the tool itself. Respect, honestly.
usage: fedpkg help [-h]
It shows you usage. That's the whole job. It's giving "read the room, bestie."
options:
-h,--helpβ show this help message and exit π«Ά
π¦ fedpkg import
usage: fedpkg import [-h] [--skip-diffs] [--offline]
[--do-not-check-specfile-name]
srpm
okay so this one is the glow-up button for an existing module. It extracts the sources, the patches, and the spec file out of an srpm and updates the current module to match. By default it imports into the current branch β so vibe check your branch before you hit it, no cap. πΈ
positional arguments:
srpmβ the source rpm you're importing
options:
-h,--helpβ show this help message and exit--skip-diffsβ don't show diffs when import srpms π--offlineβ do not upload files into lookaside cache--do-not-check-specfile-nameβ do not check whether specfile in SRPM matches the repository name
π₯ fedpkg install
usage: fedpkg install [-h] [--builddir BUILDDIR]
[--buildrootdir BUILDROOTDIR] [--arch ARCH]
[--define DEFINE] [--short-circuit]
[--nocheck] [--with BCOND_WITH]
[--without BCOND_WITHOUT]
...
This calls rpmbuild and runs the install section. All the leading sections get processed too, unless you use the short-circuit option β then it skips ahead like it's cutting the line at a concert. π
positional arguments:
extra_argsβ custom arguments that are passed to therpmbuild. Use--to separate them from other arguments.
options:
-h,--helpβ show this help message and exit--builddir BUILDDIRβ define an alternate builddir--buildrootdir BUILDROOTDIRβ define an alternate buildrootdir--arch ARCHβ prep for a specific arch--define DEFINEβ pass custom macros to rpmbuild, may specify multiple times--short-circuitβ short-circuit install--nocheckβ nocheck install--with BCOND_WITHβ enable configure option (bcond) for the build--without BCOND_WITHOUTβ disable configure option (bcond) for the build
β¨ fedpkg lint
usage: fedpkg lint [-h] [--info] [--rpmlintconf RPMLINTCONF]
Rpmlint can be configured using the --rpmlintconf/-r option, or by dropping a <pkgname>.rpmlintrc file in the working directory. Pick your fighter. π
options:
-h,--helpβ show this help message and exit--info,-iβ display explanations for reported messages (so you actually learn something π)--rpmlintconf,-r RPMLINTCONFβ use a specific configuration file for rpmlint
π fedpkg list-side-tags
usage: fedpkg list-side-tags [-h] [--mine | --user TAG_OWNER |
--base-tag BASE_TAG]
Lists the existing side-tags. That's it. Simple, iconic, no notes.
options:
-h,--helpβ show this help message and exit--mineβ list only my side tags--user TAG_OWNERβ list side tags created by this user--base-tag BASE_TAGβ list only tags based on this base
Heads up:--mine,--userand--base-tagare mutually exclusive β the usage line literally separates them with|, so don't try to stack them. π«Ά
π§ fedpkg local
usage: fedpkg local [-h] [--builddir BUILDDIR]
[--buildrootdir BUILDROOTDIR] [--arch ARCH]
[--define DEFINE] [--md5] [--with BCOND_WITH]
[--without BCOND_WITHOUT]
...
A local test run of rpmbuild that produces binary RPMs. The rpmbuild output gets logged into a file named .build-%{version}-%{release}.log β so if it all goes sideways, the receipts are right there. π
positional arguments:
extra_argsβ custom arguments that are passed to therpmbuild. Use--to separate them from other arguments.
options:
-h,--helpβ show this help message and exit--builddir BUILDDIRβ define an alternate builddir--buildrootdir BUILDROOTDIRβ define an alternate buildrootdir--arch ARCHβ prep for a specific arch--define DEFINEβ pass custom macros to rpmbuild, may specify multiple times--md5β use md5 checksums (for older rpm hosts)--with BCOND_WITHβ enable configure option (bcond) for the build--without BCOND_WITHOUTβ disable configure option (bcond) for the build
π fedpkg mock-config
usage: fedpkg mock-config [-h] [--target TARGET] [--arch ARCH]
This generates a mock config based on the buildsystem target. Very "make me a config, but make it match the buildsystem."
options:
-h,--helpβ show this help message and exit--target TARGETβ override target used for config--arch ARCHβ override local arch
π fedpkg mockbuild
usage: fedpkg mockbuild [-h] [--root CONFIG] [--md5] [--no-clean]
[--no-cleanup-after] [--no-clean-all]
[--with BCOND_WITH]
[--without BCOND_WITHOUT] [--shell]
[--enablerepo ENABLEREPO]
[--disablerepo DISABLEREPO]
[--enable-network] [--srpm-mock]
[--use-koji-mock-config |
--use-local-mock-config]
[--default-mock-resultdir]
[--extra-pkgs [EXTRA_PKGS ...]]
...
This uses the mock utility to build the package for the distribution detected from your branch info. You can override that with the global --release option. Your user must be in the local "mock" group β non-negotiable, bestie, that's the entry fee. π
positional arguments:
extra_argsβ custom arguments that are passed to themock. Use--to separate them from other arguments.
options:
-h,--helpβ show this help message and exit--root,--mock-config,-r CONFIGβ override mock configuration (likemock -r)--md5β use md5 checksums (for older rpm hosts)--no-clean,-nβ do not clean chroot before building package--no-cleanup-afterβ do not clean chroot after building (if automatic cleanup is enabled--no-clean-all,-Nβ alias for both--no-cleanand--no-cleanup-after--with BCOND_WITHβ enable configure option (bcond) for the build--without BCOND_WITHOUTβ disable configure option (bcond) for the build--shellβ run commands interactively within chroot. Before going into chroot, mockbuild needs to run with--no-cleanup-afterin advanced.--enablerepo ENABLEREPOβ pass enablerepo option to yum/dnf (may be used more than once)--disablerepo DISABLEREPOβ pass disablerepo option to yum/dnf (may be used more than once)--enable-networkβ enable networking--srpm-mockβ generate source rpm with'mock'and then run'mockbuild'using this source rpm--use-koji-mock-configβ download Mock configuration from Kojihub, instead of using the local Mock configuration inmock-core-configs.rpm.--use-local-mock-configβ enforce use of local Mock configuration.--default-mock-resultdirβ don't modify Mock resultdir.--extra-pkgs [EXTRA_PKGS ...]β install additional packages into chroot
--use-koji-mock-configand--use-local-mock-configare mutually exclusive β the|in the usage line says pick one, babe. β
If a config file for mock isn't found in the /etc/mock directory, a temporary config directory for mock is created and populated with a config file created with mock-config. So it's got a backup plan. Slay.
π fedpkg new
usage: fedpkg new [-h]
This uses git to show a diff of all the changes β even the uncommitted ones, the little gremlins β since the last git tag was applied. π¦
options:
-h,--helpβ show this help message and exit
π fedpkg new-package
usage: fedpkg new-package [-h] [-t TYPE] [--list-types] [name]
Scaffolds a new package directory with a spec template. Fresh start energy. β¨
positional arguments:
nameβ name of the package to create
options:
-h,--helpβ show this help message and exit-t,--type TYPEβ spec template type (e.g.python,rust,perl). Omit to auto-detect from the package name.--list-typesβ list all available spec templates and exit
πΈ fedpkg new-sources
usage: fedpkg new-sources [-h] [--offline] files [files ...]
This uploads new source file(s) to the lookaside cache, and all file names listed in the sources file get replaced. .gitignore also gets updated with the newly uploaded file(s). Please remember to commit them β the tool is not gonna do that part for you, bestie. π
positional arguments:
files
options:
-h,--helpβ show this help message and exit--offlineβ do all the steps except uploading into lookaside cache
π«Ά fedpkg override
usage: fedpkg override [-h] {create,extend} ...
Manage buildroot overrides. Yes, it has subcommands, it's a whole ecosystem.
options:
-h,--helpβ show this help message and exit
subcommands:
Commands on override
{create,extend}createβ create buildroot override from buildextendβ extend buildroot override expiration
π fedpkg patch
usage: fedpkg patch [-h] [--rediff] suffix
Create and add a gendiff patch file.
positional arguments:
suffixβ look for files with this suffix to diff
options:
-h,--helpβ show this help message and exit--rediffβ recreate gendiff file retaining comments. Saves old patch file with a suffix of~
Patch file will be named package-version-suffix.patch and the file will be added to the repo index. π
π fedpkg pre-push-check
usage: fedpkg pre-push-check [-h] [ref]
Performs a few checks on the repository before you push changes. Note that the "git push" command itself is not part of this check β this is the pregame, not the game.
Checks include:
- parse specfile for source files and verifies it is noted also in the
'sources'file. - verifies that all source files from
'sources'file were uploaded to the lookaside cache.
Checks can be performed manually by executing pre-push-check command.
But originally, it is designed to be executed automatically right before git push command is started. Every time the git push command is executed, the pre-push hook script runs first.
Path: <repository_directory>/.git/hooks/pre-push
This hook script is created after a new repository is cloned. Previously created repositories don't contain this hook script.
To disable these checks, remove the hook script.
positional arguments π
refβ Reference to the commit that will be checked. Accepts hash or reference, for examplerefs/heads/f37
options π
-h,--helpβ show this help message and exit
fedpkg prep π§
usage: fedpkg prep [-h] [--builddir BUILDDIR]
[--buildrootdir BUILDROOTDIR] [--arch ARCH]
[--define DEFINE] [--check-deps]
...
Uses rpmbuild to "prep" the sources β meaning it unpacks the source archive(s) and applies any patches. Bestie, that's literally the whole vibe. β¨
positional arguments π
extra_argsβ Custom arguments that get passed along torpmbuild. Use--to separate them from the other arguments, no cap.
options π
-h,--helpβ show this help message and exit--builddir BUILDDIRβ Define an alternate builddir--buildrootdir BUILDROOTDIRβ Define an alternate buildrootdir--arch ARCHβ Prep for a specific arch--define DEFINEβ Pass custom macros torpmbuild, may specify multiple times--check-depsβ Check dependencies. Not checked by default.
fedpkg pull π«Ά
usage: fedpkg pull [-h] [--rebase] [--no-rebase]
This command uses git to fetch remote changes and apply them to the current working copy. A rebase option is available which can be used to avoid merges. slay.
options π
-h,--helpβ show this help message and exit--rebaseβ Rebase the locally committed changes on top of the remote changes after fetching. This can avoid a merge commit, but it does rewrite local history β so heads up, bestie, that's a whole rewrite situation. π--no-rebaseβ Do not rebase, overriding.gitsettings to the contrary
See git pull --help for more details.
fedpkg push π₯
usage: fedpkg push [-h] [--force] [--no-verify]
Push changes to remote repository. Go off, main character. π
options π
-h,--helpβ show this help message and exit--force,-fβ Force push--no-verifyβ Bypass the pre-push hook script. No check of the branch will prevent the push. Lowkey chaotic, use with intention.
fedpkg releases-info πΈ
usage: fedpkg releases-info [-h] [-e | -f | -j]
Print Fedora or EPEL current active releases. The tea, served fresh. β
options π
-h,--helpβ show this help message and exit-e,--epelβ Only show EPEL releases.-f,--fedoraβ Only show Fedora active releases.-j,--joinβ Show all releases in one line separated by a space.
fedpkg remote π¦
usage: fedpkg remote [-h] {add} ...
Operations with tracked repositories ('remotes'). This is an experimental interface. π
options π
-h,--helpβ show this help message and exit
subcommands π§
Operations with tracked repositories ('remotes'). This is an experimental interface. Please note that some or all current functionality is subject to change. Without parameters, the list of remotes will be shown.
{add}
fedpkg remove-side-tag π
usage: fedpkg remove-side-tag [-h] TAG
Remove a side tag β and without merging packages, okay? Just the removal. periodt.
positional arguments π
TAGβ name of tag to be deleted
options π
-h,--helpβ show this help message and exit
fedpkg repo-status β
usage: fedpkg repo-status [-h] [-a | -e | -f] [--package NAME]
Print package version in Fedora/EPEL repositories. Vibe check on your package across repos. π
options π
-h,--helpβ show this help message and exit-a,--allβ Show all repositories, even the ones where the package is not available.-e,--epelβ Only show EPEL repositories.-f,--fedoraβ Only show Fedora repositories.--package NAMEβ Package name to check. Defaults to the current package.
fedpkg request-branch π
usage: fedpkg request-branch [-h] [--repo NAME]
[--namespace {rpms,container,flatpaks}]
[--sl [SL ...]] [--no-git-branch]
[--no-auto-module] [--all-releases]
[branch]
Request a new dist-git branch. π
Before the operation, you need to generate a Forgejo API token at:
https://forge.fedoraproject.org/user/settings/applications
ACL required:
"write:issue"
Update your token with the following command:
fedpkg set-forgejo-token
Command saves token to fedpkg config file:
~/.config/rpkg/fedpkg.conf
For example:
[fedpkg.forgejo]
token = <api_key_here>
Branch name could be one of current active Fedora and EPEL releases. Use command `fedpkg releases-info` to get release names that can be used to request a branch. β¨
Below are various examples of requesting a dist-git branch.
Request a branch inside a cloned package repository:
fedpkg request-branch f27
Request a branch outside package repository, which could apply to cases of requested repository has not been approved and created, or just not change directory to package repository:
fedpkg request-branch --repo foo f27
Request a branch with service level tied to the branch. In this case branch argument has to be before --sl argument, because --sl allows multiple values.
fedpkg request-branch branch_name --sl bug_fixes:2020-06-01 rawhide:2019-12-01
positional arguments π
branchβ The branch to request.
options π
-h,--helpβ show this help message and exit--repo NAMEβ Repository name the new branch is requested for.--namespace {rpms,container,flatpaks}β Namespace where the repository specified with--repoexists. If omitted, defaults torpms.--sl [SL ...]β The service levels (SLs) tied to the branch. This must be in the format of"sl_name:2020-12-01". This is only for non-release branches. You may provide more than one by separating each SL with a space. When the argument is used, branch argument has to be placed before--sl. Important placement tea, bestie.--no-git-branchβ Don't create the branch in git but still create it in PDC--no-auto-moduleβ If requesting an rpm arbitrary branch, do not also request a new matching module.--all-releasesβ Make a new branch request for every active Fedora release
fedpkg request-repo π
usage: fedpkg request-repo [-h]
[--namespace {rpms,container,flatpaks}]
[--description DESCRIPTION]
[--monitor {no-
monitoring,monitoring,monitoring-with-scratch}]
[--upstreamurl UPSTREAMURL]
[--summary SUMMARY] [--exception]
[--project-name PROJECT_NAME]
[--backend
{BitBucket,Cgit,CPAN,CRAN,crates.io,Debian
project,Drupal6,Drupal7,folder,Freshmeat,GitHub,GitLab,Gitea,GNOME,GNU
Project,Gogs,Google code,Hackage,Launchpad,Maven
Central,npmjs,Packagist,pagure,PEAR,PECL,PyPI,Rubygems,Sourceforge,Sourceforge
(git),SourceHut,Stackage,custom}]
[--no-initial-commit]
[--onboard-packit {no,pull-request,push}]
name [bug]
Request a new dist-git repository. π
Before the operation, you need to generate a Forgejo API token at:
https://forge.fedoraproject.org/user/settings/applications
ACL required:
"write:issue"
Update your token with the following command:
fedpkg set-forgejo-token
Command saves token to fedpkg config file:
~/.config/rpkg/fedpkg.conf
For example:
[fedpkg.forgejo]
token = <api_key_here>
Below is a basic example of the command to request a dist-git repository for the package foo:
fedpkg request-repo foo 1234
Another example to request a module foo:
fedpkg request-repo --namespace modules foo
If you would like to create a project in release-monitoring when requesting a new dist-git repository, use the following command with mandatory arguments. The full list of arguments and their values is in the doc: https://release-monitoring.org/static/docs/user-guide.html
fedpkg request-repo foo 1234 --monitor --backend custom
--upstreamurl "project's url" --project-name bar
positional arguments π
nameβ Repository name to request.bugβ Bugzilla bug ID of the package review request. Not required for requesting a module repository-h,--helpβ show this help message and exit β¨--namespace{rpms,container,flatpaks}β which namespace the repo lives in. Leave it out and it just defaults to rpms, no biggie.--description,-dDESCRIPTION β the repo's description in dist-git, bestie. Give it a cute one.--monitor,-m{no-monitoring,monitoring,monitoring-with-scratch}β the Anitya monitoring type for the repo. Yes,monitoring-with-scratchis a whole vibe, it's real.--upstreamurl,-uUPSTREAMURL β the upstream URL of the project. Drop the link bestie π--summary,-sSUMMARY β override the package's summary from the Bugzilla bug. You get to rewrite the blurb, main character energy.--exceptionβ the package is an exception to the regular package review process. Specifically, it does not require a Bugzilla bug. Special treatment, deserved.--project-namePROJECT_NAME β the package's project name.--backend{BitBucket,Cgit,CPAN,CRAN,crates.io,Debian project,Drupal6,Drupal7,folder,Freshmeat,GitHub,GitLab,Gitea,GNOME,GNU Project,Gogs,Google code,Hackage,Launchpad,Maven Central,npmjs,Packagist,pagure,PEAR,PECL,PyPI,Rubygems,Sourceforge,Sourceforge (git),SourceHut,Stackage,custom}β the package's project backend. That's the whole list, not a single one skipped, I counted π«Ά--no-initial-commitβ do not include an initial commit in the repository. Empty repo moment.--onboard-packit{no,pull-request,push}β whether to generate a default Packit configuration for the package, and then either open a pull request against the newly created dist-git repository or push directly to it. Pick your adventure.
πΈ fedpkg request-side-tag
usage: fedpkg request-side-tag [-h] [--base-tag BASE_TAG]
[--suffix SUFFIX]
Create a new side tag. Side tags are iconic, this is how you build a pile of packages together π
options:
-h,--helpβ show this help message and exit--base-tagBASE_TAG β name of base tag--suffixSUFFIX β a suffix to be appended to the side tag name. Heads up bestie: the suffix must be allowed in Koji configuration. Not negotiable.
π§ fedpkg request-tests-repo
usage: fedpkg request-tests-repo [-h] [--bug BUG] name description
Request a new dist-git repository in the tests shared namespace
https://src.fedoraproject.org/projects/tests/*
For more information about the tests shared namespace see
https://docs.fedoraproject.org/en-US/ci/share-test-code
Before the operation, you need to generate a Forgejo API token at:
https://forge.fedoraproject.org/user/settings/applications
ACL required:
"write:issue"
Update your token with the following command:
fedpkg set-forgejo-token
Command saves token to fedpkg config file:
~/.config/rpkg/fedpkg.conf
For example:
[fedpkg.forgejo]
token = <api_key_here>
Below is a basic example of the command to request a dist-git repository for the space tests/foo:
fedpkg request-tests-repo foo "Description of the repository"
Note that the space name needs to reflect the intent of the tests and will undergo a manual review. So be honest and descriptive, no cap π
positional arguments:
- name β repository name to request.
- description β description of the tests repository.
options:
-h,--helpβ show this help message and exit--bugBUG β Bugzilla bug ID of the package review request.
π fedpkg request-unretirement
usage: fedpkg request-unretirement [-h] [--repo NAME]
[--namespace NS]
[--bz_bug_id BUG_ID]
[-b BRANCHES [BRANCHES ...]]
Request an unretirement of the package branch. Bringing her back from the dead, resurrection era π¦
Before the operation, you need to generate a Forgejo API token at:
https://forge.fedoraproject.org/user/settings/applications
ACL required:
"write:issue"
Update your token with the following command:
fedpkg set-forgejo-token
Command saves token to fedpkg config file:
~/.config/rpkg/fedpkg.conf
For example:
[fedpkg.forgejo]
token = <api_key_here>
The branch name could be one of the current active Fedora and EPEL releases. Use the command fedpkg releases-info to get release names that can be used to request a branch.
Below are various examples of requesting an unretirement of a package branch.
Request an unretirement of the rawhide branch inside the cloned repository. It will use the discovered username. Use --user USER to override it. Also, if the branch was retired more than 8 weeks ago, it will ask for an open Bugzilla ticket.
fedpkg request-unretirement
Request an unretirement of few branches:
fedpkg request-unretirement -b rawhide f40
Request an unretirement of branch that was retired more than 8 weeks ago and requires bugzilla review to proceed:
fedpkg request-unretirement --bz_bug_id BUG_ID
Request an unretirement of package with different namespace than rpms:
fedpkg request-unretirement --namespace test
Request an unretirement outside package repository:
fedpkg request-unretirement --repo name_of_package
options:
-h,--helpβ show this help message and exit--repoNAME β repository name to unretire some branches in.--namespaceNS β repository namespace name, as a default userpm.--bz_bug_idBUG_ID β Bugzilla bug ID with re-review.-b,--branchesBRANCHES [BRANCHES ...] β space-separated list of branches for unretirement.
π fedpkg retire
usage: fedpkg retire [-h] reason
This command will remove all files from the repo, leave a dead.package file for rpms or dead.module file for modules, and push the changes. It's the goodbye era, she's logging off π
After a successful package retirement, there is an optional subsequent step of executing a command:
fedpkg disable-monitoring
The disable-monitoring command is executed manually if desired. Only if you feel like it, no pressure bestie.
positional arguments:
- reason β reason for retiring the package/module.
options:
-h,--helpβ show this help message and exit
π₯ fedpkg scratch-build
usage: fedpkg scratch-build [-h] [--arches [ARCHES ...]] [--md5]
[--nowait] [--target TARGET]
[--background] [--fail-fast]
[--skip-remote-rules-validation]
[--skip-nvr-check]
[--custom-user-metadata CUSTOM_USER_METADATA]
[--srpm [SRPM]] [--srpm-mock]
[--root CONFIG]
This command will request a scratch build of the package. Without providing an srpm, it will attempt to build the latest commit, which must have been pushed. By default all appropriate arches will be built. Test builds only, nothing gets kept β it's giving "trial run, no strings attached" β¨
options:
-h,--helpβ show this help message and exit--arches[ARCHES ...] β build for specific arches--md5β use md5 checksums (for older rpm hosts). Vintage, love that for them.--nowaitβ don't wait on build. Go live your life, we'll ping you.--targetTARGET β define build target to build into--backgroundβ run the build at a low priority. Chill build, low-key energy.--fail-fastβ fail the build immediately if any arch fails. No lingering, we keep it moving π--skip-remote-rules-validationβ don't check if there's a validgating.yamlfile in the repo, where you can define additional policies for Greenwave gating.--skip-nvr-checkβ submit build to buildsystem without check if NVR was already built. NVR is constructed locally and may be different from NVR constructed during build on builder. Use at your own risk, bestie.--custom-user-metadataCUSTOM_USER_METADATA β provide a JSON string of custom metadata to be deserialized and stored under the build'sextra.custom_user_metadatafield--srpm[SRPM] β build from an srpm. If no srpm is provided with this option an srpm will be generated from the current module content.--srpm-mockβ build from an srpm. Source rpm will be generated inmockinstead ofrpmbuild.--root,--mock-config,-rCONFIG β override mock configuration (likemock -r)
π fedpkg set-distgit-token
usage: fedpkg set-distgit-token [-h]
Updates the fedpkg.distgit API token in ~/.config/rpkg/fedpkg.conf file. Tokens are of length 64 and contain only uppercase and numerical values. The new API token can be generated at:
https://src.fedoraproject.org/settings/token/new
options:
-h,--helpβ show this help message and exit
π fedpkg set-forgejo-token
usage: fedpkg set-forgejo-token [-h]
Updates the fedpkg.forgejo API token in ~/.config/rpkg/fedpkg.conf file. The new API token can be generated at:
https://forge.fedoraproject.org/user/settings/applications
options:
-h,--helpβ show this help message and exit
π¦ fedpkg sources
usage: fedpkg sources [-h] [--outdir OUTDIR] [--force] [--offline]
Download source files. The lil fetch quest π§
options:
-h,--helpβ show this help message and exit--outdirOUTDIR β directory to download files into (defaults topwd)--forceβ download all sources, even if unused or otherwise excluded by default.--offlineβ don't connect to the Koji and try to work offline. Airplane mode but for builds βοΈ
π fedpkg srpm
usage: fedpkg srpm [-h] [--builddir BUILDDIR]
[--buildrootdir BUILDROOTDIR] [--arch ARCH]
[--define DEFINE] [--md5] [--srpm-mock]
[--no-clean] [--no-cleanup-after]
[--no-clean-all] [--offline] [--root CONFIG]
...
Create a source rpm. Source rpm era, the origin story of every build π
This command wraps rpmbuild -bs, roughly equivalent to:
rpmbuild -bs mypackage.spec --define "_topdir ." --define "_sourcedir ." --define "_srcrpmdir ." --define "dist .el8"
To include files in the SRPM, the files must be in the current working directory (this depends on the package layout used), and you must reference each file with SourceXXXX: or PatchXXXX: directives in your .spec file. No sneaky files, they have to be named in the spec, periodt.
extra_argsβ your custom little extras, handed straight off torpmbuildπ«Ά if you've got stuff that looks like a flag, drop a--before it so fedpkg knows where your args stop and the real options start.-h,--helpβ show this help message and exit, the classic.--builddir BUILDDIRβ set up a whole different builddir if you're feeling spicy. β¨--buildrootdir BUILDROOTDIRβ same energy but for the buildrootdir. π--arch ARCHβ prep everything for one specific arch.--define DEFINEβ pass your own custom macros through torpmbuild. you can stack this one as many times as you want, no cap. π--md5β use md5 checksums, for the older rpm hosts out there. lowkey vintage.--srpm-mockβ build the source rpm inmockinstead ofrpmbuild. iconic behaviour.--no-clean,-nβ only for--srpm-mock: do not clean the chroot before building the package. π--no-cleanup-afterβ only for--srpm-mock: don't clean the chroot after building, but only if automatic cleanup is turned on in the first place.--no-clean-all,-Nβ only for--srpm-mock: this is just an alias that does both--no-cleanand--no-cleanup-afterat once. two-for-one, ate. π--offlineβ don't connect to the Koji at all, just try to work offline. bestie going ghost mode. π--root,--mock-config,-r CONFIGβ override the mock configuration, exactly likemock -rdoes.
β¨ fedpkg switch-branch β¨
usage: fedpkg switch-branch [-h] [-l] [--fetch] [branch]
This one switches you over to a local git branch, no drama. π¦ If you give it a remote branch name and there's no local match for it, it'll just make one for you β very generous of it. It can also list out all the local and remote branches you've got kicking around.
branchβ the branch name you wanna switch to.-h,--helpβ show this help message and exit.-l,--listβ list both remote-tracking branches and local branches. the full roster. π--fetchβ fetch fresh new data from remote before you switch.
π fedpkg tag π
usage: fedpkg tag [-h] [-f] [-m MESSAGE] [-c] [--raw] [-F FILE] [-l]
[-d]
[tag]
This command uses git to create, list, or delete tags. three moods, one command, we love a multitasker. π
tagβ name of the tag.-h,--helpβ show this help message and exit.-f,--forceβ force the creation of the tag. not me being pushy. π-m,--message MESSAGEβ use the given <msg> as the tag message.-c,--clogβ generate the tag message from the spec changelog section automatically, so you don't have to type it yourself. β¨--rawβ make the clog raw.-F,--file FILEβ take the tag message from the given file instead.-l,--listβ list all tags with a given pattern, or all of them if no pattern is given.-d,--deleteβ delete a tag. bye bestie π
πΈ fedpkg unused-patches πΈ
usage: fedpkg unused-patches [-h]
Prints you a list of patches that aren't referenced by name in the specfile. it's giving detective energy π
-h,--helpβ show this help message and exit.
π fedpkg update π
usage: fedpkg update [-h]
[--type
{bugfix,security,enhancement,newpackage,unspecified}]
[--request {testing,stable}]
[--bugs BUGS [BUGS ...]] [--notes NOTES |
--notes-file NOTES_FILE] [--disable-autokarma]
[--stable-karma KARMA] [--unstable-karma KARMA]
[--not-close-bugs] [--no-require-bugs]
[--no-require-testcases]
[--severity {unspecified,low,medium,high,urgent}]
[--suggest-reboot | --suggest-logout]
This will create a bodhi update request for the current package n-v-r. main character moment fr fr. π
There are two ways to give it update details, bestie. Without any argument from the command line β meaning either the update type or the notes is omitted β a template editor will pop up and let you edit all the detail info interactively. π«Ά
Alternatively, you can just specify your arguments right there on the command line and create an update directly, for example:
fedpkg update --type bugfix --notes 'Rebuilt' --bugs 1000 1002
Or use a file to provide multiline notes with markdown formatting:
fedpkg update --type bugfix --notes-file notes.md --bugs 1000 1002
When all the lines in the template editor are commented out or deleted, the creation process is aborted. And if the template stays unchanged, fedpkg carries on and creates the update. that's on purpose β it gives you a chance to confirm the auto-generated notes from the changelog when the --notes option is omitted. π
-h,--helpβ show this help message and exit.--type {bugfix,security,enhancement,newpackage,unspecified}β the update type. the template editor will be shown if the type is omitted.--request {testing,stable}β the requested repository.--bugs BUGS [BUGS ...]β bug numbers. if you omit them, the bug numbers get extracted from the changelogs. β¨--notes NOTESβ the update description. multiple lines of notes can be specified. if omitted, the template editor shows up.--notes-file NOTES_FILEβ path to a file containing the update notes. super useful for multiline notes with markdown formatting. π--disable-autokarmaβ karma automatism is enabled by default, so use this option if you want to turn that off.--stable-karma KARMAβ stable karma. default is3.--unstable-karma KARMAβ unstable karma. default is-3.--not-close-bugsβ by default the update gets created with automatic bug closing enabled. if that's not the vibe you want, this option disables the default behaviour.--no-require-bugsβ disables the requirement that all the bugs in your update have been confirmed by testers. default isTrue.--no-require-testcasesβ disables the requirement that this update passes all test cases before it can reach stable. default isTrue.--severity {unspecified,low,medium,high,urgent}β severity, which is required for security updates.--suggest-rebootβ suggest to the user that they reboot after the update. default isFalse.--suggest-logoutβ suggest to the user that they log out after the update. default isFalse.
π¦ fedpkg upload π¦
usage: fedpkg upload [-h] [--offline] files [files ...]
This command uploads new source file(s) to the lookaside cache. The source file names get appended to the sources file, and .gitignore also gets updated with the newly uploaded file(s). so bestieβ¦ please remember to commit them. π
filesβ the files.-h,--helpβ show this help message and exit.--offlineβ do all the steps except the uploading into the lookaside cache. all the vibes, none of the upload. π
π fedpkg verify-files π
usage: fedpkg verify-files [-h] [--builddir BUILDDIR]
[--buildrootdir BUILDROOTDIR]
[--arch ARCH] [--define DEFINE]
...
Locally runs rpmbuild -bl to verify the spec file's %files sections. this one requires that you've already had a successful run of fedpkg install first β no shortcuts, bestie. β
extra_argsβ custom arguments that are passed to therpmbuild. use--to separate them from the other arguments.-h,--helpβ show this help message and exit.--builddir BUILDDIRβ define an alternate builddir.--buildrootdir BUILDROOTDIRβ define an alternate buildrootdir.--arch ARCHβ prep for a specific arch.--define DEFINEβ pass custom macros torpmbuild, and you can specify this multiple times.
π fedpkg verrel π
usage: fedpkg verrel [-h] [--json]
Print the name-version-release. short, sweet, to the point. periodt. π
-h,--helpβ show this help message and exit.--jsonβ output the result in json format, with additional fields. for when you want the data in its cutest structured form. β¨
π SEE ALSO π
ngl bestieβ¦ this section is empty. there is literally nothing listed here. no cross-references, no sibling pages, nothing. the silence is deafening π consider this your official confirmation that there's nothing else to see β don't go looking for references that aren't there, iykyk.
and that's a wrap on fedpkg(1), you made it all the way to the end, so proud π«Ά that lil footer sitting at the bottom of the page? that's the source and version info plus the date the page was generated β go give it a peep for the exact numbers, because that's where the receipts live. now go build something iconic. slay, and remember to commit your changes π
π¦ where this page comes from
- fedora 43: fedpkg 1.48-1.fc43 Β· GPL-2.0-or-later
- fedora 44: fedpkg 1.48-1.fc44 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms