]> git.decadent.org.uk Git - dak.git/commitdiff
Merge remote branch 'drkranz/make-changelog' into merge
authorJoerg Jaspert <joerg@debian.org>
Sun, 3 Oct 2010 13:20:04 +0000 (15:20 +0200)
committerJoerg Jaspert <joerg@debian.org>
Sun, 3 Oct 2010 13:20:04 +0000 (15:20 +0200)
* drkranz/make-changelog:
  Don't hardcode paths
  Check brit_file value, it can be None
  s/britney_changelog/changelog/
  Restore Changelogs config entry for compatibility purposes
  Update projectb with changelogs config values
  Define Britney changelog file from suite table
  make-changelog: drop useless -T command
  Define changelogs export path into projectb

Signed-off-by: Joerg Jaspert <joerg@debian.org>
config/debian/dak.conf
dak/control_suite.py
dak/dakdb/update39.py [new file with mode: 0644]
dak/make_changelog.py
dak/update_db.py
daklib/config.py

index 192a039b29f16bc6ed234aafbaad3e32f745ec6a..fbf186f4fb4e661e7c3e8ffa5eeb698ab4c660ab 100644 (file)
@@ -364,6 +364,7 @@ Dir
   Root "/srv/ftp-master.debian.org/ftp/";
   Pool "/srv/ftp-master.debian.org/ftp/pool/";
   Templates "/srv/ftp-master.debian.org/dak/templates/";
+  Export "/srv/ftp-master.debian.org/export/";
   PoolRoot "pool/";
   Lists "/srv/ftp-master.debian.org/database/dists/";
   Cache "/srv/ftp-master.debian.org/database/";
index 9eb8ae22ce379f6465d04a940ff2449a112606e1..c1c29dc29e096663148aa6819c52ac7b1e6a5695 100755 (executable)
@@ -98,6 +98,19 @@ def britney_changelog(packages, suite, session):
 
     old = {}
     current = {}
+    Cnf = utils.get_conf()
+
+    try:
+        q = session.execute("SELECT changelog FROM suite WHERE id = :suiteid", \
+                            {'suiteid': suite.suite_id})
+        brit_file = q.fetchone()[0]
+    except:
+        brit_file = None
+
+    if brit_file:
+        brit_file = os.path.join(Cnf['Dir::Root'], brit_file)
+    else:
+        return
 
     q = session.execute("""SELECT s.source, s.version, sa.id
                              FROM source s, src_associations sa
@@ -129,7 +142,7 @@ def britney_changelog(packages, suite, session):
     q = session.execute(query)
 
     pu = None
-    brit = utils.open_file(Config()["Changelogs::Britney"], 'w')
+    brit = utils.open_file(brit_file, 'w')
 
     for u in q:
         if pu and pu != u[0]:
diff --git a/dak/dakdb/update39.py b/dak/dakdb/update39.py
new file mode 100644 (file)
index 0000000..8086b51
--- /dev/null
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+# coding=utf8
+
+"""
+Move changelogs related config values into projectb
+
+@contact: Debian FTP Master <ftpmaster@debian.org>
+@copyright: 2010 Luca Falavigna <dktrkranz@debian.org>
+@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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+################################################################################
+
+import psycopg2
+from daklib.dak_exceptions import DBUpdateError
+
+################################################################################
+def do_update(self):
+    """
+    Move changelogs related config values into projectb
+    """
+    print __doc__
+    try:
+        c = self.db.cursor()
+        c.execute("INSERT INTO config(name, value) VALUES ('exportpath', 'changelogs')")
+        c.execute("ALTER TABLE suite ADD COLUMN changelog text NULL")
+        c.execute("UPDATE suite SET changelog = 'dists/testing/ChangeLog' WHERE suite_name = 'testing'")
+        c.execute("UPDATE config SET value = '39' WHERE name = 'db_revision'")
+        self.db.commit()
+
+    except psycopg2.ProgrammingError, msg:
+        self.db.rollback()
+        raise DBUpdateError, 'Unable to apply table-column update 39, rollback issued. Error message : %s' % (str(msg))
index 2f85c89b6eefa309dfe088c0fa567fbef0655d99..c9dfa7249439edf042d856514dfb1d6efab3367d 100755 (executable)
@@ -58,6 +58,7 @@ from re import split
 from shutil import rmtree
 from daklib.dbconn import *
 from daklib import utils
+from daklib.config import Config
 
 ################################################################################
 
@@ -67,7 +68,6 @@ def usage (exit_code=0):
        Usage:
        make-changelog -s <suite> -b <base_suite> [OPTION]...
        make-changelog -e
-       make-changelog -T
 
 Options:
 
@@ -76,9 +76,7 @@ Options:
   -b, --base-suite          suite to be taken as reference for comparison
   -n, --binnmu              display binNMUs uploads instead of source ones
 
-  -e, --export              export interesting files from source packages
-
-  -T, --testing             display changes entering testing"""
+  -e, --export              export interesting files from source packages"""
 
     sys.exit(exit_code)
 
@@ -154,26 +152,6 @@ 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:
@@ -260,14 +238,14 @@ def export_files(session, pool, clpool, temppath):
 
 def main():
     Cnf = utils.get_conf()
+    cnf = Config()
     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'),
-                 ('e','export','Make-Changelog::Options::export'),
-                 ('T', 'testing','Make-Changelog::Options::Testing')]
+                 ('e','export','Make-Changelog::Options::export')]
 
-    for i in ['help', 'suite', 'base-suite', 'binnmu', 'export', 'testing']:
+    for i in ['help', 'suite', 'base-suite', 'binnmu', 'export']:
         if not Cnf.has_key('Make-Changelog::Options::%s' % (i)):
             Cnf['Make-Changelog::Options::%s' % (i)] = ''
 
@@ -277,21 +255,22 @@ def main():
     base_suite = Cnf['Make-Changelog::Options::Base-Suite']
     binnmu = Cnf['Make-Changelog::Options::binNMU']
     export = Cnf['Make-Changelog::Options::export']
-    testing = Cnf['Make-Changelog::Options::Testing']
 
-    if Options['help'] or not (suite and base_suite) and not testing and not export:
+    if Options['help'] or not (suite and base_suite) and not export:
         usage()
 
     for s in suite, base_suite:
-        if not testing and not export and not get_suite(s):
+        if not export and not get_suite(s):
             utils.fubar('Invalid suite "%s"' % s)
 
     session = DBConn().session()
 
-    if testing:
-        display_changes(testing_summary(Cnf['Changelogs::Testing'], session), 1)
-    elif export:
-        export_files(session, Cnf['Dir::Pool'], Cnf['Changelogs::Export'], Cnf['Dir::TempPath'])
+    if export:
+        if cnf.exportpath:
+            cnf.exportpath = os.path.join(Cnf['Dir::Export'], cnf.exportpath)
+            export_files(session, Cnf['Dir::Pool'], cnf.exportpath, Cnf['Dir::TempPath'])
+        else:
+            utils.fubar('No changelog export path defined')
     elif binnmu:
         display_changes(get_binary_uploads(suite, base_suite, session), 3)
     else:
index 11e5b1e04f5b0a61817e6849bd52b9ff9afb3dee..19ce34dfc9e960ada013b3c4c1fa7e0928c5c214 100755 (executable)
@@ -45,7 +45,7 @@ from daklib.dak_exceptions import DBUpdateError
 ################################################################################
 
 Cnf = None
-required_database_schema = 38
+required_database_schema = 39
 
 ################################################################################
 
index 1c3f92ba5d41ec5b4bc9a64301be8bb1a23512a6..932df6b53c685a8149a53774b60f3299a4ba82d6 100755 (executable)
@@ -108,7 +108,8 @@ class Config(object):
         """
         for field in [('db_revision',      None,       int),
                       ('defaultsuitename', 'unstable', str),
-                      ('signingkeyids',    '',         str)
+                      ('signingkeyids',    '',         str),
+                      ('exportpath',       '',         str)
                       ]:
             setattr(self, 'get_%s' % field[0], lambda x=None: self.get_db_value(field[0], field[1], field[2]))
             setattr(Config, '%s' % field[0], property(fget=getattr(self, 'get_%s' % field[0])))