]> git.donarmstrong.com Git - dak.git/commitdiff
Merge branch 'master' into bpo
authorJoerg Jaspert <joerg@debian.org>
Sat, 4 Sep 2010 18:52:35 +0000 (20:52 +0200)
committerJoerg Jaspert <joerg@debian.org>
Sat, 4 Sep 2010 18:52:35 +0000 (20:52 +0200)
* master:
  Update
  remove leading /
  Put -print0 at end
  use the rowcount
  Fixup, its len(q)
  Real time
  changelog testing
  control_suite.py: fix britney changelog
  Add distribution to changelogs view
  Rotate the changelog, 4 copies
  control_suite.py: generate changelog for britney runs

config/debian/dak.conf
dak/control_suite.py
dak/dakdb/update35.py [new file with mode: 0644]
dak/queue_report.py
dak/update_db.py
docs/README.stable-point-release
scripts/debian/import_testing.sh

index 9f41d69d0f734c184b88e58ede36af51bde91002..1dd52a4e8e594c48b4977cc79d18e166c3524e43 100644 (file)
@@ -778,4 +778,5 @@ Common
 Changelogs
 {
   Testing "/srv/release.debian.org/tools/trille/current-testing";
+  Britney "/srv/ftp-master.debian.org/ftp/dists/testing/ChangeLog";
 }
index d8f8227b2320e4d8302670f4757a180c7a84a26e..9eb8ae22ce379f6465d04a940ff2449a112606e1 100755 (executable)
@@ -63,7 +63,8 @@ Display or alter the contents of a suite using FILE(s), or stdin.
   -h, --help                 show this help and exit
   -l, --list=SUITE           list the contents of SUITE
   -r, --remove=SUITE         remove from SUITE
-  -s, --set=SUITE            set SUITE"""
+  -s, --set=SUITE            set SUITE
+  -b, --britney              generate changelog entry for britney runs"""
 
     sys.exit(exit_code)
 
@@ -93,7 +94,59 @@ def get_id(package, version, architecture, session):
 
 #######################################################################################
 
-def set_suite(file, suite, session):
+def britney_changelog(packages, suite, session):
+
+    old = {}
+    current = {}
+
+    q = session.execute("""SELECT s.source, s.version, sa.id
+                             FROM source s, src_associations sa
+                            WHERE sa.suite = :suiteid
+                              AND sa.source = s.id""", {'suiteid': suite.suite_id})
+
+    for p in q.fetchall():
+        current[p[0]] = p[1]
+    for p in packages.keys():
+        p = p.split()
+        if p[2] == "source":
+            old[p[0]] = p[1]
+
+    new = {}
+    for p in current.keys():
+        if p in old.keys():
+            if apt_pkg.VersionCompare(current[p], old[p]) > 0:
+                new[p] = [current[p], old[p]]
+        else:
+            new[p] = [current[p], 0]
+
+    query =  "SELECT source, changelog FROM changelogs WHERE"
+    for p in new.keys():
+        query += " source = '%s' AND version > '%s' AND version <= '%s'" \
+                 % (p, new[p][1], new[p][0])
+        query += " AND architecture LIKE '%source%' AND distribution in \
+                  ('unstable', 'experimental', 'testing-proposed-updates') OR"
+    query += " False ORDER BY source, version DESC"
+    q = session.execute(query)
+
+    pu = None
+    brit = utils.open_file(Config()["Changelogs::Britney"], 'w')
+
+    for u in q:
+        if pu and pu != u[0]:
+            brit.write("\n")
+        brit.write("%s\n" % u[1])
+        pu = u[0]
+    if q.rowcount: brit.write("\n\n\n")
+
+    for p in list(set(old.keys()).difference(current.keys())):
+        brit.write("REMOVED: %s %s\n" % (p, old[p]))
+
+    brit.flush()
+    brit.close()
+
+#######################################################################################
+
+def set_suite(file, suite, session, britney=False):
     suite_id = suite.suite_id
     lines = file.readlines()
 
@@ -155,11 +208,14 @@ def set_suite(file, suite, session):
 
     session.commit()
 
+    if britney:
+        britney_changelog(current, suite, session)
+
 #######################################################################################
 
-def process_file(file, suite, action, session):
+def process_file(file, suite, action, session, britney=False):
     if action == "set":
-        set_suite(file, suite, session)
+        set_suite(file, suite, session, britney)
         return
 
     suite_id = suite.suite_id
@@ -262,12 +318,13 @@ def main ():
     cnf = Config()
 
     Arguments = [('a',"add","Control-Suite::Options::Add", "HasArg"),
+                 ('b',"britney","Control-Suite::Options::Britney"),
                  ('h',"help","Control-Suite::Options::Help"),
                  ('l',"list","Control-Suite::Options::List","HasArg"),
                  ('r',"remove", "Control-Suite::Options::Remove", "HasArg"),
                  ('s',"set", "Control-Suite::Options::Set", "HasArg")]
 
-    for i in ["add", "help", "list", "remove", "set", "version" ]:
+    for i in ["add", "britney", "help", "list", "remove", "set", "version" ]:
         if not cnf.has_key("Control-Suite::Options::%s" % (i)):
             cnf["Control-Suite::Options::%s" % (i)] = ""
 
@@ -305,15 +362,19 @@ def main ():
     if action == "set" and suite_name not in ["testing"]:
         utils.fubar("Will not reset suite %s" % (suite_name))
 
+    britney = False
+    if action == "set" and cnf["Control-Suite::Options::Britney"]:
+        britney = True
+
     if action == "list":
         get_list(suite, session)
     else:
         Logger = daklog.Logger(cnf.Cnf, "control-suite")
         if file_list:
             for f in file_list:
-                process_file(utils.open_file(f), suite, action, session)
+                process_file(utils.open_file(f), suite, action, session, britney)
         else:
-            process_file(sys.stdin, suite, action, session)
+            process_file(sys.stdin, suite, action, session, britney)
         Logger.close()
 
 #######################################################################################
diff --git a/dak/dakdb/update35.py b/dak/dakdb/update35.py
new file mode 100644 (file)
index 0000000..335d70e
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+# coding=utf8
+
+"""
+Add distribution to changelogs view
+
+@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):
+    """
+    Add distribution to changelogs view
+    """
+    print __doc__
+    try:
+        c = self.db.cursor()
+        c.execute('CREATE OR REPLACE VIEW changelogs AS SELECT cl.id, source, CAST(version AS debversion), architecture, \
+                   changelog, distribution FROM changes c JOIN changelogs_text cl ON cl.id = c.changelog_id')
+        c.execute("GRANT SELECT ON changelogs TO public")
+        c.execute("UPDATE config SET value = '35' WHERE name = 'db_revision'")
+        self.db.commit()
+
+    except psycopg2.ProgrammingError, msg:
+        self.db.rollback()
+        raise DBUpdateError, 'Unable to apply build_queue update 35, rollback issued. Error message : %s' % (str(msg))
index 84f6a22f23946139349199b27afa46f3597a7f52..e2d8578b8865a902ff32a308b52af97743b050c1 100755 (executable)
@@ -286,7 +286,7 @@ def table_row(source, version, arch, last_mod, maint, distribution, closes, fing
     print "<td class=\"package\">%s</td>" % (source)
     print "<td class=\"version\">"
     for vers in version.split():
-        print "<a href=\"/new/%s_%s.html\">%s</a><br/>" % (source, utils.html_escape(vers), utils.html_escape(vers))
+        print "<a href=\"new/%s_%s.html\">%s</a><br/>" % (source, utils.html_escape(vers), utils.html_escape(vers))
     print "</td>"
     print "<td class=\"arch\">%s</td>" % (arch)
     print "<td class=\"distribution\">"
index 1fc0cc62c8ae3b8605fc4db8e3bf0cc62c335b30..c6dc404b3b492c0bba2c05fde5864c2d238ecfde 100755 (executable)
@@ -45,7 +45,7 @@ from daklib.dak_exceptions import DBUpdateError
 ################################################################################
 
 Cnf = None
-required_database_schema = 34
+required_database_schema = 35
 
 ################################################################################
 
index b1e0d778201450f2e02ff9f9387b96c7e8718799..c906dabadf1a3b819c3bae183eba15739fb1e8a0 100644 (file)
@@ -3,6 +3,7 @@ Rough Guide to doing Stable Point Releases in Debian
 
 o Dump projectb for backup purposes.
 o get everything listed, dak control-suite -l proposed-updates > p-u.list
+o generate the changelog using dak make-changelog
 o add everything to stable:  cat p-u.list |dak control-suite --add stable
 o remove everything from proposed-updates, dak control-suite -r proposed-updates < p-u.list
 o sync with stable RM if there is any propup needed. do it, if so.
@@ -24,8 +25,8 @@ o Run 'dak generate-releases --force-touch --apt-conf apt.conf.stable stable'
 
 
 begin;
-update suite set version = '5.0.4' where suite_name = 'stable';
-update suite set description = 'Debian 5.0.4 Released 29 Januar 2010' where suite_name = 'stable';
+update suite set version = '5.0.6' where suite_name = 'stable';
+update suite set description = 'Debian 5.0.6 Released 04 September 2010' where suite_name = 'stable';
 
 ------------------------------------------------------------------------
 Old doc:
index 8eeff8445c9202397eddac34b4b40b06f5d64c5a..7ee29eabca8c7ea0cafc13c64683a0d340e88ae1 100755 (executable)
@@ -37,7 +37,13 @@ cd $masterdir
 echo "Importing new data for testing into projectb"
 
 # Now load the data
-cat $TESTINGINPUT | dak control-suite --set testing
+rm ${ftpdir}/dists/testing/ChangeLog
+cat ${TESTINGINPUT} | dak control-suite --set testing --britney
+NOW=$(date "+%Y%m%d%H%M")
+cd ${ftpdir}/dists/testing/
+mv ChangeLog ChangeLog.${NOW}
+ln -s ChangeLog.${NOW} ChangeLog
+find . -maxdepth 1 -mindepth 1 -type f -mmin +2880 -name 'ChangeLog.*' -print0 | xargs --no-run-if-empty -0 rm
 
 echo "Done"