[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: archive rebuilds, step 2



Hi,

So, Step 2. I described it as:
    Scan the logs (that's done automatically), generate list of
    failures. Also upload the logs to some public place

At the end of Step 1, we have all the logs on EC2 in /tmp/logs.
In Step 2, we will:
- scan the logs to identify failed builds. For that, we will use
  cqa-scanlogs, which is installed on the master node, and available as
  part of the collab-qa-tools package, which source can be found on
  http://anonscm.debian.org/viewvc/collab-qa/collab-qa-tools/
  cqa-scanlogs parses build logs and extracts the interesting part
  automatically.
- move logs of failures to a public place. Currently, under
  http://people.debian.org/~lucas/logs/, but we need to change that.
- prepare a list of failures that will be used for Step 3, such as
  http://anonscm.debian.org/viewvc/collab-qa/archive-rebuilds/2013-05-09-unstable-amd64/failed.2013-05-09.txt?revision=2673&view=markup

That step is actually completely automatized in that script:
http://anonscm.debian.org/viewvc/collab-qa/archive-rebuilds/fetch-and-process-results-aws?revision=2276&view=markup
The problem is that everything is hardcoded.

Your tasks here are:
- build and install collab-qa-tools locally
- look at fetch-and-process-results-aws, understand what it does, do
  every step manually replacing steps you can't do as is (e.g. upload
  logs somewhere else)
- ideally, hack fetch-and-process-results-aws so that your own settings
  (different place to put logs) are available.

You will note that at the end of the script, we use a script called
"merge-results.rb". That script 'imports' a list of failures (+ bugs
filed) into the current list. That allows you to concentrate on the
unknown failures, and to auto-fill all known failures with the
corresponding bug numbers.

In Step 3, we will look at using the list of failures to file bugs.



Side task for Steps 1 and 2:
I am often asked to perform custom rebuilds. Typically, rebuild of
unstable with a custom GCC version. There's on my TODO list right now,
about rebuilding unstable with GCC 4.8. For that, Matthias Klose has
prepared at
   deb http://people.debian.org/~doko/tmp/tinstall ./
To run a custom rebuild, you need to specify a 'mode' to
generate-tasks-rebuild, e.g.:
./generate-tasks-rebuild --no-arch-all -m binary-only -m parallel -m gcc48-unstable -i gcc48 > tasks.gcc48.json
That mode is then added in the json description of tasks, so
process-task can use it to customize the way it calls sbuild, e.g.:
  if task['modes'].include?('gcc48-unstable')
    if not File::exists?('/tmp/change-gcc48-unstable')
      File::open('/tmp/change-gcc48-unstable', 'w') do |fd|
        fd.puts <<-EOF
#!/usr/bin/sudo bash
set -e -x
id
deb http://people.debian.org/~doko/tmp/gcc-4.8 ./ >> /etc/apt/sources.list
echo 'APT::Get::AllowUnauthenticated "1";' > /etc/apt/apt.conf.d/99allow-unauth
apt-get update
apt-get -y upgrade
EOF
      end
      system("chmod a+rx /tmp/change-gcc48-unstable")
    end
    sbuildopt += ' --chroot-setup-commands=/tmp/change-gcc48-unstable'
  end

Generally, when running such custom rebuilds, what's interesting is the
difference between a normal rebuild and the custom one. So usually, you do
something such as (example from README):
# gcc 4.8
./generate-tasks-rebuild --no-arch-all -m binary-only -m parallel -m gcc48-unstable -i gcc48 > tasks.gcc48.json
./generate-tasks-rebuild --no-arch-all -m binary-only -m parallel -i normal > tasks.normal.json
./merge-tasks tasks.gcc48.json tasks.normal.json > tasks.json

You task here is to hack process-task so that it can be used to run a custom
rebuild using doko packages, and to test that it works against a few packages.
(It might be that only the URL in process-task needs to be changed ; I'm not sure).

Then, move "normal" and "gcc48" logs to separate directories, use cqa-scanlogs
to list failures, and use 'compare-results.rb' to compare both list of
failures. Try to find one package that succeeds in the normal rebuild, but
fails in the gcc 4.8 one. (there's a list of bugs that should affect only gcc
4.8 filed by Matthias Klose at
http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-gcc-4.8;users=debian-gcc@lists.debian.org)

Lucas


Reply to: