Changes

Jump to: navigation, search

Koji Follow

959 bytes removed, 10:27, 8 July 2013
Run Notes
= Koji Follow Que Script =
== Build Notes ==
* This script does not automatically solve circular dependency issues (which there are a lot of, especially packages like sub perl modules)
** latest-follow mode will perform a "list-tagged --latest" and que each unbuilt package in the given order
== Possible Common Repository Breakage Scenarios due to basic circular dependencies ==
=== Scenario 1 All of the following examples take place after this series of events ===
* Start of initial-build
# libA-1.0-1.fc17 is built (Provides: libA.so.1)
# packageB-1.0-1.fc17 has a (BuildRequires: libA,packageC but ) is bootstrapped without it and temporarily builtwith its packageC requirement removed (Requires: libA.so.1)# packageC-1.0-1.fc17 has a (BuildRequires: libA,packageB and is built with ) installs libA-1.0-1.fc17,packageB-1.0-1.fc17 and is built (Requires: libA.so.1)# packageB-1.0-2.fc17 has a (BuildRequires: libA,packageC and is built with packageC-1.0-1.fc17,) installs libA-1.0-1.fc17,packageBpackageC-1.0-1.fc17# libA-2.0-1.fc18 and is built (ProvidesRequires: libA.so.2)## Attempting to build the full version of packageB-2.0-1.fc18 will depend on packageC-1.0-1.fc17 which requires libA.so.1 which only find libA.so.2 with the current repodata (this package needs to be bootstrapped again)## Attempting to build packageC-2.0-1.fc18 will depend on packageB-1.0-2.fc17 which will depend on packageC-1.0-1.fc17 which brings us to the same breakage error above
=== Scenario 2 Building a new library first and the packages that depend on it later ===
# libA* Start of mass-1.0-1.fc17 is built (Provides: libA.so.1)# packageB-1.0-1.fc17 has a BuildRequires: packageC but is bootstrapped without it and built# packageC-1.0-1.fc17 has a BuildRequires: libA,packageB and is built with libA-1.0-1.fc17,packageB-1.0-1.fc17 (Requires: libA.so.1)# packageB-1.0-2.fc17 has a BuildRequires: packageC and is built with packageC-1.0-1.fc17,libA-1.0-1.fc17,packageB-1.0-1.fc17# packageB-2.0-1.fc18 has a BuildRequires: packageC and is built with packageC-1.0-1.fc17,libA-1.0-1.fc17,packageB-1.0-2.fc17# packageC-2.0-1.fc18 has a BuildRequires: libA,packageB and is built with libA-1.0-1.fc17,packageB-2.0-1.fc18,packageC-1.0-1.fc17 (Requires: libA.so.1)rebuild
# libA-2.0-1.fc18 is built (Provides: libA.so.2)
## All packages * Attempting to build packageB or packageC will now appear to be up to date BuildRequire each other and current except that the repo is now broken as trying to install packageC which both will require then Require libA.so.1 which is not being provided for since the updated libA will then only provides find libA.so.2in the current repodata
=== Scenario 3 Building new packages first and then the following libraries they depend on after ===
# libA* Start of mass-1.0-1.fc17 is built (Provides: libA.so.1)rebuild# packageB-12.0-12.fc17 has a BuildRequires: packageC but is bootstrapped without it and built# packageC-1.0-1.fc17 has a fc18 (BuildRequires: libA,packageB and is built with packageC) installs libA-1.0-1.fc17,packageBpackageC-1.0-1.fc17 and is built (Requires: libA.so.1)# packageC-2.0-1.fc18 has a (BuildRequires: libA,packageB and is built with ) installs libA-1.0-1.fc17,packageB-12.0-12.fc17 fc18 and is built (Requires: libA.so.1)
# libA-2.0-1.fc18 is built (Provides: libA.so.2)
## * All packages will now appear to be up to date and current except that the repo is now broken as trying to install packageB-2.0-1.fc18 depends on packageC which requires or packageC-2.0-1.fc18,will require libA-2.0-1.fc18,packageB-1so.0-1.fc17 which requires is not being provided for at all since the updated libA.so.1 which only finds provides libA.so.2 given the current repodata
=== Scenario 4 =Run Notes ==
# libA-1.0-1.fc17 * Packages are not processed in alphabetical order and the output is built (Provides: libA.so.1)not displayed in numerical order# packageB-1.0-1.fc17 has a BuildRequires: packageC but * The koji error log is bootstrapped without it for processing messages and the koji stdout log is for queing messages* You need to add any new package names to a tag before they are built# packageC-1.0-1.fc17 has * You need a BuildRequires: libA,packageB and lot of free space in the current directory that the script is built with libA-1.0-1.fc17running in* Before running the script,packageB-1.0-1.fc17 (Requires: libA.so.1)# packageB-2.0-1.fc18 has attempt a scratch build of a BuildRequires: packageC and is built sample package with packageC-1.0-1.fc17,libA-1.0-1.fc17,packageB-1.0-1.fc17the given build tag# libA-2.0-1.fc18 is built (Provides: libA.so.2)## packageC-2.0-1.fc18 has * You can redirect stderr to stdout and write stdout to a BuildRequires: libA,packageB which finds libA-2.0-1.fc18,packageB-2.0-1.fc18,packageC-1.0-1.fc17 which requires libA.file so.1 which only finds that the latest libA.so.2 messages are in the repodataorder with each other
= Downloads =
</pre>
<b>python ~/kf/koji-follow.py ~/kf/koji-follow.conf > ~/logskf/kfo.log 2> ~/logskf/kfe.log</b>
== latest-follow mode ==
</pre>
== Execution Example == <b>python ~/kf/koji-follow.py ~/kf/koji-follow.conf > ~/logskf/kfo.log 2> ~/logskf/kfe.log</b>
= Example Log Output =
== STDOUT Messages ==
1
edit

Navigation menu