On 27/11/2022 21.11, Nicholas D Steeves wrote:
I'm bug-testing the documentation on ABI transitions, and it seems we
found a bug.

The docs say not to add Breaks+Replaces, which seems crazy to me,
because, as you noted, it produces a Policy-noncompliant package and a
serious bug.  Please confirm what you think about the following:

   * Avoid Breaks and Replaces on the old library packages unless they
     are strictly necessary
       * They prevent smooth updates."
   https://wiki.debian.org/Teams/ReleaseTeam/Transitions

It seems to me that there will usually be file-level conflicts, so the

There will only be file-level conflicts if a library package ships files/paths that are not versioned with the library,

'/usr/lib/x86_64-linux-gnu/qt5/plugins/iconengines/libmartchus-qtforkawesomeiconengine.so'
in this case. The majority of library packages don't do this and thus different soversions are co-installable. I'm not sure whether this is avoidable in your case, except by splitting of the plugin(s) into a separate package.

Perhaps the documentation should document when B+R are needed (see above) and how this could be avoided. E.g. if libfoo42 needs a datafile /usr/share/foo/bar.dat that a) could be moved to a separate package, assuming the datafiles are compatible between all libfooXX
b) moved to a package specific path, e.g. /usr/share/libfoo42/bar.dat
if the library is the only user of this file the location/name does not matter and each soversion would happily use its own file
(I did this in libpapi6.0: /usr/share/papi/6.0/papi_events.csv)

Perhaps something like this would help:
"... unless they are strictly neccessary (i.e. there are unavoidable
 file conflicts between the packages)"

documentation seems misleading and bad, unless there is a special
exception for library versions involved in a transition.  Does such an
exception exist?
Nope, transitions are not supposed to create more breakage tha normal uploads.

Oh, and yes, of course I'm happy to resolve this bug however is best,
whether that's with breaks+replaces or filing a transition for a library
that is only used by one package, where it's a package that I also
maintain.

Is the (only) consumer package in testing (if not, it's no transition)? Does a binNMU suffice for the consumer package (binNMU bug might suffice)? Or do you need to upload a new version anyway to make it work with the new version of the library (you upload both at the same time, no transition bug unless there is potential interference with other transitions)? BTW, you should get an auto-tracker automatically ... it will tell you whether your mini-transition could interfere with other transitions (transition bug if that's relevant).

Andreas

Reply via email to