]> git.decadent.org.uk Git - dak.git/commitdiff
new file
authorJames Troup <james@nocrew.org>
Wed, 5 Jun 2002 00:17:22 +0000 (00:17 +0000)
committerJames Troup <james@nocrew.org>
Wed, 5 Jun 2002 00:17:22 +0000 (00:17 +0000)
apt.conf.buildd-security [new file with mode: 0644]
cron.buildd-security [new file with mode: 0755]
cron.unchecked-security [new file with mode: 0755]
helena [new file with mode: 0755]

diff --git a/apt.conf.buildd-security b/apt.conf.buildd-security
new file mode 100644 (file)
index 0000000..49f2ba2
--- /dev/null
@@ -0,0 +1,39 @@
+Dir 
+{
+   ArchiveDir "/org/security.debian.org/buildd/";
+   OverrideDir "/org/security.debian.org/override/";
+   CacheDir "/org/security.debian.org/katie-database/";
+};
+
+Default
+{
+   Packages::Compress ". gzip";
+   Sources::Compress ". gzip";
+   DeLinkLimit 0;
+   FileMode 0664;
+}
+
+bindirectory "stable"
+{
+   Packages "stable/Packages";
+   Sources "stable/Sources";
+   Contents " ";
+
+   BinOverride "override.potato.all3";
+   BinCacheDB "packages-accepted-stable.db";
+   PathPrefix "";
+   Packages::Extensions ".deb .udeb";
+};
+
+bindirectory "testing"
+{
+   Packages "testing/Packages";
+   Sources "testing/Sources";
+   Contents " ";
+
+   BinOverride "override.woody.all3";
+   BinCacheDB "packages-accepted-testing.db";
+   PathPrefix "";
+   Packages::Extensions ".deb .udeb";
+};
+
diff --git a/cron.buildd-security b/cron.buildd-security
new file mode 100755 (executable)
index 0000000..35fff51
--- /dev/null
@@ -0,0 +1,35 @@
+#! /bin/sh
+#
+# Executed after jennifer (merge there??)
+
+ARCHS_stable="alpha arm i386 m68k powerpc sparc"
+ARCHS_testing="alpha arm hppa i386 ia64 m68k mips mipsel powerpc sparc s390"
+DISTS="stable testing"
+
+set -e
+export SCRIPTVARS=/org/security.debian.org/katie/vars-security
+. $SCRIPTVARS
+
+if [ ! -e $ftpdir/Archive_Maintenance_In_Progress ]; then
+       cd $masterdir
+       apt-ftparchive -qq generate apt.conf.buildd-security
+       for d in $DISTS; do
+               case "$d" in
+                       stable)
+                               ARCHS="$ARCHS_stable"
+                               ;;
+                       testing)
+                               ARCHS="$ARCHS_testing"
+                               ;;
+                       *)
+                               echo "unknown value in dists: $d"
+                               exit 1
+                               ;;
+               esac
+               cd /org/security.debian.org/buildd/$d
+               for a in $ARCHS; do
+                       quinn-diff -a /org/buildd.debian.org/web/quinn-diff/Packages-arch-specific -A $a 2>/dev/null | ssh buildd@auric wanna-build -d $d-security -b $a/build-db --merge-partial-quinn
+                       ssh buildd@auric wanna-build -d $d-security -A $a -b $a/build-db --merge-packages < Packages
+               done
+       done
+fi
diff --git a/cron.unchecked-security b/cron.unchecked-security
new file mode 100755 (executable)
index 0000000..733e02f
--- /dev/null
@@ -0,0 +1,22 @@
+#! /bin/sh
+
+set -e
+export SCRIPTVARS=/org/security.debian.org/katie/vars-security
+. $SCRIPTVARS
+
+cd $unchecked
+
+changes=$(find . -maxdepth 1 -mindepth 1 -type f -name \*.changes | sed -e "s,./,," | xargs)
+report=$queuedir/REPORT
+timestamp=$(date "+%Y-%m-%d %H:%M")
+
+if [ -z "$changes" ]; then
+  echo "$timestamp": Nothing to do >> $report
+  exit 0;
+fi;
+
+echo "$timestamp": "$changes"  >> $report
+jennifer -a $changes >> $report
+echo "--" >> $report
+
+sh $base/cron.buildd-security
diff --git a/helena b/helena
new file mode 100755 (executable)
index 0000000..60b655c
--- /dev/null
+++ b/helena
@@ -0,0 +1,184 @@
+#!/usr/bin/env python
+
+# Produces a report on NEW and BYHAND packages
+# Copyright (C) 2001, 2002  James Troup <james@nocrew.org>
+# $Id: helena,v 1.1 2002-06-05 00:17:22 troup Exp $
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+################################################################################
+
+# <o-o> XP runs GCC, XFREE86, SSH etc etc,.,, I feel almost like linux....
+# <o-o> I am very confident that I can replicate any Linux application on XP
+# <willy> o-o: *boggle*
+# <o-o> building from source.
+# <o-o> Viiru: I already run GIMP under XP
+# <willy> o-o: why do you capitalise the names of all pieces of software?
+# <o-o> willy: because I want the EMPHASIZE them....
+# <o-o> grr s/the/to/
+# <willy> o-o: it makes you look like ZIPPY the PINHEAD
+# <o-o> willy: no idea what you are talking about.
+# <willy> o-o: do some research
+# <o-o> willy: for what reason?
+
+################################################################################
+
+import copy, glob, os, stat, string, sys, time;
+import apt_pkg;
+import katie, utils;
+
+Cnf = None;
+Katie = None;
+
+################################################################################
+
+def plural (x):
+    if x > 1:
+        return "s";
+    else:
+        return "";
+
+################################################################################
+
+def time_pp(x):
+    if x < 60:
+        unit="second";
+    elif x < 3600:
+        x = x / 60;
+        unit="minute";
+    elif x < 86400:
+        x = x / 3600;
+        unit="hour";
+    elif x < 604800:
+        x = x / 86400;
+        unit="day";
+    elif x < 2419200:
+        x = x / 604800;
+        unit="week";
+    elif x < 29030400:
+        x = x / 2419200;
+        unit="month";
+    else:
+        x = x / 29030400;
+        unit="years";
+    x = int(x);
+    return "%s %s%s" % (x, unit, plural(x));
+
+################################################################################
+
+def sg_compare (a, b):
+    a = a[1];
+    b = b[1];
+    """Sort by have note, time of oldest upload."""
+    # Sort by have note
+    a_note_state = a["note_state"];
+    b_note_state = b["note_state"];
+    if a_note_state < b_note_state:
+        return -1;
+    elif a_note_state > b_note_state:
+        return 1;
+
+    # Sort by time of oldest upload
+    return cmp(a["oldest"], b["oldest"]);
+
+############################################################
+
+def process_changes_files(changes_files, type):
+    msg = "";
+    cache = {};
+    # Read in all the .changes files
+    for filename in changes_files:
+        try:
+            Katie.pkg.changes_file = filename;
+            Katie.init_vars();
+            Katie.update_vars();
+            cache[filename] = copy.copy(Katie.pkg.changes);
+            cache[filename]["filename"] = filename;
+        except:
+            break;
+    # Divide the .changes into per-source groups
+    per_source = {};
+    for filename in cache.keys():
+        source = cache[filename]["source"];
+        if not per_source.has_key(source):
+            per_source[source] = {};
+            per_source[source]["list"] = [];
+        per_source[source]["list"].append(cache[filename]);
+    # Determine oldest time and have note status for each source group
+    for source in per_source.keys():
+        source_list = per_source[source]["list"];
+        first = source_list[0];
+        oldest = os.stat(first["filename"])[stat.ST_CTIME];
+        have_note = 0;
+        for d in per_source[source]["list"]:
+            ctime = os.stat(d["filename"])[stat.ST_CTIME];
+            if ctime < oldest:
+                oldest = ctime;
+            have_note = have_note + (d.has_key("lisa note"));
+        per_source[source]["oldest"] = oldest;
+        if not have_note:
+            per_source[source]["note_state"] = 0; # none
+        elif have_note < len(source_list):
+            per_source[source]["note_state"] = 1; # some
+        else:
+            per_source[source]["note_state"] = 2; # all
+    per_source_items = per_source.items();
+    per_source_items.sort(sg_compare);
+    msg = "";
+    for i in per_source_items:
+        last_modified = time.time()-i[1]["oldest"];
+        source = i[1]["list"][0]["source"];
+        arches = {};
+        versions = {};
+        for j in i[1]["list"]:
+            for arch in j["architecture"].keys():
+                arches[arch] = "";
+            versions[j["version"]] = "";
+        arch_list = string.join(arches.keys(), ", ");
+        version_list = string.join(versions.keys(), ", ");
+        if i[1]["note_state"]:
+            note = " | [note]";
+        else:
+            note = "";
+        msg = msg + "%10s | %10s | %10s%s | %s old\n" % (source, version_list, arch_list, note, time_pp(last_modified));
+
+    if msg:
+        total_count = len(changes_files);
+        source_count = len(per_source_items);
+        print string.upper(type)
+        print "-"*len(type)
+        print
+        print msg
+        print "%s %s source package%s / %s %s package%s in total." % (source_count, type, plural(source_count), total_count, type, plural(total_count));
+        print
+
+################################################################################
+
+def main():
+    global Cnf, Katie;
+
+    Cnf = utils.get_conf();
+    apt_pkg.ParseCommandLine(Cnf,[],sys.argv);
+    Katie = katie.Katie(Cnf);
+
+    changes_files = glob.glob("%s/*.changes" % (Cnf["Dir::Queue::Byhand"]));
+    process_changes_files(changes_files, "byhand");
+    changes_files = glob.glob("%s/*.changes" % (Cnf["Dir::Queue::New"]));
+    process_changes_files(changes_files, "new");
+
+################################################################################
+
+if __name__ == '__main__':
+    main();