]> git.decadent.org.uk Git - dak.git/blob - config/debian/dinstall.functions
dinstall
[dak.git] / config / debian / dinstall.functions
1 # Timestamp. Used for dinstall stat graphs
2 function ts() {
3         echo "Archive maintenance timestamp ($1): $(date +%H:%M:%S)"
4 }
5
6 # Cleanup actions
7 function cleanup() {
8         rm -f ${LOCK_DAILY}
9         rm -f ${LOCK_ACCEPTED}
10 }
11
12 # If we error out this one is called, *FOLLOWED* by cleanup above
13 function onerror() {
14     ERRDATE=$(date "+%Y.%m.%d-%H:%M:%S")
15
16     subject="ATTENTION ATTENTION!"
17     if [ "${error}" = "false" ]; then
18         subject="${subject} (continued)"
19     else
20         subject="${subject} (interrupted)"
21     fi
22     subject="${subject} dinstall error at ${ERRDATE} in ${STAGEFILE} - (Be quiet, Brain, or I'll stab you with a Q-tip)"
23
24     cat "${STAGEFILE}.log" | mail -s "${subject}" -a "X-Debian: DAK" cron@ftp-master.debian.org
25 }
26
27 ########################################################################
28 # the actual dinstall functions follow                                 #
29 ########################################################################
30
31 # pushing merkels QA user, part one
32 function merkel1() {
33     log "Telling merkels QA user that we start dinstall"
34     ssh -2 -i ~dak/.ssh/push_merkel_qa  -o BatchMode=yes -o SetupTimeOut=90 -o ConnectTimeout=90 qa@merkel.debian.org sleep 1
35 }
36
37 # Create the postgres dump files
38 function pgdump_pre() {
39     log "Creating pre-daily-cron-job backup of projectb database..."
40     pg_dump projectb > $base/backup/dump_pre_$(date +%Y.%m.%d-%H:%M:%S)
41 }
42
43 function pgdump_post() {
44     log "Creating post-daily-cron-job backup of projectb database..."
45     cd $base/backup
46     POSTDUMP=$(date +%Y.%m.%d-%H:%M:%S)
47     pg_dump projectb > $base/backup/dump_$POSTDUMP
48     pg_dumpall --globals-only > $base/backup/dumpall_$POSTDUMP
49     ln -sf $base/backup/dump_$POSTDUMP current
50     ln -sf $base/backup/dumpall_$POSTDUMP currentall
51 }
52
53 # Load the dak-dev projectb
54 function pgdakdev() {
55     cd $base/backup
56     echo "drop database projectb" | psql -p 5433 template1
57         cat currentall | psql -p 5433 template1
58     createdb -p 5433 -T template0 projectb
59     fgrep -v '\connect' current | psql -p 5433 projectb
60 }
61
62 # Updating various files
63 function updates() {
64     log "Updating Bugs docu, Mirror list and mailing-lists.txt"
65     cd $configdir
66     $scriptsdir/update-bugdoctxt
67     $scriptsdir/update-mirrorlists
68     $scriptsdir/update-mailingliststxt
69     $scriptsdir/update-pseudopackages.sh
70 }
71
72 # Process (oldstable)-proposed-updates "NEW" queue
73 function punew_do() {
74     cd "${queuedir}/${1}"
75     date -u -R >> REPORT
76     dak process-new -a -C COMMENTS >> REPORT || true
77     echo >> REPORT
78 }
79 function punew() {
80     log "Doing automated p-u-new processing"
81     punew_do "$1"
82 }
83 function opunew() {
84     log "Doing automated o-p-u-new processing"
85     punew_do "$1"
86 }
87
88 # The first i18n one, syncing new descriptions
89 function i18n1() {
90     log "Synchronizing i18n package descriptions"
91     # First sync their newest data
92     cd ${scriptdir}/i18nsync
93     rsync -aq --delete --delete-after ddtp-sync:/does/not/matter . || true
94
95     # Now check if we still know about the packages for which they created the files
96     # is the timestamp signed by us?
97     if $(gpgv --keyring /srv/ftp.debian.org/s3kr1t/dot-gnupg/pubring.gpg timestamp.gpg timestamp); then
98         # now read it. As its signed by us we are sure the content is what we expect, no need
99         # to do more here. And we only test -d a directory on it anyway.
100         TSTAMP=$(cat timestamp)
101         # do we have the dir still?
102         if [ -d ${scriptdir}/i18n/${TSTAMP} ]; then
103             # Lets check!
104             if ${scriptsdir}/ddtp-i18n-check.sh . ${scriptdir}/i18n/${TSTAMP}; then
105                 # Yay, worked, lets copy around
106                 for dir in squeeze sid; do
107                     if [ -d dists/${dir}/ ]; then
108                         cd dists/${dir}/main/i18n
109                         rsync -aq --delete --delete-after  . ${ftpdir}/dists/${dir}/main/i18n/.
110                     fi
111                     cd ${scriptdir}/i18nsync
112                 done
113             else
114                 echo "ARRRR, bad guys, wrong files, ARRR"
115                 echo "Arf, Arf, Arf, bad guys, wrong files, arf, arf, arf" | mail -s "Don't you kids take anything. I'm watching you. I've got eye implants in the back of my head." debian-l10n-devel@lists.alioth.debian.org
116             fi
117         else
118             echo "ARRRR, missing the timestamp ${TSTAMP} directory, not updating i18n, ARRR"
119             echo "Arf, Arf, Arf, missing the timestamp ${TSTAMP} directory, not updating i18n, arf, arf, arf" | mail -s "Lisa, if you don't like your job you don't strike. You just go in every day and do it really half-assed. That's the American way." debian-l10n-devel@lists.alioth.debian.org
120         fi
121     else
122         echo "ARRRRRRR, could not verify our timestamp signature, ARRR. Don't mess with our files, i18n guys, ARRRRR."
123         echo "Arf, Arf, Arf, could not verify our timestamp signature, arf. Don't mess with our files, i18n guys, arf, arf, arf" | mail -s "You can't keep blaming yourself. Just blame yourself once, and move on." debian-l10n-devel@lists.alioth.debian.org
124     fi
125 }
126
127 function cruft() {
128     log "Checking for cruft in overrides"
129     dak check-overrides
130 }
131
132 function msfl() {
133     log "Generating suite file lists for apt-ftparchive"
134     dak make-suite-file-list
135 }
136
137 function fingerprints() {
138     log "Updating fingerprints"
139     dak import-keyring -L /srv/keyring.debian.org/keyrings/debian-keyring.gpg
140
141     OUTFILE=$(mktemp)
142     dak import-keyring --generate-users "%s" /srv/keyring.debian.org/keyrings/debian-maintainers.gpg >"${OUTFILE}"
143
144     if [ -s "${OUTFILE}" ]; then
145         /usr/sbin/sendmail -odq -oi -t -f envelope@ftp-master.debian.org <<EOF
146 From: Debian FTP Masters <ftpmaster@ftp-master.debian.org>
147 To: <debian-project@lists.debian.org>
148 Subject: Debian Maintainers Keyring changes
149 Content-Type: text/plain; charset=utf-8
150 MIME-Version: 1.0
151
152 The following changes to the debian-maintainers keyring have just been activated:
153
154 $(cat $OUTFILE)
155
156 Debian distribution maintenance software,
157 on behalf of the Keyring maintainers
158
159 EOF
160     fi
161     rm -f "$OUTFILE"
162 }
163
164 function overrides() {
165     log "Writing overrides into text files"
166     cd $overridedir
167     dak make-overrides
168
169     # FIXME
170     rm -f override.sid.all3
171     for i in main contrib non-free main.debian-installer; do cat override.sid.$i >> override.sid.all3; done
172 }
173
174 function mpfm() {
175     log "Generating package / file mapping"
176     dak make-pkg-file-mapping | bzip2 -9 > $base/ftp/indices/package-file.map.bz2
177 }
178
179 function packages() {
180     log "Generating Packages and Sources files"
181     cd $configdir
182     GZIP='--rsyncable' ; export GZIP
183     apt-ftparchive generate apt.conf
184 }
185
186 function pdiff() {
187     log "Generating pdiff files"
188     dak generate-index-diffs
189 }
190
191 function release() {
192     log "Generating Release files"
193     dak generate-releases
194 }
195
196 function dakcleanup() {
197     log "Cleanup old packages/files"
198     dak clean-suites -m 10000
199     dak clean-queues
200 }
201
202 function buildd() {
203     # Needs to be rebuilt, as files have moved.  Due to unaccepts, we need to
204     # update this before wanna-build is updated.
205     log "Regenerating wanna-build/buildd information"
206     psql projectb -A -t -q -c "SELECT build_queue.path || '/' || build_queue_files.filename FROM build_queue_files LEFT JOIN build_queue ON (build_queue.id =build_queue_files.build_queue_id) WHERE queue_name = 'buildd' AND filename ~ 'd(sc|eb)$'"  > $dbdir/dists/unstable_accepted.list
207     symlinks -d /srv/incoming.debian.org/buildd > /dev/null
208     apt-ftparchive generate apt.conf.buildd
209 }
210
211 function buildd_dir() {
212     # Rebuilt the buildd dir to avoid long times of 403
213     log "Regenerating the buildd incoming dir"
214     STAMP=$(date "+%Y%m%d%H%M")
215     make_buildd_dir
216 }
217
218 function mklslar() {
219     cd $ftpdir
220
221     FILENAME=ls-lR
222
223     log "Removing any core files ..."
224     find -type f -name core -print0 | xargs -0r rm -v
225
226     log "Checking permissions on files in the FTP tree ..."
227     find -type f \( \! -perm -444 -o -perm +002 \) -ls
228     find -type d \( \! -perm -555 -o -perm +002 \) -ls
229
230     log "Checking symlinks ..."
231     symlinks -rd .
232
233     log "Creating recursive directory listing ... "
234     rm -f .${FILENAME}.new
235     TZ=UTC ls -lR > .${FILENAME}.new
236
237     if [ -r ${FILENAME}.gz ] ; then
238         mv -f ${FILENAME}.gz ${FILENAME}.old.gz
239         mv -f .${FILENAME}.new ${FILENAME}
240         rm -f ${FILENAME}.patch.gz
241         zcat ${FILENAME}.old.gz | diff -u - ${FILENAME} | gzip --rsyncable -9cfn - >${FILENAME}.patch.gz
242         rm -f ${FILENAME}.old.gz
243     else
244         mv -f .${FILENAME}.new ${FILENAME}
245     fi
246
247     gzip --rsyncable -9cfN ${FILENAME} >${FILENAME}.gz
248     rm -f ${FILENAME}
249 }
250
251 function mkmaintainers() {
252     log -n 'Creating Maintainers index ... '
253
254     cd $indices
255     dak make-maintainers ${scriptdir}/masterfiles/pseudo-packages.maintainers | \
256         sed -e "s/~[^  ]*\([   ]\)/\1/"  | awk '{printf "%-20s ", $1; for (i=2; i<=NF; i++) printf "%s ", $i; printf "\n";}' > .new-maintainers
257
258     set +e
259     cmp .new-maintainers Maintainers >/dev/null
260     rc=$?
261     set -e
262     if [ $rc = 1 ] || [ ! -f Maintainers ] ; then
263             log -n "installing Maintainers ... "
264             mv -f .new-maintainers Maintainers
265             gzip --rsyncable -9v <Maintainers >.new-maintainers.gz
266             mv -f .new-maintainers.gz Maintainers.gz
267     elif [ $rc = 0 ] ; then
268             log '(same as before)'
269             rm -f .new-maintainers
270     else
271             log cmp returned $rc
272             false
273     fi
274 }
275
276 function copyoverrides() {
277     log 'Copying override files into public view ...'
278
279     for f in $copyoverrides ; do
280             cd $overridedir
281             chmod g+w override.$f
282
283             cd $indices
284             rm -f .newover-$f.gz
285             pc="`gzip 2>&1 -9nv <$overridedir/override.$f >.newover-$f.gz`"
286             set +e
287             nf=override.$f.gz
288             cmp -s .newover-$f.gz $nf
289             rc=$?
290             set -e
291         if [ $rc = 0 ]; then
292                     rm -f .newover-$f.gz
293             elif [ $rc = 1 -o ! -f $nf ]; then
294                     log "   installing new $nf $pc"
295                     mv -f .newover-$f.gz $nf
296                     chmod g+w $nf
297             else
298                     log $? $pc
299                     exit 1
300             fi
301     done
302 }
303
304 function mkfilesindices() {
305     umask 002
306     cd $base/ftp/indices/files/components
307
308     ARCHLIST=$(tempfile)
309
310     log "Querying projectb..."
311     echo 'SELECT l.path, f.filename, a.arch_string FROM location l JOIN files f ON (f.location = l.id) LEFT OUTER JOIN (binaries b JOIN architecture a ON (b.architecture = a.id)) ON (f.id = b.file)' | psql projectb -At | sed 's/|//;s,^/srv/ftp.debian.org/ftp,.,' | sort >$ARCHLIST
312
313     includedirs () {
314         perl -ne 'print; while (m,/[^/]+$,) { $_=$`; print $_ . "\n" unless $d{$_}++; }'
315     }
316     poolfirst () {
317         perl -e '@nonpool=(); while (<>) { if (m,^\./pool/,) { print; } else { push @nonpool, $_; } } print for (@nonpool);'
318     }
319
320     log "Generating sources list
321     (
322         sed -n 's/|$//p' $ARCHLIST
323         cd $base/ftp
324         find ./dists -maxdepth 1 \! -type d
325         find ./dists \! -type d | grep "/source/"
326     ) | sort -u | gzip --rsyncable -9 > source.list.gz
327
328     log "Generating arch lists
329
330     ARCHES=$( (<$ARCHLIST sed -n 's/^.*|//p'; echo amd64) | grep . | grep -v all | sort -u)
331     for a in $ARCHES; do
332         (sed -n "s/|$a$//p" $ARCHLIST
333             sed -n 's/|all$//p' $ARCHLIST
334
335             cd $base/ftp
336             find ./dists -maxdepth 1 \! -type d
337             find ./dists \! -type d | grep -E "(proposed-updates.*_$a.changes$|/main/disks-$a/|/main/installer-$a/|/Contents-$a|/binary-$a/)"
338         ) | sort -u | gzip --rsyncable -9 > arch-$a.list.gz
339     done
340
341     log "Generating suite lists"
342
343     suite_list () {
344         printf 'SELECT DISTINCT l.path, f.filename FROM (SELECT sa.source AS source FROM src_associations sa WHERE sa.suite = %d UNION SELECT b.source AS source FROM bin_associations ba JOIN binaries b ON (ba.bin = b.id) WHERE ba.suite = %d) s JOIN dsc_files df ON (s.source = df.source) JOIN files f ON (df.file = f.id) JOIN location l ON (f.location = l.id)\n' $1 $1 | psql -F' ' -A -t projectb
345
346         printf 'SELECT l.path, f.filename FROM bin_associations ba JOIN binaries b ON (ba.bin = b.id) JOIN files f ON (b.file = f.id) JOIN location l ON (f.location = l.id) WHERE ba.suite = %d\n' $1 | psql -F' ' -A -t projectb
347     }
348
349     printf 'SELECT id, suite_name FROM suite\n' | psql -F' ' -At projectb |
350     while read id suite; do
351         [ -e $base/ftp/dists/$suite ] || continue
352         (
353             (cd $base/ftp
354                 distname=$(cd dists; readlink $suite || echo $suite)
355                 find ./dists/$distname \! -type d
356                 for distdir in ./dists/*; do
357                     [ "$(readlink $distdir)" != "$distname" ] || echo $distdir
358                 done
359             )
360             suite_list $id | tr -d ' ' | sed 's,^/srv/ftp.debian.org/ftp,.,'
361         ) | sort -u | gzip --rsyncable -9 > suite-${suite}.list.gz
362     done
363
364     log "Finding everything on the ftp site to generate sundries"
365
366     (cd $base/ftp; find . \! -type d \! -name 'Archive_Maintenance_In_Progress' | sort) >$ARCHLIST
367
368     rm -f sundries.list
369     zcat *.list.gz | cat - *.list | sort -u |
370     diff - $ARCHLIST | sed -n 's/^> //p' > sundries.list
371
372     log "Generating files list"
373
374     for a in $ARCHES; do
375         (echo ./project/trace; zcat arch-$a.list.gz source.list.gz) |
376         cat - sundries.list dists.list project.list docs.list indices.list |
377         sort -u | poolfirst > ../arch-$a.files
378     done
379
380     (cd $base/ftp/
381             for dist in sid squeeze; do
382                     find ./dists/$dist/main/i18n/ \! -type d | sort -u | gzip --rsyncable -9 > $base/ftp/indices/files/components/translation-$dist.list.gz
383             done
384     )
385
386     (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) |
387     sort -u | poolfirst > ../typical.files
388
389     rm -f $ARCHLIST
390     log "Done!"
391 }
392
393 function mkchecksums() {
394     dsynclist=$dbdir/dsync.list
395     md5list=$indices/md5sums
396
397     log -n "Creating md5 / dsync index file ... "
398
399     cd "$ftpdir"
400     ${bindir}/dsync-flist -q generate $dsynclist --exclude $dsynclist --md5
401     ${bindir}/dsync-flist -q md5sums $dsynclist | gzip -9n --rsyncable > ${md5list}.gz
402     ${bindir}/dsync-flist -q link-dups $dsynclist || true
403 }
404
405 function scripts() {
406     log "Running various scripts from $scriptsdir"
407     mkmaintainers
408     copyoverrides
409     mklslar
410     mkfilesindices
411     mkchecksums
412 }
413
414 function mirror() {
415     log "Regenerating \"public\" mirror/ hardlink fun"
416     cd ${mirrordir}
417     rsync -aH --link-dest ${ftpdir} --delete --delete-after --ignore-errors ${ftpdir}/. .
418 }
419
420 function wb() {
421     log "Trigger daily wanna-build run"
422     ssh -o BatchMode=yes -o SetupTimeOut=90 -o ConnectTimeout=90 wbadm@buildd /org/wanna-build/trigger.daily || echo "W-B trigger.daily failed" | mail -s "W-B Daily trigger failed" ftpmaster@ftp-master.debian.org
423 }
424
425 function expire() {
426     log "Expiring old database dumps..."
427     cd $base/backup
428     $scriptsdir/expire_dumps -d . -p -f "dump_*"
429 }
430
431 function transitionsclean() {
432     log "Removing out of date transitions..."
433     cd $base
434     dak transitions -c -a
435 }
436
437 function reports() {
438     # Send a report on NEW/BYHAND packages
439     log "Nagging ftpteam about NEW/BYHAND packages"
440     dak queue-report | mail -e -s "NEW and BYHAND on $(date +%D)" ftpmaster@ftp-master.debian.org
441     # and one on crufty packages
442     log "Sending information about crufty packages"
443     dak cruft-report > $webdir/cruft-report-daily.txt
444     dak cruft-report -s experimental >> $webdir/cruft-report-daily.txt
445     cat $webdir/cruft-report-daily.txt | mail -e -s "Debian archive cruft report for $(date +%D)" ftpmaster@ftp-master.debian.org
446 }
447
448 function dm() {
449     log "Updating DM html page"
450     $scriptsdir/dm-monitor >$webdir/dm-uploaders.html
451 }
452
453 function bts() {
454     log "Categorizing uncategorized bugs filed against ftp.debian.org"
455     dak bts-categorize
456 }
457
458 function merkel2() {
459     # Push dak@merkel so it syncs the projectb there. Returns immediately, the sync runs detached
460     log "Trigger merkel/flotows projectb sync"
461     ssh -2 -o BatchMode=yes -o SetupTimeOut=30 -o ConnectTimeout=30 -i ~/.ssh/push_merkel_projectb dak@merkel.debian.org sleep 1
462     # Also trigger flotow, the ftpmaster test box
463     ssh -2 -o BatchMode=yes -o SetupTimeOut=30 -o ConnectTimeout=30 -i ~/.ssh/push_flotow_projectb dak@flotow.debconf.org sleep 1
464 }
465
466 function merkel3() {
467     # Push dak@merkel to tell it to sync the dd accessible parts. Returns immediately, the sync runs detached
468     log "Trigger merkels dd accessible parts sync"
469     ssh -2 -o BatchMode=yes -o SetupTimeOut=30 -o ConnectTimeout=30 -i ~/.ssh/push_merkel_ddaccess dak@merkel.debian.org sleep 1
470 }
471
472 function mirrorpush() {
473     log "Starting the mirrorpush"
474     date -u > /srv/ftp.debian.org/web/mirrorstart
475     echo "Using dak v1" >> /srv/ftp.debian.org/web/mirrorstart
476     echo "Running on host $(hostname -f)" >> /srv/ftp.debian.org/web/mirrorstart
477     sudo -H -u archvsync /home/archvsync/runmirrors > ~dak/runmirrors.log 2>&1 &
478 }
479
480 function i18n2() {
481     log "Exporting package data foo for i18n project"
482     STAMP=$(date "+%Y%m%d%H%M")
483     mkdir -p ${scriptdir}/i18n/${STAMP}
484     cd ${scriptdir}/i18n/${STAMP}
485     dak control-suite -l stable > lenny
486     dak control-suite -l testing > squeeze
487     dak control-suite -l unstable > sid
488     echo "${STAMP}" > timestamp
489     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 55BE302B --detach-sign -o timestamp.gpg timestamp
490     rm -f md5sum
491     md5sum * > md5sum
492     cd ${webdir}/
493     ln -sfT ${scriptdir}/i18n/${STAMP} i18n
494
495     cd ${scriptdir}
496     find ./i18n -mindepth 1 -maxdepth 1 -mtime +2 -not -name "${STAMP}" -type d -print0 | xargs --no-run-if-empty -0 rm -rf
497 }
498
499 function stats() {
500     log "Updating stats data"
501     cd $configdir
502     $scriptsdir/update-ftpstats $base/log/* > $base/misc/ftpstats.data
503     R --slave --vanilla < $base/misc/ftpstats.R
504     dak stats arch-space > $webdir/arch-space
505     dak stats pkg-nums > $webdir/pkg-nums
506 }
507
508 function aptftpcleanup() {
509     log "Clean up apt-ftparchive's databases"
510     cd $configdir
511     apt-ftparchive -q clean apt.conf
512 }
513
514 function compress() {
515     log "Compress old psql backups"
516     cd $base/backup/
517     find -maxdepth 1 -mindepth 1 -type f -name 'dump_pre_*' -mtime +2 -print0 | xargs -0 --no-run-if-empty rm
518
519     find -maxdepth 1 -mindepth 1 -type f -name 'dump_*' \! -name '*.bz2' \! -name '*.gz' -mmin +720 |
520     while read dumpname; do
521         echo "Compressing $dumpname"
522         bzip2 -9fv "$dumpname"
523     done
524     find -maxdepth 1 -mindepth 1 -type f -name "dumpall_*" \! -name '*.bz2' \! -name '*.gz' -mmin +720 |
525     while read dumpname; do
526         echo "Compressing $dumpname"
527         bzip2 -9fv "$dumpname"
528     done
529     finddup -l -d $base/backup
530 }
531
532 function logstats() {
533     $masterdir/tools/logs.py "$1"
534 }
535
536 # save timestamp when we start
537 function savetimestamp() {
538         NOW=`date "+%Y.%m.%d-%H:%M:%S"`
539         echo ${NOW} > "${dbdir}/dinstallstart"
540 }
541
542 function maillogfile() {
543     cat "$LOGFILE" | mail -s "Log for dinstall run of ${NOW}" cron@ftp-master.debian.org
544 }
545
546 function renamelogfile() {
547     if [ -f "${dbdir}/dinstallstart" ]; then
548         NOW=$(cat "${dbdir}/dinstallstart")
549 #        maillogfile
550         mv "$LOGFILE" "$logdir/dinstall_${NOW}.log"
551         logstats "$logdir/dinstall_${NOW}.log"
552         bzip2 -9 "$logdir/dinstall_${NOW}.log"
553     else
554         error "Problem, I don't know when dinstall started, unable to do log statistics."
555         NOW=`date "+%Y.%m.%d-%H:%M:%S"`
556 #        maillogfile
557         mv "$LOGFILE" "$logdir/dinstall_${NOW}.log"
558         bzip2 -9 "$logdir/dinstall_${NOW}.log"
559     fi
560 }
561
562 function testingsourcelist() {
563     dak ls -s testing -f heidi -r .| egrep 'source$' > ${webdir}/testing.list
564 }
565
566 # do a last run of process-unchecked before dinstall is on.
567 function process_unchecked() {
568     log "Processing the unchecked queue"
569     UNCHECKED_WITHOUT_LOCK="-p"
570     do_unchecked
571     sync_debbugs
572 }