[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[dak/master] Alter process-policy to copy debug debs into the debugsuite



This is the first step in creating a debug deb suite for the archive,
and diverts debs that would be added to a suite into the debug suite
linked.

In the event the suite does not support diverting debug debs, the
process-new routine will accept the package into the target suite.
---
 dak/process_policy.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 51 insertions(+), 4 deletions(-)

diff --git a/dak/process_policy.py b/dak/process_policy.py
index 0f2f22a..a4e6d87 100755
--- a/dak/process_policy.py
+++ b/dak/process_policy.py
@@ -141,6 +141,12 @@ def comment_accept(upload, srcqueue, comments, transaction):
             component_name = section.split('/', 1)[0]
         return get_mapped_component(component_name, session=session)
 
+    def is_debug_binary(db_binary):
+        return db_binary.proxy['Section'] == "debug"
+
+    def has_debug_binaries(upload):
+        return any((is_debug_binary(x) for x in upload.binaries))
+
     def source_component_func(db_source):
         package_list = PackageList(db_source.proxy)
         component = source_component_from_package_list(package_list, upload.target_suite)
@@ -157,13 +163,54 @@ def comment_accept(upload, srcqueue, comments, transaction):
     all_target_suites.extend([q.suite for q in upload.target_suite.copy_queues])
 
     for suite in all_target_suites:
+        debug_suite = suite.debug_suite
+
         if upload.source is not None:
-            transaction.copy_source(upload.source, suite, source_component_func(upload.source), allow_tainted=allow_tainted)
+            # If we have Source in this upload, let's include it into
+            # upload suite.
+            transaction.copy_source(
+                upload.source,
+                suite,
+                source_component_func(upload.source),
+                allow_tainted=allow_tainted,
+            )
+
+            if debug_suite is not None and has_debug_binaries(upload):
+                # If we're handing a debug package, we also need to include the
+                # source in the debug suite as well.
+                transaction.copy_source(
+                    upload.source,
+                    debug_suite,
+                    source_component_func(upload.source),
+                    allow_tainted=allow_tainted,
+                )
+
         for db_binary in upload.binaries:
-            # build queues may miss the source package if this is a binary-only upload
+            # build queues may miss the source package if this is a
+            # binary-only upload.
             if suite != upload.target_suite:
-                transaction.copy_source(db_binary.source, suite, source_component_func(db_binary.source), allow_tainted=allow_tainted)
-            transaction.copy_binary(db_binary, suite, binary_component_func(db_binary), allow_tainted=allow_tainted, extra_archives=[upload.target_suite.archive])
+                transaction.copy_source(
+                    db_binary.source,
+                    suite,
+                    source_component_func(db_binary.source),
+                    allow_tainted=allow_tainted,
+                )
+
+            # Now, let's work out where to copy this guy to -- if it's
+            # a debug binary, and the suite has a debug suite, let's go
+            # ahead and target the debug suite rather then the stock
+            # suite.
+            copy_to_suite = suite
+            if debug_suite is not None and is_debug_binary(db_binary):
+                copy_to_suite = debug_suite
+
+            transaction.copy_binary(
+                db_binary,
+                copy_to_suite,
+                binary_component_func(db_binary),
+                allow_tainted=allow_tainted,
+                extra_archives=[upload.target_suite.archive],
+            )
 
     # Copy .changes if needed
     if upload.target_suite.copychanges:
-- 
2.1.4



Reply to: