From: Mark Hymers Date: Wed, 8 Apr 2009 20:48:29 +0000 (+0100) Subject: Merge commit 'ftpmaster/master' X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=ee00ba60099f741819f991db13b4d0fc65bdd960;hp=317c2e8d618daddd49531c18a8367b533c2dd75c;p=dak.git Merge commit 'ftpmaster/master' --- diff --git a/config/debian/apt.conf b/config/debian/apt.conf index f897d7b1..0e5d337b 100644 --- a/config/debian/apt.conf +++ b/config/debian/apt.conf @@ -73,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 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 kfreebsd-i386 kfreebsd-amd64 source"; BinOverride "override.sid.$(SECTION)"; ExtraOverride "override.sid.extra.$(SECTION)"; SrcOverride "override.sid.$(SECTION).src"; @@ -196,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 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 kfreebsd-i386 kfreebsd-amd64 source"; BinOverride "override.sid.$(SECTION)"; SrcOverride "override.sid.$(SECTION).src"; }; diff --git a/config/debian/common b/config/debian/common index ad10ea6c..3655d9d2 100644 --- a/config/debian/common +++ b/config/debian/common @@ -24,3 +24,21 @@ function debug () { log "$*" fi } + +# used by cron.dinstall *and* cron.unchecked. +function make_buildd_dir () { + cd $configdir + apt-ftparchive -qq -o APT::FTPArchive::Contents=off generate apt.conf.buildd + + cd ${incoming} + rm -f buildd/Release* + apt-ftparchive -qq -o APT::FTPArchive::Release::Origin="Debian" -o APT::FTPArchive::Release::Label="Debian" -o APT::FTPArchive::Release::Description="buildd incoming" -o APT::FTPArchive::Release::Architectures="${archs}" release buildd > Release + 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 Release.gpg Release + mv Release* buildd/. + + cd ${incoming} + mkdir -p tree/${STAMP} + cp -al ${incoming}/buildd/. tree/${STAMP}/ + ln -sfT tree/${STAMP} ${incoming}/builddweb + find ./tree -mindepth 1 -maxdepth 1 -not -name "${STAMP}" -type d -print0 | xargs --no-run-if-empty -0 rm -rf +} diff --git a/config/debian/cron.dinstall b/config/debian/cron.dinstall index 1f0e1961..c730a116 100755 --- a/config/debian/cron.dinstall +++ b/config/debian/cron.dinstall @@ -74,7 +74,7 @@ function merkel1() { # Create the postgres dump files function pgdump_pre() { log "Creating pre-daily-cron-job backup of projectb database..." - pg_dump projectb > $base/backup/dump_$(date +%Y.%m.%d-%H:%M:%S) + pg_dump projectb > $base/backup/dump_pre_$(date +%Y.%m.%d-%H:%M:%S) } function pgdump_post() { @@ -235,6 +235,13 @@ function buildd() { apt-ftparchive generate apt.conf.buildd } +function buildd_dir() { + # Rebuilt the buildd dir to avoid long times of 403 + log "Regenerating the buildd incoming dir" + STAMP=$(date "+%Y%m%d%H%M") + make_buildd_dir +} + function scripts() { log "Running various scripts from $scriptsdir" cd $scriptsdir @@ -289,6 +296,12 @@ function merkel2() { ssh -2 -o BatchMode=yes -o SetupTimeOut=30 -o ConnectTimeout=30 -i ~/.ssh/push_merkel_projectb dak@merkel.debian.org sleep 1 } +function merkel3() { + # Push dak@merkel to tell it to sync the dd accessible parts. Returns immediately, the sync runs detached + log "Trigger merkels dd accessible parts sync" + ssh -2 -o BatchMode=yes -o SetupTimeOut=30 -o ConnectTimeout=30 -i ~/.ssh/push_merkel_ddaccess dak@merkel.debian.org sleep 1 +} + function runparts() { log "Using run-parts to run scripts in $base/scripts/distmnt" run-parts --report $base/scripts/distmnt @@ -318,6 +331,8 @@ function stats() { cd $configdir $scriptsdir/update-ftpstats $base/log/* > $base/misc/ftpstats.data R --slave --vanilla < $base/misc/ftpstats.R + dak stats arch-space > $webdir/arch-space + dak stats pkg-nums > $webdir/pkg-nums } function aptftpcleanup() { @@ -329,11 +344,19 @@ function aptftpcleanup() { function compress() { log "Compress old psql backups" cd $base/backup/ - find -maxdepth 1 -mindepth 1 -type f -name 'dump_*' \! -name '*.bz2' \! -name '*.gz' -mtime +1 | + find -maxdepth 1 -mindepth 1 -type f -name 'dump_pre_*' -mtime +2 -print0 | xargs -0 --no-run-if-empty rm + + find -maxdepth 1 -mindepth 1 -type f -name 'dump_*' \! -name '*.bz2' \! -name '*.gz' -mmin 720 | + while read dumpname; do + echo "Compressing $dumpname" + bzip2 -9v "$dumpname" + done + find -maxdepth 1 -mindepth 1 -type f -name "dumpall_*" \! -name '*.bz2' \! -name '*.gz' -mmin 720 | while read dumpname; do echo "Compressing $dumpname" bzip2 -9v "$dumpname" done + finddup -l -d $base/backup } function logstats() { @@ -571,6 +594,14 @@ GO=( ) stage $GO +GO=( + FUNC="buildd_dir" + TIME="buildd_dir" + ARGS="" + ERR="false" +) +stage $GO + GO=( FUNC="cruft" TIME="cruft" @@ -690,14 +721,6 @@ GO=( ) stage $GO -GO=( - FUNC="pgdakdev" - TIME="dak-dev db" - ARGS="" - ERR="false" -) -stage $GO - GO=( FUNC="expire" TIME="expire_dumps" @@ -768,9 +791,18 @@ GO=( ARGS="" ERR="false" ) +stage $GO rm -f ${LOCK_BRITNEY} +GO=( + FUNC="pgdakdev" + TIME="dak-dev db" + ARGS="" + ERR="false" +) +stage $GO + GO=( FUNC="aptftpcleanup" TIME="apt-ftparchive cleanup" @@ -779,6 +811,14 @@ GO=( ) stage $GO +GO=( + FUNC="merkel3" + TIME="merkel ddaccessible sync" + ARGS="" + ERR="false" +) +stage $GO + GO=( FUNC="compress" TIME="compress" diff --git a/config/debian/cron.unchecked b/config/debian/cron.unchecked index 5e7a035d..d41d573d 100755 --- a/config/debian/cron.unchecked +++ b/config/debian/cron.unchecked @@ -5,6 +5,9 @@ set -u export SCRIPTVARS=/srv/ftp.debian.org/dak/config/debian/vars . $SCRIPTVARS +# common functions are "outsourced" +. "${configdir}/common" + LOCKDAILY="" LOCKFILE="$lockdir/unchecked.lock" NOTICE="$lockdir/daily.lock" @@ -56,20 +59,7 @@ if lockfile -r3 $LOCKFILE; then cat override.sid.$i.src >> override.sid.all3.src fi done - cd $configdir - apt-ftparchive -qq -o APT::FTPArchive::Contents=off generate apt.conf.buildd - - cd ${incoming} - rm -f buildd/Release* - apt-ftparchive -qq -o APT::FTPArchive::Release::Origin="Debian" -o APT::FTPArchive::Release::Label="Debian" -o APT::FTPArchive::Release::Description="buildd incoming" -o APT::FTPArchive::Release::Architectures="${archs}" release buildd > Release - 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 Release.gpg Release - mv Release* buildd/. - - cd ${incoming} - mkdir -p tree/${STAMP} - cp -al ${incoming}/buildd/. tree/${STAMP}/ - ln -sfT tree/${STAMP} ${incoming}/builddweb - find ./tree -mindepth 1 -maxdepth 1 -not -name "${STAMP}" -type d -print0 | xargs --no-run-if-empty -0 rm -rf + make_buildd_dir . $configdir/cron.buildd fi diff --git a/config/debian/dak.conf b/config/debian/dak.conf index 662d16f6..0fb81470 100644 --- a/config/debian/dak.conf +++ b/config/debian/dak.conf @@ -598,6 +598,8 @@ Architectures s390 "IBM S/390"; sh "Hitatchi SuperH"; sparc "Sun SPARC/UltraSPARC"; + kfreebsd-i386 "GNU/kFreeBSD i386"; + kfreebsd-amd64 "GNU/kFreeBSD amd64"; }; Archive diff --git a/config/debian/vars b/config/debian/vars index 352a8fc4..09a047b2 100644 --- a/config/debian/vars +++ b/config/debian/vars @@ -5,7 +5,7 @@ bindir=$base/bin ftpdir=$base/ftp webdir=$base/web indices=$ftpdir/indices -archs="alpha amd64 arm armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc" +archs="alpha amd64 arm armel hppa hurd-i386 i386 ia64 mips mipsel powerpc s390 sparc kfreebsd-i386 kfreebsd-amd64 " scriptdir=$base/scripts masterdir=$base/dak/ diff --git a/dak/cruft_report.py b/dak/cruft_report.py index 3c3d73cb..4c6d323e 100755 --- a/dak/cruft_report.py +++ b/dak/cruft_report.py @@ -168,7 +168,7 @@ def parse_nfu(architecture): f.close() else: - utils.warn("No wanna-build dump file for architecture %s", architecture) + utils.warn("No wanna-build dump file for architecture %s" % architecture) return ret ################################################################################ @@ -428,6 +428,8 @@ def main (): for component in check_components: architectures = filter(utils.real_arch, database.get_suite_architectures(suite)) for architecture in architectures: + if component == 'main/debian-installer' and re.match("kfreebsd", architecture): + continue filename = "%s/dists/%s/%s/binary-%s/Packages.gz" % (Cnf["Dir::Root"], suite, component, architecture) # apt_pkg.ParseTagFile needs a real file handle (fd, temp_filename) = utils.temp_filename() diff --git a/dak/examine_package.py b/dak/examine_package.py index eb602794..9448724e 100755 --- a/dak/examine_package.py +++ b/dak/examine_package.py @@ -1,7 +1,13 @@ #!/usr/bin/env python -""" Script to automate some parts of checking NEW packages """ -# Copyright (C) 2000, 2001, 2002, 2003, 2006 James Troup +""" +Script to automate some parts of checking NEW packages + +@contact: Debian FTP Master +@copyright: 2000, 2001, 2002, 2003, 2006 James Troup +@copyright: 2009 Joerg Jaspert +@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 @@ -32,7 +38,12 @@ ################################################################################ -import errno, os, pg, re, sys, md5 +import errno +import os +import pg +import re +import sys +import md5 import apt_pkg, apt_inst from daklib import database from daklib import utils @@ -50,6 +61,7 @@ projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"])) database.init(Cnf, projectB) printed_copyrights = {} +package_relations = {} #: Store relations of packages for later output # default is to not output html. use_html = 0 @@ -333,17 +345,38 @@ def create_depends_string (suite, depends_tree): comma_count += 1 return result -def output_deb_info(suite, filename): +def output_package_relations (): + """ + Output the package relations, if there is more than one package checked in this run. + """ + + if len(package_relations) < 2: + # Only list something if we have more than one binary to compare + return + + to_print = "" + for package in package_relations: + for relation in package_relations[package]: + to_print += "%-15s: (%s) %s\n" % (package, relation, package_relations[package][relation]) + + package_relations.clear() + foldable_output("Package relations", "relations", to_print) + +def output_deb_info(suite, filename, packagename): (control, control_keys, section, depends, recommends, arch, maintainer) = read_control(filename) if control == '': return formatted_text("no control info") to_print = "" + if not package_relations.has_key(packagename): + package_relations[packagename] = {} for key in control_keys : if key == 'Depends': field_value = create_depends_string(suite, depends) + package_relations[packagename][key] = field_value elif key == 'Recommends': field_value = create_depends_string(suite, recommends) + package_relations[packagename][key] = field_value elif key == 'Section': field_value = section elif key == 'Architecture': @@ -415,7 +448,7 @@ def check_deb (suite, deb_filename): foldable_output("control file for %s" % (filename), "binary-%s-control"%packagename, - output_deb_info(suite, deb_filename), norow=True) + output_deb_info(suite, deb_filename, packagename), norow=True) if is_a_udeb: foldable_output("skipping lintian check for udeb", "binary-%s-lintian"%packagename, @@ -523,6 +556,7 @@ def main (): else: utils.fubar("Unrecognised file type: '%s'." % (f)) finally: + output_package_relations() if not Options["Html-Output"]: # Reset stdout here so future less invocations aren't FUBAR less_fd.close() diff --git a/dak/generate_releases.py b/dak/generate_releases.py index 137c8447..d6aeb390 100755 --- a/dak/generate_releases.py +++ b/dak/generate_releases.py @@ -121,6 +121,31 @@ def print_sha1_files (tree, files): def print_sha256_files (tree, files): print_md5sha_files (tree, files, apt_pkg.sha256sum) +def write_release_file (relpath, suite, component, origin, label, arch, version="", suite_suffix="", notautomatic=""): + try: + if os.access(relpath, os.F_OK): + if os.stat(relpath).st_nlink > 1: + os.unlink(relpath) + release = open(relpath, "w") + except IOError: + utils.fubar("Couldn't write to " + relpath) + + release.write("Archive: %s\n" % (suite)) + if version != "": + release.write("Version: %s\n" % (version)) + + if suite_suffix: + release.write("Component: %s/%s\n" % (suite_suffix,component)) + else: + release.write("Component: %s\n" % (component)) + + release.write("Origin: %s\n" % (origin)) + release.write("Label: %s\n" % (label)) + if notautomatic != "": + release.write("NotAutomatic: %s\n" % (notautomatic)) + release.write("Architecture: %s\n" % (arch)) + release.close() + ################################################################################ def main (): @@ -269,29 +294,7 @@ def main (): else: rel = "%s/binary-%s/Release" % (sec, arch) relpath = Cnf["Dir::Root"]+tree+"/"+rel - - try: - if os.access(relpath, os.F_OK): - if os.stat(relpath).st_nlink > 1: - os.unlink(relpath) - release = open(relpath, "w") - #release = open(longsuite.replace("/","_") + "_" + arch + "_" + sec + "_Release", "w") - except IOError: - utils.fubar("Couldn't write to " + relpath) - - release.write("Archive: %s\n" % (suite)) - if version != "": - release.write("Version: %s\n" % (version)) - if suite_suffix: - release.write("Component: %s/%s\n" % (suite_suffix,sec)) - else: - release.write("Component: %s\n" % (sec)) - release.write("Origin: %s\n" % (origin)) - release.write("Label: %s\n" % (label)) - if notautomatic != "": - release.write("NotAutomatic: %s\n" % (notautomatic)) - release.write("Architecture: %s\n" % (arch)) - release.close() + write_release_file(relpath, suite, sec, origin, label, arch, version, suite_suffix, notautomatic) files.append(rel) if AptCnf.has_key("tree::%s/main" % (tree)): @@ -303,6 +306,10 @@ def main (): for arch in AptCnf["tree::%s/%s::Architectures" % (tree,dis)].split(): if arch != "source": # always true + rel = "%s/%s/binary-%s/Release" % (dis, sec, arch) + relpath = Cnf["Dir::Root"]+tree+"/"+rel + write_release_file(relpath, suite, dis, origin, label, arch, version, suite_suffix, notautomatic) + files.append(rel) for cfile in compressnames("tree::%s/%s" % (tree,dis), "Packages", "%s/%s/binary-%s/Packages" % (dis, sec, arch)): diff --git a/dak/process_new.py b/dak/process_new.py index acc4522f..9ecfcdc6 100755 --- a/dak/process_new.py +++ b/dak/process_new.py @@ -516,6 +516,7 @@ def check_pkg (): elif ftype == "dsc": examine_package.check_dsc(changes['distribution'], f) finally: + examine_package.output_package_relations() sys.stdout = stdout_fd except IOError, e: if e.errno == errno.EPIPE: @@ -854,7 +855,7 @@ def move_to_holding(suite, queue_dir): return Logger.log(["Moving to %s" % (suite,), Upload.pkg.changes_file]) Upload.dump_vars(queue_dir) - move_to_dir(queue_dir) + move_to_dir(queue_dir, perms=0664) os.unlink(Upload.pkg.changes_file[:-8]+".dak") def _accept(): diff --git a/daklib/utils.py b/daklib/utils.py index c1be6b90..651e13ae 100755 --- a/daklib/utils.py +++ b/daklib/utils.py @@ -260,6 +260,7 @@ def create_hash(where, files, hashname, hashfunc): file_handle = open_file(f) except CantOpenError: rejmsg.append("Could not open file %s for checksumming" % (f)) + continue files[f][hash_key(hashname)] = hashfunc(file_handle) diff --git a/docs/TODO b/docs/TODO index 3cbd21ef..f142c66b 100644 --- a/docs/TODO +++ b/docs/TODO @@ -1,26 +1,87 @@ TODO ==== -* Implement autosigning, see ftpmaster_autosigning on ftp-master host in - text/. +Various +------- +* Implement autosigning, see ftpmaster_autosigning on ftp-master host in text/. * Check TODO.old and move still-valid/useful entries over here. +* need a testsuite _badly_ * database table "binaries" contains a column 'type TEXT NOT - NULL'. This should be made a FK on override_type, as it only contains - deb/udeb strings. + NULL'. This should be made a FK on override_type, as it only contains + deb/udeb strings. -- sql query to do the db work for it: - ALTER TABLE binaries ADD COLUMN new_type INT4 REFERENCES override_type(id); - UPDATE BINARIES SET new_type = 7 WHERE type = 'deb'; - UPDATE BINARIES SET new_type = 8 WHERE type = 'udeb'; - ALTER TABLE binaries DROP COLUMN type; - ALTER TABLE binaries RENAME COLUMN new_type TO type; + - sql query to do the db work for it: + ALTER TABLE binaries ADD COLUMN new_type INT4 REFERENCES override_type(id); + UPDATE BINARIES SET new_type = 7 WHERE type = 'deb'; + UPDATE BINARIES SET new_type = 8 WHERE type = 'udeb'; + ALTER TABLE binaries DROP COLUMN type; + ALTER TABLE binaries RENAME COLUMN new_type TO type; -- needs updateX.py written and then the rest of the code changed to deal - with it. + - needs updateX.py written and then the rest of the code changed to deal + with it. * Checkout SQL Alchemy and probably use that for our database layer. +* reject on > or < in a version constraint + +* use pythonX.Y-tarfile to check orig.tar.gz timestamps too. + +* the .dak stuff is fundamentally braindamaged for various reasons, it + should DIE. If we want to cache information - use a ("temporary") + database table and let p-a clean it up, e.g. like contents does. + +* security global mail overrides should special case buildd stuff so + that buildds get ACCEPTED mails. Or maybe send them at + new-security-install time. That way upload-security doesn't grow + boundlessly. + +* debianqueued sucks. Reimplement in a sane way. + +NEW processing +-------------- +* 'dak process-new' allows you to edit the section and change the + component, but really shouldn't allow the component change. + +* 'dak process-new' doesn't do the right thing with -2 and -1 uploads, + as you can end up with the .orig.tar.gz not in the pool or belonging + to a wrong suite. + +* 'dak process-new' doesn't trap signals from 'dak examine-package' properly + +* 'dak queue-report' should footnote the actual notes, and also * the + versions with notes so we can see new versions since being noted... + +* the orig was in NEW, the changes that caused it to be NEW + were pulled out in -2, and we end up with no orig in the archive :( + + + +Override handling +----------------- +* 'dak check-overrides' should remove the src-only override when a + binary+source override exists + +* override checks sucks; it needs to track changes made by the + maintainer and pass them onto ftpmaster instead of warning the maintainer. + +* Fix component handling in overrides + + +Cruft +----- +* 'dak cruft-report' could do with overrides + +* cruft-report could spot "half-dropped" binaries. Like if a package + used to build A and B, but B is no longer built for half the + architectures. + +* cruft-report's NVIU check doesn't catch cases where source package + changed name, should check binaries too. [debian-devel@l.d.o, + 2004-02-03] + +* 'dak cruft-report' doesn't look at debian-installer but should. + diff --git a/docs/TODO.old b/docs/TODO.old index c4dbb4df..d31d85e8 100644 --- a/docs/TODO.old +++ b/docs/TODO.old @@ -11,21 +11,10 @@ Others ------ - o 'dak check-overrides' should remove the src-only override when a - binary+source override exists - - o reject on > or < in a version constraint - o 'dak reject-proposed-updates' should only start an editor once to capture a message; it will usually be the same message for all files on the same command line. -23:07 < aba> elmo: and, how about enhancing 'dak cruft-report' to spot half-dropped - binaries on one arch (i.e. package used to build A and B, but B is - no longer built on some archs)? - - o tabnanny the source - o drop map-unreleased o check email only portions of addresses match too, iff the names @@ -44,21 +33,11 @@ Others o 'dak ls' could do better sanity checking for -g/-G (e.g. not more than one suite, etc.) - o use python2.2-tarfile (once it's in stable?) to check orig.tar.gz - timestamps too. - o need to decide on whether we're tying for most errors at once.. if so (probably) then make sure code doesn't assume variables exist and either way do something about checking error code of check_dsc and later functions so we skip later checks if they're bailing. - o the .dak stuff is fundamentally braindamaged, it's not versioned - so there's no way to change the format, yay me. need to fix. - probably by putting a version var as the first thing and checking - that.. auto-upgrade at least from original format would be good. - might also be a good idea to put everything in one big dict after - that? - o [?, wishlist, distant future] RFC2047-ing should be extended to all headers of mails sent out. @@ -74,19 +53,11 @@ Others deal, upload can be retried once the source is in the archive, but still. - o security global mail overrides should special case buildd stuff so - that buildds get ACCEPTED mails (or maybe 'dak security-install' (?)), that way - upload-security doesn't grow boundlessly. - o 'dak security-install' should upload sourceful packages first, otherwise with big packages (e.g. X) and esp. when source is !i386, half the arches can be uploaded without source, get copied into queue/unaccepted and promptly rejected. - o 'dak cruft-report's NVIU check doesn't catch cases where source - package changed name, should check binaries - too. [debian-devel@l.d.o, 2004-02-03] - o cnf[Rm::logfile] is misnamed... i'd be kinda inclined to go with insisting the .changes file take @@ -94,8 +65,6 @@ Others BEGIN PGP SIG -- END PGP MESSAGE -- with no lines before or after, and rejecting .changes that didn't match that - o 'dak cruft-report' should check for source packages not building any binaries - o 'dak control-suite' should have a diff mode that accepts diff output! o 'dak clean-proposed-updates' doesn't deal with 'dak rm'-d @@ -108,8 +77,6 @@ Others o 'dak rm' should remove obsolete changes when removing from p-u, or at least warn. or 'dak reject-proposed-updates' should handle it. - o need a testsuite _badly_ - o 'dak process-unchecked' crashes if run as a user in -n mode when orig.tar.gz is in queue/new... @@ -128,9 +95,6 @@ Others o check_dsc_against_db's "delete an entry from files while you're not looking" habit is Evil and Bad. - o 'dak process-new' allows you to edit the section and change the - component, but really shouldn't. - o 'dak rm' needs to, when not sending bug close mails, promote Cc: to To: and send the mail anyways. @@ -177,13 +141,6 @@ Others o UrgencyLog stuff should minimize it's bombing out(?) o Log stuff should open the log file - o 'dak queue-report' should footnote the actual notes, and also * - the versions with notes so we can see new versions since being - noted... - - o 'dak queue-report' should have alternative sorting options, including reverse - and without or without differentiaion. - o 'dak import-users-from-passwd' should sync debadmin and ftpmaster (?) o Can't read file.: @@ -191,10 +148,6 @@ Others You assume that the filenames are relative to accepted/, might want to doc or fix that. - o the orig was in NEW, the changes that caused it to be NEW - were pulled out in -2, and we end up with no orig in the archive - :( - o SecurityQueueBuild doesn't handle the case of foo_3.3woody1 with a new .orig.tar.gz followed by a foo_3.3potato1 with the same .orig.tar.gz; 'dak process-unchecked' sees it and copes, but the AA @@ -207,25 +160,10 @@ Others o permissions (paranoia, group write, etc.) configurability and overhaul - o remember duplicate copyrights in 'dak process-new' and skip them, per package - - o ove option for 'dak process-new' byhand proecessing - - o 'dak cruft-report' could do with overrides - o database.get_location_id should handle the lack of archive_id properly o the whole versioncmp thing should be documented - o 'dak process-new' doesn't do the right thing with -2 and -1 uploads, as you can - end up with the .orig.tar.gz not in the pool - - o 'dak process-new' exits if you check twice (aj) - - o 'dak process-new' doesn't trap signals from 'dak examine-package' properly - - o queued and/or perl on sparc stable sucks - reimplement it. - o aj's bin nmu changes o 'dak process-new': @@ -245,9 +183,6 @@ Others who their source is; source-must-exist does, but the info is not propogated down. - o Fix BTS vs. dak sync issues by queueing(via BSMTP) BTS mail so - that it can be released on deman (e.g. ETRN to exim). - o maintainers file needs overrides [ change override.maintainer to override.maintainer-from + @@ -329,9 +264,6 @@ Less Urgent o [Hard] Need to merge non-non-US and non-US DBs. - o experimental needs to auto clean (relative to unstable) [partial: - 'dak cruft-report' warns about this] - o Do a checkpc(1)-a-like which sanitizes a config files. o fix parse_changes()/build_file_list() to sanity check filenames o saftey check and/or rename debs so they match what they should be @@ -350,11 +282,6 @@ Less Urgent o s/distribution/suite/g - o cron.weekly: - @ weekly postins to d-c (?) - @ backup of report (?) - @ backup of changes.tgz (?) - o --help doesn't work without /etc/dak/dak.conf (or similar) at least existing. @@ -364,15 +291,8 @@ Less Urgent o interrupting of stracing 'dak process-unchecked' causes exceptions errors from apt_inst calls o dependency checking (esp. stable) (partially done) - o override checks sucks; it needs to track changes made by the - maintainer and pass them onto ftpmaster instead of warning the - maintainer. o need to do proper rfc822 escaping of from lines (as opposed to s/\.//g) o Revisit linking of binary->source in install() in dak. - o Fix component handling in overrides (aj) - o Fix lack of entires in source overrides (aj) - o direport misreports things as section 'devel' (? we don't use direport) - o vrfy check of every Maintainer+Changed-By address; valid for 3 months. o binary-all should be done on a per-source, per-architecture package basis to avoid, e.g. the perl-modules problem. o a source-missing-diff check: if the version has a - in it, and it @@ -405,11 +325,7 @@ Less Urgent o dak should validate multi-suite uploads; only possible valid one is "stable unstable" o cron.daily* should change umask (aj sucks) - o 'dak cruft-report' doesn't look at debian-installer but should. - o 'dak cruft-report' needs to check for binary-less source packages. - o 'dak cruft-report' could accept a suite argument (?) o byhand stuff should send notification - o 'dak poolize' should udpate db; move files, not the other way around [neuro] o 'dak rm' should update the stable changelog [joey] o update tagdb.dia @@ -417,11 +333,9 @@ Less Urgent o drop rather dubious currval stuff (?) o rationalize os.path.join() usage - o 'dak cruft-report' also doesn't seem to warn about missing binary packages (??) o logging: hostname + pid ? o ANAIS should be done in dak (?) o Add an 'add' ability to 'dak rm' (? separate prog maybe) - o Replicate old dinstall report stuff (? needed ?) o Handle the case of 1:1.1 which would overwrite 1.1 (?) o maybe drop -r/--regex in 'dak ls', make it the default and implement -e/--exact (a la joey's "elmo") diff --git a/scripts/debian/ddtp-i18n-check.sh b/scripts/debian/ddtp-i18n-check.sh index 4d84e607..1d373645 100755 --- a/scripts/debian/ddtp-i18n-check.sh +++ b/scripts/debian/ddtp-i18n-check.sh @@ -1,9 +1,9 @@ #!/bin/bash # -# $Id: ddtp_i18n_check.sh 1186 2008-08-12 18:31:25Z faw $ +# $Id: ddtp_i18n_check.sh 1670 2009-03-31 20:57:49Z nekral-guest $ # # Copyright (C) 2008, Felipe Augusto van de Wiel -# Copyright (C) 2008, Nicolas François +# Copyright (C) 2008, 2009 Nicolas François # # 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 @@ -21,6 +21,65 @@ export LC_ALL=C # Otherwise, list all the errors. DEBUG=0 +# When DRY_RUN=0, generate the compressed version of the Translation-* +# files. +DRY_RUN=0 + +dists_parent_dir="" +# If no argument indicates the PACKAGES_LISTS_DIR then use '.' +PACKAGES_LISTS_DIR="" + +usage () { + echo "Usage: $0 [options] []" >&2 + echo "" >&2 + echo " --debug Debug mode: do not stop after the first error" >&2 + echo " --dry-run Do not generate the compressed version of the " >&2 + echo " Translation files">&2 + exit 1 +} + +# Parse options +for opt; do + case "$opt" in + "--debug") + DEBUG=1 + ;; + "--dry-run") + DRY_RUN=1 + ;; + "-*") + usage + ;; + "") + echo "Empty parameter" >&2 + echo "" >&2 + usage + ;; + *) + if [ -z "$dists_parent_dir" ]; then + # Removing trailing / + dists_parent_dir=${opt%/} + elif [ -z "$PACKAGES_LISTS_DIR" ]; then + PACKAGES_LISTS_DIR=$opt + else + echo "$0: Invalid option: $opt" >&2 + usage + fi + ;; + esac +done +PACKAGES_LISTS_DIR=${opt:-.} + +if [ ! -d "$dists_parent_dir" ]; then + echo "missing dists_parent_dir, or not a directory" >&2 + echo "" >&2 + usage +elif [ ! -d "$PACKAGES_LISTS_DIR" ]; then + echo "missing packages_lists_directory, or not a directory" >&2 + echo "" >&2 + usage +fi + #STABLE="lenny" TESTING="squeeze" UNSTABLE="sid" @@ -34,16 +93,6 @@ TIMESTAMP="timestamp" # These special files must exist on the top of dists_parent_dir SPECIAL_FILES="$SHA256SUMS $TIMESTAMP $TIMESTAMP.gpg" -usage () { - echo "Usage: $0 []" >&2 - exit 1 -} - -if [ "$#" -lt 1 ] || [ "$#" -gt 2 ] || [ ! -d $1 ] -then - usage -fi - # Temporary working directory. We need a full path to reduce the # complexity of checking SHA256SUMS and cleaning/removing TMPDIR TEMP_WORK_DIR=$(mktemp -d -t ddtp_dinstall_tmpdir.XXXXXX) @@ -52,25 +101,14 @@ TMP_WORK_DIR=$(pwd) cd "$OLDPWD" unset TEMP_WORK_DIR -# If it's traped, something bad happened. +# If it's trapped, something bad happened. trap_exit () { rm -rf "$TMP_WORK_DIR" - rm -f "$dists_parent_dir"/dists/*/main/i18n/Translation-*.{bz2,gz} + rm -f "$dists_parent_dir"/dists/*/main/i18n/Translation-*.bz2 exit 1 } trap trap_exit EXIT HUP INT QUIT TERM -# If no argument indicates the PACKAGES_LISTS_DIR then use '.' -PACKAGES_LISTS_DIR=${2:-.} - -if [ ! -d "$PACKAGES_LISTS_DIR" ] -then - usage -fi - -# Removing trailing / -dists_parent_dir=${1%/} - is_filename_okay () { ifo_file="$1" @@ -351,10 +389,10 @@ while read f; do # We do not check if the md5 in Translation-$lang are # correct. - # Now generate files - # Compress the file - bzip2 -c "$f" > "$f.bz2" - gzip -c "$f" > "$f.gz" + if [ "$DRY_RUN" = "0" ]; then + # Now generate the compressed files + bzip2 "$f" + fi else echo "Neither a file or directory: $f" >&2 exit 1 diff --git a/scripts/debian/expire_dumps b/scripts/debian/expire_dumps index 9fa6adeb..2907ba28 100755 --- a/scripts/debian/expire_dumps +++ b/scripts/debian/expire_dumps @@ -40,6 +40,7 @@ RULES = [ # keep 14 days, all each day # keep 31 days, 1 each 7th day # keep 365 days, 1 each 31th day + # keep 3650 days, 1 each 365th day ] TODAY = datetime.today() diff --git a/web/archive-criteria.html b/web/archive-criteria.html index 4f99ad0e..79bc6428 100644 --- a/web/archive-criteria.html +++ b/web/archive-criteria.html @@ -89,7 +89,7 @@
  • A newly included architecture has to be completely built using packages available in plain Debian sources. External patches cannot - be used.
  • + be used.
  • At the time of inclusion a minimal set of binary packages will be imported into the archive, just enough to get build-essential ready to @@ -102,7 +102,7 @@
  • There must be at least two machines ready to be maintained by the Debian System Administrators, so at the start of its - lifetime there will be at least one buildd and one porter machine.
    + lifetime there will be at least one buildd and one porter machine.
    The inclusion into the archive will almost certainly happen before the machines are handed over to DSA, but this should happen as @@ -110,7 +110,15 @@ (Note that this is the minimum to get into the archive. The release team may have additional requirements to allow the architecture to release, so - there would normally need to be more machines, especially more buildds.) + there would normally need to be more machines, especially more + buildds.)
    + + Note: The machines, their setup and hosting etc should be + coordinated with DSA and needs to be acceptable to DSA. Please + coordinate with + them, they might be able to help you in more ways + you can imagine, but at least they can help to avoid useless work + if a hosting wouldnt be acceptable. :)