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

Bug#655975: [PATCH] Support :any architecture qualifiers for multiarch



On 2013-09-18 6:33, Niels Thykier wrote:
I think we should take this opportunity to get rid of the "empty"
PREDEPENDS slot (i.e. have the MULTIARCH field replace PREDEPENDS).
There is no point in having the empty slot for PREDEPENDS; yours truly was just too lazy to figure out how to remove it from the C code when I
merged PREDEPENDS into DEPENDS.

Seems reasonable; attached is a diff on top of the earlier patch that does that, and passes the testsuite (including live-data).

I've also attached a squashed diff showing the cumulative changes relative to the live code. I've left the "depends" array as-is because it's part of the underlying abstraction; I assume the four elements are intended to correspond to the fields which dpkg/apt consider as "dependency relations", i.e. pre-depends, depends, recommends and suggests. If we don't care about maintaining that in the abstraction then we could probably flatten depends from a deplistlist to a deplist.

Regards,

Adam
diff --git a/britney.py b/britney.py
index 037645f..d2bcbd6 100755
--- a/britney.py
+++ b/britney.py
@@ -525,7 +525,6 @@ class Britney(object):
                     version,
                     get_field('Architecture'),
                     get_field('Multi-Arch'),
-                    None, # Pre-depends - leave as None for the C-code
                     deps,
                     ', '.join(final_conflicts_list) or None,
                     get_field('Provides'),
diff --git a/consts.py b/consts.py
index eba22d2..827e7d4 100644
--- a/consts.py
+++ b/consts.py
@@ -30,11 +30,8 @@ SOURCE = 2
 SOURCEVER = 3
 ARCHITECTURE = 4
 MULTIARCH = 5
-# PREDEPENDS = 6 - No longer used by the python code
-#  - The C-code needs it for alignment reasons and still check it
-#    but ignore it if it is None (so keep it None).
-DEPENDS = 7
-CONFLICTS = 8
-PROVIDES = 9
-RDEPENDS = 10
-RCONFLICTS = 11
+DEPENDS = 6
+CONFLICTS = 7
+PROVIDES = 8
+RDEPENDS = 9
+RCONFLICTS = 10
diff --git a/lib/britney-py.c b/lib/britney-py.c
index 28ace3c..94833cf 100644
--- a/lib/britney-py.c
+++ b/lib/britney-py.c
@@ -85,6 +85,7 @@ static PyObject *dpkgpackages_add_binary(dpkgpackages *self, PyObject *args) {
     pkg->package = strdup(pkg_name);
     pkg->priority = 0;
     pkg->details    = NULL;
+    pkg->depends[1] = NULL;
     pkg->depends[2] = NULL;
     pkg->depends[3] = NULL;
 
@@ -119,16 +120,10 @@ static PyObject *dpkgpackages_add_binary(dpkgpackages *self, PyObject *args) {
     pyString = PyList_GetItem(value, 7);
     if (pyString == NULL) return NULL;
     if (pyString != Py_None) {
-        pkg->depends[1] = read_dep_andor(PyString_AsString(pyString));
-    } else pkg->depends[1] = NULL;
-
-    pyString = PyList_GetItem(value, 8);
-    if (pyString == NULL) return NULL;
-    if (pyString != Py_None) {
         pkg->conflicts = read_dep_and(PyString_AsString(pyString));
     } else pkg->conflicts = NULL;
 
-    pyString = PyList_GetItem(value, 9);
+    pyString = PyList_GetItem(value, 8);
     if (pyString == NULL) return NULL;
     if (pyString != Py_None) {
         pkg->provides = read_packagenames(PyString_AsString(pyString));
@@ -211,12 +206,11 @@ static PyObject *build_system(PyObject *self, PyObject *args) {
        # SOURCEVER = 3
        # ARCHITECTURE = 4
        # MULTIARCH = 5
-       # PREDEPENDS = 6
-       # DEPENDS = 7
-       # CONFLICTS = 8
-       # PROVIDES = 9
-       # RDEPENDS = 10
-       # RCONFLICTS = 11
+       # DEPENDS = 6
+       # CONFLICTS = 7
+       # PROVIDES = 8
+       # RDEPENDS = 9
+       # RCONFLICTS = 10
     */
 
     dpkg_packages *dpkg_pkgs = new_packages(arch);
@@ -230,6 +224,7 @@ static PyObject *build_system(PyObject *self, PyObject *args) {
         pkg->package = strdup(PyString_AsString(key));
         pkg->priority = 0;
         pkg->details    = NULL;
+        pkg->depends[1] = NULL;
         pkg->depends[2] = NULL;
         pkg->depends[3] = NULL;
 
@@ -264,16 +259,10 @@ static PyObject *build_system(PyObject *self, PyObject *args) {
         pyString = PyList_GetItem(value, 7);
         if (pyString == NULL) continue;
         if (pyString != Py_None) {
-            pkg->depends[1] = read_dep_andor(PyString_AsString(pyString));
-        } else pkg->depends[1] = NULL;
-
-        pyString = PyList_GetItem(value, 8);
-        if (pyString == NULL) continue;
-        if (pyString != Py_None) {
             pkg->conflicts = read_dep_and(PyString_AsString(pyString));
         } else pkg->conflicts = NULL;
 
-        pyString = PyList_GetItem(value, 9);
+        pyString = PyList_GetItem(value, 8);
         if (pyString == NULL) continue;
         if (pyString != Py_None) {
             pkg->provides = read_packagenames(PyString_AsString(pyString));
--- /srv/release.debian.org/britney/code/b2/lib/britney-py.c	2013-07-07 13:42:04.000000000 +0000
+++ lib/britney-py.c	2013-09-18 07:09:03.000000000 +0000
@@ -85,6 +85,7 @@
     pkg->package = strdup(pkg_name);
     pkg->priority = 0;
     pkg->details    = NULL;
+    pkg->depends[1] = NULL;
     pkg->depends[2] = NULL;
     pkg->depends[3] = NULL;
 
@@ -107,14 +108,14 @@
     pyString = PyList_GetItem(value, 5);
     if (pyString == NULL) return NULL;
     if (pyString != Py_None) {
-        pkg->depends[0] = read_dep_andor(PyString_AsString(pyString));
-    } else pkg->depends[0] = NULL;
+        pkg->multiarch = PyString_AsString(pyString);
+    } else pkg->multiarch = NULL;
 
     pyString = PyList_GetItem(value, 6);
     if (pyString == NULL) return NULL;
     if (pyString != Py_None) {
-        pkg->depends[1] = read_dep_andor(PyString_AsString(pyString));
-    } else pkg->depends[1] = NULL;
+        pkg->depends[0] = read_dep_andor(PyString_AsString(pyString));
+    } else pkg->depends[0] = NULL;
 
     pyString = PyList_GetItem(value, 7);
     if (pyString == NULL) return NULL;
@@ -204,7 +205,7 @@
        # SOURCE = 2
        # SOURCEVER = 3
        # ARCHITECTURE = 4
-       # PREDEPENDS = 5
+       # MULTIARCH = 5
        # DEPENDS = 6
        # CONFLICTS = 7
        # PROVIDES = 8
@@ -223,6 +224,7 @@
         pkg->package = strdup(PyString_AsString(key));
         pkg->priority = 0;
         pkg->details    = NULL;
+        pkg->depends[1] = NULL;
         pkg->depends[2] = NULL;
         pkg->depends[3] = NULL;
 
@@ -245,14 +247,14 @@
         pyString = PyList_GetItem(value, 5);
         if (pyString == NULL) continue;
         if (pyString != Py_None) {
-            pkg->depends[0] = read_dep_andor(PyString_AsString(pyString));
-        } else pkg->depends[0] = NULL;
+            pkg->multiarch = PyString_AsString(pyString);
+        } else pkg->multiarch = NULL;
 
         pyString = PyList_GetItem(value, 6);
         if (pyString == NULL) continue;
         if (pyString != Py_None) {
-            pkg->depends[1] = read_dep_andor(PyString_AsString(pyString));
-        } else pkg->depends[1] = NULL;
+            pkg->depends[0] = read_dep_andor(PyString_AsString(pyString));
+        } else pkg->depends[0] = NULL;
 
         pyString = PyList_GetItem(value, 7);
         if (pyString == NULL) continue;

Reply to: