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

Bug#1050322: Partial versus complete replacement of a package by another



Package: debian-policy
Version: 4.6.2.0
Severity: normal

Hi,

over at bug #1050027 there is a discussion of applicable policy when
splitting a package. I'll first explain what the bug is about and then
why that's a problem with the Policy.

The src:mathcomp-analysis package provided a single binary package
libcoq-mathcomp-analysis until 0.6.3-2 ; with 0.6.4-1, it's now
providing two binary packages libcoq-mathcomp-analysis and libcoq-
mathcomp-classical. The binary package libcoq-mathcomp-analysis Depends
on libcoq-mathcomp-classical (= ${binary:Version}). And with 0.6.4-1,
that Depends was the only information, so of course file conflicts
weren't handled correctly, and that is what #1050027 is about.

In src:mathcomp-analysis 0.6.4-2, I declared that libcoq-mathcomp-
classical Breaks libcoq-mathcomp-analysis (<< 0.6.4) and closed the
bug. It was swiftly re-opened because I hadn't used Breaks+Replaces
according to Policy 7.6.1. But I don't want to use Replaces as libcoq-
mathcomp-classical isn't a *complete* replacement for libcoq-mathcomp-
analysis (<< 0.6.4) -- it only provides a small part of it!


So what does the Policy actually say?

In section 7.3 it discusses the use of Breaks to avoid file conflicts -
- and on that point it's pretty clear.

The problem is with section 7.6 on how to use Replaces: indeed, the
very first paragraph of 7.6 mentions "two distinct purposes", partial
and complete replacement... but the rest of the section is all about
complete replacement -- and it's using Breaks+Replaces for that. What
relationship fields combination corresponds to *partial* replacement?
As far as I can tell it doesn't say!

Subsection 7.6.1 explains that Replaces without Breaks shouldn't happen
(not clearly enough: #1050221).

In fact subsection 7.6.1 has an example which looks exactly like
#1050027, but it looks wrong: if foo 1.2-2 is installed on a system and
foo-data 1.2-3's installation is requested, then because of Breaks dpkg
will know about the file conflicts and beware, but because of Replaces,
it will think it's a complete replacement -- foo will disappear if I
understand well. The system will stay coherent but the user will have
lost features...

My understanding of relationship fields mechanics is:

|             | Breaks               | no Breaks  |
|-------------+----------------------+------------|
| Replaces    | complete replacement | 7.6.1: no! |
| no Replaces | partial replacement  | very usual |

But that indeed isn't in the Policy per se, so I'm asking for
clarification.

Cheers,

J.Puydt


Reply to: