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: