]> git.decadent.org.uk Git - dak.git/commitdiff
Merge remote-tracking branch 'ansgar/pu/multiarchive-2'
authorJoerg Jaspert <joerg@debian.org>
Sun, 12 Aug 2012 14:32:04 +0000 (16:32 +0200)
committerJoerg Jaspert <joerg@debian.org>
Sun, 12 Aug 2012 14:32:04 +0000 (16:32 +0200)
* ansgar/pu/multiarchive-2:
  dak/generate_packages_sources2.py: also import Archive from daklib.dbconn
  dak/generate_packages_sources2.py: remove .all() when we need the query object

Signed-off-by: Joerg Jaspert <joerg@debian.org>
14 files changed:
config/debian/common
config/debian/cron.dinstall
config/debian/cron.unchecked
config/debian/dinstall.functions
dak/dakdb/update79.py [changed mode: 0644->0755]
dak/dakdb/update80.py [new file with mode: 0755]
dak/examine_package.py
dak/process_new.py
dak/update_db.py
daklib/dbconn.py
docs/talks/DebConf9/Makefile [deleted file]
docs/talks/DebConf9/background.jpg [deleted file]
docs/talks/DebConf9/ftpmaster.pdf [deleted file]
docs/talks/DebConf9/ftpmaster.tex [deleted file]

index a785db5824780f2dd80d612b529e19de77ae29c7..a2f2877a14932713145539cc2a148e4233638ae0 100644 (file)
@@ -80,13 +80,14 @@ function make_buildd_dir () {
 # Process (oldstable)-proposed-updates "NEW" queue
 function punew_do() {
     local queue="$1"
+    local qdir="$2"
     date -u -R >> REPORT
     dak process-policy "${queue}" | tee -a REPORT | mail -a "X-Debian: DAK" -e -s "NEW changes in ${queue}" debian-release@lists.debian.org -- -F "Debian FTP Masters" -f ftpmaster@ftp-master.debian.org
     echo >> REPORT
 
     dak generate-packages-sources2 -s "${queue}"
 
-    local exportdir="${queuedir}/${queue}/export"
+    local exportdir="${queuedir}/${qdir}/export"
     rm -rf "${exportdir}"
     dak export -q "${queue}" -d "${exportdir}" --all
 }
@@ -97,7 +98,7 @@ function punew() {
         log "Doing automated p-u-new processing"
     fi
     cd "${queuedir}/p-u-new"
-    punew_do "$1"
+    punew_do "$1" "p-u-new"
 }
 
 function opunew() {
@@ -105,7 +106,7 @@ function opunew() {
         log "Doing automated o-p-u-new processing"
     fi
     cd "${queuedir}/o-p-u-new"
-    punew_do "$1"
+    punew_do "$1" "o-p-u-new"
 }
 
 # Do the unchecked processing, in case we have files.
index 0fcf599c0cdeb8416399a0dbcb99e34d8ee30a50..c4b363ca0ef76de1d0e2961813bea536d1addbf4 100755 (executable)
@@ -213,7 +213,7 @@ trap remove_all_locks EXIT TERM HUP INT QUIT
 GO=(
     FUNC="punew"
     TIME="p-u-new"
-    ARGS="proposedupdates"
+    ARGS="stable-new"
     ERR="false"
 )
 stage $GO
@@ -221,7 +221,7 @@ stage $GO
 GO=(
     FUNC="opunew"
     TIME="o-p-u-new"
-    ARGS="oldproposedupdates"
+    ARGS="oldstable-new"
     ERR="false"
 )
 stage $GO
index 3db413e5af532885ad8a027daf7fca57250fa83f..5e819adfadd0f2e6b6982452e19e4be64c0c2589 100755 (executable)
@@ -100,8 +100,8 @@ trap cleanup 0
 pg_timestamp preunchecked >/dev/null
 
 # Process policy queues
-punew proposedupdates
-opunew oldproposedupdates
+punew stable-new
+opunew oldstable-new
 
 # Finally deal with unchecked
 do_unchecked
index d6870a7c4ef78b2a6459e3269c544b2c2b26feb0..e9f8bfd3af6c0b784d140379f9567d71bae3817c 100644 (file)
@@ -194,31 +194,14 @@ function mklslar() {
     FILENAME=ls-lR
 
     log "Removing any core files ..."
-    find -type f -name core -print0 | xargs -0r rm -v
-
-    log "Checking permissions on files in the FTP tree ..."
-    find -type f \( \! -perm -444 -o -perm +002 \) -ls
-    find -type d \( \! -perm -555 -o -perm +002 \) -ls
+    find -type f -name core -print -delete
 
     log "Checking symlinks ..."
     symlinks -rd .
 
     log "Creating recursive directory listing ... "
-    rm -f .${FILENAME}.new
-    TZ=UTC ls -lR > .${FILENAME}.new
-
-    if [ -r ${FILENAME}.gz ] ; then
-        mv -f ${FILENAME}.gz ${FILENAME}.old.gz
-        mv -f .${FILENAME}.new ${FILENAME}
-        rm -f ${FILENAME}.patch.gz
-        zcat ${FILENAME}.old.gz | diff -u - ${FILENAME} | gzip -9cfn - >${FILENAME}.patch.gz
-        rm -f ${FILENAME}.old.gz
-    else
-        mv -f .${FILENAME}.new ${FILENAME}
-    fi
-
-    gzip -9cfN ${FILENAME} >${FILENAME}.gz
-    rm -f ${FILENAME}
+    rm -f ${FILENAME}.gz
+    TZ=UTC ls -lR | gzip -9c --rsyncable > ${FILENAME}.gz
 }
 
 function mkmaintainers() {
@@ -241,6 +224,7 @@ function copyoverrides() {
 }
 
 function mkfilesindices() {
+    set +o pipefail
     umask 002
     cd $base/ftp/indices/files/components
 
@@ -373,6 +357,7 @@ function mkfilesindices() {
 
     rm -f $ARCHLIST
     log "Done!"
+    set -o pipefail
 }
 
 function mkchecksums() {
old mode 100644 (file)
new mode 100755 (executable)
index 954f393..ca20450
@@ -38,6 +38,7 @@ def do_update(self):
         c = self.db.cursor()
 
         c.execute("CREATE SCHEMA world");
+        c.execute("GRANT USAGE ON SCHEMA workd TO PUBLIC")
         c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT SELECT ON TABLES TO PUBLIC")
         c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT ALL ON TABLES TO ftpmaster")
         c.execute("ALTER DEFAULT PRIVILEGES IN SCHEMA world GRANT SELECT ON SEQUENCES TO PUBLIC")
diff --git a/dak/dakdb/update80.py b/dak/dakdb/update80.py
new file mode 100755 (executable)
index 0000000..da9399e
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+# coding=utf8
+
+"""
+rename policy queues
+
+@contact: Debian FTP Master <ftpmaster@debian.org>
+@copyright: 2012 Joerg Jaspert <joerg@debian.org>
+@license: GNU General Public License version 2 or later
+"""
+
+# 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
+
+################################################################################
+
+import psycopg2
+from daklib.dak_exceptions import DBUpdateError
+from daklib.config import Config
+
+################################################################################
+def do_update(self):
+    print __doc__
+    try:
+        cnf = Config()
+
+        c = self.db.cursor()
+
+        c.execute("UPDATE policy_queue set queue_name='stable-new' where queue_name='proposedupdates'");
+        c.execute("UPDATE policy_queue set queue_name='oldstable-new' where queue_name='oldproposedupdates'");
+        c.execute("UPDATE suite set suite_name='stable-new' where    suite_name='proposedupdates'");
+        c.execute("UPDATE suite set suite_name='oldstable-new' where suite_name='oldproposedupdates'");
+
+        c.execute("UPDATE config SET value = '79' WHERE name = 'db_revision'")
+        self.db.commit()
+
+    except psycopg2.ProgrammingError as msg:
+        self.db.rollback()
+        raise DBUpdateError('Unable to apply sick update 79, rollback issued. Error message: {0}'.format(msg))
index a46cd4ccb5bfa7f710cef3902b6dae099d9201c5..cbe782743db1e8fa34403f91284fb4f3dfa0d127 100755 (executable)
@@ -552,9 +552,6 @@ def check_deb (suite, deb_filename, session = None):
         result += foldable_output("copyright of %s" % (filename),
            "binary-%s-copyright"%packagename, get_copyright(deb_filename)) + "\n"
 
-    result += foldable_output("file listing of %s" % (filename),
-       "binary-%s-file-listing"%packagename, do_command("ls -Ll", deb_filename))
-
     return result
 
 # Read a file, strip the signature and return the modified contents as
index afeb06437ac0998cdc1e2e7bb1fd9ca404818856..7a64277f23205d9bf8a2c4f611f5931c27f39f3b 100755 (executable)
@@ -586,7 +586,7 @@ ENVIRONMENT VARIABLES
 
       Example: run mc in a tmux session to inspect the upload
 
-      export DAK_INSPECT_UPLOAD='tmux new-session -d -s process-new 2>/dev/null; tmux new-window -t process-new:0 -k "cd {directory}; mc"'
+      export DAK_INSPECT_UPLOAD='tmux new-session -d -s process-new 2>/dev/null; tmux new-window -n "{changes}" -t process-new:0 -k "cd {directory}; mc"'
 
       and run
 
index ba79c0ed7a4bb5cac9b830e9ab81bea89140ce98..c83459b258a6f97db4c139b426f36cfd2da5de06 100755 (executable)
@@ -46,7 +46,7 @@ from daklib.daklog import Logger
 ################################################################################
 
 Cnf = None
-required_database_schema = 79
+required_database_schema = 80
 
 ################################################################################
 
index 9b5072e4abecf0f71f7aa63a671f7f4513336d9c..293f4dcb799e7abcf0587194dfa593925e1df58d 100644 (file)
@@ -42,8 +42,6 @@ import traceback
 import commands
 import signal
 
-from daklib.gpg import SignedFile
-
 try:
     # python >= 2.6
     import json
@@ -1883,6 +1881,60 @@ __all__.append('SrcContents')
 
 ################################################################################
 
+from debian.debfile import Deb822
+
+# Temporary Deb822 subclass to fix bugs with : handling; see #597249
+class Dak822(Deb822):
+    def _internal_parser(self, sequence, fields=None):
+        # The key is non-whitespace, non-colon characters before any colon.
+        key_part = r"^(?P<key>[^: \t\n\r\f\v]+)\s*:\s*"
+        single = re.compile(key_part + r"(?P<data>\S.*?)\s*$")
+        multi = re.compile(key_part + r"$")
+        multidata = re.compile(r"^\s(?P<data>.+?)\s*$")
+
+        wanted_field = lambda f: fields is None or f in fields
+
+        if isinstance(sequence, basestring):
+            sequence = sequence.splitlines()
+
+        curkey = None
+        content = ""
+        for line in self.gpg_stripped_paragraph(sequence):
+            m = single.match(line)
+            if m:
+                if curkey:
+                    self[curkey] = content
+
+                if not wanted_field(m.group('key')):
+                    curkey = None
+                    continue
+
+                curkey = m.group('key')
+                content = m.group('data')
+                continue
+
+            m = multi.match(line)
+            if m:
+                if curkey:
+                    self[curkey] = content
+
+                if not wanted_field(m.group('key')):
+                    curkey = None
+                    continue
+
+                curkey = m.group('key')
+                content = ""
+                continue
+
+            m = multidata.match(line)
+            if m:
+                content += '\n' + line # XXX not m.group('data')?
+                continue
+
+        if curkey:
+            self[curkey] = content
+
+
 class DBSource(ORMObject):
     def __init__(self, source = None, version = None, maintainer = None, \
         changedby = None, poolfile = None, install_date = None, fingerprint = None):
@@ -1915,9 +1967,7 @@ class DBSource(ORMObject):
         @return: fields is the dsc information in a dictionary form
         '''
         fullpath = self.poolfile.fullpath
-        contents = open(fullpath, 'r').read()
-        signed_file = SignedFile(contents, keyrings=[], require_signature=False)
-        fields = apt_pkg.TagSection(signed_file.contents)
+        fields = Dak822(open(self.poolfile.fullpath, 'r'))
         return fields
 
     metadata = association_proxy('key', 'value')
diff --git a/docs/talks/DebConf9/Makefile b/docs/talks/DebConf9/Makefile
deleted file mode 100644 (file)
index 39f2321..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-# $Id: $
-
-LATEX = latex
-PDFLATEX = pdflatex
-DVIPS = dvips
-BIBTEX = bibtex
-PDFVIEW = xpdf -fullscreen
-
-SRC := $(shell egrep -l '^[^%]*\\begin\{document\}' *.tex)
-DVI = $(SRC:%.tex=%.dvi)
-PDF = $(SRC:%.tex=%.pdf)
-PS  = $(SRC:%.tex=%.ps)
-
-all: pdf
-
-$(PDF): %.pdf : %.tex
-       # call two time because of toc etc
-       @$(PDFLATEX) $<
-       @$(PDFLATEX) $<
-       @$(PDFLATEX) $<
-
-show:
-       $(PDFVIEW) $(PDF)
-
-pdf: $(PDF)
-
-clean:
-       -rm -f $(DVI) $(PDF) $(DVI:%.dvi=%.aux) $(DVI:%.dvi=%.log) $(DVI:%.dvi=%.out) $(DVI:%.dvi=%.toc) $(DVI:%.dvi=%.nav) $(DVI:%.dvi=%.snm)
diff --git a/docs/talks/DebConf9/background.jpg b/docs/talks/DebConf9/background.jpg
deleted file mode 100644 (file)
index d20a9c5..0000000
Binary files a/docs/talks/DebConf9/background.jpg and /dev/null differ
diff --git a/docs/talks/DebConf9/ftpmaster.pdf b/docs/talks/DebConf9/ftpmaster.pdf
deleted file mode 100644 (file)
index af4e916..0000000
Binary files a/docs/talks/DebConf9/ftpmaster.pdf and /dev/null differ
diff --git a/docs/talks/DebConf9/ftpmaster.tex b/docs/talks/DebConf9/ftpmaster.tex
deleted file mode 100644 (file)
index 30a5a3e..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-\documentclass{beamer}
-%\documentclass[draft]{beamer}
-
-\usepackage[german]{babel}
-\usepackage[latin1]{inputenc}
-\usepackage{times}
-\usepackage[T1]{fontenc}
-\usepackage{url}
-
-\mode<presentation>{
-  \usetheme{Madrid}
-  \hypersetup{pdfpagemode=FullScreen}
-  \usecolortheme{albatross}
-  \useinnertheme[shadow]{rounded}
-  \usefonttheme{serif}
-  \usefonttheme{structurebold}
-% \beamerdefaultoverlayspecification{<+-| alert@+>}
-%  \setbeamercovered{transparent}
-}
-
-\title[FTPTeam]{The Debian FTP Team}
-\subtitle{Masters, Assistants, Trainees \\ \alert{Motto: Fuck it! What could possibly go wrong?}}
-
-\author[Joerg Jaspert]{Joerg Jaspert \\ \texttt{joerg@debian.org}}
-\date{Cáceres, July 2009}
-
-\institute[DebConf9]{Debian Conference 2009}
-
-% \AtBeginSection[]
-% {
-%   \begin{frame}<beamer>{Outline}
-%     \tableofcontents[currentsection] %,currentsubsection]
-%   \end{frame}
-% }
-
-
-\begin{document}
-
-\setbeamertemplate{navigation symbols}{}
-{\setbeamertemplate{background}{\includegraphics[width=\paperwidth]{background.jpg}}
-
-\begin{frame}
-  \titlepage
-\end{frame}
-
-\begin{frame}[allowframebreaks,allowdisplaybreaks]{Outline}
-\tiny
-  \tableofcontents
-\end{frame}
-
-\section{History}
-\subsection{Software / Hosting}
-\begin{frame}{History - Scripts}{\alert{Motto: Fuck it! What could possibly go wrong?}}
-  \begin{itemize}
-  \item Ian Murdock/Jackson makeshift scripts
-  \item Monolithic perl dinstall written by Guy Maor
-    \begin{itemize}
-    \item Not exactly secure: upload, shipit
-    \item Not even using PGP either.
-    \end{itemize}
-  \item Katie: a rewrite in python. Known as DAK.
-  \end{itemize}
-\end{frame}
-
-\begin{frame}{History - Hosting}{\alert{Oh fuck, what just went wrong?}}
-  \begin{itemize}
-  \item Under a desk @ cmich.edu
-  \item First master.d.o by Bdale @ HP
-
-{\tiny It was an HP Vectra 486 tower system with 66mhz CPU upgrade, an
-  Adaptec 1740A EISA SCSI controller and two disk drives.  A 330Mb
-  root disk and a 660Mb disk to hold the archive.  Both were 5.25"
-  full-height drives.  All the pieces came off pallets of materials
-  heading out for scrap. Before it left Bdale the archive disk got
-  swapped out for a 1.3Gb drive, also 5.25" full height scsi and a
-  cast-off heading for scrap.
-
-  The first machine to host .debian.org using Debian.}
-
-\pause
-
-  \item Moved to I-Connect
-  \item Then to Novare for several years
-  \item Then to Visi.Net, as 'ftp-master.d.o'
-  \item Relocated to above.net
-  \item Then to the HP DC in Ft. Collins
-  \item Currently at Brown.edu
-  \end{itemize}
-
-\end{frame}
-
-
-\subsection{Archive}
-\begin{frame}{History - Archive}{\alert{That guy impressed me and I am not easily impressed. Wow. BLUE Hair }}
-  \begin{itemize}
-    \item Architectures / Releases:
-      \begin{description}
-        \item[Bo] 1: i386
-        \item[Hamm] 2: + m68k
-        \item[Slink] 4: + sparc, alpha
-        \item[Potato] 6: + powerpc, arm
-        \item[Woody] 11: + mips, mipsel, hppa, ia64, s390
-        \item[Sarge] 11 (unofficial amd64 release)
-        \item[Etch] 11: + amd64, - m68k (there is a semi-official etch-m68k release)
-        \item[Lenny] 12: + armel
-        \item[Squeeze] ?: + kfreebsd-i386, kfreebsd-amd64, - arm, ...
-      \end{description}
-
-    \item  Proposed Architectures:
-      \begin{itemize}
-      \item avr32
-      \item sh\{3,4\}
-      \end{itemize}
-    \end{itemize}
-\end{frame}
-
-\begin{frame}{History - Archive size}{\alert{Ganneff - if it goes wrong, we make it ``Fuck it what do we care?'', but dont tell anyone.}}
-  \begin{itemize}
-  \item Releases:
-    \begin{description}
-    \item[Buzz] 229Mb
-    \item[Rex] 306Mb
-    \item[Bo] 1.2Gb
-    \item[Hamm] 2.1Gb
-    \item[Slink] 4.1Gb
-    \item[Potato] 6.7Gb
-    \item[Woody] 27Gb
-    \item[Sarge] 57Gb
-    \item[Etch] 82Gb
-    \item[Lenny] 125Gb
-    \item[squeeze+X] 1Tb?
-    \end{description}
-
-\pause
-
-  \item Daily pushes:
-    \begin{description}
-    \item[2005] 200Mb up to 2Gb, average 1Gb. Once a day.
-    \item[2009] 1Gb up to 6Gb, average 2Gb. 4 times a day.
-    \end{description}
-  \end{itemize}
-\end{frame}
-
-\subsection{Team}
-\begin{frame}{History - Team}{\alert{sgran - the world B.G. (Before Ganneff)}}
-  \begin{itemize}
-  \item Ian Murdock
-  \item + later Ian Jackson, Bruce Perens, Bdale Garbee
-  \item Guy Maor takes over (moved to dinstall) [somewhere 1995/1996]
-  \item Richard Braakman and James Troup push in [July 1998] % <elmo> so 1998-07-09, looks like a good date for Richard + Me
-  \item James recruits Antti-Juhani Kaijanaho and Gergely Madarasz [Dec 1999]
-  \item Michael Beattie tricks his way in [August 2000]
-  \item Richard becomes inactive [August 2000]
-  \item Work on katie starts (named da-katie) [2000]
-  \item Anthony Towns joins [January 2001]
-  \item Guy becomes inactive [February 2001]
-  \item Ryan Murray is added [June 2001]
-  \item Randall Donald joins [November 2001]
-  \item Daniel Silverstone follows [August 2003]
-  \end{itemize}
-\end{frame}
-
-% Help from elmo for the dates:
-
-% From: Guy Maor <maor@debian.org>
-% Subject: Re: ftpmaster-y stuff
-% To: James Troup <james@nocrew.org>
-% Date: 21 Nov 1999 17:03:08 -0800
-
-% James Troup <james@nocrew.org> writes:
-
-% > I've started being a bit pro-active with ftpmaster stuff, e.g. getting
-% > Gorgo and Ibid on board and announcing it and stuff.  I'm doing this
-% > on the basis that, you don't mind, and if you did you'd say.  Of
-% > course this fails a bit miserably if you don't [say, that is], so
-% > please do tell me if I'm overstepping my bounds...
-
-% I trust you and Richard completely with the ftpmaster stuff.  You have
-% the authority to do anything as far as I'm concerned.
-
-% ------------------------------------------------------------------------
-
-% Guy
-
-% From: Richard Braakman <dark@xs4all.nl>
-% Subject: Re: New ftpmaster (?) Michael Beattie (aka Omnic)
-% To: James Troup <james@nocrew.org>
-% Date: Wed, 16 Aug 2000 13:27:29 +0200
-
-% On Sun, Aug 06, 2000 at 10:29:27PM +0100, James Troup wrote:
-% > person... Omnic is excessively keen and seems to have lots of free
-% > time... unless you have any objections? I'll ask him to join the team
-% > in a couple of days.
-
-% No.  In fact I'm almost writing my retirement notice now -- I'm just working
-% through the current pile of mail before sending anything.
-
-
-\begin{frame}{History - Team}{\alert{mhy - commit it (RE: team motto)}}
-  \begin{itemize}
-  \item Team restructured, Assistants role added [March 2005]
-  \item Joerg Jaspert and Jeroen van Wolffelaar join as Assistants [March 2005]
-  \item Kalle Kivimaa and Thomas Viehmann join as Assistants [February 2008]
-  \item Joerg Jaspert promoted to FTP Master [April 2008]
-  \item Anthony Towns and James Troup leave [April/May 2008]
-  \item Mark Hymers joins as Assistant [July 2008]
-  \item Frank Lichtenheld joins as Assistant [December 2008]
-  \item Thomas Viehmann resigned [December 2008]
-  \item Mike O'Connor joins as Assistant [January 2009]
-  \item Ryan Murray becomes inactive and leaves [March 2009]
-  \item Mark Hymers promoted to FTP Master [March 2009]
-  \item Kalle Kivimaa leaves [July 2009]
-  \end{itemize}
-\end{frame}
-
-\subsection{Present}
-\begin{frame}{The Team}{\alert{Me fail English? That's unpossible.}}
-  FTP Masters
-  \begin{itemize}
-  \item Joerg Jaspert - Ganneff
-  \item Mark Hymers - mhy
-  \end{itemize}
-
-  FTP Assistants
-  \begin{itemize}
-  \item Frank Lichtenheld - djpig
-  \item Mike O'Connor - stew
-  \end{itemize}
-
-  FTP Trainee
-  \begin{itemize}
-  \item Barry deFreese - bdefreese
-  \item You?!
-  \end{itemize}
-
-  Since April 2008 we almost always had people in the FTP Trainee role.
-\end{frame}
-
-\section{The roles}
-\subsection{FTP Master}
-\begin{frame}{FTP Master}{\alert{Don't you kids take anything. I'm watching you. I've got eye implants in the back of my head.}}
-The FTP Master role, unix group \alert{debadmin}, is ...
- \begin{block}{(Lets cite Matthew Garrett)}
-   ... responsible for maintaining the infrastructure
-   required to support the archive. This takes the form of the scripts used
-   for processing uploaded packages, but also the flow of packages between
-   distributions.
- \end{block}
- \begin{itemize}
- \item Keep the archive running
- \item Keep the archive legal
- \item Support the teams that depend on it (Release, Security, soon backports/volatile)
- \item Keep the archive uptodate with the requirements of the project
- \end{itemize}
-\end{frame}
-
-\subsection{FTP Assistant}
-\begin{frame}{FTP Assistant}{\alert{Ganneff - see topic. our motto. yeah.}}
-The FTP Assistant role, group \alert{ftpteam}, created 2005, allows
-additions of people to the FTP Team without having to hand out full FTP
-Master rights.
-
-It allows
-\begin{itemize}
-\item to process NEW,
-\item to handle overrides,
-\item to remove packages.
-\end{itemize}
-
-Thus the most common actions can be done but the possible damage that
-can happen by accident is limited.
-\end{frame}
-
-\subsection{FTP Trainee}
-\begin{frame}{FTP Trainee}{\alert{Kids, you tried your best and you failed miserably. The lesson is, never try. \tiny \\ Hello i18n cabal. :)}}
-The FTP Trainee role, group \alert{ftptrainee}, was created in 2008 to
-allow easy training and testing of future team members.
-
-\begin{itemize}
-\item Initially called ``slave\_NEW''
-
-\pause
-
-\item 6 people trained so far
-\item 2 promoted to Assistants
-\end{itemize}
-
-Trainees can look at NEW and do the usual package checks, but they can
-not actually accept or reject a package. Instead they leave a note,
-which an Assistant or Master reads and acts on.
-\end{frame}
-
-\section{The job}
-\subsection{Archives}
-\begin{frame}{Archives}{\alert{You can't keep blaming yourself. Just blame yourself once, and move on.}}
-  \begin{itemize}
-  \item The main archive, ftp.debian.org
-  \item The security archive, security.debian.org
-  \item (Soon) The volatile archive, volatile.debian.org (integrated
-    into main archive)
-  \item (Soon) The backports.org archive, www.backports.org (-> backports.debian.org)
-  \end{itemize}
-\end{frame}
-
-\subsection{Removals and Overrides}
-\begin{frame}{Removals and Overrides}{\alert{mhy - I was upset to discover (via grepping my logs) that I actually said that quote in one of the subtitles verbatim}}
-  \begin{itemize}
-  \item Removals
-    \begin{itemize}
-    \item (Semi)-Automagic via cruft-report
-    \item Manual, with help from a nice html page
-    \end{itemize}
-  \item Overrides
-    \begin{itemize}
-    \item Priority / Section
-    \item Override disparity
-    \item Currently by mail, should be changed to using BTS
-    \end{itemize}
-  \end{itemize}
-\end{frame}
-
-\subsection{NEW}
-\begin{frame}{NEW}{\alert{mhy - Ganneff airlines: departing from a window near you}}
-
-NEW checking is about three things. In order of priority:
-\begin{itemize}
-\item trying to keep the archive legal,
-\item trying to keep the package namespace sane,
-\item trying to reduce the number of bugs in Debian.
-\end{itemize}
-
-A small list of most common checks
-\begin{itemize}
-\item Check the source for license problems
-  \begin{itemize}
-  \item incompatibility
-  \item non-free license terms
-  \end{itemize}
-\item (sane) package renames / splits
-\item Policy violation
-\item source for everything included?
-\item ...
-\end{itemize}
-\end{frame}
-
-\subsection{Code}
-\begin{frame}{Code}{\alert{Oh, so they have Internet on computers now!}}
-git clone https://ftp-master.debian.org/git/dak.git
-
-\begin{itemize}
-\item Python
-\item and some Shell
-\item and some Perl
-\item at least 9 years old
-\item at minimum 40 different authors
-\end{itemize}
-\end{frame}
-
-\section{How to help / join}
-
-\subsection{QA Team}
-\begin{frame}{Join the Army, err, QA Team}{\alert{mhy - oh god. Ganneff has been on TV? I'm surprised the sets didn't all explode}}
-  \begin{itemize}
-  \item Do QA work
-  \item File removal bugs for unmaintained, outdated or otherwise no longer needed packages
-  \end{itemize}
-\end{frame}
-
-\subsection{Bug triage}
-\begin{frame}{Bug triage}{\alert{I am so smart! I am so smart! S-M-R-T! I mean S-M-A-R-T...}}
-  \begin{itemize}
-  \item Retitle bugs to fit our removal format
-  \item Close bugs that don't apply (anymore)
-  \item Make sure removals can happen (rev-deps anyone?)
-  \end{itemize}
-\end{frame}
-
-\subsection{Write Code}
-\begin{frame}{Write Code}{\alert{I'm normally not a praying man, but if you're up there, please save me Superman.}}
-
-\end{frame}
-
-\subsection{Join the team}
-\begin{frame}{Join the team}{\alert{Hi, my name's Moe. Or as the ladies like to refer to me, 'hey you in the bushes'}}
-Join us. Mail \href{mailto:ftpmaster@debian.org}{ftpmaster@debian.org}.
-
-Join us. Mail \href{mailto:ftpmaster@debian.org}{ftpmaster@debian.org}.
-
-Join us. Mail \href{mailto:ftpmaster@debian.org}{ftpmaster@debian.org}.
-
-Join us. Mail \href{mailto:ftpmaster@debian.org}{ftpmaster@debian.org} NOW.
-\end{frame}
-
-\section{Final}
-
-\subsection{The future}
-\begin{frame}{The future}{\alert{Facts are meaningless. You could use facts to prove anything that's even remotely true!}}
-  \begin{itemize}
-  \item Replace database code in dak with sqlalchemy
-  \item source v3
-  \item Split long description out of Packages files, make it nothing
-    than another translation
-  \item debtags integration, sections death
-  \item tdebs
-  \item ddebs
-  \item lintian autorejects
-  \item autosigning
-  \item binary throw away
-  \item ...
-  \end{itemize}
-\end{frame}
-
-
-\begin{frame}{Thank you for sleeping through this talk}{\alert{Ganneff - (trust full, when had i been that drunk?)}}
-  \begin{center}
-  Joerg Jaspert \\
-  \href{mailto:ftpmaster@debian.org}{ftpmaster@debian.org}
-
-  \href{http://ftp-master.debian.org/}{http://ftp-master.debian.org/}
-
-  \href{https://ftp-master.debian.org/git/dak.git}{https://ftp-master.debian.org/git/dak.git}
-
-
-
-  \vfill
-
-
-  \end{center}
-\end{frame}
-
-
-\end{document}