]> git.decadent.org.uk Git - dak.git/blobdiff - dak/contents.py
Rewrite 'dak contents bootstrap_bin' to use ContentsScanner.
[dak.git] / dak / contents.py
index 23c160a3b1576ee57745269aaa3de7f12d3f8803..e292ac91a9b806701897f960bdad8d3314c00431 100755 (executable)
@@ -48,6 +48,10 @@ from daklib import utils
 from daklib.binary import Binary
 from daklib.config import Config
 from daklib.dbconn import *
+from daklib.contents import ContentsScanner
+from daklib import daklog
+
+Logger = None
 
 ################################################################################
 
@@ -79,6 +83,9 @@ OPTIONS
 
      -s, --suite={stable,testing,unstable,...}
         only operate on a single suite
+
+     -l, --limit=NUMBER
+        optional package limit for bootstrap_bin
 """
     sys.exit(exit_code)
 
@@ -267,12 +274,10 @@ class ContentFile(object):
         """
         opens a gzip stream to the contents file
         """
-#        filepath = Config()["Contents::Root"] + self.filename
-        self.filename = "/home/stew/contents/" + self.filename
+        filepath = Config()["Contents::Root"] + self.filename
         filedir = os.path.dirname(self.filename)
         if not os.path.isdir(filedir):
             os.makedirs(filedir)
-#        self.filehandle = gzip.open(self.filename, "w")
         self.filehandle = open(self.filename, "w")
         self._write_header()
 
@@ -470,7 +475,7 @@ class Contents(object):
         Generate contents files for both deb and udeb
         """
         self.deb_generate()
-#        self.udeb_generate()
+        self.udeb_generate()
 
     def deb_generate(self):
         """
@@ -596,8 +601,7 @@ class Contents(object):
         if Config().has_key( "%s::%s" %(options_prefix,"Suite")):
             suites = utils.split_args(Config()[ "%s::%s" %(options_prefix,"Suite")])
         else:
-            suites = [ 'unstable', 'testing' ]
-#            suites = Config().SubTree("Suite").List()
+            suites = Config().SubTree("Suite").List()
 
         return suites
 
@@ -624,6 +628,12 @@ class Contents(object):
         return arch_list
 
 
+def scan_all(limit):
+    result = ContentsScanner.scan_all(limit)
+    processed = '%(processed)d packages processed' % result
+    remaining = '%(remaining)d packages remaining' % result
+    Logger([processed, remaining])
+
 ################################################################################
 
 def main():
@@ -631,11 +641,12 @@ def main():
 
     arguments = [('h',"help", "%s::%s" % (options_prefix,"Help")),
                  ('s',"suite", "%s::%s" % (options_prefix,"Suite"),"HasArg"),
+                 ('l',"limit", "%s::%s" % (options_prefix,"Limit"),"HasArg"),
                  ('q',"quiet", "%s::%s" % (options_prefix,"Quiet")),
                  ('v',"verbose", "%s::%s" % (options_prefix,"Verbose")),
                 ]
 
-    commands = {'generate' : Contents.deb_generate,
+    commands = {'generate' : Contents.generate,
                 'bootstrap_bin' : Contents.bootstrap_bin,
                 'bootstrap' : Contents.bootstrap,
                 'cruft' : Contents.cruft,
@@ -661,6 +672,16 @@ def main():
                          format='%(asctime)s %(levelname)s %(message)s',
                          stream = sys.stderr )
 
+    global Logger
+    Logger = daklog.Loggor(cnf.Conf, 'contents')
+
+    limit = None
+    if cnf.has_key("%s::%s" % (options_prefix,"Limit")):
+        limit = cnf["%s::%s" % (options_prefix,"Limit")]
+    if args[0] == 'bootstrap_bin':
+        scan_all(limit)
+        return
+
     commands[args[0]](Contents())
 
 def which_suites(session):