launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #00156
[Merge] lp:~wgrant/launchpad/remove-obsolete-buildd-junk into lp:launchpad/devel
William Grant has proposed merging lp:~wgrant/launchpad/remove-obsolete-buildd-junk into lp:launchpad/devel.
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
This branch removes obsolete junk from launchpad-buildd. Deleted are some ancient preliminary build farm design docs and example.chroot, an example configuration file for buildd-slave-chroot-tool, which was itself removed some time ago.
--
https://code.launchpad.net/~wgrant/launchpad/remove-obsolete-buildd-junk/+merge/30233
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~wgrant/launchpad/remove-obsolete-buildd-junk into lp:launchpad/devel.
=== modified file 'lib/canonical/buildd/debian/rules'
--- lib/canonical/buildd/debian/rules 2010-06-12 03:48:34 +0000
+++ lib/canonical/buildd/debian/rules 2010-07-19 04:56:00 +0000
@@ -60,7 +60,6 @@
install -m755 buildd-config.py $(target)/usr/bin/buildd-genconfig
install -m644 sbuildrc $(targetshare)/sbuildrc
install -m644 sbuild.conf $(target)/etc/sbuild.conf
- install -m644 example.chroot debian/launchpad-buildd/usr/share/doc/launchpad-buildd/
install -m755 debian/upgrade-config $(targetshare)/upgrade-config
install -m755 check-implicit-pointer-functions $(target)/usr/bin/check-implicit-pointer-functions
# Okay, that's installed all the slave-related files
=== removed file 'lib/canonical/buildd/example.chroot'
--- lib/canonical/buildd/example.chroot 2009-12-16 00:16:24 +0000
+++ lib/canonical/buildd/example.chroot 1970-01-01 00:00:00 +0000
@@ -1,46 +0,0 @@
-# Example chroot configuration file
-
-[chroot]
-# What distroarchrelease are we after
-distribution=ubuntu
-distroseries=breezy
-# Specify "host" to build for this host, otherwise try specifying an archtag
-architecture=host
-
-# We usually want the buildd variant
-variant=buildd
-
-# Where does debootstrap find the archive?
-debootstraparchive=http://archive.ubuntu.com/ubuntu
-
-[apt]
-# What is the archive root?
-archiveroot=http://dogfood.internal/ubuntu
-# What components do we enable?
-components=main restricted universe
-# What pockets (other than the release pocket?)
-#pockets=security updates
-pockets=
-
-# Disabling the verification is handy because it prevents issues
-# where the signing key changes or the signatures are not available
-signingdisabled=1
-
-[buildd]
-# Information for setting up the buildd configuration inside the chroot
-user=buildd
-group=buildd
-paths=/build /build/buildd /home/buildd /var/debbuild /var/debbuild/srcdep-lock
-touchfiles=/var/debbuild/avg-build-times /var/debbuild/avg-build-space /CurrentlyBuilding
-
-# Extra packages we should install for the buildd
-extrapkgs=build-essential fakeroot
-
-[intervention]
-# At what stages would you like to intervene in the process?
-postbootstrap=0
-postextrapkgs=0
-postfinalapt=0
-# Currently this is directly after postfinalapt
-pretarup=1
-
=== removed file 'lib/canonical/buildd/notes.txt'
--- lib/canonical/buildd/notes.txt 2007-10-31 19:03:15 +0000
+++ lib/canonical/buildd/notes.txt 1970-01-01 00:00:00 +0000
@@ -1,206 +0,0 @@
-Launchpad Build Infrastructure
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Points of concern currently...
-
-SourcePackageRelease records may not be associated with any specific
-DistroSeries. If that happens to be the case; what DistroArchSeries
-do we build them for?
-
-
-Database changes
-^^^^^^^^^^^^^^^^
-
-CREATE TABLE BuildQueue (
- id SERIAL PRIMARY KEY,
- build INTEGER FOREIGN KEY REFERENCES build(id) NOT NULL,
- builder INTEGER FOREIGN KEY REFERENCES builder(id),
- created TIMESTAMP WITH TIMEZONE NOT NULL,
- buildstart TIMESTAMP WITH TIMEZONE,
- logtail TEXT,
-
-);
-
--- If speedindex is NULL, we don't know, else it is the number of seconds
--- needed to build a reference package or something.
-ALTER TABLE Builder ADD COLUMN speedindex INTEGER;
-
-Basic case decision on what to build
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-For each DistroSeries which is currently marked for
-autobuilding... Find all SourcePackageReleases published into that
-DistroSeries for which the set of Build records does not contain
-entirely the set of DistroArchSeries being built for that
-DistroSeries.
-
-For each of those; create a build record in "Needs Building" state
-
-Next gather every Build record in the "Needs Building" state for which
-no BuildQueue entry exists and create the BuildQueue entry.
-
-For each entry in the BuildQueue for whom the Build record states a
-builder, query the builder for that build's state.
-
- * complete successful builds are extracted; recorded; the BuildQueue
- entry removed. The time to build is recorded for future estimates.
- * failed builds are logged as such, the Build record is marked as
- "Failed to build" and the BuildQueue entry is removed.
- * failed builds (failing due to dependencies) have their logs recorded
- and the BuildQueue.builder is cleared; the Build is placed into
- "Manual Dep Wait" state
- * failed builds (failing due to chroot issues) have the same
- done for them and are placed into "Chroot Wait" state. Also a
- chroot-damage mail is sent out.
- * failed builds (failing due to disk issues) are simply returned to
- the "Needs Building" state, the builder is marked as failed and
- a builder-failure mail is sent out. If that was the last builder
- for a given architecture then lots of panicy emails are sent.
- * incomplete builds have their logtails updated.
-
-For each entry in the BuildQueue for whom the Build record states
-"Needs Building" (rather than ex. "Manual Dep Wait")
-
- * Calculate for each entry the chroot id needed.
- * Any entry for which the chroot is unavailable is placed into
- "Chroot Wait" state and is pared from the list
- * Any entry for which the chroot is known bad is placed into the
- "Chroot Wait" state
- * Any entry for which there is currently no available builder is
- pared from the list.
- * For each remaining entry; the build-dependencies are analysed out
- and a decision is made about whether or not the build is likely
- to dep-wait or not. Any for which a dep-wait is inevitable is pared
- out and left as "Needs Building"
- * For each remaining entry a score is calculated. This is based upon
- the score generated by the Distro{,Release}'s policy engine for
- deciding what order things get built. Also taken into account are
- things like whether or not the sourcepackage has been built on that
- DistroSeries before.
- Also an estimation of the time to build the package is calculated.
- This is measured as a fraction/multiple of the time it takes to
- build a "standard" package. This combined with the speed measure
- of each builder available for the architecture provides us with
- an estimate of how long the package will take to build on any given
- builder.
- * For each architecture in turn, order the pending builds by their
- score. For each builder except the last; choose the next highest
- scoring package and queue the start of the build on the builder.
- For the last builder; reorder by estimated time to build (in an
- exponential growth grouping) and by score. Queue the highest scoring
- package in the shortest-time-to-build group.
- * For each queued action; download the required chroot to the builder
- if it doesn't already have it; download the sources to it and then
- initiate the build. Record the fact that it is building.
-
-The scoring mechanism for pending builds
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- * Estimated timeto run (smaller == more points)
- * Time spent in the build queue (longer == more points)
- * Position in build dependency chains (depended on == more points)
- * Distribution specific policy (E.g. toolchains first)
- * Priority of package (Base before Desktop before Supported)
- * Urgency of upload
- * Overarching policy (E.g. security builds first)
-
-Time groupings for packages
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- * Five minutes or less
- * Five to fifteen minutes
- * Fifteen to thirty minutes
- * Thirty to sixty minutes
- * Greater than sixty minutes
-
-
-The build-master <-> build slave protocol
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Operated entirely over XML-RPC... Always initiated by the master to
-the slave; the only outgoing sockets the slave is permitted are direct
-to the public archive machine.
-
-Buildd slaves have HTTP read-only access to librarian.
-
-Buildd master is called Fiera
-Buildd slaves are called Bob
-
-Calls that the master can make to the slave
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- INFO (none) ->
- Slave Protocol Version
- [ Commands Understood ]
-
- STATUS (none) ->
- IDLE / BUILDING / WAITING / ABORTED
- if BUILDING
- BUILD-ID in progress
- LOGTAIL (last 1kB or so of the log)
- if WAITING
- OK / DEPFAIL / PACKAGEFAIL / CHROOTFAIL / BUILDERFAIL
- BUILD-ID waiting
- List of filename <-> SHA1sum waiting for upload
- if OK / PACKAGEFAIL
- if ABORTED
- BUILD-ID Aborted
-
- FETCHLOGTAIL (amount) ->
- tail of log file (all of log file if amount <= 0) else (up-to) amount bytes
- Returns an empty string if no build is in progress
-
- DOYOUHAVE (SHA1sum) ->
- YES / NO
- (May fetch from the librarian and return YES if it lacks the file)
-
- STOREFILE (CONTENT) ->
- Stores the CONTENT and returns SHA1sum
-
- FETCHFILE (SHA1sum) ->
- CONTENT for that SHA1summed file
-
- STARTBUILD (BUILD-ID, SHA1sum <-> filename list, CHROOT SHA1sum,
- BUILDCOMMAND) ->
- UNKNOWN-SUM
- SHA1sum
- UNKNOWN-BUILDER
- INITIATED
-
- ABORT (none) ->
- Any build in progress is aborted and the builder is placed in
- ABORTED, returns ABORTED
-
- CLEAN (none) ->
- The file-cache gets cleaned up, state is reverted to IDLE
- returns IDLE
-
-An example interaction
-^^^^^^^^^^^^^^^^^^^^^^
-
-STATUS() -> IDLE
-DOYOUHAVE(chrootsum) -> YES
-DOYOUHAVE(dscsum) -> NO
-STOREFILE(foo.dsc) -> dscsum
-DOYOUHAVE(origsum) -> YES
-DOYOUHAVE(diffsum) -> NO
-STOREFILE(foo.diff.gz) -> diffsum
-STARTBUILD(10023, { foo.dsc: dscsum,
- foo.orig.tar: origsum,
- foo.diff.gz: diffsum },
- chrootsum, DEBIAN-SOURCE) -> INITIATED
-STATUS() -> BUILDING, 10023, "...logtail"
-
-...time passes...
-
-STATUS() -> BUILDING, 10023, "...logtail"
-
-...time passes...
-
-STATUS() -> WAITING, OK, 10023, foo.deb=debsum, foo.changes=changessum,
- BUILDLOG=logsum
-FETCHFILE(debsum) -> foo.deb
-FETCHFILE(changessum) -> foo.changes
-FETCHFILE(logsum) -> BUILDLOG
-CLEAN() -> OK
-STATUS() -> IDLE
=== removed file 'lib/canonical/buildd/sbuild-notes.txt'
--- lib/canonical/buildd/sbuild-notes.txt 2009-12-16 00:16:24 +0000
+++ lib/canonical/buildd/sbuild-notes.txt 1970-01-01 00:00:00 +0000
@@ -1,49 +0,0 @@
-Notes on how to handle sbuild
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The buildd slave runs as the user buildd (ensure UID=1003, due 'tar'
-silly defect when decompressing chroots)
-
-This user has sudo privs for running the chroots (must be passwordless)
-
-Sbuild needs patching:
-
-$main::build_source = 0;
-+#$main::jobs_file = "$main::HOME/build/build-progress";
--$main::jobs_file = "build-progress";
-$main::max_lock_trys = 120;
-
- cleanup_close:
- analyze_fail_stage( $pkgv );
-+ if( $main::pkg_status eq 'failed' ) {
-+ $main::pkg_status = 'failed ' . $main::pkg_fail_stage;
-+ }
- write_jobs_file( $main::pkg_status );
-
- close_log();
--unlink( $main::jobs_file ) if $main::batchmode;
-+#unlink( $main::jobs_file ) if $main::batchmode;
- unlink( "SBUILD-FINISHED" ) if $main::batchmode;
-
-
-Process is as follows:
-
-1. unpack the chroot tarball (must unpack to chroot-autobuild)
- Failure -> BUILDERFAIL
-2. mount up the proc, and devpts dirs
- Failure -> BUILDERFAIL
-3. do apt-get update, apt-get dist-upgrade in the chroot
- Failure -> CHROOTFAIL
-4. Copy into the dir the relevant dsc, orig (and diff if needed)
-5. sbuild --nolog --batch --distribution autobuild foo.dsc
- Failure -> check build-progress
- DEPFAIL / PACKAGEFAIL
-6. sudo ./kill-any-chrooted-processes.py
- Failure -> BUILDERFAIL
-7. umount the proc, and devpts dirs
- Failure -> BUILDERFAIL
-8. unlink the chroot (rm -rf or whatever as root)
- Failure -> BUILDERFAIL
-9. OK
-
-We may make 8 an out-of-band process in which case it can't return BUILDERFAIL
=== removed file 'lib/canonical/buildd/uinotes.txt'
--- lib/canonical/buildd/uinotes.txt 2007-10-31 19:03:15 +0000
+++ lib/canonical/buildd/uinotes.txt 1970-01-01 00:00:00 +0000
@@ -1,68 +0,0 @@
-Launchpad Build UI notes
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-There are various parts to the buildd network which will have status
-information which can be presented to various of the users.
-
-The following classes of users exist...
-
- o Boggy standard user
- o Distribution build manager (member of some team or something)
- o Package maintainer (independant)
- o Package maintainer (in a distro context)
- o Distribution security team member (can see hidden builds)
- o Canonical buildd maintainer
-
-The buildd maintainer view
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The buildd maintainer wants to know if there are any builds failing
-due to buildd-related issues. I.E. if any builds are returning
-CHROOTFAIL or BUILDERFAIL
-
-The buildd maintainer also wants to see the build queues and the
-states of each buildd in the farm.
-
-The boggy-standard user view
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A plain and simple user (E.g. unauthenticated web access) can only see
-build logs of unrestricted packages. They can see if a package is
-queued to be built but no information on when it may be built.
-
-The independant package maintainer
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-An independant package maintainer will basically see the above and
-also an ETA for each architecture's package build for their packages.
-
-For failed builds they can obviously see build logs.
-
-The package maintainer within a distro
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A distro package maintainer gets to see the ETA of their package in
-each of the arch queues; also what packages are ahead of it.
-
-Distribution security team member
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Gets to see all the above; but also for restricted distroseries
-
-Distribution build manager
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Gets to see an overview of all the queues and can give back packages
-which managed to enter a manual dep-wait state or similar.
-
-
-Pages we're likely to need
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- o A view for the buildd maintainer. How to designate this I am
- unsure; perhaps this ought to be a program to run to generate the
- info rather than a web page. [[TODO: Ask lamont about this]]
- o Build log viewer
- o Build queue viewer, optionally limited to a specific
- build/sourcepackagerelease/sourcepackage/distroseries/arch
- o A way to give-back packages to re-try the build