From: Mike O'Connor Date: Wed, 18 Feb 2009 13:56:09 +0000 (-0500) Subject: merge from master X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=9f371390bb90395b2f2f0b65c91c21047896774a;hp=1483a68353fe374254379f4560cc245fbf2523d4;p=dak.git merge from master Signed-off-by: Mike O'Connor --- diff --git a/config/backports.org/Contents.top b/config/backports.org/Contents.top new file mode 100644 index 00000000..ee791ebf --- /dev/null +++ b/config/backports.org/Contents.top @@ -0,0 +1,32 @@ +This file maps each file available in the backports.org archive system to +the package from which it originates. It includes packages from the +DIST distribution for the ARCH architecture. + +You can use this list to determine which package contains a specific +file, or whether or not a specific file is available. The list is +updated weekly, each architecture on a different day. + +When a file is contained in more than one package, all packages are +listed. When a directory is contained in more than one package, only +the first is listed. + +The best way to search quickly for a file is with the Unix `grep' +utility, as in `grep CONTENTS': + + $ grep nose Contents + etc/nosendfile net/sendfile + usr/X11R6/bin/noseguy x11/xscreensaver + usr/X11R6/man/man1/noseguy.1x.gz x11/xscreensaver + usr/doc/examples/ucbmpeg/mpeg_encode/nosearch.param graphics/ucbmpeg + usr/lib/cfengine/bin/noseyparker admin/cfengine + +This list contains files in all packages, even though not all of the +packages are installed on an actual system at once. If you want to +find out which packages on an installed Debian system provide a +particular file, you can use `dpkg --search ': + + $ dpkg --search /usr/bin/dselect + dpkg: /usr/bin/dselect + + +FILE LOCATION diff --git a/config/backports.org/apt.conf b/config/backports.org/apt.conf new file mode 100644 index 00000000..1fe25ae8 --- /dev/null +++ b/config/backports.org/apt.conf @@ -0,0 +1,71 @@ +Dir +{ + ArchiveDir "/org/backports.org/ftp/"; + OverrideDir "/org/backports.org/scripts/override/"; + CacheDir "/org/backports.org/database/"; +}; + +Default +{ + Packages::Compress ". gzip bzip2"; + Sources::Compress ". gzip bzip2"; + DeLinkLimit 0; + FileMode 0664; + Contents::Compress "gzip"; + MaxContentsChange 12000; +}; + +TreeDefault +{ + Contents::Header "/org/backports.org/dak-config/Contents.top"; +}; + +tree "dists/lenny-backports" +{ + FileList "/org/backports.org/database/dists/lenny-backports_$(SECTION)_binary-$(ARCH).list"; + SourceFileList "/org/backports.org/database/dists/lenny-backports_$(SECTION)_source.list"; + Sections "main contrib non-free"; + Architectures "alpha amd64 arm armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc source"; + BinOverride "override.lenny-backports.$(SECTION)"; + ExtraOverride "override.lenny-backports.extra.$(SECTION)"; + SrcOverride "override.lenny-backports.$(SECTION).src"; + Packages::Compress ". gzip bzip2"; + Sources::Compress ". gzip bzip2"; +}; + +tree "dists/lenny-backports/main" +{ + FileList "/org/backports.org/database/dists/lenny-backports_main_$(SECTION)_binary-$(ARCH).list"; + Sections "debian-installer"; + Architectures "alpha amd64 arm armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc source"; + BinOverride "override.lenny-backports.main.$(SECTION)"; + SrcOverride "override.lenny-backports.main.src"; + BinCacheDB "packages-debian-installer-$(ARCH).db"; + Packages::Extensions ".udeb"; + Contents "$(DIST)/../Contents-udeb"; +}; + +tree "dists/etch-backports" +{ + FileList "/org/backports.org/database/dists/etch-backports_$(SECTION)_binary-$(ARCH).list"; + SourceFileList "/org/backports.org/database/dists/etch-backports_$(SECTION)_source.list"; + Sections "main contrib non-free"; + Architectures "alpha amd64 arm hppa hurd-i386 i386 ia64 mips mipsel m68k powerpc s390 sh sparc source"; + BinOverride "override.etch-backports.$(SECTION)"; + ExtraOverride "override.etch-backports.extra.$(SECTION)"; + SrcOverride "override.etch-backports.$(SECTION).src"; + Packages::Compress ". gzip bzip2"; + Sources::Compress ". gzip bzip2"; +}; + +tree "dists/etch-backports/main" +{ + FileList "/org/backports.org/database/dists/etch-backports_main_$(SECTION)_binary-$(ARCH).list"; + Sections "debian-installer"; + Architectures "alpha amd64 arm hppa hurd-i386 i386 ia64 mips mipsel m68k powerpc s390 sh sparc source"; + BinOverride "override.etch-backports.main.$(SECTION)"; + SrcOverride "override.etch-backports.main.src"; + BinCacheDB "packages-debian-installer-$(ARCH).db"; + Packages::Extensions ".udeb"; + Contents "$(DIST)/../Contents-udeb"; +}; diff --git a/config/backports.org/bpo-copy-packages b/config/backports.org/bpo-copy-packages new file mode 100755 index 00000000..3c5073fe --- /dev/null +++ b/config/backports.org/bpo-copy-packages @@ -0,0 +1,72 @@ +#!/bin/bash + +# Copyright (c) 2005 Peter Palfrader + +# WARNING: spaces in filenames/paths considered harmful. + +export SCRIPTVARS=/org/backports.org/dak/config/backports.org/vars +. $SCRIPTVARS + +cd ${configdir} + +for suite in etch lenny; do + source="${ftpdir}/dists/${suite}-backports" + target="${base}/buildd/dists/${suite}-backports" + + if ! [ -d "$source" ]; then + echo "Source '$source' does not exist or is not a directory or we can't acess it." >&2 + exit 1; + fi + if ! [ -d "$target" ]; then + echo "Target '$target' does not exist or is not a directory or we can't acess it." >&2 + exit 1; + fi + + for file in $( cd "$source" && find . -name 'Packages.gz' -o -name 'Packages' -o -name 'Sources.gz' -o -name 'Sources' -o -name 'Release' ); do + basedir=$(dirname "$file") + basename=$(basename "$file") + targetdir="$target/$basedir" + [ -d "$targetdir" ] || mkdir -p "$targetdir" + if [ "$basename" = "Release" ]; then + cp -a "$source/$file" "$target/$file" + echo 'NotAutomatic: yes' >> "$target/$file" + else + cp -a "$source/$file" "$target/$file" + fi + done + +# postprocess top level Release file + if ! [ -e "$target/Release" ]; then + echo "Did not find $target/Release after copying stuff. something's fishy" >&2 + exit 1; + fi + + cd "$target" + + perl -a -p -i -e ' + if (substr($_,0,1) eq " ") { + if ($in_sha1 || $in_md5) { + ($hash, $size, $file) = @F; + $_="",next unless -f $file; + + (undef,undef,undef,undef,undef,undef,undef,$filesize, + undef,undef,undef,undef,undef) = stat($file); + if ($size != $filesize) { + if ($in_sha1) { + $hash = `sha1sum "$file" | cut -d " " -f 1` + } else { + $hash = `md5sum "$file" | cut -d " " -f 1` + }; + chomp $hash; + $_ = sprintf(" %s %16d %s\n", $hash, $filesize, $file); + } + } + } else { + $in_sha1 = ($F[0] eq "SHA1:") ? 1 : 0; + $in_md5 = ($F[0] eq "MD5Sum:") ? 1 : 0; + } +' Release + + rm -f ${base}/buildd/dists/${suite}-backports/Release.gpg + gpg --no-options --batch --no-tty --secret-keyring ${basedir}/s3kr1t/dot-gnupg/secring.gpg --output "Release.gpg" --armor --detach-sign "Release" +done diff --git a/config/backports.org/cron.buildd b/config/backports.org/cron.buildd new file mode 100755 index 00000000..f48f98f0 --- /dev/null +++ b/config/backports.org/cron.buildd @@ -0,0 +1,10 @@ +#! /bin/bash -e + +# Executed hourly via cron, out of katie's crontab. +# stolen from newraff and adjusted by aba on 2005-04-30 +#exit 0 + +export SCRIPTVARS=/org/backports.org/dak-config/vars +. $SCRIPTVARS +ssh -i $base/s3kr1t/dot-ssh/id_rsa wanna-build@wanna-build.farm.ftbfs.de echo broken +exit 0 diff --git a/config/backports.org/cron.daily b/config/backports.org/cron.daily new file mode 100755 index 00000000..b84d8019 --- /dev/null +++ b/config/backports.org/cron.daily @@ -0,0 +1,19 @@ +#! /bin/sh +# +# Executed daily via cron, out of katie's crontab. + +set -e +export SCRIPTVARS=/org/backports.org/dak-config/vars +. $SCRIPTVARS + +################################################################################ +# Clean out old packages +dak clean-suites +dak clean-queues + +# Send a report on NEW/BYHAND packages +dak queue-report | mail -e -s "NEW and BYHAND on $(date +%D)" ftpmaster@backports.org +# and one on crufty packages +dak cruft-report | tee $webdir/cruft-report-daily.txt | mail -e -s "Debian archive cruft report for $(date +%D)" ftpmaster@backports.org + +echo Daily cron scripts successful. diff --git a/config/backports.org/cron.hourly b/config/backports.org/cron.hourly new file mode 100755 index 00000000..45980065 --- /dev/null +++ b/config/backports.org/cron.hourly @@ -0,0 +1,116 @@ +#! /bin/sh +# +# Executed daily via cron, out of katie's crontab. +set -e +export SCRIPTVARS=/org/backports.org/dak-config/vars +. $SCRIPTVARS + +################################################################################ +cd $accepted + +changes=$(find . -maxdepth 1 -mindepth 1 -type f -name \*.changes | sed -e "s,./,," | xargs) + +if [ -z "$changes" ]; then + exit 0; +fi + +echo Archive maintenance started at $(date +%X) + +NOTICE="$ftpdir/Archive_Maintenance_In_Progress" +LOCKCU="$lockdir/daily.lock" +LOCKAC="$lockdir/unchecked.lock" + +cleanup() { + rm -f "$NOTICE" + rm -f "$LOCKCU" +} +trap cleanup 0 + +rm -f "$NOTICE" +lockfile -l 3600 $LOCKCU +cat > "$NOTICE" < $POSTDUMP +(cd /org/backports.org/backup; ln -sf $POSTDUMP current) + +################################################################################ + +# Vacuum the database +echo "VACUUM; VACUUM ANALYZE;" | psql projectb 2>&1 | grep -v "^NOTICE: Skipping.*only table owner can VACUUM it$" + +################################################################################ + +# Now in cron.daily JJ[03.05.2005] +# Send a report on NEW/BYHAND packages +#helena | mail -e -s "NEW and BYHAND on $(date +%D)" ftpmaster@amd64.debian.net +# and one on crufty package +#rene | mail -e -s "rene run for $(date +%D)" ftpmaster@amd64.debian.net + +################################################################################ + +(cd /org/backports.org/stats; rm -f master.list; ./dmc.pl get >/dev/null 2>&1; \ +./mirror.pl>$ftpdir/README.mirrors.html; cd $ftpdir; /usr/bin/links -dump README.mirrors.html >README.mirrors.txt) + + +################################################################################ + +ulimit -m 90000 -d 90000 -s 10000 -v 90000 + +run-parts --report /org/backports.org/scripts/distmnt + +echo Daily cron scripts successful. diff --git a/config/backports.org/cron.monthly b/config/backports.org/cron.monthly new file mode 100755 index 00000000..f6049362 --- /dev/null +++ b/config/backports.org/cron.monthly @@ -0,0 +1,33 @@ +#!/bin/sh +# +# Run at the beginning of the month via cron, out of katie's crontab. + +set -e +export SCRIPTVARS=/org/backports.org/dak-config/vars +. $SCRIPTVARS + +################################################################################ + +DATE=`date -d yesterday +%y%m` + +cd ${basedir}/mail/archive +for m in mail import; do + if [ -f $m ]; then + mv $m ${m}-$DATE + sleep 20 + gzip -9 ${m}-$DATE + chgrp debadmin ${m}-$DATE.gz + chmod 660 ${m}-$DATE.gz + fi; +done + +DATE=`date +%Y-%m` +cd ${basedir}/log +touch $DATE +rm current +ln -s $DATE current +chmod g+w $DATE +chown dak:debadmin $DATE + +dak split-done +################################################################################ diff --git a/config/backports.org/cron.unchecked b/config/backports.org/cron.unchecked new file mode 100755 index 00000000..bb2337e1 --- /dev/null +++ b/config/backports.org/cron.unchecked @@ -0,0 +1,34 @@ +#! /bin/sh +set -e +export SCRIPTVARS=/org/backports.org/dak-config/vars +. $SCRIPTVARS + +LOCKFILE="$lockdir/unchecked.lock" +NOTICE="$lockdir/daily.lock" + +cleanup() { + rm -f "$LOCKFILE" + if [ ! -z $LOCKDAILY ]; then + rm -f "$NOTICE" + fi +} +trap cleanup 0 + +# only run one cron.unchecked +if lockfile -r3 $LOCKFILE; then + 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": "$changes" >> $report + dak process-unchecked -a $changes >> $report + echo "--" >> $report + else + echo "$timestamp": Nothing to do >> $report + fi +fi + +rm -f "$LOCKFILE" diff --git a/config/backports.org/cron.weekly b/config/backports.org/cron.weekly new file mode 100755 index 00000000..0ab9afdc --- /dev/null +++ b/config/backports.org/cron.weekly @@ -0,0 +1,22 @@ +#!/bin/sh +# +# Run once a week via cron, out of katie's crontab. + +set -e +export SCRIPTVARS=/org/backports.org/dak-config/vars +. $SCRIPTVARS + +################################################################################ + +# Purge empty directories + +if [ ! -z "$(find $ftpdir/pool/ -type d -empty)" ]; then + find $ftpdir/pool/ -type d -empty | xargs rmdir; +fi + +# Clean up apt-ftparchive's databases + +cd $configdir +apt-ftparchive -q clean apt.conf + +################################################################################ diff --git a/config/backports.org/dak.conf b/config/backports.org/dak.conf new file mode 100644 index 00000000..684d4f98 --- /dev/null +++ b/config/backports.org/dak.conf @@ -0,0 +1,425 @@ +Dinstall +{ + // Both need to be defined at the moment, but they can point to the + // same file. + GPGKeyring { + "/org/backports.org/keyrings/keyring.gpg"; + }; + // To sign the release files. Adjust the keyid! + // Note: Key must be without a passphrase or it wont work automagically! + SigningKeyring "/org/backports.org/s3kr1t/dot-gnupg/secring.gpg"; + SigningPubKeyring "/org/backports.org/s3kr1t/dot-gnupg/pubring.gpg"; + SigningKeyIds "16BA136C"; + SendmailCommand "/usr/sbin/sendmail -odq -oi -t"; + MyEmailAddress "Backports.org archive Installer "; + MyAdminAddress "ftpmaster@backports.org"; + MyHost "backports.org"; // used for generating user@my_host addresses in e.g. manual_reject() + MyDistribution "Backports.org archive"; // Used in emails + // Alicia and melanie can use it + BugServer "bugs.backports.org"; + // melanie uses the packages server. + // PackagesServer "packages.test.backports.org"; + // If defined then the package@this.server gets a copy of most of the + // actions related to the package. For an example look at + // packages.qa.debian.org + // TrackingServer "packages.qa.test.backports.org"; + LockFile "/org/backports.org/lock/dinstall.lock"; + // If defined this address gets a bcc of all mails. + // FIXME: Einrichten wenn das hier produktiv geht! + Bcc "backports-archive@lists.backports.org"; + GroupOverrideFilename "override.group-maint"; + FutureTimeTravelGrace 28800; // 8 hours + PastCutoffYear "1984"; + SkipTime 300; + // If defined then mails to close bugs are sent to the bugserver. + CloseBugs "false"; + OverrideDisparityCheck "true"; + DefaultSuite "etch-backports"; + Reject + { + NoSourceOnly "true"; + ReleaseTransitions "/org/backports.org/hints/transitions.yaml"; + }; + // If set, only send mails to addresses listed there. + MailWhiteList "/org/backports.org/dak/config/backports.org/mail-whitelist"; +}; + +Generate-Index-Diffs +{ + Options + { + TempDir "/org/backports.org/tiffani"; + MaxDiffs { Default 50; }; + }; +}; + +Override +{ + MyEmailAddress "Backports.org archive FTP Masters "; +}; + +Add-User +{ +// Should we sent a mail to newly added users? + SendEmail "true"; + +// Should we create an account so they can login? +// Account will be created with the defaults from adduser, so adjust +// it's configuration to fit your needs. +// NOTE: This requires that your dak user has a sudo entry, allowing +// to run /usr/sbin/useradd! + CreateAccount "false"; + +// Note: This is a comma separated list of additional groupnames to +// which uma should add the user. NO spaces between the groupnames or +// useradd will die. +// Disable it if you dont want or need that feature. + GID "debuser"; + +}; + +Check-Overrides +{ + OverrideSuites + { + lenny-backports + { + Process "1"; +// OriginSuite "Unstable"; + }; + + etch-backports + { + Process "1"; +// OriginSuite "Unstable"; + }; + +// Unstable +// { +// Process "0"; +// }; + }; +}; + + +Import-Users-From-Passwd +{ + // The Primary GID of your users. Using uma it is the gid from group users. + ValidGID "1001"; + // Comma separated list of users who are in Postgres but not the passwd file + KnownPostgres "postgres,katie"; +}; + +Clean-Queues +{ + Options + { + Days 14; + }; + MorgueSubDir "queues"; +}; + +Control-Overrides +{ + Options + { + Component "main"; + Suite "etch-backports"; + Type "deb"; + }; + + ComponentPosition "prefix"; // Whether the component is prepended or appended to the section name +}; + +Rm +{ + Options + { + Suite "etch-backports"; + }; + + MyEmailAddress "Backports.org archive Maintenance "; + LogFile "/org/backports.org/ftp/removals.txt"; +}; + +Import-Archive +{ + ExportDir "/org/backports.org/dak/import-archive-files/"; +}; + +Clean-Suites +{ + // How long (in seconds) dead packages are left before being killed + StayOfExecution 1209600; // 14 days + AcceptedAutoBuildStayOfExecution 86400; // 24 hours + MorgueSubDir "pool"; +}; + +Process-New +{ + AcceptedLockFile "/org/backports.org/lock/unchecked.lock"; +}; + +Suite +{ + lenny-backports + { + Components + { + main; + contrib; + non-free; + }; + Architectures + { + source; + all; + alpha; + amd64; + arm; + armel; + hppa; + i386; + ia64; + mips; + mipsel; + powerpc; + s390; + sparc; + }; + + Announce "backports-changes@lists.backports.org"; + Origin "Backports.org archive"; + Description "Backports for the Lenny Distribution"; + CodeName "lenny-backports"; + OverrideCodeName "lenny-backports"; + Priority "7"; + NotAutomatic "yes"; + }; + + etch-backports + { + Components + { + main; + contrib; + non-free; + }; + Architectures + { + source; + all; + alpha; + amd64; + arm; + hppa; + hurd-i386; + i386; + ia64; + m68k; + mips; + mipsel; + powerpc; + s390; + sh; + sparc; + }; + Announce "backports-changes@lists.backports.org"; + Origin "Backports.org archive"; + Description "Backports for the Etch Distribution"; + CodeName "etch-backports"; + OverrideCodeName "etch-backports"; + Priority "7"; + NotAutomatic "yes"; + }; + +}; + +Dir +{ + Root "/org/backports.org/ftp/"; + Pool "/org/backports.org/ftp/pool/"; + Templates "/org/backports.org/dak/templates/"; + PoolRoot "pool/"; + Lists "/org/backports.org/database/dists/"; + Log "/org/backports.org/log/"; + Morgue "/org/backports.org/morgue/"; + MorgueReject "reject"; + Lock "/org/backports.org/lock"; + Override "/org/backports.org/scripts/override/"; + UrgencyLog "/org/backports.org/testing/urgencies/"; + Queue + { + Accepted "/org/backports.org/queue/accepted/"; + Byhand "/org/backports.org/queue/byhand/"; + Done "/org/backports.org/queue/done/"; + Holding "/org/backports.org/queue/holding/"; + New "/org/backports.org/queue/new/"; + ProposedUpdates "/org/backports.org/queue/p-u-new/"; + Reject "/org/backports.org/queue/reject/"; + Unchecked "/org/backports.org/queue/unchecked/"; + BTSVersionTrack "/org/backports.org/queue/bts_version_track/"; + Embargoed "/org/backports.org/queue/Embargoed/"; + Unembargoed "/org/backports.org/queue/Unembargoed/"; + OldProposedUpdates "/org/backports.org/queue/Unembargoed/"; + }; +}; + +DB +{ + Name "projectb"; + Host ""; + Port -1; +}; + +SuiteMappings +{ + "propup-version stable-security testing"; + "propup-version testing-security unstable"; +// "map stable proposed-updates"; + "map lenny lenny-backports"; + "map lenny-bpo lenny-backports"; + "map etch etch-backports"; +// formi mag des nit +// "map stable etch-backports"; + "map etch-bpo etch-backports"; +// "map stable-security proposed-updates"; +// "map-unreleased stable unstable"; +// "map-unreleased proposed-updates unstable"; +// "map testing testing-proposed-updates"; +// "map testing-security testing-proposed-updates"; +// "map-unreleased testing unstable"; +// "map-unreleased testing-proposed-updates unstable"; +}; + +Architectures +{ + source "Source"; + all "Architecture Independent"; + alpha "DEC Alpha"; + amd64 "AMD x86_64 (AMD64)"; + hurd-i386 "Intel ia32 running the HURD"; + hppa "HP PA RISC"; + arm "ARM"; + armel "ARM EABI"; + i386 "Intel ia32"; + ia64 "Intel ia64"; + m68k "Motorola Mc680x0"; + mips "MIPS (Big Endian)"; + mipsel "MIPS (Little Endian)"; + powerpc "PowerPC"; + s390 "IBM S/390"; + sh "Hitatchi SuperH"; + sparc "Sun SPARC/UltraSPARC"; +}; + +Archive +{ + backports + { + OriginServer "backports.org"; + PrimaryMirror "backports.org"; + Description "Master Archive for Backports.org archive"; + }; +}; + +Component +{ + main + { + Description "Main"; + MeetsDFSG "true"; + }; + + contrib + { + Description "Contrib"; + MeetsDFSG "true"; + }; + + non-free + { + Description "Software that fails to meet the DFSG"; + MeetsDFSG "false"; + }; + +}; + +Section +{ + admin; + base; + comm; + debian-installer; + devel; + doc; + editors; + embedded; + electronics; + games; + gnome; + graphics; + hamradio; + interpreters; + kde; + libdevel; + libs; + mail; + math; + misc; + net; + news; + oldlibs; + otherosfs; + perl; + python; + science; + shells; + sound; + tex; + text; + utils; + web; + x11; +}; + +Priority +{ + required 1; + important 2; + standard 3; + optional 4; + extra 5; + source 0; // i.e. unused +}; + +OverrideType +{ + deb; + udeb; + dsc; +}; + +Location +{ + // Pool locations on backports.org + /org/backports.org/ftp/pool/ + { + Archive "backports"; + Type "pool"; + }; + +}; + +Urgency +{ + Default "low"; + Valid + { + low; + medium; + high; + emergency; + critical; + }; +}; diff --git a/config/backports.org/mail-whitelist b/config/backports.org/mail-whitelist new file mode 100644 index 00000000..e69de29b diff --git a/config/backports.org/vars b/config/backports.org/vars new file mode 100644 index 00000000..e61a11b6 --- /dev/null +++ b/config/backports.org/vars @@ -0,0 +1,45 @@ +# locations used by many scripts + +base=/org/backports.org +ftpdir=$base/ftp/ +webdir=$base/web + +archs="alpha amd64 arm armel hppa hurd-i386 i386 ia64 m68k mips mipsel powerpc s390 sh sparc" + +masterdir=$base/dak/ +overridedir=$base/scripts/override +extoverridedir=$scriptdir/external-overrides +configdir=$base/dak/config/backports.org/ +scriptsdir=$base/dak/scripts/backports.org/ + +queuedir=$base/queue +unchecked=$queuedir/unchecked/ +accepted=$queuedir/accepted/ +done=$queuedir/done/ +over=$base/over/ +lockdir=$base/lock/ +incoming=$base/incoming + +dbdir=$base/database/ +indices=$ftpdir/indices + +ftpgroup=debadmin + +copyoverrides="lenny-backports.contrib lenny-backports.contrib.src lenny-backports.main lenny-backports.main.debian-installer lenny-backports.main.src lenny-backports.extra.contrib lenny-backports.extra.main" + +# Change this to your hostname +uploadhost=localhost +uploaddir=/pub/UploadQueue/ + +# What components to support +components="main contrib non-free" +suites="lenny-backports" +override_types="deb dsc udeb" + +# temporary fix only! +# export TMP=/org/backports.org/tmp +# export TEMP=/org/backports.org/tmp +# export TMPDIR==/org/backports.org/tmp + +PATH=$masterdir:$PATH +umask 022 diff --git a/config/debian-security/apt.conf b/config/debian-security/apt.conf index 2df6072d..fcaa6113 100644 --- a/config/debian-security/apt.conf +++ b/config/debian-security/apt.conf @@ -15,10 +15,10 @@ Default FileMode 0664; } -tree "dists/stable/updates" +tree "dists/oldstable/updates" { - FileList "/org/security.debian.org/dak-database/dists/stable_updates/$(SECTION)_binary-$(ARCH).list"; - SourceFileList "/org/security.debian.org/dak-database/dists/stable_updates/$(SECTION)_source.list"; + FileList "/org/security.debian.org/dak-database/dists/oldstable_updates/$(SECTION)_binary-$(ARCH).list"; + SourceFileList "/org/security.debian.org/dak-database/dists/oldstable_updates/$(SECTION)_source.list"; Sections "main contrib non-free"; Architectures "alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc source"; BinOverride "override.etch.$(SECTION)"; @@ -29,10 +29,10 @@ tree "dists/stable/updates" Sources::Compress "gzip bzip2"; }; -tree "dists/testing/updates" +tree "dists/stable/updates" { - FileList "/org/security.debian.org/dak-database/dists/testing_updates/$(SECTION)_binary-$(ARCH).list"; - SourceFileList "/org/security.debian.org/dak-database/dists/testing_updates/$(SECTION)_source.list"; + FileList "/org/security.debian.org/dak-database/dists/stable_updates/$(SECTION)_binary-$(ARCH).list"; + SourceFileList "/org/security.debian.org/dak-database/dists/stable_updates/$(SECTION)_source.list"; Sections "main contrib non-free"; Architectures "alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc source"; BinOverride "override.lenny.$(SECTION)"; @@ -42,3 +42,17 @@ tree "dists/testing/updates" Packages::Compress "gzip bzip2"; Sources::Compress "gzip bzip2"; }; + +tree "dists/testing/updates" +{ + FileList "/org/security.debian.org/dak-database/dists/testing_updates/$(SECTION)_binary-$(ARCH).list"; + SourceFileList "/org/security.debian.org/dak-database/dists/testing_updates/$(SECTION)_source.list"; + Sections "main contrib non-free"; + Architectures "alpha amd64 armel hppa i386 ia64 mips mipsel powerpc s390 sparc source"; + BinOverride "override.squeeze.$(SECTION)"; + ExtraOverride "override.squeeze.extra.$(SECTION)"; + SrcOverride "override.squeeze.$(SECTION).src"; + Contents " "; + Packages::Compress "gzip bzip2"; + Sources::Compress "gzip bzip2"; +}; diff --git a/config/debian-security/apt.conf.buildd b/config/debian-security/apt.conf.buildd index 16154a64..85c1f3dc 100644 --- a/config/debian-security/apt.conf.buildd +++ b/config/debian-security/apt.conf.buildd @@ -41,3 +41,16 @@ bindirectory "lenny" Packages::Extensions ".deb .udeb"; }; +bindirectory "squeeze" +{ + Packages "squeeze/Packages"; + Sources "squeeze/Sources"; + Contents " "; + + BinOverride "override.squeeze.all3"; + SrcOverride "override.squeeze.all3.src"; + BinCacheDB "packages-accepted-squeeze.db"; + PathPrefix ""; + Packages::Extensions ".deb .udeb"; +}; + diff --git a/config/debian-security/cron.buildd b/config/debian-security/cron.buildd index c5bcbb05..51110027 100755 --- a/config/debian-security/cron.buildd +++ b/config/debian-security/cron.buildd @@ -2,9 +2,10 @@ # # Executed after cron.unchecked -ARCHS_stable="alpha amd64 arm hppa i386 ia64 mips mipsel powerpc sparc s390" +ARCHS_oldstable="alpha amd64 arm hppa i386 ia64 mips mipsel powerpc sparc s390" +ARCHS_stable="alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc sparc s390" ARCHS_testing="alpha amd64 armel hppa i386 ia64 mips mipsel powerpc sparc s390" -DISTS="stable testing" +DISTS="oldstable stable testing" SSH_SOCKET=~/.ssh/buildd.debian.org.socket set -e diff --git a/config/debian-security/cron.daily b/config/debian-security/cron.daily index 8d949781..e482a192 100755 --- a/config/debian-security/cron.daily +++ b/config/debian-security/cron.daily @@ -20,9 +20,9 @@ find . -maxdepth 1 -mindepth 1 -type l | xargs --no-run-if-empty rm for suite in $suites; do case $suite in - oldstable) override_suite=sarge;; - stable) override_suite=etch;; - testing) override_suite=lenny;; + oldstable) override_suite=etch;; + stable) override_suite=lenny;; + testing) override_suite=squeeze;; *) echo "Unknown suite type ($suite)"; exit 1;; esac for component in $components; do @@ -44,7 +44,7 @@ for suite in $suites; do done # Generate .all3 overides for the buildd support -for dist in etch lenny; do +for dist in etch lenny squeeze; do rm -f override.$dist.all3 components="main contrib non-free"; if [ -f override.$dist.main.debian-installer.gz ]; then diff --git a/config/debian-security/dak.conf b/config/debian-security/dak.conf index ff74a599..7496da4a 100644 --- a/config/debian-security/dak.conf +++ b/config/debian-security/dak.conf @@ -25,6 +25,7 @@ Dinstall BXANotify "false"; QueueBuildSuites { + oldstable; stable; testing; }; @@ -110,7 +111,7 @@ Suite // Priority determines which suite is used for the Maintainers file // as generated by 'dak make-maintainers' (highest wins). - Stable + OldStable { Components { @@ -145,7 +146,7 @@ Suite CopyDotDak "/org/security.debian.org/queue/done/"; }; - Testing + Stable { Components { @@ -174,20 +175,57 @@ Suite Version ""; Origin "Debian"; Label "Debian-Security"; - Description "Debian testing Security Updates"; + Description "Debian 5.0 Security Updates"; ValidTime 864000; // 10 days CodeName "lenny"; OverrideCodeName "lenny"; CopyDotDak "/org/security.debian.org/queue/done/"; }; + + Testing + { + Components + { + updates/main; + updates/contrib; + updates/non-free; + }; + Architectures + { + source; + all; + amd64; + alpha; + armel; + hppa; + i386; + ia64; + mips; + mipsel; + powerpc; + s390; + sparc; + }; + Announce "dak@security.debian.org"; + Version ""; + Origin "Debian"; + Label "Debian-Security"; + Description "Debian testing Security Updates"; + ValidTime 864000; // 10 days + CodeName "squeeze"; + OverrideCodeName "squeeze"; + CopyDotDak "/org/security.debian.org/queue/done/"; + }; }; SuiteMappings { "silent-map stable-security stable"; + "silent-map oldstable-security oldstable"; // JT - FIXME, hackorama // "silent-map testing-security stable"; - "silent-map etch-secure stable"; + "silent-map etch-secure oldstable"; + "silent-map lenny-secure stable"; "silent-map testing-security testing"; }; @@ -367,6 +405,7 @@ Location Archive "security"; Suites { + OldStable; Stable; Testing; }; diff --git a/config/debian-security/map.sh b/config/debian-security/map.sh new file mode 100755 index 00000000..d0cbaf44 --- /dev/null +++ b/config/debian-security/map.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +dak make-pkg-file-mapping | bzip2 -9 > /org/security.debian.org/ftp/indices/package-file.map.bz2 diff --git a/config/debian-security/vars b/config/debian-security/vars index e4757455..2add99ea 100644 --- a/config/debian-security/vars +++ b/config/debian-security/vars @@ -14,7 +14,7 @@ uploadhost=ftp-master.debian.org uploaddir=/pub/UploadQueue/ components="main non-free contrib" -suites="stable testing" +suites="oldstable stable testing" override_types="deb dsc udeb" PATH=$masterdir:$PATH diff --git a/config/debian/apt.conf b/config/debian/apt.conf index ff821f69..36017762 100644 --- a/config/debian/apt.conf +++ b/config/debian/apt.conf @@ -20,10 +20,10 @@ TreeDefault Contents::Header "/srv/ftp.debian.org/dak/config/debian/Contents.top"; }; -tree "dists/proposed-updates" +tree "dists/oldstable-proposed-updates" { - FileList "/srv/ftp.debian.org/database/dists/proposed-updates_$(SECTION)_binary-$(ARCH).list"; - SourceFileList "/srv/ftp.debian.org/database/dists/proposed-updates_$(SECTION)_source.list"; + FileList "/srv/ftp.debian.org/database/dists/oldstable-proposed-updates_$(SECTION)_binary-$(ARCH).list"; + SourceFileList "/srv/ftp.debian.org/database/dists/oldstable-proposed-updates_$(SECTION)_source.list"; Sections "main contrib non-free"; Architectures "alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc source"; BinOverride "override.etch.$(SECTION)"; @@ -32,16 +32,28 @@ tree "dists/proposed-updates" Contents " "; }; -tree "dists/testing" +tree "dists/proposed-updates" { - FakeDI "dists/unstable"; - FileList "/srv/ftp.debian.org/database/dists/testing_$(SECTION)_binary-$(ARCH).list"; - SourceFileList "/srv/ftp.debian.org/database/dists/testing_$(SECTION)_source.list"; + FileList "/srv/ftp.debian.org/database/dists/proposed-updates_$(SECTION)_binary-$(ARCH).list"; + SourceFileList "/srv/ftp.debian.org/database/dists/proposed_updates_$(SECTION)_source.list"; Sections "main contrib non-free"; Architectures "alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc source"; BinOverride "override.lenny.$(SECTION)"; ExtraOverride "override.lenny.extra.$(SECTION)"; SrcOverride "override.lenny.$(SECTION).src"; + Contents " "; +}; + +tree "dists/testing" +{ + FakeDI "dists/unstable"; + FileList "/srv/ftp.debian.org/database/dists/testing_$(SECTION)_binary-$(ARCH).list"; + SourceFileList "/srv/ftp.debian.org/database/dists/testing_$(SECTION)_source.list"; + Sections "main contrib non-free"; + Architectures "alpha amd64 armel hppa i386 ia64 mips mipsel powerpc s390 sparc source"; + BinOverride "override.squeeze.$(SECTION)"; + ExtraOverride "override.squeeze.extra.$(SECTION)"; + SrcOverride "override.squeeze.$(SECTION).src"; }; tree "dists/testing-proposed-updates" @@ -49,10 +61,10 @@ tree "dists/testing-proposed-updates" FileList "/srv/ftp.debian.org/database/dists/testing-proposed-updates_$(SECTION)_binary-$(ARCH).list"; SourceFileList "/srv/ftp.debian.org/database/dists/testing-proposed-updates_$(SECTION)_source.list"; Sections "main contrib non-free"; - Architectures "alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc source"; - BinOverride "override.lenny.$(SECTION)"; - ExtraOverride "override.lenny.extra.$(SECTION)"; - SrcOverride "override.lenny.$(SECTION).src"; + Architectures "alpha amd64 armel hppa i386 ia64 mips mipsel powerpc s390 sparc source"; + BinOverride "override.squeeze.$(SECTION)"; + ExtraOverride "override.squeeze.extra.$(SECTION)"; + SrcOverride "override.squeeze.$(SECTION).src"; Contents " "; }; @@ -61,7 +73,7 @@ tree "dists/unstable" FileList "/srv/ftp.debian.org/database/dists/unstable_$(SECTION)_binary-$(ARCH).list"; SourceFileList "/srv/ftp.debian.org/database/dists/unstable_$(SECTION)_source.list"; Sections "main contrib non-free"; - Architectures "alpha amd64 arm armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc source"; + Architectures "alpha amd64 armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc source"; BinOverride "override.sid.$(SECTION)"; ExtraOverride "override.sid.extra.$(SECTION)"; SrcOverride "override.sid.$(SECTION).src"; @@ -69,9 +81,9 @@ tree "dists/unstable" // debian-installer -tree "dists/proposed-updates/main" +tree "dists/oldstable-proposed-updates/main" { - FileList "/srv/ftp.debian.org/database/dists/proposed-updates_main_$(SECTION)_binary-$(ARCH).list"; + FileList "/srv/ftp.debian.org/database/dists/oldstable-proposed-updates_main_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; Architectures "alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc"; BinOverride "override.etch.main.$(SECTION)"; @@ -81,15 +93,27 @@ tree "dists/proposed-updates/main" Contents " "; }; -tree "dists/testing/main" +tree "dists/proposed-updates/main" { - FileList "/srv/ftp.debian.org/database/dists/testing_main_$(SECTION)_binary-$(ARCH).list"; + FileList "/srv/ftp.debian.org/database/dists/proposed-updates_main_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; Architectures "alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc"; BinOverride "override.lenny.main.$(SECTION)"; SrcOverride "override.lenny.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; Packages::Extensions ".udeb"; + Contents " "; +}; + +tree "dists/testing/main" +{ + FileList "/srv/ftp.debian.org/database/dists/testing_main_$(SECTION)_binary-$(ARCH).list"; + Sections "debian-installer"; + Architectures "alpha amd64 armel hppa i386 ia64 mips mipsel powerpc s390 sparc"; + BinOverride "override.squeeze.main.$(SECTION)"; + SrcOverride "override.squeeze.main.src"; + BinCacheDB "packages-debian-installer-$(ARCH).db"; + Packages::Extensions ".udeb"; Contents "$(DIST)/../Contents-udeb"; }; @@ -97,9 +121,9 @@ tree "dists/testing/non-free" { FileList "/srv/ftp.debian.org/database/dists/testing_non-free_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; - Architectures "alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc"; - BinOverride "override.lenny.main.$(SECTION)"; - SrcOverride "override.lenny.main.src"; + Architectures "alpha amd64 armel hppa i386 ia64 mips mipsel powerpc s390 sparc"; + BinOverride "override.squeeze.main.$(SECTION)"; + SrcOverride "override.squeeze.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; Packages::Extensions ".udeb"; Contents "$(DIST)/../Contents-udeb-nf"; @@ -109,9 +133,9 @@ tree "dists/testing-proposed-updates/main" { FileList "/srv/ftp.debian.org/database/dists/testing-proposed-updates_main_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; - Architectures "alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc"; - BinOverride "override.lenny.main.$(SECTION)"; - SrcOverride "override.lenny.main.src"; + Architectures "alpha amd64 armel hppa i386 ia64 mips mipsel powerpc s390 sparc"; + BinOverride "override.squeeze.main.$(SECTION)"; + SrcOverride "override.squeeze.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; Packages::Extensions ".udeb"; Contents " "; @@ -121,7 +145,7 @@ tree "dists/unstable/main" { FileList "/srv/ftp.debian.org/database/dists/unstable_main_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; - Architectures "alpha amd64 arm armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc"; + Architectures "alpha amd64 armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc"; BinOverride "override.sid.main.$(SECTION)"; SrcOverride "override.sid.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; @@ -133,7 +157,7 @@ tree "dists/unstable/non-free" { FileList "/srv/ftp.debian.org/database/dists/unstable_non-free_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; - Architectures "alpha amd64 arm armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc"; + Architectures "alpha amd64 armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc"; BinOverride "override.sid.main.$(SECTION)"; SrcOverride "override.sid.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; @@ -145,7 +169,7 @@ tree "dists/experimental/main" { FileList "/srv/ftp.debian.org/database/dists/experimental_main_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; - Architectures "alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc"; + Architectures "alpha amd64 armel hppa i386 ia64 mips mipsel powerpc s390 sparc"; BinOverride "override.sid.main.$(SECTION)"; SrcOverride "override.sid.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; @@ -157,7 +181,7 @@ tree "dists/experimental/non-free" { FileList "/srv/ftp.debian.org/database/dists/experimental_non-free_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; - Architectures "alpha amd64 arm armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc"; + Architectures "alpha amd64 armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc"; BinOverride "override.sid.main.$(SECTION)"; SrcOverride "override.sid.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; @@ -172,7 +196,7 @@ tree "dists/experimental" FileList "/srv/ftp.debian.org/database/dists/experimental_$(SECTION)_binary-$(ARCH).list"; SourceFileList "/srv/ftp.debian.org/database/dists/experimental_$(SECTION)_source.list"; Sections "main contrib non-free"; - Architectures "alpha amd64 arm armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc source"; + Architectures "alpha amd64 armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc source"; BinOverride "override.sid.$(SECTION)"; SrcOverride "override.sid.$(SECTION).src"; }; diff --git a/config/debian/apt.conf.oldstable b/config/debian/apt.conf.oldstable new file mode 100644 index 00000000..5f96e405 --- /dev/null +++ b/config/debian/apt.conf.oldstable @@ -0,0 +1,58 @@ +Dir +{ + ArchiveDir "/srv/ftp.debian.org/ftp/"; + OverrideDir "/srv/ftp.debian.org/scripts/override/"; + CacheDir "/srv/ftp.debian.org/database/"; +}; + +Default +{ + Packages::Compress "gzip bzip2"; + Sources::Compress "gzip bzip2"; + Contents::Compress "gzip"; + DeLinkLimit 0; + FileMode 0664; +} + +TreeDefault +{ + Contents::Header "/srv/ftp.debian.org/dak/config/debian/Contents.top"; +}; + +tree "dists/oldstable" +{ + FileList "/srv/ftp.debian.org/database/dists/oldstable_$(SECTION)_binary-$(ARCH).list"; + SourceFileList "/srv/ftp.debian.org/database/dists/oldstable_$(SECTION)_source.list"; + Sections "main contrib non-free"; + Architectures "alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc source"; + BinOverride "override.etch.$(SECTION)"; + ExtraOverride "override.etch.extra.$(SECTION)"; + SrcOverride "override.etch.$(SECTION).src"; +}; + +// debian-installer + +tree "dists/oldstable/main" +{ + FileList "/srv/ftp.debian.org/database/dists/oldstable_main_$(SECTION)_binary-$(ARCH).list"; + Sections "debian-installer"; + Architectures "alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc"; + BinOverride "override.etch.main.$(SECTION)"; + SrcOverride "override.etch.main.src"; + BinCacheDB "packages-debian-installer-$(ARCH).db"; + Packages::Extensions ".udeb"; + Contents "$(DIST)/../Contents-udeb"; +}; + +tree "dists/oldstable/non-free" +{ + FileList "/srv/ftp.debian.org/database/dists/oldstable_non-free_$(SECTION)_binary-$(ARCH).list"; + Sections "debian-installer"; + Architectures "alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc"; + BinOverride "override.etch.main.$(SECTION)"; + SrcOverride "override.etch.main.src"; + BinCacheDB "packages-debian-installer-$(ARCH).db"; + Packages::Extensions ".udeb"; + Contents "$(DIST)/../Contents-udeb-nf"; +}; + diff --git a/config/debian/apt.conf.stable b/config/debian/apt.conf.stable index c75b5f04..7a16f066 100644 --- a/config/debian/apt.conf.stable +++ b/config/debian/apt.conf.stable @@ -1,4 +1,4 @@ -Dir +Dir { ArchiveDir "/srv/ftp.debian.org/ftp/"; OverrideDir "/srv/ftp.debian.org/scripts/override/"; @@ -24,10 +24,10 @@ tree "dists/stable" FileList "/srv/ftp.debian.org/database/dists/stable_$(SECTION)_binary-$(ARCH).list"; SourceFileList "/srv/ftp.debian.org/database/dists/stable_$(SECTION)_source.list"; Sections "main contrib non-free"; - Architectures "alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc source"; - BinOverride "override.etch.$(SECTION)"; - ExtraOverride "override.etch.extra.$(SECTION)"; - SrcOverride "override.etch.$(SECTION).src"; + Architectures "alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc source"; + BinOverride "override.lenny.$(SECTION)"; + ExtraOverride "override.lenny.extra.$(SECTION)"; + SrcOverride "override.lenny.$(SECTION).src"; }; // debian-installer @@ -36,9 +36,9 @@ tree "dists/stable/main" { FileList "/srv/ftp.debian.org/database/dists/stable_main_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; - Architectures "alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc"; - BinOverride "override.etch.main.$(SECTION)"; - SrcOverride "override.etch.main.src"; + Architectures "alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc"; + BinOverride "override.lenny.main.$(SECTION)"; + SrcOverride "override.lenny.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; Packages::Extensions ".udeb"; Contents "$(DIST)/../Contents-udeb"; @@ -48,9 +48,9 @@ tree "dists/stable/non-free" { FileList "/srv/ftp.debian.org/database/dists/stable_non-free_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; - Architectures "alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc"; - BinOverride "override.etch.main.$(SECTION)"; - SrcOverride "override.etch.main.src"; + Architectures "alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc"; + BinOverride "override.lenny.main.$(SECTION)"; + SrcOverride "override.lenny.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; Packages::Extensions ".udeb"; Contents "$(DIST)/../Contents-udeb-nf"; diff --git a/config/debian/cron.dinstall b/config/debian/cron.dinstall index 15096657..0629a102 100755 --- a/config/debian/cron.dinstall +++ b/config/debian/cron.dinstall @@ -91,9 +91,6 @@ ts "o-p-u-new" ################################################################################ -# Temporary until lenny is there -dak control-suite -s lenny-r0 /srv/ftp.debian.org/misc/lenny-r0.txt - echo "Synchronizing i18n package descriptions" # First sync their newest data cd ${scriptdir}/i18nsync @@ -110,7 +107,7 @@ if $(gpgv --keyring /srv/ftp.debian.org/s3kr1t/dot-gnupg/pubring.gpg timestamp.g # Lets check! if ${scriptsdir}/ddtp-i18n-check.sh . ${scriptdir}/i18n/${TSTAMP}; then # Yay, worked, lets copy around - for dir in lenny sid; do + for dir in squeeze sid; do if [ -d dists/${dir}/ ]; then cd dists/${dir}/main/i18n rsync -aq --delete --delete-after . ${ftpdir}/dists/${dir}/main/i18n/. @@ -285,8 +282,8 @@ echo "Exporting package data foo for i18n project" STAMP=$(date "+%Y%m%d%H%M") mkdir -p ${scriptdir}/i18n/${STAMP} cd ${scriptdir}/i18n/${STAMP} -dak control-suite -l stable > etch -dak control-suite -l testing > lenny +dak control-suite -l stable > lenny +dak control-suite -l testing > squeeze dak control-suite -l unstable > sid echo "${STAMP}" > timestamp gpg --secret-keyring /srv/ftp.debian.org/s3kr1t/dot-gnupg/secring.gpg --keyring /srv/ftp.debian.org/s3kr1t/dot-gnupg/pubring.gpg --no-options --batch --no-tty --armour --default-key 6070D3A1 --detach-sign -o timestamp.gpg timestamp diff --git a/config/debian/dak.conf b/config/debian/dak.conf index 3e73e4ba..e5a82864 100644 --- a/config/debian/dak.conf +++ b/config/debian/dak.conf @@ -37,6 +37,14 @@ Dinstall NoSourceOnly "true"; ReleaseTransitions "/srv/ftp.debian.org/web/transitions.yaml"; }; + // if you setup an own dak repository and want to upload Debian packages you most possibly want + // to set the following option to a real path/filename and then enter those mail addresses that + // you want to be able to receive mails generated by your dak installation. This avoids spamming + // the real maintainers of a package you upload with mail. + // format of entries: one entry per line. Either an email address directly, or a regular expression, + // prefixed by "RE:". Examples: "jane.doe@domain.com" or "RE:jane[^@]@domain.com", where the first will + // only allow to mail jane.doe@domain.com while the second will mail all of jane*@domain.com + // MailWhiteList "/some/path/to/a/file"; }; Transitions @@ -140,7 +148,7 @@ Reject-Proposed-Updates { StableRejector "the Stable Release Team"; StableMail "debian-release@lists.debian.org"; - MoreInfoURL "http://release.debian.org/stable/4.0/4.0r6/"; + MoreInfoURL "http://release.debian.org/stable/4.0/4.0r7/"; }; Import-LDAP-Fingerprints @@ -193,7 +201,7 @@ Check-Overrides Suite { - Stable + OldStable { Components { @@ -225,6 +233,107 @@ Suite OverrideCodeName "etch"; Priority "5"; Untouchable "1"; + ChangeLogBase "dists/oldstable/"; + UdebComponents + { + main; + non-free; + }; + }; + + Oldstable-Proposed-Updates + { + Components + { + main; + contrib; + non-free; + }; + Architectures + { + source; + all; + alpha; + amd64; + arm; + hppa; + i386; + ia64; + mips; + mipsel; + powerpc; + s390; + sparc; + }; + Announce "debian-changes@lists.debian.org"; + CopyChanges "dists/oldstable-proposed-updates/"; + CopyDotDak "/srv/ftp.debian.org/queue/oldstable-proposed-updates/"; + CommentsDir "/srv/ftp.debian.org/queue/o-p-u-new/COMMENTS/"; + Version "4.0-updates"; + Origin "Debian"; + Description "Debian 4.0 Proposed Updates - Not Released"; + CodeName "etch-proposed-updates"; + OverrideCodeName "etch"; + OverrideSuite "oldstable"; + ValidTime 604800; // 7 days + Priority "4"; + VersionChecks + { + MustBeNewerThan + { + OldStable; + }; + MustBeOlderThan + { + Stable; + Testing; + Unstable; + Experimental; + }; + Enhances + { + OldStable; + }; + }; + UdebComponents + { + main; + }; + }; + + Stable + { + Components + { + main; + contrib; + non-free; + }; + Architectures + { + source; + all; + alpha; + amd64; + arm; + armel; + hppa; + i386; + ia64; + mips; + mipsel; + powerpc; + s390; + sparc; + }; + Announce "debian-changes@lists.debian.org"; + // Version "5.0r0"; + Origin "Debian"; + // Description "Debian 5.0r0 Released 14 February 2009"; + CodeName "lenny"; + OverrideCodeName "lenny"; + Priority "5"; + Untouchable "1"; ChangeLogBase "dists/stable/"; UdebComponents { @@ -248,6 +357,7 @@ Suite alpha; amd64; arm; + armel; hppa; i386; ia64; @@ -261,11 +371,11 @@ Suite CopyChanges "dists/proposed-updates/"; CopyDotDak "/srv/ftp.debian.org/queue/proposed-updates/"; CommentsDir "/srv/ftp.debian.org/queue/p-u-new/COMMENTS/"; - Version "4.0-updates"; + Version "5.0-updates"; Origin "Debian"; - Description "Debian 4.0 Proposed Updates - Not Released"; - CodeName "etch-proposed-updates"; - OverrideCodeName "etch"; + Description "Debian 5.0 Proposed Updates - Not Released"; + CodeName "lenny-proposed-updates"; + OverrideCodeName "lenny"; OverrideSuite "stable"; ValidTime 604800; // 7 days Priority "4"; @@ -289,6 +399,7 @@ Suite UdebComponents { main; + non-free; }; }; @@ -306,7 +417,6 @@ Suite all; alpha; amd64; - arm; armel; hppa; i386; @@ -320,8 +430,8 @@ Suite Announce "debian-testing-changes@lists.debian.org"; Origin "Debian"; Description "Debian Testing distribution - Not Released"; - CodeName "lenny"; - OverrideCodeName "lenny"; + CodeName "squeeze"; + OverrideCodeName "squeeze"; ValidTime 604800; // 7 days Priority "5"; UdebComponents @@ -345,7 +455,6 @@ Suite all; alpha; amd64; - arm; armel; hppa; i386; @@ -359,8 +468,8 @@ Suite Announce "debian-testing-changes@lists.debian.org"; Origin "Debian"; Description "Debian Testing distribution updates - Not Released"; - CodeName "lenny-proposed-updates"; - OverrideCodeName "lenny"; + CodeName "squeeze-proposed-updates"; + OverrideCodeName "squeeze"; OverrideSuite "testing"; ValidTime 604800; // 7 days Priority "6"; @@ -430,7 +539,6 @@ Suite all; alpha; amd64; - arm; armel; hppa; hurd-i386; @@ -480,7 +588,6 @@ Suite all; alpha; amd64; - arm; armel; hppa; hurd-i386; @@ -523,11 +630,11 @@ Suite SuiteMappings { -// "propup-version oldstable-security stable testing testing-proposed-updates unstable"; + "propup-version oldstable-security stable testing testing-proposed-updates unstable"; "propup-version stable-security testing testing-proposed-updates unstable"; "propup-version testing-security unstable"; -// "map oldstable oldstable-proposed-updates"; -// "map oldstable-security oldstable-proposed-updates"; + "map oldstable oldstable-proposed-updates"; + "map oldstable-security oldstable-proposed-updates"; "map stable proposed-updates"; "map stable-security proposed-updates"; "map stable-proposed-updates proposed-updates"; diff --git a/config/debian/vars b/config/debian/vars index 8f311dd8..d37df0e3 100644 --- a/config/debian/vars +++ b/config/debian/vars @@ -25,7 +25,7 @@ incoming=$base/incoming ftpgroup=debadmin -copyoverrides="etch.contrib etch.contrib.src etch.main etch.main.src etch.non-free etch.non-free.src etch.extra.main etch.extra.non-free etch.extra.contrib etch.main.debian-installer sid.contrib sid.contrib.src sid.main sid.main.debian-installer sid.main.src sid.non-free sid.non-free.src sid.extra.contrib sid.extra.main sid.extra.non-free lenny.contrib lenny.contrib.src lenny.main lenny.main.src lenny.non-free lenny.non-free.src lenny.extra.main lenny.extra.contrib lenny.extra.non-free" +copyoverrides="etch.contrib etch.contrib.src etch.main etch.main.src etch.non-free etch.non-free.src etch.extra.main etch.extra.non-free etch.extra.contrib etch.main.debian-installer sid.contrib sid.contrib.src sid.main sid.main.debian-installer sid.main.src sid.non-free sid.non-free.src sid.extra.contrib sid.extra.main sid.extra.non-free lenny.contrib lenny.contrib.src lenny.main lenny.main.src lenny.non-free lenny.non-free.src lenny.extra.main lenny.extra.contrib lenny.extra.non-free squeeze.contrib squeeze.contrib.src squeeze.main squeeze.main.src squeeze.non-free squeeze.non-free.src squeeze.extra.main squeeze.extra.contrib squeeze.extra.non-free" PATH=$masterdir:$PATH umask 022 diff --git a/dak/add_user.py b/dak/add_user.py new file mode 100755 index 00000000..fd06a72b --- /dev/null +++ b/dak/add_user.py @@ -0,0 +1,251 @@ +#!/usr/bin/env python + +""" +Add a user to to the uid/maintainer/fingerprint table and +add his key to the GPGKeyring + +@contact: Debian FTP Master +@copyright: 2004, 2009 Joerg Jaspert +@license: GNU General Public License version 2 or later +""" + +################################################################################ +# wow, sounds like it'll be a big step up.. configuring dak on a +# new machine even scares me :) +################################################################################ + +# You don't want to read this script if you know python. +# I know what I say. I dont know python and I wrote it. So go and read some other stuff. + +import commands +import pg +import re +import sys +import time +import os +import apt_pkg +from daklib import database +from daklib import logging +from daklib import queue +from daklib import utils +from daklib.regexes import re_gpg_fingerprint, re_user_address, re_user_mails, re_user_name + +################################################################################ + +Cnf = None +projectB = None +Logger = None +Upload = None +Subst = None + +################################################################################ + +def usage(exit_code=0): + print """Usage: add-user [OPTION]... +Adds a new user to the dak databases and keyrings + + -k, --key keyid of the User + -u, --user userid of the User + -c, --create create a system account for the user + -h, --help show this help and exit.""" + sys.exit(exit_code) + +################################################################################ +# Stolen from userdir-ldap +# Compute a random password using /dev/urandom. +def GenPass(): + # Generate a 10 character random string + SaltVals = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/." + Rand = open("/dev/urandom") + Password = "" + for i in range(0,15): + Password = Password + SaltVals[ord(Rand.read(1)[0]) % len(SaltVals)] + return Password + +# Compute the MD5 crypted version of the given password +def HashPass(Password): + import crypt + # Hash it telling glibc to use the MD5 algorithm - if you dont have + # glibc then just change Salt = "$1$" to Salt = "" + SaltVals = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/." + Salt = "$1$" + Rand = open("/dev/urandom") + for x in range(0,10): + Salt = Salt + SaltVals[ord(Rand.read(1)[0]) % len(SaltVals)] + Pass = crypt.crypt(Password,Salt) + if len(Pass) < 14: + raise "Password Error", "MD5 password hashing failed, not changing the password!" + return Pass + +################################################################################ + +def createMail(login, passwd, keyid, keyring): + import GnuPGInterface + + message= """ + +Additionally there is now an account created for you. + +""" + message+= "\nYour password for the login %s is: %s\n" % (login, passwd) + + gnupg = GnuPGInterface.GnuPG() + gnupg.options.armor = 1 + gnupg.options.meta_interactive = 0 + gnupg.options.extra_args.append("--no-default-keyring") + gnupg.options.extra_args.append("--always-trust") + gnupg.options.extra_args.append("--no-secmem-warning") + gnupg.options.extra_args.append("--keyring=%s" % keyring) + gnupg.options.recipients = [keyid] + proc = gnupg.run(['--encrypt'], create_fhs=['stdin', 'stdout']) + proc.handles['stdin'].write(message) + proc.handles['stdin'].close() + output = proc.handles['stdout'].read() + proc.handles['stdout'].close() + proc.wait() + return output + +################################################################################ + +def main(): + global Cnf, projectB + keyrings = None + + Cnf = daklib.utils.get_conf() + + Arguments = [('h',"help","Add-User::Options::Help"), + ('c',"create","Add-User::Options::Create"), + ('k',"key","Add-User::Options::Key", "HasArg"), + ('u',"user","Add-User::Options::User", "HasArg"), + ] + + for i in [ "help", "create" ]: + if not Cnf.has_key("Add-User::Options::%s" % (i)): + Cnf["Add-User::Options::%s" % (i)] = "" + + apt_pkg.ParseCommandLine(Cnf, Arguments, sys.argv) + + Options = Cnf.SubTree("Add-User::Options") + if Options["help"]: + usage() + + projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"])) + daklib.database.init(Cnf, projectB) + + if not keyrings: + keyrings = Cnf.ValueList("Dinstall::GPGKeyring") + +# Ignore the PGP keyring for download of new keys. Ignore errors, if key is missing it will +# barf with the next commands. + cmd = "gpg --no-secmem-warning --no-default-keyring %s --recv-keys %s" \ + % (daklib.utils.gpg_keyring_args(keyrings), Cnf["Add-User::Options::Key"]) + (result, output) = commands.getstatusoutput(cmd) + + cmd = "gpg --with-colons --no-secmem-warning --no-auto-check-trustdb --no-default-keyring %s --with-fingerprint --list-key %s" \ + % (daklib.utils.gpg_keyring_args(keyrings), + Cnf["Add-User::Options::Key"]) + (result, output) = commands.getstatusoutput(cmd) + m = re_gpg_fingerprint.search(output) + if not m: + print output + daklib.utils.fubar("0x%s: (1) No fingerprint found in gpg output but it returned 0?\n%s" \ + % (Cnf["Add-User::Options::Key"], daklib.utils.prefix_multi_line_string(output, \ + " [GPG output:] "))) + primary_key = m.group(1) + primary_key = primary_key.replace(" ","") + + uid = "" + if Cnf.has_key("Add-User::Options::User") and Cnf["Add-User::Options::User"]: + uid = Cnf["Add-User::Options::User"] + name = Cnf["Add-User::Options::User"] + else: + u = re_user_address.search(output) + if not u: + print output + daklib.utils.fubar("0x%s: (2) No userid found in gpg output but it returned 0?\n%s" \ + % (Cnf["Add-User::Options::Key"], daklib.utils.prefix_multi_line_string(output, " [GPG output:] "))) + uid = u.group(1) + n = re_user_name.search(output) + name = n.group(1) + +# Look for all email addresses on the key. + emails=[] + for line in output.split('\n'): + e = re_user_mails.search(line) + if not e: + continue + emails.append(e.group(2)) + + + print "0x%s -> %s <%s> -> %s -> %s" % (Cnf["Add-User::Options::Key"], name, emails[0], uid, primary_key) + + prompt = "Add user %s with above data (y/N) ? " % (uid) + yn = daklib.utils.our_raw_input(prompt).lower() + + if yn == "y": +# Create an account for the user? + summary = "" + if Cnf.FindB("Add-User::CreateAccount") or Cnf["Add-User::Options::Create"]: + password = GenPass() + pwcrypt = HashPass(password) + if Cnf.has_key("Add-User::GID"): + cmd = "sudo /usr/sbin/useradd -g users -m -p '%s' -c '%s' -G %s %s" \ + % (pwcrypt, name, Cnf["Add-User::GID"], uid) + else: + cmd = "sudo /usr/sbin/useradd -g users -m -p '%s' -c '%s' %s" \ + % (pwcrypt, name, uid) + (result, output) = commands.getstatusoutput(cmd) + if (result != 0): + daklib.utils.fubar("Invocation of '%s' failed:\n%s\n" % (cmd, output), result) + try: + summary+=createMail(uid, password, Cnf["Add-User::Options::Key"], Cnf["Dinstall::GPGKeyring"]) + except: + summary="" + daklib.utils.warn("Could not prepare password information for mail, not sending password.") + +# Now add user to the database. + projectB.query("BEGIN WORK") + uid_id = daklib.database.get_or_set_uid_id(uid) + projectB.query('CREATE USER "%s"' % (uid)) + projectB.query("COMMIT WORK") +# The following two are kicked out in rhona, so we don't set them. kelly adds +# them as soon as she installs a package with unknown ones, so no problems to expect here. +# Just leave the comment in, to not think about "Why the hell aren't they added" in +# a year, if we ever touch uma again. +# maint_id = daklib.database.get_or_set_maintainer_id(name) +# projectB.query("INSERT INTO fingerprint (fingerprint, uid) VALUES ('%s', '%s')" % (primary_key, uid_id)) + +# Lets add user to the email-whitelist file if its configured. + if Cnf.has_key("Dinstall::MailWhiteList") and Cnf["Dinstall::MailWhiteList"] != "": + file = daklib.utils.open_file(Cnf["Dinstall::MailWhiteList"], "a") + for mail in emails: + file.write(mail+'\n') + file.close() + + print "Added:\nUid:\t %s (ID: %s)\nMaint:\t %s\nFP:\t %s" % (uid, uid_id, \ + name, primary_key) + +# Should we send mail to the newly added user? + if Cnf.FindB("Add-User::SendEmail"): + mail = name + "<" + emails[0] +">" + Upload = daklib.queue.Upload(Cnf) + Subst = Upload.Subst + Subst["__NEW_MAINTAINER__"] = mail + Subst["__UID__"] = uid + Subst["__KEYID__"] = Cnf["Add-User::Options::Key"] + Subst["__PRIMARY_KEY__"] = primary_key + Subst["__FROM_ADDRESS__"] = Cnf["Dinstall::MyEmailAddress"] + Subst["__HOSTNAME__"] = Cnf["Dinstall::MyHost"] + Subst["__SUMMARY__"] = summary + new_add_message = daklib.utils.TemplateSubst(Subst,Cnf["Dir::Templates"]+"/add-user.added") + daklib.utils.send_mail(new_add_message) + + else: + uid = None + + +####################################################################################### + +if __name__ == '__main__': + main() + diff --git a/dak/check_archive.py b/dak/check_archive.py index bf10e6d4..65b5cae4 100755 --- a/dak/check_archive.py +++ b/dak/check_archive.py @@ -86,8 +86,8 @@ def process_dir (unused, dirname, filenames): @type dirname: string @param dirname: the directory to look at - @type filename: dict - @param filename: Known filenames to ignore + @type filenames: dict + @param filenames: Known filenames to ignore """ global waste, db_files, excluded diff --git a/dak/control_suite.py b/dak/control_suite.py index f648b5ec..c6084d8b 100755 --- a/dak/control_suite.py +++ b/dak/control_suite.py @@ -275,7 +275,7 @@ def main (): utils.fubar("No action specified.") # Safety/Sanity check - if action == "set" and suite not in ["testing", "etch-m68k", "lenny-r0"]: + if action == "set" and suite not in ["testing", "etch-m68k"]: utils.fubar("Will not reset suite %s" % (suite)) if action == "list": diff --git a/dak/dak.py b/dak/dak.py index aa6efdee..15c3e1ad 100755 --- a/dak/dak.py +++ b/dak/dak.py @@ -175,6 +175,8 @@ def init(): "Calculate missing sha1sums and sha256sums"), ("bts-categorize", "Categorize uncategorized bugs filed against ftp.debian.org"), + ("add-user", + "Add a user to the archive"), ] return functionality diff --git a/dak/dakdb/update1.py b/dak/dakdb/update1.py index 7778b1be..92fc4498 100755 --- a/dak/dakdb/update1.py +++ b/dak/dakdb/update1.py @@ -24,7 +24,9 @@ ################################################################################ -import psycopg2, time +import psycopg2 +import time +from daklib.dak_exceptions import DBUpdateError ################################################################################ @@ -59,6 +61,4 @@ def do_update(self): except psycopg2.ProgrammingError, msg: self.db.rollback() - print "FATAL: Unable to apply DM table update 1!" - print "Error Message: " + str(msg) - print "Database changes have been rolled back." + raise DBUpdateError, "Unable to appy DM table updates, rollback issued. Error message : %s" % (str(msg)) diff --git a/dak/dakdb/update2.py b/dak/dakdb/update2.py index e411662c..10407a9c 100755 --- a/dak/dakdb/update2.py +++ b/dak/dakdb/update2.py @@ -21,7 +21,9 @@ ################################################################################ -import psycopg2, time +import psycopg2 +import time +from daklib.dak_exceptions import DBUpdateError ################################################################################ @@ -393,6 +395,4 @@ $$ except psycopg2.ProgrammingError, msg: self.db.rollback() - print "FATAL: Unable to apply debversion table update 2!" - print "Error Message: " + str(msg) - print "Database changes have been rolled back." + raise DBUpdateError, "Unable to appy debversion updates, rollback issued. Error message : %s" % (str(msg)) diff --git a/dak/dakdb/update3.py b/dak/dakdb/update3.py index df89fb9d..eef7d4c6 100755 --- a/dak/dakdb/update3.py +++ b/dak/dakdb/update3.py @@ -20,7 +20,9 @@ ################################################################################ -import psycopg2, time +import psycopg2 +import time +from daklib.dak_exceptions import DBUpdateError ################################################################################ @@ -36,6 +38,4 @@ def do_update(self): except psycopg2.ProgrammingError, msg: self.db.rollback() - print "FATAL: Unable to apply db update 3!" - print "Error Message: " + str(msg) - print "Database changes have been rolled back." + raise DBUpdateError, "Unable to appy versioncmp removal, rollback issued. Error message : %s" % (str(msg)) diff --git a/dak/new_security_install.py b/dak/new_security_install.py index b1a47dba..c72641a2 100755 --- a/dak/new_security_install.py +++ b/dak/new_security_install.py @@ -474,6 +474,7 @@ def _do_Approve(): print "Updating file lists for apt-ftparchive..." spawn("dak make-suite-file-list") print "Updating Packages and Sources files..." + spawn("/org/security.debian.org/dak/config/debian-security/map.sh") spawn("apt-ftparchive generate %s" % (utils.which_apt_conf_file())) print "Updating Release files..." spawn("dak generate-releases") diff --git a/dak/update_db.py b/dak/update_db.py index 8bb88f65..f7d13750 100755 --- a/dak/update_db.py +++ b/dak/update_db.py @@ -137,9 +137,15 @@ Updates dak's database schema to the lastest version. You should disable crontab for i in range (database_revision, required_database_schema): print "updating databse schema from " + str(database_revision) + " to " + str(i+1) - dakdb = __import__("dakdb", globals(), locals(), ['update'+str(i+1)]) - update_module = getattr(dakdb, "update"+str(i+1)) - update_module.do_update(self) + try: + dakdb = __import__("dakdb", globals(), locals(), ['update'+str(i+1)]) + update_module = getattr(dakdb, "update"+str(i+1)) + update_module.do_update(self) + except DBUpdateError, e: + # Seems the update did not work. + print "Was unable to update database schema from %s to %s." % (str(database_revision), str(i+1)) + print "The error message received was %s" % (e) + utils.fubar("DB Schema upgrade failed") database_revision += 1 ################################################################################ diff --git a/daklib/dak_exceptions.py b/daklib/dak_exceptions.py index b210a6f4..d18bee1e 100755 --- a/daklib/dak_exceptions.py +++ b/daklib/dak_exceptions.py @@ -57,7 +57,8 @@ dakerrors = { "SendmailFailedError": """Exception raised when Sendmail invocation failed.""", "NoFreeFilenameError": """Exception raised when no alternate filename was found.""", "TransitionsError": """Exception raised when transitions file can't be parsed.""", - "NoSourceFieldError": """Exception raised - we cant find the source - wtf?""" + "NoSourceFieldError": """Exception raised - we cant find the source - wtf?""", + "DBUpdateError": """Exception raised - could not update the database""" } #: All dak exceptions def construct_dak_exception(name, description): diff --git a/daklib/regexes.py b/daklib/regexes.py index b94c53b3..ee26430c 100755 --- a/daklib/regexes.py +++ b/daklib/regexes.py @@ -7,6 +7,7 @@ Central repository of regexes for dak @contact: Debian FTP Master @copyright: 2001, 2002, 2003, 2004, 2005, 2006 James Troup @copyright: 2009 Mark Hymers +@copyright: 2009 Joerg Jaspert @license: GNU General Public License version 2 or later """ @@ -97,3 +98,12 @@ re_build_dep_arch = re.compile(r"\[[^]]+\]") # From dak/transitions.py re_broken_package = re.compile(r"[a-zA-Z]\w+\s+\-.*") + +# From dak/add_user.py +re_gpg_fingerprint = re.compile(r"^fpr:+(.*):$", re.MULTILINE); +# The next one is dirty +re_user_address = re.compile(r"^pub:.*<(.*)@.*>.*$", re.MULTILINE); +re_user_mails = re.compile(r"^(pub|uid):[^rdin].*<(.*@.*)>.*$", re.MULTILINE); +re_user_name = re.compile(r"^pub:.*:(.*)<.*$", re.MULTILINE); +re_re_mark = re.compile(r'^RE:') + diff --git a/daklib/utils.py b/daklib/utils.py index 5cb502d6..1b35feef 100755 --- a/daklib/utils.py +++ b/daklib/utils.py @@ -38,10 +38,13 @@ import apt_pkg import database import time import tarfile +import re +import string +import email as modemail from dak_exceptions import * from regexes import re_html_escaping, html_escaping, re_single_line_field, \ re_multi_line_field, re_srchasver, re_verwithext, \ - re_parse_maintainer, re_taint_free, re_gpg_uid + re_parse_maintainer, re_taint_free, re_gpg_uid, re_re_mark ################################################################################ @@ -599,6 +602,67 @@ def send_mail (message, filename=""): os.write (fd, message) os.close (fd) + if Cnf.has_key("Dinstall::MailWhiteList") and \ + Cnf["Dinstall::MailWhiteList"] != "": + message_in = open_file(filename) + message_raw = modemail.message_from_file(message_in) + message_in.close(); + + whitelist = []; + whitelist_in = open_file(Cnf["Dinstall::MailWhiteList"]) + try: + for line in whitelist_in: + if re_re_mark.match(line): + whitelist.append(re.compile(re_re_mark.sub("", line.strip(), 1))) + else: + whitelist.append(re.compile(re.escape(line.strip()))) + finally: + whitelist_in.close() + + # Fields to check. + fields = ["To", "Bcc", "Cc"] + for field in fields: + # Check each field + value = message_raw.get(field, None) + if value != None: + match = []; + for item in value.split(","): + (rfc822_maint, rfc2047_maint, name, email) = fix_maintainer(item.strip()) + mail_whitelisted = 0 + for wr in whitelist: + if wr.match(email): + mail_whitelisted = 1 + break + if not mail_whitelisted: + print "Skipping %s since it's not in %s" % (item, Cnf["Dinstall::MailWhiteList"]) + continue + match.append(item) + + # Doesn't have any mail in whitelist so remove the header + if len(match) == 0: + del message_raw[field] + else: + message_raw.replace_header(field, string.join(match, ", ")) + + # Change message fields in order if we don't have a To header + if not message_raw.has_key("To"): + fields.reverse() + for field in fields: + if message_raw.has_key(field): + message_raw[fields[-1]] = message_raw[field] + del message_raw[field] + break + else: + # Clean up any temporary files + # and return, as we removed all recipients. + if message: + os.unlink (filename); + return; + + fd = os.open(filename, os.O_RDWR|os.O_EXCL, 0700); + os.write (fd, message_raw.as_string(True)); + os.close (fd); + # Invoke sendmail (result, output) = commands.getstatusoutput("%s < %s" % (Cnf["Dinstall::SendmailCommand"], filename)) if (result != 0): diff --git a/scripts/backports.org/copyoverrides b/scripts/backports.org/copyoverrides new file mode 100755 index 00000000..a90db62d --- /dev/null +++ b/scripts/backports.org/copyoverrides @@ -0,0 +1,29 @@ +#! /bin/sh + +set -e +. $SCRIPTVARS +echo 'Copying override files into public view ...' + +for f in $copyoverrides ; do + cd $overridedir + chmod g+w override.$f + + cd $indices + rm -f .newover-$f.gz + pc="`gzip 2>&1 -9nv <$overridedir/override.$f >.newover-$f.gz`" + set +e + nf=override.$f.gz + cmp -s .newover-$f.gz $nf + rc=$? + set -e + if [ $rc = 0 ]; then + rm -f .newover-$f.gz + elif [ $rc = 1 -o ! -f $nf ]; then + echo " installing new $nf $pc" + mv -f .newover-$f.gz $nf + chmod g+w $nf + else + echo $? $pc + exit 1 + fi +done diff --git a/scripts/backports.org/mkchecksums b/scripts/backports.org/mkchecksums new file mode 100755 index 00000000..575d55c5 --- /dev/null +++ b/scripts/backports.org/mkchecksums @@ -0,0 +1,15 @@ +#!/bin/sh +# Update the md5sums file + +set -e +. $SCRIPTVARS + +dsynclist=$dbdir/dsync.list +md5list=$indices/md5sums + +echo -n "Creating md5 / dsync index file ... " + +cd "$ftpdir" +dsync-flist -q generate $dsynclist --exclude $dsynclist --md5 +dsync-flist -q md5sums $dsynclist | gzip -9n > ${md5list}.gz +dsync-flist -q link-dups $dsynclist || true diff --git a/scripts/backports.org/mklslar b/scripts/backports.org/mklslar new file mode 100755 index 00000000..19363f1f --- /dev/null +++ b/scripts/backports.org/mklslar @@ -0,0 +1,36 @@ +#!/bin/sh +# Update the ls-lR. + +set -e +. $SCRIPTVARS + +cd $ftpdir + +filename=ls-lR + +echo "Removing any core files ..." +find -type f -name core -print0 | xargs -0r rm -v + +echo "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 + +echo "Checking symlinks ..." +symlinks -rd . + +echo "Creating recursive directory listing ... " +rm -f .$filename.new +TZ=UTC ls -lR | grep -v Archive_Maintenance_In_Progress > .$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 diff --git a/scripts/backports.org/mkmaintainers b/scripts/backports.org/mkmaintainers new file mode 100755 index 00000000..edb0f20c --- /dev/null +++ b/scripts/backports.org/mkmaintainers @@ -0,0 +1,31 @@ +#! /bin/sh + +echo +echo -n 'Creating Maintainers index ... ' + +set -e +. $SCRIPTVARS +cd $base/misc/ + +nonusmaint="$base/misc/Maintainers_Versions-non-US" + + +cd $indices +dak make-maintainers | sed -e "s/~[^ ]*\([ ]\)/\1/" | awk '{printf "%-20s ", $1; for (i=2; i<=NF; i++) printf "%s ", $i; printf "\n";}' > .new-maintainers + +set +e +cmp .new-maintainers Maintainers >/dev/null +rc=$? +set -e +if [ $rc = 1 ] || [ ! -f Maintainers ] ; then + echo -n "installing Maintainers ... " + mv -f .new-maintainers Maintainers + gzip -9v .new-maintainers.gz + mv -f .new-maintainers.gz Maintainers.gz +elif [ $rc = 0 ] ; then + echo '(same as before)' + rm -f .new-maintainers +else + echo cmp returned $rc + false +fi diff --git a/scripts/debian/ddtp-i18n-check.sh b/scripts/debian/ddtp-i18n-check.sh index c42286c3..4d84e607 100755 --- a/scripts/debian/ddtp-i18n-check.sh +++ b/scripts/debian/ddtp-i18n-check.sh @@ -21,8 +21,8 @@ export LC_ALL=C # Otherwise, list all the errors. DEBUG=0 -#STABLE="etch" -TESTING="lenny" +#STABLE="lenny" +TESTING="squeeze" UNSTABLE="sid" # Original SHA256SUMS, generated by i18n.debian.net diff --git a/scripts/debian/mkfilesindices b/scripts/debian/mkfilesindices index 03b3ea0c..b9d31a02 100755 --- a/scripts/debian/mkfilesindices +++ b/scripts/debian/mkfilesindices @@ -82,12 +82,12 @@ for a in $ARCHES; do done (cd $base/ftp/ - for dist in sid lenny; do + for dist in sid squeeze; do find ./dists/$dist/main/i18n/ \! -type d | sort -u | gzip -9 > $base/ftp/indices/files/components/translation-$dist.list.gz done ) -(cat ../arch-i386.files ../arch-amd64.files; zcat suite-proposed-updates.list.gz ; zcat translation-sid.list.gz ; zcat translation-lenny.list.gz) | +(cat ../arch-i386.files ../arch-amd64.files; zcat suite-oldstable.list.gz suite-proposed-updates.list.gz ; zcat translation-sid.list.gz ; zcat translation-squeeze.list.gz) | sort -u | poolfirst > ../typical.files rm -f $ARCHLIST diff --git a/templates/add-user.added b/templates/add-user.added new file mode 100644 index 00000000..1a934912 --- /dev/null +++ b/templates/add-user.added @@ -0,0 +1,18 @@ +From: __FROM_ADDRESS__ +To: __NEW_MAINTAINER__ +Subject: Account on __HOSTNAME__ activated + +Hi __UID__, + +your account on __HOSTNAME__ has just been activated. You are now able +to upload packages there, using dput or dupload as you wish. +The gpg-key you need to sign your packages with is key 0x__KEYID__ +with the fingerprint __PRIMARY_KEY__. + +__SUMMARY__ + +This message was generated automatically; if you believe that there is +a problem with it please contact the archive administrators by mailing +__ADMIN_ADDRESS__. + +__DISTRO__ distribution maintenance software diff --git a/web/index.html b/web/index.html index 7e3ca97c..062be98d 100644 --- a/web/index.html +++ b/web/index.html @@ -156,7 +156,7 @@

Testing

-

Lenny is testing, sid is unstable. For more details please look +

Squeeze is testing, sid is unstable. For more details please look at the testing pages.

diff --git a/web/keys.html b/web/keys.html index 7fd38e85..78e35474 100644 --- a/web/keys.html +++ b/web/keys.html @@ -115,16 +115,67 @@
-

Key Revokation Procedure

+

Key Revocation Procedure

A revokation certificate for the archive key is produced at the time of the creation - of an archive key. The program ssss (a Shamir's secret sharing scheme implementation) - is then used to produce 20 shares of which 10 are needed to recover the revokation cert. + of an archive key. The program gfshare (package + libgfshare-bin) + (a Shamir's secret sharing scheme implementation) is then used to produce 12 shares of + which 7 are needed to recover the revokation cert. This procedure is for use in emergencies only (such as losing ftp-master.debian.org and all of the backups, a hopefully unlikely event) as the key can normally be used to produce its own revokation certificate.

+
+

Key Backup / Restore Procedure

+

After the creation of the archive key, the secret part of it will be backed up in one additional + way. The program gfshare (package + libgfshare-bin) + (a Shamir's secret sharing scheme implementation) is used to produce 14 shares of which 9 are needed + to recover the secret key.

+ +
+

SSSS holders

+

The following people each hold one of the shares of the revocation certificate / private key.

+

Revocation shares

+

7 of those shares are needed to reproduce the revocation certificate

+ + + + + + + + + + + + + + +
Debian uidName
shoSamuel Hocevar
donDon Armstrong
neilmNeil McGovern
djpigFrank Lichtenheld
jimmyJimmy Kaplowitz
killerKalle Kivimaa
noodlesJonathan McDowell
rraRuss Allbery
margaMargarita Manterola
thijsThijs Kinkhorst
meikeMeike Reichle
miriamMiriam Ruiz
+ +

Key shares

+

9 of those shares are needed to reproduce the secret key

+ + + + + + + + + + + + + + + + +
Debian uidName
lukLuk Claes
maxxMartin Wuertele
adeodatoAdeodato Simó
myonChristoph Berg
93samSteve McIntyre
bdaleBdale Garbee
sgranStephen Gran
dannfDann Frazier
weaselPeter Palfrader
enricoEnrico Zini
wouterWouter Verhelst
mhyMark Hymers
bzedBernd Zeimetz
stewMike O'Connor
+

Debian FTP team