m (Convert to ol ... it just seemed more appropriate) |
(update to 0.6) |
||
Line 8: | Line 8: | ||
= Understanding failures = | = Understanding failures = | ||
This is a sample output of the upgradepath test, where <code> | This is a sample output of the upgradepath test, where <code>duplicity-0.6.14-1.fc14</code> was requested to be pushed to <code>dist-f14-updates</code> repository: | ||
<pre> | <pre> | ||
======================================== | ============================================================ | ||
duplicity-0.6.14-1.fc14 into dist-f14-updates | |||
======================================== | ============================================================ | ||
[ OK ] dist-f14 | [ OK ] dist-f14 | ||
Latest package: | Latest package: duplicity-0.6.09-1.fc14.1 | ||
[ | [INFO] dist-f15 + dist-f15-updates | ||
Latest package: | Latest package: duplicity-0.6.11-2.fc15 | ||
Latest pending package: duplicity-0.6.14-1.fc15 | |||
[ | The pending package must be pushed together with the tested package, or else the upgrade path will be broken. | ||
Latest package: | [FAIL] f16 + f16-updates | ||
Latest package: duplicity-0.6.11-2.fc16 | |||
Latest pending package: None | |||
[ OK ] f17 | |||
Latest package: duplicity-0.7.0-1.fc17 | |||
Latest pending package: None | |||
RESULT: FAILED | RESULT: FAILED | ||
</pre> | </pre> | ||
The '''OK''' sections denote repositories where upgradepath constraint would be fulfilled after pushing the proposed update. For example it would be possible to upgrade from <code>dist- | The '''OK''' sections denote repositories where upgradepath constraint would be fulfilled after pushing the proposed update. For example it would be possible to upgrade from <code>dist-f14</code>, because it contains lower version of <code>duplicity</code> package. And it would be also possible to (directly) upgrade to <code>f17</code> repository, because it contains higher version of <code>duplicity</code> package. | ||
The '''INFO''' section is almost the same as '''OK''', it just means we provided some information you should read. In this case the upgradepath constraint will be fulfilled only if the build proposed for <code>dist-f15-updates</code> is pushed at the same time as our proposed build for <code>dist-f14-updates</code>. This happens quite often, because package maintainers use to propose new package builds for several Fedora releases at once. It is good to know though that if you notice that these pending builds were not pushed simultaneously you should contact [[ReleaseEngineering|RelEng team]] and ask them to fix it, otherwise your package will have its upgrade path broken. | |||
If you look closely at the '''FAIL''' section, you'll see, that the union of <code>f16</code> and <code>f16-updates</code> repositories contains only <code>duplicity-0.6.11-2.fc16</code>, which is lower version than currently proposed <code>duplicity-0.6.14-1.fc14</code> for <code>dist-f14-updates</code>. It fails because you wouldn't be able upgrade from F14 (through F15) to F16 correctly if the proposed update had been pushed. | |||
== Upgradepath test algorithm == | == Upgradepath test algorithm == | ||
Line 46: | Line 47: | ||
1. PKG in F(lower)-main <= PKG to push | 1. PKG in F(lower)-main <= PKG to push | ||
2. PKG in F(lower)-updates <= PKG to push | 2. PKG in F(lower)-updates <= PKG to push | ||
3. PKG in F(higher)-main union F(higher)-updates => PKG to push | 3. PKG in F(higher)-main union F(higher)-updates union F(higher)-updates-pending => PKG to push | ||
Note: If PKG doesn't exist in REPO, it also satisfies any condition | Note: If PKG doesn't exist in REPO, it also satisfies any condition | ||
Line 54: | Line 55: | ||
The general guidelines for resolving failures include: | The general guidelines for resolving failures include: | ||
<ol> | <ol> | ||
<li>'''Consult packaging guidelines when in doubt how package build versions are compared.'''<br/> | <li>'''Consult packaging guidelines when in doubt how package build versions are compared.'''<br/> | ||
See especially the [[Packaging:NamingGuidelines|Naming guidelines]].</li> | See especially the [[Packaging:NamingGuidelines|Naming guidelines]].</li> |
Revision as of 10:28, 4 August 2011
Upgradepath is a constraint that is not formally described anywhere but it is generally understood as the ability to upgrade from Fedora release N to Fedora release N+1.
In other words no package dependencies may break when the user wants to upgrade his/her Fedora. That is achieved by requiring the higher Fedora release to contain at least the same or higher package build versions (in N-V-R sense) than the lower Fedora release.
AutoQA executes this test for any update that is proposed in Bodhi and reports the result using Bodhi comments at the update page.
Understanding failures
This is a sample output of the upgradepath test, where duplicity-0.6.14-1.fc14
was requested to be pushed to dist-f14-updates
repository:
============================================================ duplicity-0.6.14-1.fc14 into dist-f14-updates ============================================================ [ OK ] dist-f14 Latest package: duplicity-0.6.09-1.fc14.1 [INFO] dist-f15 + dist-f15-updates Latest package: duplicity-0.6.11-2.fc15 Latest pending package: duplicity-0.6.14-1.fc15 The pending package must be pushed together with the tested package, or else the upgrade path will be broken. [FAIL] f16 + f16-updates Latest package: duplicity-0.6.11-2.fc16 Latest pending package: None [ OK ] f17 Latest package: duplicity-0.7.0-1.fc17 Latest pending package: None RESULT: FAILED
The OK sections denote repositories where upgradepath constraint would be fulfilled after pushing the proposed update. For example it would be possible to upgrade from dist-f14
, because it contains lower version of duplicity
package. And it would be also possible to (directly) upgrade to f17
repository, because it contains higher version of duplicity
package.
The INFO section is almost the same as OK, it just means we provided some information you should read. In this case the upgradepath constraint will be fulfilled only if the build proposed for dist-f15-updates
is pushed at the same time as our proposed build for dist-f14-updates
. This happens quite often, because package maintainers use to propose new package builds for several Fedora releases at once. It is good to know though that if you notice that these pending builds were not pushed simultaneously you should contact RelEng team and ask them to fix it, otherwise your package will have its upgrade path broken.
If you look closely at the FAIL section, you'll see, that the union of f16
and f16-updates
repositories contains only duplicity-0.6.11-2.fc16
, which is lower version than currently proposed duplicity-0.6.14-1.fc14
for dist-f14-updates
. It fails because you wouldn't be able upgrade from F14 (through F15) to F16 correctly if the proposed update had been pushed.
Upgradepath test algorithm
The formal description of the algorithm AutoQA uses for checking upgradepath constraint is here:
== Pushing to main repository == Pushing PKG to F(N)-main means: 1. PKG in F(lower)-main <= PKG to push 2. PKG in F(higher)-main >= PKG to push == Pushing to updates repository == Pushing PKG to F(N)-updates means: 1. PKG in F(lower)-main <= PKG to push 2. PKG in F(lower)-updates <= PKG to push 3. PKG in F(higher)-main union F(higher)-updates union F(higher)-updates-pending => PKG to push Note: If PKG doesn't exist in REPO, it also satisfies any condition
Fixing the failures
The general guidelines for resolving failures include:
- Consult packaging guidelines when in doubt how package build versions are compared.
See especially the Naming guidelines. - If you want to push a fix for an older Fedora but not for a newer one, do a proper minor release bump.
Read Minor release bumps for old branches to learn more.
Further help
If you still don't understand why your update failed the test, or if you think there's something wrong in our test or its documentation, or if you have any other suggestions, please contact us.