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