]> git.donarmstrong.com Git - dak.git/commitdiff
Merge remote branch 'drkranz/make-changelog' into merge
authorJoerg Jaspert <joerg@debian.org>
Tue, 24 Aug 2010 19:31:43 +0000 (21:31 +0200)
committerJoerg Jaspert <joerg@debian.org>
Tue, 24 Aug 2010 19:31:43 +0000 (21:31 +0200)
* drkranz/make-changelog:
  make_changelog.py: fix newlines between entries
  make_changelog.py: display changes for packages entering testing

Signed-off-by: Joerg Jaspert <joerg@debian.org>
config/debian/dak.conf
dak/make_changelog.py

index 98da875cf185f2af03a8bda2bd9f1a52cbd44194..9f41d69d0f734c184b88e58ede36af51bde91002 100644 (file)
@@ -774,3 +774,8 @@ Common
   // The default number of threads for multithreading parts of dak:
   ThreadCount 16;
 }
+
+Changelogs
+{
+  Testing "/srv/release.debian.org/tools/trille/current-testing";
+}
index a6f4e192e72c14f9b43dece8b471595478b3afe3..0c08a44215bb8b7a8e18cdbcc6996529d11bb603 100755 (executable)
@@ -57,15 +57,19 @@ from daklib import utils
 ################################################################################
 
 def usage (exit_code=0):
-    print """Usage: make-changelog -s <suite> -b <base_suite> [OPTION]...
-Generate changelog between two suites
+    print """Generate changelog between two suites
+
+       Usage:
+       make-changelog -s <suite> -b <base_suite> [OPTION]...
+       make-changelog -T
 
 Options:
 
   -h, --help                show this help and exit
   -s, --suite               suite providing packages to compare
   -b, --base-suite          suite to be taken as reference for comparison
-  -n, --binnmu              display binNMUs uploads instead of source ones"""
+  -n, --binnmu              display binNMUs uploads instead of source ones
+  -T, --testing             display changes entering testing"""
 
     sys.exit(exit_code)
 
@@ -141,14 +145,43 @@ def get_binary_uploads(suite, base_suite, session):
 
     return session.execute(query, {'suite': suite, 'base_suite': base_suite})
 
+def testing_summary(summary, session):
+    """
+    Returns changes introduced in packages entering testing.
+    """
+
+    query =  'SELECT source, changelog FROM changelogs WHERE'
+    fd = open(summary, 'r')
+    for package in fd.read().splitlines():
+        package = package.split()
+        if package[1] != package[2]:
+            if package[1] == '(not_in_testing)':
+                package[1] = 0
+            query += " source = '%s' AND version > '%s' AND version <= '%s'" \
+                     % (package[0], package[1], package[2])
+            query += " AND architecture LIKE '%source%' OR"
+    fd.close()
+    query += ' False ORDER BY source, version DESC;'
+
+    return session.execute(query)
+
+def display_changes(uploads, index):
+    prev_upload = None
+    for upload in uploads:
+        if prev_upload and prev_upload != upload[0]:
+            print
+        print upload[index]
+        prev_upload = upload[0]
+
 def main():
     Cnf = utils.get_conf()
     Arguments = [('h','help','Make-Changelog::Options::Help'),
                  ('s','suite','Make-Changelog::Options::Suite','HasArg'),
                  ('b','base-suite','Make-Changelog::Options::Base-Suite','HasArg'),
-                 ('n','binnmu','Make-Changelog::Options::binNMU')]
+                 ('n','binnmu','Make-Changelog::Options::binNMU'),
+                 ('T', 'testing','Make-Changelog::Options::Testing')]
 
-    for i in ['help', 'suite', 'base-suite', 'binnmu']:
+    for i in ['help', 'suite', 'base-suite', 'binnmu', 'testing']:
         if not Cnf.has_key('Make-Changelog::Options::%s' % (i)):
             Cnf['Make-Changelog::Options::%s' % (i)] = ''
 
@@ -157,26 +190,25 @@ def main():
     suite = Cnf['Make-Changelog::Options::Suite']
     base_suite = Cnf['Make-Changelog::Options::Base-Suite']
     binnmu = Cnf['Make-Changelog::Options::binNMU']
+    testing = Cnf['Make-Changelog::Options::Testing']
 
-    if Options['help'] or not (suite and base_suite):
+    if Options['help'] or not (suite and base_suite) and not testing:
         usage()
 
     for s in suite, base_suite:
-        if not get_suite(s):
+        if not testing and not get_suite(s):
             utils.fubar('Invalid suite "%s"' % s)
 
     session = DBConn().session()
 
-    if binnmu:
-        uploads = get_binary_uploads(suite, base_suite, session)
-        session.commit()
-        for upload in uploads:
-            print upload[3] + "\n"
+    if testing:
+        display_changes(testing_summary(Cnf['Changelogs::Testing'], session), 1)
+    elif binnmu:
+        display_changes(get_binary_uploads(suite, base_suite, session), 3)
     else:
-        uploads = get_source_uploads(suite, base_suite, session)
-        session.commit()
-        for upload in uploads:
-            print upload[2] + "\n"
+        display_changes(get_source_uploads(suite, base_suite, session), 2)
+
+    session.commit()
 
 if __name__ == '__main__':
     main()