[dak/bpo] allow p-a and p-u to take a directory to parse themselves
This prevents any possible issues with maximum command line
lengths when using shell globbing.
Signed-off-by: Mark Hymers <mhy@debian.org>
---
config/debian/cron.unchecked | 2 +-
config/debian/dinstall | 2 +-
dak/process_accepted.py | 21 +++++++++++++++++++--
dak/process_unchecked.py | 20 ++++++++++++++++++--
4 files changed, 39 insertions(+), 6 deletions(-)
diff --git a/config/debian/cron.unchecked b/config/debian/cron.unchecked
index 41b6640..a2eb6d3 100755
--- a/config/debian/cron.unchecked
+++ b/config/debian/cron.unchecked
@@ -31,7 +31,7 @@ if lockfile -r3 $LOCKFILE; then
if [ ! -z "$changes" ]; then
echo "$timestamp": "$changes" >> $report
- dak process-unchecked -a $changes >> $report
+ dak process-unchecked -a -d /srv/ftp.debian.org/queue/unchecked >> $report
echo "--" >> $report
# sync with debbugs
diff --git a/config/debian/dinstall b/config/debian/dinstall
index d38503c..a4244e3 100755
--- a/config/debian/dinstall
+++ b/config/debian/dinstall
@@ -169,7 +169,7 @@ function accepted() {
log "Processing queue/accepted"
cd "$accepted"
rm -f REPORT
- dak process-accepted -pa *.changes > REPORT
+ dak process-accepted -pa -d /srv/ftp.debian.org/queue/accepted > REPORT
cat REPORT | mail -s "Install for $(date +"%D - %R")" ftpmaster@ftp-master.debian.org
chgrp debadmin REPORT
chmod 664 REPORT
diff --git a/dak/process_accepted.py b/dak/process_accepted.py
index d626db9..07d611d 100755
--- a/dak/process_accepted.py
+++ b/dak/process_accepted.py
@@ -162,9 +162,11 @@ def init():
('h',"help","Dinstall::Options::Help"),
('n',"no-action","Dinstall::Options::No-Action"),
('p',"no-lock", "Dinstall::Options::No-Lock"),
- ('s',"no-mail", "Dinstall::Options::No-Mail")]
+ ('s',"no-mail", "Dinstall::Options::No-Mail"),
+ ('d',"directory", "Dinstall::Options::Directory")]
- for i in ["automatic", "help", "no-action", "no-lock", "no-mail", "version"]:
+ for i in ["automatic", "help", "no-action", "no-lock", "no-mail",
+ "version", "directory"]:
if not Cnf.has_key("Dinstall::Options::%s" % (i)):
Cnf["Dinstall::Options::%s" % (i)] = ""
@@ -174,6 +176,21 @@ def init():
if Options["Help"]:
usage()
+ # If we have a directory flag, use it to find our files
+ if Cnf["Dinstall::Options::Directory"] != "":
+ # Note that we clobber the list of files we were given in this case
+ # so warn if the user has done both
+ if len(changes_files) > 0:
+ utils.warn("Directory provided so ignoring files given on command line")
+
+ dir = Cnf["Dinstall::Options::Directory"]
+ try:
+ # Much of the rest of p-a depends on being in the right place
+ os.chdir(dir)
+ changes_files = [x for x in os.listdir(dir) if x.endswith('.changes')]
+ except OSError, e:
+ utils.fubar("Failed to read list from directory %s (%s)" % (dir, e))
+
Upload = queue.Upload(Cnf)
projectB = Upload.projectB
diff --git a/dak/process_unchecked.py b/dak/process_unchecked.py
index 288563a..e045726 100755
--- a/dak/process_unchecked.py
+++ b/dak/process_unchecked.py
@@ -78,10 +78,11 @@ def init():
('h',"help","Dinstall::Options::Help"),
('n',"no-action","Dinstall::Options::No-Action"),
('p',"no-lock", "Dinstall::Options::No-Lock"),
- ('s',"no-mail", "Dinstall::Options::No-Mail")]
+ ('s',"no-mail", "Dinstall::Options::No-Mail"),
+ ('d',"directory", "Dinstall::Options::Directory")]
for i in ["automatic", "help", "no-action", "no-lock", "no-mail",
- "override-distribution", "version"]:
+ "override-distribution", "version", "directory"]:
Cnf["Dinstall::Options::%s" % (i)] = ""
changes_files = apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv)
@@ -90,6 +91,21 @@ def init():
if Options["Help"]:
usage()
+ # If we have a directory flag, use it to find our files
+ if Cnf["Dinstall::Options::Directory"] != "":
+ # Note that we clobber the list of files we were given in this case
+ # so warn if the user has done both
+ if len(changes_files) > 0:
+ utils.warn("Directory provided so ignoring files given on command line")
+
+ dir = Cnf["Dinstall::Options::Directory"]
+ try:
+ # Much of the rest of p-u depends on being in the right place
+ os.chdir(dir)
+ changes_files = [x for x in os.listdir(dir) if x.endswith('.changes')]
+ except OSError, e:
+ utils.fubar("Failed to read list from directory %s (%s)" % (dir, e))
+
Upload = queue.Upload(Cnf)
changes = Upload.pkg.changes
--
1.5.6.5
Reply to: