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

Ubuntu dpkg 1.13.22ubuntu2



This e-mail has been sent due to an upload to Ubuntu that contains Ubuntu
changes.  It contains the difference between the new version and the
previous version of the same source package in Ubuntu.
Format: 1.7
Date: Tue, 11 Jul 2006 19:01:59 +0100
Source: dpkg
Binary: dpkg dselect dpkg-dev
Architecture: source
Version: 1.13.22ubuntu2
Distribution: edgy
Urgency: low
Maintainer: Dpkg Developers <team@dpkg.org>
Changed-By: Ian Jackson <iwj@ubuntu.com>
Description: 
 dpkg       - package maintenance system for Debian
 dpkg-dev   - package building tools for Debian
 dselect    - user tool to manage Debian packages
Changes: 
 dpkg (1.13.22ubuntu2) edgy; urgency=low
 .
   * `Breaks': Implement step 1 of PackageDependencyFieldBreaks:
      - Parse Breaks as a dependency field where `|' is not allowed,
        and know how to display it, etc.
      - Refuse to install an archive which contains Breaks unless
        --force-depends is specified (I think --force-depends is right
        rather than --force-conflicts or a new --force-breaks for this).
      - Explicitly ignore Breaks in the handful of places where that's
        needed, so that if a package with Breaks is somehow installed the
        Breaks field will not cause trouble (it will be ignored).
Files: 
 32b0696874a0edea4a54c11486c9cdb0 867 admin required dpkg_1.13.22ubuntu2.dsc
 65ee045f9439c0ffa221670e0bf3be4e 3106339 admin required dpkg_1.13.22ubuntu2.tar.gz
diff -pruN 1.13.22ubuntu1/debian/changelog 1.13.22ubuntu2/debian/changelog
--- 1.13.22ubuntu1/debian/changelog	2006-07-10 16:43:06.000000000 +0100
+++ 1.13.22ubuntu2/debian/changelog	2006-07-11 19:02:07.000000000 +0100
@@ -1,3 +1,17 @@
+dpkg (1.13.22ubuntu2) edgy; urgency=low
+
+  * `Breaks': Implement step 1 of PackageDependencyFieldBreaks:
+     - Parse Breaks as a dependency field where `|' is not allowed,
+       and know how to display it, etc.
+     - Refuse to install an archive which contains Breaks unless
+       --force-depends is specified (I think --force-depends is right
+       rather than --force-conflicts or a new --force-breaks for this).
+     - Explicitly ignore Breaks in the handful of places where that's
+       needed, so that if a package with Breaks is somehow installed the
+       Breaks field will not cause trouble (it will be ignored).
+
+ -- Ian Jackson <iwj@ubuntu.com>  Tue, 11 Jul 2006 19:01:59 +0100
+
 dpkg (1.13.22ubuntu1) edgy; urgency=low
 
   * Resynchronise with Debian.
diff -pruN 1.13.22ubuntu1/lib/dpkg-db.h 1.13.22ubuntu2/lib/dpkg-db.h
--- 1.13.22ubuntu1/lib/dpkg-db.h	2006-02-10 16:22:50.000000000 +0000
+++ 1.13.22ubuntu2/lib/dpkg-db.h	2006-07-11 19:01:38.000000000 +0100
@@ -41,7 +41,8 @@ enum deptype {
   dep_conflicts,
   dep_provides,
   dep_replaces,
-  dep_enhances
+  dep_enhances,
+  dep_breaks
 };
 
 enum depverrel {
diff -pruN 1.13.22ubuntu1/lib/fields.c 1.13.22ubuntu2/lib/fields.c
--- 1.13.22ubuntu1/lib/fields.c	2006-06-21 05:46:12.000000000 +0100
+++ 1.13.22ubuntu2/lib/fields.c	2006-07-11 19:01:38.000000000 +0100
@@ -439,6 +439,7 @@ void f_dependency(struct pkginfo *pigp, 
                  " error after reference to package `%.255s'"),
                  fip->name, dop->ed->name);
       if (fip->integer == dep_conflicts ||
+          fip->integer == dep_breaks ||
           fip->integer == dep_provides ||
           fip->integer == dep_replaces)
         parseerr(NULL,filename,lno, warnto,warncount,pigp,0,
diff -pruN 1.13.22ubuntu1/lib/parse.c 1.13.22ubuntu2/lib/parse.c
--- 1.13.22ubuntu1/lib/parse.c	2006-01-18 08:30:03.000000000 +0000
+++ 1.13.22ubuntu2/lib/parse.c	2006-07-11 19:01:38.000000000 +0100
@@ -63,6 +63,7 @@ const struct fieldinfo fieldinfos[]= {
   { "Suggests",         f_dependency,      w_dependency,     dep_suggests             },
   { "Conflicts",        f_dependency,      w_dependency,     dep_conflicts            },
   { "Enhances",         f_dependency,      w_dependency,     dep_enhances             },
+  { "Breaks",           f_dependency,      w_dependency,     dep_breaks               },
   { "Conffiles",        f_conffiles,       w_conffiles                                },
   { "Filename",         f_filecharf,       w_filecharf,      FILEFOFF(name)           },
   { "Size",             f_filecharf,       w_filecharf,      FILEFOFF(size)           },
diff -pruN 1.13.22ubuntu1/src/depcon.c 1.13.22ubuntu2/src/depcon.c
--- 1.13.22ubuntu1/src/depcon.c	2006-06-04 16:42:01.000000000 +0100
+++ 1.13.22ubuntu2/src/depcon.c	2006-07-11 19:01:38.000000000 +0100
@@ -156,6 +156,7 @@ void describedepcon(struct varbuf *addto
   case dep_conflicts:   varbufaddstr(addto, _(" conflicts with ")); break;
   case dep_suggests:    varbufaddstr(addto, _(" suggests ")); break;
   case dep_enhances:    varbufaddstr(addto, _(" enhances "));       break;
+  case dep_breaks:      varbufaddstr(addto, _(" breaks "));         break;
   default:              internerr("unknown deptype");
   }
   varbufdependency(addto, dep);
@@ -186,7 +187,8 @@ int depisok(struct dependency *dep, stru
 
   assert(dep->type == dep_depends || dep->type == dep_predepends ||
          dep->type == dep_conflicts || dep->type == dep_recommends ||
-	 dep->type == dep_suggests || dep->type == dep_enhances );
+	 dep->type == dep_suggests || dep->type == dep_enhances ||
+	 dep->type == dep_breaks );
   
   /* The dependency is always OK if we're trying to remove the depend*ing*
    * package.
@@ -212,6 +214,16 @@ int depisok(struct dependency *dep, stru
     internerr("unknown istobe depending");
   }
 
+  if (dep->type == dep_breaks)
+    /* We don't implement this and we can only be in this state
+     * if either a Breaks-ignorant or a Breaks-supporting dpkg
+     * installed the package.  In both cases it's probably too
+     * late to do anything useful about it now in this version
+     * so we just ignore it and hope.
+     * fixme-implement-Breaks
+     */
+    return 1;
+
   /* Describe the dependency, in case we have to moan about it. */
   varbufreset(whynot);
   varbufaddc(whynot, ' ');
diff -pruN 1.13.22ubuntu1/src/packages.c 1.13.22ubuntu2/src/packages.c
--- 1.13.22ubuntu1/src/packages.c	2006-05-16 05:52:46.000000000 +0100
+++ 1.13.22ubuntu2/src/packages.c	2006-07-11 19:01:38.000000000 +0100
@@ -352,6 +352,9 @@ int dependencies_ok(struct pkginfo *pkg,
   debug(dbg_depcon,"checking dependencies of %s (- %s)",
         pkg->name, removing ? removing->name : "<none>");
   assert(pkg->installed.valid);
+  /* To implement Breaks we need to add code here which prevents
+   * configuration of Broken packages.
+   * fixme-implement-Breaks */
   for (dep= pkg->installed.depends; dep; dep= dep->next) {
     if (dep->type != dep_depends && dep->type != dep_predepends) continue;
     debug(dbg_depcondetail,"  checking group ...");
diff -pruN 1.13.22ubuntu1/src/processarc.c 1.13.22ubuntu2/src/processarc.c
--- 1.13.22ubuntu1/src/processarc.c	2006-05-31 03:46:30.000000000 +0100
+++ 1.13.22ubuntu2/src/processarc.c	2006-07-11 19:01:38.000000000 +0100
@@ -252,6 +252,16 @@ void process_archive(const char *filenam
         }
       }
       break;
+    case dep_breaks:
+      fprintf(stderr, _("dpkg: regarding %s containing %s:\n"
+			" package uses Breaks; not supported in this dpkg\n"),
+	      pfilename, pkg->name);
+      if (!force_depends(dsearch->list))
+	ohshit(_("unsupported dependency problem - not installing %.250s"),
+	       pkg->name);
+      fprintf(stderr, _("dpkg: warning - ignoring Breaks !\n"));
+      /* fixme-implement-Breaks */
+      break;
     case dep_suggests:
     case dep_recommends:
     case dep_depends:

Reply to: