]> git.decadent.org.uk Git - dak.git/commitdiff
Merge Myons patch to write the changed-by information into the database
authorJoerg Jaspert <joerg@debian.org>
Wed, 23 Apr 2008 19:02:56 +0000 (21:02 +0200)
committerJoerg Jaspert <joerg@debian.org>
Wed, 23 Apr 2008 19:02:56 +0000 (21:02 +0200)
1  2 
ChangeLog
dak/process_accepted.py
setup/init_pool.sql

diff --combined ChangeLog
index 8b132e72ced87f40b23e1cd44fecbfe98f26010d,528a368cbf3afbd0073bbe924032b985868c7cc3..4f72b591b03c7149670fdaf491d3b3fc78a90a48
+++ b/ChangeLog
 +2008-04-22  Joerg Jaspert  <joerg@debian.org>
 +
 +      * setup/init_pool.sql: added a function/aggregate for the release
 +      team to base some script on it.
 +
 +      * config/debian/cron.daily: push katie@merkel to immediately start
 +      the sync of projectb there.
 +
 +2008-04-21  Joerg Jaspert  <joerg@debian.org>
 +
 +      * scripts/debian/expire_dumps: New script, expires old database
 +      dumps, using a scheme to keep more of the recent dumps.
 +
 +      * config/debian/cron.daily: Use the new script. Also - compress
 +      all files older than 7 days, instead of 30. 
 +
 +      * dak/process_accepted.py (install): Do not break if a
 +      source/maintainer combination is already in src_uploaders, "just"
 +      warn us.
 +
 +2008-04-20  Thomas Viehmann  <tviehmann@debian.org>
 +
 +      * daklib/utils.py (build_file_list): Deal with "Format 3 style"
 +      Format lines (ie. those having extra text appended).
 +
 +2008-04-18  Joerg Jaspert  <joerg@debian.org>
 +
 +      * config/debian/dak.conf: Add mapping stable-proposed-updates
 +        -> proposed-updates.
 +
 +      * dak/transitions.py (load_transitions): Additionally check for
 +      invalid package list indentation
 +
 +2008-04-17  Joerg Jaspert  <joerg@debian.org>
 +
 +      * config/debian/dak.conf: Add TempPath statement for the Release
 +      Transitions script
 +
 +      * dak/transitions.py (temp_transitions_file): Use the TempPath
 +      (write_transitions_from_file): Check if the file we should get our
 +      transitions from is in our TempPath, error out if it isnt
 +      (main): Check for TempPath existance
 +
 +2008-04-12  James Troup  <troup@debian.org>
 +
 +      * dak/clean_proposed_updates.py: add support for -s/--suite and
 +      -n/--no-action.
 +
 +2008-04-11  Anthony Towns  <ajt@debian.org>
 +
 +      * dak/utils.py: build_file_list() extra parameters so it can
 +      build a file list for checksums-foo fields. Don't use float() to
 +      compare formats, because Format: 1.10 should compare greater than
 +      Format: 1.9 (use "1.9".split(".",1) and tuple comparison instead)
 +
 +      * dak/process_unchecked.py: check_md5sum becomes check_hashes
 +      and check_hash. If changes format is 1.8 or later, also check
 +      checksums-sha1 and checksums-sha256 for both .changes and .dsc,
 +      and reject on presence/absence of un/expected checksums-* fields.
 +
 +2008-04-07  Joerg Jaspert  <joerg@debian.org>
 +
 +      * daklib/utils.py (build_file_list): Check for dpkg .changes
 +      adjusted to reject newer (and right now broken) 1.8 version, until
 +      dpkg (or debsign) is fixed and doesn't produce invalid .changes anymore
 +
 +2008-03-22  Joerg Jaspert  <joerg@debian.org>
 +
 +      * dak/transitions.py (load_transitions): Check if all our keys are
 +      defined, if there are only keys defined we want and also the types
 +      of the various keys.
 +
 +2008-03-22  Anthony Towns  <ajt@debian.org>
 +
 +      * dak/edit_transitions.py: Add --import option.
 +      Add --use-sudo option. Use fcntl locking for writing.
 +      Move writing into a function (write_transitions).
 +      Reinvoke self using sudo and --import if necessary.
 +      Move temporary file creation into a function, use mkstemp.
 +      Rename to "dak transitions".
 +
 +2008-03-21  Joerg Jaspert  <joerg@debian.org>
 +
 +      * dak/edit_transitions.py (edit_transitions): Use sudo to copy the
 +      edited file back in place
 +      (check_transitions): Use proper locking and also use sudo to copy
 +      the new file in place
 +
 +2008-03-21  Anthony Towns <ajt@debian.org>
 +
 +      * config/debian/extensions.py: Add infrastructure for replacing
 +      functions in dak modules; add upload blocking for dpkg.
 +
 +2008-03-12  Joerg Jaspert  <joerg@debian.org>
 +
 +      * dak/edit_transitions.py: Done a number of cleanups to make code
 +      working. Also changed the way prompting/answering goes, to not
 +      have to import daklib/queue.
 +      (edit_transitions): When done with a successful edit - also print
 +      a final overview about defined transitions
 +
 +2008-03-11  Joerg Jaspert  <joerg@debian.org>
 +
 +      * dak/process_unchecked.py: Import syck module directly, not "from
 +      syck import *"
 +      (check_transition): Do the check for sourceful upload in here
 +      Also adjust the syck loading commands, rename new_vers to
 +      expected, curvers to current, to make it more clear what they mean.
 +
 +      * daklib/database.py (get_suite_version): Renamed from
 +      get_testing_version. Also changed the cache variables name
 +
 +      * The above changes are based on modifications from Anthony.
 +
 +      * dak/dak.py (init): Renamed check -> edit transitions
 +
 +      * dak/edit_transitions.py: Renamed from check_transitions.py
 +      (main): Also rename new_vers/curvers to expected/current
 +      Basically a nice rewrite, so it now does checks and edit,
 +      depending on how you call it. Check also removes old transitions,
 +      if user wants it.
 +
 +2008-03-02  Joerg Jaspert  <joerg@debian.org>
 +
 +      * debian/control (Suggests): Add python-syck to Depends:
 +
 +      * dak/dak.py (init): Tell it about check_transitions
 +
 +      * dak/check_transitions.py (usage): Added, checks the transitions
 +      file (if any)
 +
 +      * daklib/database.py (get_testing_version): Added. Returns the
 +      version for the source in testing, if any
 +
 +      * dak/process_unchecked.py (check_transition): Added. Checks if a
 +      release team member defined a transition, and rejects based on
 +      that data.
 +      (process_it): Use it.
 +      (check_transition): Warn on broken transitions file and return,
 +      not doing anything.
 +      (check_transition): Moved out of here, into daklib/queue
 +      (process_it): Call check_transitions only if
 +      changes[architecture] has source included.
 +      (check_transition): Now call the database.get_testing_version
 +
  2008-02-09  Christoph Berg <myon@debian.org>
  
 +      * daklib/queue.py (get_type): fubar does not exist in global
 +      namespace.
 +
+       * setup/add_constraints.sql setup/init_pool.sql: Add changedby column
+       to source table, and move src_uploaders after source so the REFERNCES
+       clause works.
+       * dak/process_accepted.py (install): Fill the changedby column from
+       the information found in the .changes. This will allow to identify
+       NMUs and sponsored uploads more precisely in tools querying projectb.
+       * scripts/debian/insert_missing_changedby.py: Script to import yet
+       missing fields from filippo's uploads-history DB.
  2008-02-06  Joerg Jaspert  <joerg@debian.org>
  
        * daklib/utils.py (check_signature): Make variable key available,
diff --combined dak/process_accepted.py
index 90edaf55d2e73f1ad3f53a5452b9461e7f1fc44e,3c40b97ba8191393fde693a06769236bb822751c..86396832e741e864fb8355ce976d06927235efd6
@@@ -281,6 -281,9 +281,9 @@@ def install ()
              maintainer = dsc["maintainer"]
              maintainer = maintainer.replace("'", "\\'")
              maintainer_id = daklib.database.get_or_set_maintainer_id(maintainer)
+             changedby = changes["changed-by"]
+             changedby = changedby.replace("'", "\\'")
+             changedby_id = daklib.database.get_or_set_maintainer_id(changedby)
              fingerprint_id = daklib.database.get_or_set_fingerprint_id(dsc["fingerprint"])
              install_date = time.strftime("%Y-%m-%d")
              filename = files[file]["pool name"] + file
              dsc_location_id = files[file]["location id"]
              if not files[file].has_key("files id") or not files[file]["files id"]:
                  files[file]["files id"] = daklib.database.set_files_id (filename, files[file]["size"], files[file]["md5sum"], dsc_location_id)
-             projectB.query("INSERT INTO source (source, version, maintainer, file, install_date, sig_fpr) VALUES ('%s', '%s', %d, %d, '%s', %s)"
-                            % (package, version, maintainer_id, files[file]["files id"], install_date, fingerprint_id))
+             projectB.query("INSERT INTO source (source, version, maintainer, changedby, file, install_date, sig_fpr) VALUES ('%s', '%s', %d, %d, %d, '%s', %s)"
+                            % (package, version, maintainer_id, changedby_id, files[file]["files id"], install_date, fingerprint_id))
  
              for suite in changes["distribution"].keys():
                  suite_id = daklib.database.get_suite_id(suite)
              if dsc.get("dm-upload-allowed", "no") == "yes":
                  uploader_ids = [maintainer_id]
                  if dsc.has_key("uploaders"):
 -                  for u in dsc["uploaders"].split(","):
 -                      u = u.replace("'", "\\'")
 -                      u = u.strip()
 +                    for u in dsc["uploaders"].split(","):
 +                        u = u.replace("'", "\\'")
 +                        u = u.strip()
                          uploader_ids.append(
 -                          daklib.database.get_or_set_maintainer_id(u))
 +                            daklib.database.get_or_set_maintainer_id(u))
 +                added_ids = {}
                  for u in uploader_ids:
 +                    if added_ids.has_key(u):
 +                        daklib.utils.warn("Already saw uploader %s for source %s" % (u, package))
 +                        continue
 +                    added_ids[u]=1
                      projectB.query("INSERT INTO src_uploaders (source, maintainer) VALUES (currval('source_id_seq'), %d)" % (u))
  
  
diff --combined setup/init_pool.sql
index 0ab91ad637213fa8c1d937f993e01627e23adb41,887771895bbe67bbcce4e8bbfa7d0ecdda2db836..9925148cfcd9638d66e025a10d03178c72f20c87
@@@ -28,12 -28,6 +28,6 @@@ CREATE TABLE maintainer 
         name TEXT UNIQUE NOT NULL
  );
  
- CREATE TABLE src_uploaders (
-        id SERIAL PRIMARY KEY,
-        source INT4 NOT NULL REFERENCES source,
-        maintainer INT4 NOT NULL REFERENCES maintainer
- );
  CREATE TABLE uid (
         id SERIAL PRIMARY KEY,
         uid TEXT UNIQUE NOT NULL,
@@@ -78,12 -72,19 +72,19 @@@ CREATE TABLE source 
          source TEXT NOT NULL,
          version TEXT NOT NULL,
          maintainer INT4 NOT NULL, -- REFERENCES maintainer
+         changedby INT4 NOT NULL, -- REFERENCES maintainer
          file INT4 UNIQUE NOT NULL, -- REFERENCES files
        install_date TIMESTAMP NOT NULL,
        sig_fpr INT4 NOT NULL, -- REFERENCES fingerprint
        unique (source, version)
  );
  
+ CREATE TABLE src_uploaders (
+        id SERIAL PRIMARY KEY,
+        source INT4 NOT NULL REFERENCES source,
+        maintainer INT4 NOT NULL REFERENCES maintainer
+ );
  CREATE TABLE dsc_files (
         id SERIAL PRIMARY KEY,
         source INT4 NOT NULL, -- REFERENCES source,
@@@ -184,19 -185,3 +185,19 @@@ CREATE INDEX binaries_maintainer ON bin
  CREATE INDEX binaries_fingerprint on binaries (sig_fpr);
  CREATE INDEX source_fingerprint on source (sig_fpr);
  CREATE INDEX dsc_files_file ON dsc_files (file);
 +
 +-- Own function
 +CREATE FUNCTION space_concat(text, text) RETURNS text
 +    AS $_$select case
 +WHEN $2 is null or $2 = '' THEN $1
 +WHEN $1 is null or $1 = '' THEN $2
 +ELSE $1 || ' ' || $2
 +END$_$
 +    LANGUAGE sql;
 +
 +CREATE AGGREGATE space_separated_list (
 +    BASETYPE = text,
 +    SFUNC = space_concat,
 +    STYPE = text,
 +    INITCOND = ''
 +);