From 434ec3a6423fd589b21eff825f6bc58aa8587550 Mon Sep 17 00:00:00 2001 From: James Troup Date: Wed, 5 Jun 2002 00:17:22 +0000 Subject: [PATCH] new file --- apt.conf.buildd-security | 39 +++++++++ cron.buildd-security | 35 ++++++++ cron.unchecked-security | 22 +++++ helena | 184 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 280 insertions(+) create mode 100644 apt.conf.buildd-security create mode 100755 cron.buildd-security create mode 100755 cron.unchecked-security create mode 100755 helena diff --git a/apt.conf.buildd-security b/apt.conf.buildd-security new file mode 100644 index 00000000..49f2ba27 --- /dev/null +++ b/apt.conf.buildd-security @@ -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 index 00000000..35fff51f --- /dev/null +++ b/cron.buildd-security @@ -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 index 00000000..733e02fd --- /dev/null +++ b/cron.unchecked-security @@ -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 index 00000000..60b655c8 --- /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 +# $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 + +################################################################################ + +# XP runs GCC, XFREE86, SSH etc etc,.,, I feel almost like linux.... +# I am very confident that I can replicate any Linux application on XP +# o-o: *boggle* +# building from source. +# Viiru: I already run GIMP under XP +# o-o: why do you capitalise the names of all pieces of software? +# willy: because I want the EMPHASIZE them.... +# grr s/the/to/ +# o-o: it makes you look like ZIPPY the PINHEAD +# willy: no idea what you are talking about. +# o-o: do some research +# 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(); -- GitLab