From Fedora Project Wiki
(update for how things work currently and include a lot of loud advertising for using side tags instead of overrides)
 
(7 intermediate revisions by 6 users not shown)
Line 1: Line 1:
= What is a BuildRoot Override =
== What is a Buildroot Override ==


Sometimes a package you are trying to build can't be done until another package that it depends on is updated. [[Releases/Rawhide#Producing_Rawhide|When building packages for rawhide, successful builds become available fairly soon after they complete]]. These packages can then be used to build other packages against.
{{Admon/warning|Use on-demand side tags instead|Buildroot overrides should now be used only rarely. The normal method for creating multi-package updates, both for Rawhide and other branches, is to use on-demand side tags. See [https://docs.fedoraproject.org/en-US/package-maintainers/Package_Update_Guide/#multiple_packages the Package Update Guide] for more details.}}


However, when building for any of the release branches below rawhide, builds are usually only available to be built against once they are pushed to "stable". Often it isn't practical or convenient to wait for this to happen. You can work around this problem by submitting a BuildRoot Override for any package builds you need that haven't yet made it to "stable". This will place the package into the BuildRoot for the branch that you specify, until the expiry date that you specify. During this time, the package is available to be built against. It is good practice to specify an expiry date that is only as long as you need (eg, a few days). It can easily be extended if needed. You can also manually expire the Override before the expiry date.
Sometimes a package you are trying to build can't be done until another package that it depends on is updated. [[Releases/Rawhide#Producing_Rawhide|When building packages for Rawhide]] and Branched before updates-testing activation, updates are automatically created for successful builds. As long as all gating tests pass, the update will be immediately pushed "stable" and shortly thereafter the package will be available in the Rawhide buildroot to build other packages against. However, if the update breaks the dependencies of downstream packages it may fail gating tests and be blocked from stable push, so when trying to update packages with dependency implications like this, you should [https://docs.fedoraproject.org/en-US/package-maintainers/Package_Update_Guide/#multiple_packages follow the instructions to use an on-demand side tag] to create a multi-package update.


To submit a BuildRoot override for a package, you need commit access. If you don't have commit access, you can ask the maintainer for the package you are interested in (or a [[Provenpackager_policy|proven packager]]) to submit the BuildRoot Override for you.
When building for Branched after updates-testing is activated or for any stable release, builds are usually only available to be built against once they are pushed to "stable". Often it isn't practical or convenient to wait for this to happen.


It usually takes about 15 to 30 minutes for a new BuildRoot Override to take effect.
The normal way to handle this now is to use an on-demand side tag, as explained in [https://docs.fedoraproject.org/en-US/package-maintainers/Package_Update_Guide/#multiple_packages the Package Update Guide]. You can create a side tag, do your initial build there, and it will immediately be included in the buildroot for that side tag, so you can build other packages against it in the same side tag. Once all related packages have been built, you can create an update from the side tag, which will contain all the packages.


= Using Bodhi to manage Koji Buildroot Overrides =
The older way to work around this problem was by submitting a buildroot override for any package builds you need that haven't yet made it to "stable". This will place the package into the buildroot for the branch that you specify until the expiry date that you specify. During this time, the package is available to be built against. A drawback of this method is that '''all''' builds run by anybody during the time the override is active will build against the overridden package, so it is strongly recommended to specify an expiry date that is only as long as you need (e.g. a few hours). It can easily be extended if needed. You can and should also manually expire the override before the expiry date, once you have completed all the builds you wish to run.


This document describes how to manage your Koji BuildRoot Overrides using
To submit a buildroot override for a package, you need to be a member of the packager group.
Bodhi. Each section contains URLs for performing actions via the web and
commands for doing it from the console.


{{admon/tip|Legacy method|Legacy method/backup plan: submit releng ticket: https://fedorahosted.org/rel-eng/newticket}}
It usually takes about 15 to 30 minutes for a new buildroot override to take effect.


== Submitting a new override ==
= Using fedpkg to manage buildroot overrides =


=== Using the bodhi web interface ===
You can make and manage overrides via {{command|fedpkg override}}. Run {{command|fedpkg override --help}} for full information.


https://bodhi.fedoraproject.org/overrides/new
= Using Bodhi to manage buildroot overrides =


=== Using the bodhi command-line interface ===
See [https://bodhi.fedoraproject.org/docs/user/buildroot_overrides.html bodhi's online docs] or {{command|man bodhi}} and look for the OVERRIDES section.
 
{{admon/warning | Bodhi-client is broken in F25, F26 | }}
 
See: https://bugzilla.redhat.com/show_bug.cgi?id=1259681 .
 
If you want to use bodhi at the command-line you may better switch to [[Bodhi/bodhi-client|Bodh 2]].
 
<pre>
    bodhi --buildroot-override=<name-version-release> --duration=5 --notes="Useful details."
</pre>
 
For example, you successfully built version '''1.12.0''' of the '''mocha''' package for '''f20''', with a release value of '''3'''. The command would be:
 
<pre>
    bodhi --buildroot-override=mocha-1.12.0-3.fc20 --duration=5 --notes="For running test suites when building other nodejs packages"
</pre>
 
== Viewing your own overrides ==
 
https://admin.fedoraproject.org/updates/override/list?mine=True
 
<pre>
    bodhi --my-overrides [--show-expired]
</pre>
 
== Viewing all overrides ==
 
https://admin.fedoraproject.org/updates/override/list
 
<pre>
    bodhi --list-overrides [--show-expired]
</pre>
 
== Manually expiring your buildroot override ==
 
https://admin.fedoraproject.org/updates/override/expire/<name-version-release>
 
<pre>
    bodhi --expire-override=<name-version-release>
</pre>
 
== Extending your duration or editing override notes ==
 
https://admin.fedoraproject.org/updates/override/edit/<name-version-release>
 
<pre>
    bodhi --edit-override=<name-version-release> --duration=10 --notes="Oh hai"
</pre>

Latest revision as of 18:53, 29 February 2024

What is a Buildroot Override

Warning.png
Use on-demand side tags instead
Buildroot overrides should now be used only rarely. The normal method for creating multi-package updates, both for Rawhide and other branches, is to use on-demand side tags. See the Package Update Guide for more details.

Sometimes a package you are trying to build can't be done until another package that it depends on is updated. When building packages for Rawhide and Branched before updates-testing activation, updates are automatically created for successful builds. As long as all gating tests pass, the update will be immediately pushed "stable" and shortly thereafter the package will be available in the Rawhide buildroot to build other packages against. However, if the update breaks the dependencies of downstream packages it may fail gating tests and be blocked from stable push, so when trying to update packages with dependency implications like this, you should follow the instructions to use an on-demand side tag to create a multi-package update.

When building for Branched after updates-testing is activated or for any stable release, builds are usually only available to be built against once they are pushed to "stable". Often it isn't practical or convenient to wait for this to happen.

The normal way to handle this now is to use an on-demand side tag, as explained in the Package Update Guide. You can create a side tag, do your initial build there, and it will immediately be included in the buildroot for that side tag, so you can build other packages against it in the same side tag. Once all related packages have been built, you can create an update from the side tag, which will contain all the packages.

The older way to work around this problem was by submitting a buildroot override for any package builds you need that haven't yet made it to "stable". This will place the package into the buildroot for the branch that you specify until the expiry date that you specify. During this time, the package is available to be built against. A drawback of this method is that all builds run by anybody during the time the override is active will build against the overridden package, so it is strongly recommended to specify an expiry date that is only as long as you need (e.g. a few hours). It can easily be extended if needed. You can and should also manually expire the override before the expiry date, once you have completed all the builds you wish to run.

To submit a buildroot override for a package, you need to be a member of the packager group.

It usually takes about 15 to 30 minutes for a new buildroot override to take effect.

Using fedpkg to manage buildroot overrides

You can make and manage overrides via fedpkg override. Run fedpkg override --help for full information.

Using Bodhi to manage buildroot overrides

See bodhi's online docs or man bodhi and look for the OVERRIDES section.