• Salsa CI job 'missing-breaks' to be enabled by default starting March 1

    From =?UTF-8?B?T3R0byBLZWvDpGzDpGluZW4=?@21:1/5 to All on Tue Feb 25 17:20:01 2025
    Hi all package maintainers who use Salsa CI,

    Salsa CI has had for many years the job 'missing-breaks' that
    complements piuparts by checking that the files a package introduce
    don't clash with files shipped by any other package in the
    distribution without having proper Breaks/Replaces in the
    `debian/control` file. This job works well, being quick to run and has
    had zero false positives in our experience.

    We plan to enable this job next weekend, but allow the job to fail. In
    a month from now we plan to switch it to enforcing mode so that this
    job must pass for the pipeline to pass.

    If you have any comments, feel free to reply to this email thread or
    take part in the discussion at https://salsa.debian.org/salsa-ci-team/pipeline/-/merge_requests/578

    ## Schedule

    1. March 1st: Enable this job by default, but in allow_failure mode,
    making Salsa CI yellow on packages that fail on this job
    2. March 31st: Remove the allow_failure mode, potentially making the
    Salsa CI red for packages that fail on this job

    ## Error examples

    Example output when end users run into this category of issues:

    $ apt upgrade
    ...
    Unpacking example (from .../foo_1.0-1_all.deb) ...
    dpkg: error processing /var/cache/apt/archives/foo_1.0-1_all.deb (--unpack):
    trying to overwrite '/usr/share/man/man8/example.8.gz', which is also
    in package bar 2.2

    Example output from the job on failure:

    $ check_for_missing_breaks_replaces.py -o
    ${WORKING_DIR}/missing_breaks.xml --changes-file
    ${WORKING_DIR}/*.changes
    [ERROR] Missing Breaks/Replaces found
    [ERROR] foo conflicts with bar files: {'/usr/share/man/man8/example.8.gz'}


    PS. If you are interested in many smaller improvements soon landing in
    Salsa CI, you are welcome to read and comment (and review) the 32
    currently open MRs at https://salsa.debian.org/salsa-ci-team/pipeline/-/merge_requests

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Richter@21:1/5 to All on Tue Feb 25 18:40:01 2025
    Hi,

    can this be fixed to suggest Conflicts instead of Breaks/Replaces if the file in the other package is still shipped in the current version?

    Breaks/Replaces implies that ownership should be transferred from the other package to this one. This is most often correct, but care needs to be taken to not build a Replaces loop, something that Conflicts nicely avoids.

    Also, unversioned Breaks, Conflicts and Replaces should give a warning at least.

       Simon

    <html>
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
    <span dir="ltr" style="margin-top:0; margin-bottom:0;">Hi,</span>
    <br>
    <br><span dir="ltr" style="margin-top:0; margin-bottom:0;">can this be fixed to suggest Conflicts instead of Breaks/Replaces if the file in the other package is still shipped in the current version?</span>
    <br>
    <br><span dir="ltr" style="margin-top:0; margin-bottom:0;">Breaks/Replaces implies that ownership should be transferred from the other package to this one. This is most often correct, but care needs to be taken to not build a Replaces loop, something
    that Conflicts nicely avoids.</span>
    <br>
    <br><span dir="ltr" style="margin-top:0; margin-bottom:0;">Also, unversioned Breaks, Conflicts and Replaces should give a warning at least.</span>
    <br>
    <br><span dir="ltr" style="margin-top:0; margin-bottom:0;">&nbsp;&nbsp; Simon</span>
    <br>
    </body>
    </html>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Guillem Jover@21:1/5 to All on Tue Feb 25 18:20:01 2025
    Hi!

    On Tue, 2025-02-25 at 08:14:52 -0800, Otto Kekäläinen wrote:
    Salsa CI has had for many years the job 'missing-breaks' that
    complements piuparts by checking that the files a package introduce
    don't clash with files shipped by any other package in the
    distribution without having proper Breaks/Replaces in the
    `debian/control` file. This job works well, being quick to run and has
    had zero false positives in our experience.

    I think that while this check seems worthwhile to me to avoid file
    conflicts, the check name itself…

    ## Error examples

    Example output when end users run into this category of issues:

    $ apt upgrade
    ...
    Unpacking example (from .../foo_1.0-1_all.deb) ...
    dpkg: error processing /var/cache/apt/archives/foo_1.0-1_all.deb (--unpack):
    trying to overwrite '/usr/share/man/man8/example.8.gz', which is also
    in package bar 2.2

    Example output from the job on failure:

    $ check_for_missing_breaks_replaces.py -o
    ${WORKING_DIR}/missing_breaks.xml --changes-file
    ${WORKING_DIR}/*.changes
    [ERROR] Missing Breaks/Replaces found
    [ERROR] foo conflicts with bar files: {'/usr/share/man/man8/example.8.gz'}

    …and this advice, are not ideal, and can lead to potentially worse
    problems.

    I think the check should be renamed to something like
    check-file-conflicts (probably with compat names for existing repos
    using the old name). And the advice should probably point to a Wiki
    page or similar, where the various cases can be explained, and how to
    solve them. For example for conflicting programs with different
    interfaces the advice would incur in a policy violation, for conflicts
    between a current shared library SOVERSION and the one in the archive
    with a lower SOVERSION that makes upgrades and transitions harder,
    etc.

    Thanks,
    Guillem

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Arnaud Rebillout@21:1/5 to Guillem Jover on Wed Feb 26 03:10:01 2025
    This is a multi-part message in MIME format.
    On 26/02/2025 00:10, Guillem Jover wrote:
    On Tue, 2025-02-25 at 08:14:52 -0800, Otto Kekäläinen wrote:
    $ check_for_missing_breaks_replaces.py -o
    ${WORKING_DIR}/missing_breaks.xml --changes-file
    ${WORKING_DIR}/*.changes
    [ERROR] Missing Breaks/Replaces found
    [ERROR] foo conflicts with bar files: {'/usr/share/man/man8/example.8.gz'}
    …and this advice, are not ideal, and can lead to potentially worse problems.

    I think the check should be renamed to something like
    check-file-conflicts (probably with compat names for existing repos
    using the old name). And the advice should probably point to a Wiki
    page or similar, where the various cases can be explained, and how to
    solve them. For example for conflicting programs with different
    interfaces the advice would incur in a policy violation, for conflicts between a current shared library SOVERSION and the one in the archive
    with a lower SOVERSION that makes upgrades and transitions harder,
    etc.

    I suppose there are two main situations:

    1) package includes the offending file(s) by mistake, in that case the
    fix is to stop distributing the file (and NOT to use Breaks/Replaces)

    2) package includes the file(s) for good reason, in that case it's as
    Guillem said above

    Maybe the error message could clarify for situation 1, something like:

    [ERROR] You might want to rename/remove the offending files if that's
    suitable

    For situation 2, maybe point to Debian Policy: https://www.debian.org/doc/debian-policy/ch-relationships.html, in
    particular sections 7.3, 7.4 and 7.6? Unless there's a better piece of
    doc on this topic?

    Best,
    Arnaud


    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <div class="moz-cite-prefix">On 26/02/2025 00:10, Guillem Jover
    wrote:<span style="white-space: pre-wrap">
    </span></div>
    <blockquote type="cite"
    cite="mid:Z735bn-7-8UqoCDp@thunder.hadrons.org">
    <pre wrap="" class="moz-quote-pre">On Tue, 2025-02-25 at 08:14:52 -0800, Otto Kekäläinen wrote:
    </pre>
    <blockquote type="cite">
    <pre wrap="" class="moz-quote-pre">$ check_for_missing_breaks_replaces.py -o
    ${WORKING_DIR}/missing_breaks.xml --changes-file
    ${WORKING_DIR}/*.changes
    [ERROR] Missing Breaks/Replaces found
    [ERROR] foo conflicts with bar files: {'/usr/share/man/man8/example.8.gz'} </pre>
    </blockquote>
    <pre wrap="" class="moz-quote-pre">
    …and this advice, are not ideal, and can lead to potentially worse
    problems.

    I think the check should be renamed to something like
    check-file-conflicts (probably with compat names for existing repos
    using the old name). And the advice should probably point to a Wiki
    page or similar, where the various cases can be explained, and how to
    solve them. For example for conflicting programs with different
    interfaces the advice would incur in a policy violation, for conflicts
    between a current shared library SOVERSION and the one in the archive
    with a lower SOVERSION that makes upgrades and transitions harder,
    etc.</pre>
    </blockquote>
    <p>I suppose there are two main situations:</p>
    <p>1) package includes the offending file(s) by mistake, in that
    case the fix is to stop distributing the file (and NOT to use
    Breaks/Replaces)</p>
    <p>2) package includes the file(s) for good reason, in that case
    it's as Guillem said above</p>
    <p>Maybe the error message could clarify for situation 1, something
    like:<br>
    </p>
    <p>&gt; [ERROR] You might want to rename/remove the offending files
    if that's suitable<br>
    </p>
    <p>For situation 2, maybe point to Debian Policy:
    <a class="moz-txt-link-freetext" href="https://www.debian.org/doc/debian-policy/ch-relationships.html">https://www.debian.org/doc/debian-policy/ch-relationships.html</a>, in
    particular sections 7.3, 7.4 and 7.6? Unless there's a better
    piece of doc on this topic?</p>
    Best,<br>
    Arnaud<br>
    <p><br>
    </p>
    </body>
    </html>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?B?T3R0byBLZWvDpGzDpGluZW4=?@21:1/5 to All on Thu Feb 27 02:50:02 2025
    Thanks for the feedback!

    Ideally the script https://salsa.debian.org/salsa-ci-team/pipeline/-/blob/master/images/scripts/check_for_missing_breaks_replaces.py
    would live in the devscripts package and be extended to have the
    features suggested in this thread. However, even in its current form
    it has worked well for many years, and I having it enabled by default
    in Salsa CI now will catch some regressions from entering the archive
    (and Trixie), and is a better choice than postponing the change with expectations that would have more features in near future.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lorenzo@21:1/5 to All on Thu Mar 6 14:50:04 2025
    Hello Otto,

    [please keep me in CC, I'm not subscribed]

    Salsa CI has had for many years the job 'missing-breaks' that
    complements piuparts by checking that the files a package introduce
    don't clash with files shipped by any other package in the
    distribution without having proper Breaks/Replaces in the
    `debian/control` file. This job works well, being quick to run and has
    had zero false positives in our experience.

    In salsa CI now I see:

    $ check_for_missing_breaks_replaces.py -o ${WORKING_DIR}/missing_breaks.xml --changes-file ${WORKING_DIR}/*.changes
    [ERROR] Missing Breaks/Replaces found
    [ERROR] runit-init conflicts with init-system-helpers files: {'/usr/share/man/man8/invoke-rc.d.8.gz', '/usr/sbin/service', '/usr/sbin/invoke-rc.d', '/usr/share/man/man8/service.8.gz'}
    Uploading artifacts for failed job

    this looks like false positive, file are in fact diverted. Does the test
    check for for diversions?

    ## Schedule

    1. March 1st: Enable this job by default, but in allow_failure mode,
    making Salsa CI yellow on packages that fail on this job
    2. March 31st: Remove the allow_failure mode, potentially making the
    Salsa CI red for packages that fail on this job

    Could you please consider delaying 2. until diversion are properly
    detected?

    Best Regards,
    Lorenzo

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From NoisyCoil@21:1/5 to Lorenzo on Thu Mar 6 16:00:01 2025
    XPost: linux.debian.kernel

    On 06/03/25 14:25, Lorenzo wrote:
    Hello Otto,

    [please keep me in CC, I'm not subscribed]

    Salsa CI has had for many years the job 'missing-breaks' that
    complements piuparts by checking that the files a package introduce
    don't clash with files shipped by any other package in the
    distribution without having proper Breaks/Replaces in the
    `debian/control` file. This job works well, being quick to run and has
    had zero false positives in our experience.
    In salsa CI now I see:

    $ check_for_missing_breaks_replaces.py -o ${WORKING_DIR}/missing_breaks.xml --changes-file ${WORKING_DIR}/*.changes
    [ERROR] Missing Breaks/Replaces found
    [ERROR] runit-init conflicts with init-system-helpers files: {'/usr/share/man/man8/invoke-rc.d.8.gz', '/usr/sbin/service', '/usr/sbin/invoke-rc.d', '/usr/share/man/man8/service.8.gz'}
    Uploading artifacts for failed job

    this looks like false positive, file are in fact diverted. Does the test check for for diversions?

    ## Schedule

    1. March 1st: Enable this job by default, but in allow_failure mode,
    making Salsa CI yellow on packages that fail on this job
    2. March 31st: Remove the allow_failure mode, potentially making the
    Salsa CI red for packages that fail on this job
    Could you please consider delaying 2. until diversion are properly
    detected?

    Another instance of diversions not being detected is in linux's pipeline
    [1,2]: linux-libc-dev and oss4-dev both install
    /usr/include/linux/soundcard.h, oss4-dev diverts it, missing-break
    fails. If my understanding is correct, this will make all unstable/exp (oss4-dev is in unstable only) src:linux pipelines break starting March
    31st.

    I agree that diversions should be detected.


    [1] https://salsa.debian.org/kernel-team/linux/-/jobs/7205419
    [2] https://salsa.debian.org/kernel-team/linux/-/jobs/7182906

    Best Regards,
    Lorenzo

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bastian Blank@21:1/5 to NoisyCoil on Thu Mar 6 17:30:03 2025
    XPost: linux.debian.kernel

    On Thu, Mar 06, 2025 at 03:52:54PM +0100, NoisyCoil wrote:
    Another instance of diversions not being detected is in linux's pipeline [1,2]: linux-libc-dev and oss4-dev both install /usr/include/linux/soundcard.h, oss4-dev diverts it, missing-break fails. If my understanding is correct, this will make all unstable/exp (oss4-dev is in unstable only) src:linux pipelines break starting March 31st.

    Open an serious bug report against oss4-dev. No need to wait, it needs
    to go.

    Bastian

    --
    Beam me up, Scotty! It ate my phaser!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bastian Blank@21:1/5 to NoisyCoil on Thu Mar 6 18:10:02 2025
    XPost: linux.debian.kernel

    On Thu, Mar 06, 2025 at 05:23:00PM +0100, NoisyCoil wrote:
    oss4-dev is fine (unless diversions of files in linux-libc-dev are forbidden): oss4-dev is correctly diverting the header, as a consequence it needs not Break or Conflict with linux-libc-dev.

    linux-libc-dev defines the interface the kernel provides. Random
    packages overriding that makes for nasty surprises.

    So there are multiple solutions:
    - Rename the header and move out of the linux dir.
    - Move the header outside of /usr/include and explicitely use this
    directory in the include path.

    The issue here is that the new missing-breaks pipeline job has no clue that packages are correctly diverting files, and it flags as missing Breaks packages which, in fact, do not miss Breaks because they aren't supposed to have any.

    Because diverts are kind of sledgehammers. Without coordination they
    break stuff.

    Bastian

    --
    Beam me up, Scotty! It ate my phaser!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Thu Mar 6 18:40:02 2025
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------W5cKwOuT04zIYUEcZbKIvNsU
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMDYuMDMuMjUgMTc6NTEsIEJhc3RpYW4gQmxhbmsgd3JvdGU6DQo+IEJlY2F1c2UgZGl2 ZXJ0cyBhcmUga2luZCBvZiBzbGVkZ2VoYW1tZXJzLiAgV2l0aG91dCBjb29yZGluYXRpb24g dGhleQ0KPiBicmVhayBzdHVmZi4NCg0KT0ssIHNvIGluICp0aGlzKiBjYXNlIHRoZSBkaXZl cnNpb24gaXMgaW4gZXJyb3IgKGluIHlvdXIgb3BpbmlvbiBhbnl3YXk7IA0Kbm90IGhhdmlu ZyBsb29rZWQgYXQgdGhlIGNvbnRlbnRzIG9mIHRoZXNlIGhlYWRlcnMsIEkgaGF2ZSBubyBv cGluaW9uIGhlcmUpLg0KDQpIb3dldmVyLCBJJ20gcmVhc29uYWJseSBjZXJ0YWluIHRoYXQg dGhlcmUgYXJlIG90aGVyIGNhc2VzIHdoZXJlIA0KZGl2ZXJzaW9ucyBhcmUgaW50ZW50aW9u YWwgYW5kIHBlcmZlY3RseSB2YWxpZC4gVW5sZXNzICdtaXNzaW5nLWJyZWFrcycgDQpsZWFy bnMgdG8gaGFuZGxlIHRoZW0gaXQgd2lsbCByZXBvcnQgQ0kgZmFpbHVyZXMgZm9yICphbGwq IG9mIHRoZW0sIGF0IA0Kd2hpY2ggcG9pbnQgd2UgbWlnaHQgYXMgd2VsbCBjaGFuZ2UgUG9s aWN5IHRvIHN0YXRlIHRoYXQgZGl2ZXJzaW9ucyBhcmUgDQphIGxlZ2FjeSBmZWF0dXJlIHRo YXQgY2Fubm90IGJlIHVzZWQgaW4gbmV3IHVwbG9hZHMuDQoNCkkga2luZG9mIGRvdWJ0IHRo YXQgd2UnZCBnZXQgYSBtYWpvcml0eSB0byBzaWduIG9mZiBvbiB0aGF0Lg0KDQotLSANCi0t IHJlZ2FyZHMNCi0tIA0KLS0gTWF0dGhpYXMgVXJsaWNocw0KDQo=

    --------------W5cKwOuT04zIYUEcZbKIvNsU--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmfJ2YcFAwAAAAAACgkQcs+OXiW0wpNv EQ//Uimwl/9a3kIv6xtJ9HDPwQ22ANjVenkhJ/HgtFh0hv4vKRctuMNpOmcj8rvE96G7Xko69yFS pEovSU5t5fShTkUt4kW5okNcYYtKRNWxcC1l0FKJj+1X3HwnDdDBDnYQGxoVv7tqNvUM9icBDroK +yrhJKR7akxViOlCyo4CiblUbNG65hRf39ql9RaPWsov54emGSMBTaIzA078V/h6rRT406wHDik1 FBVfSQHfw/ahhGu3Zd3AaSw52jisCgyiTqfo7mloJGn17NxCIxVOOw+sh2T8N6KvFvSt8jJ7lPYf W9MkLStJU3ldygxNe/f4JHwhkSI8uP6H3nEpUG2wT8pkKXNbatOWQfo4RbrGj/orVh9rYYH2OWj/ zZ1VMKdqkk36Ku7CGUKZgPAgo9r3D5nguCDdmQMtaFc5i9sEKVxQJnoycUvLy9qj2SuT88gJ3FXo yNIO+Rxf3SDFyR6v34MynkCWdAHkKh+3SVcKjDNl4jAhzjsG+mVdHr5rb0UiNk06MFdG/bXYXSma hpOIifiQLvuyUua4A/g0Z06n8fioERBNl8sPr8i9ezcJV7eEcHvIXVviAlW22Nkn8JnkuYmz1gyn HdgtM8hJnCIkdwcu5qnH3htE3Bw55qm4Rv2Nf4O3uMKeQFmtPP+P1SvqzNvsX19kWC5vNSb/fblR aNs=
    =+lw/
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bastian Blank@21:1/5 to Matthias Urlichs on Thu Mar 6 20:10:02 2025
    On Thu, Mar 06, 2025 at 06:21:10PM +0100, Matthias Urlichs wrote:
    However, I'm reasonably certain that there are other cases where diversions are intentional and perfectly valid. Unless 'missing-breaks' learns to
    handle them it will report CI failures for *all* of them, at which point we might as well change Policy to state that diversions are a legacy feature that cannot be used in new uploads.

    Do you have an example?

    I kindof doubt that we'd get a majority to sign off on that.

    You don't need to use it, so don't? All of that is opt-in.

    Bastian

    --
    Youth doesn't excuse everything.
    -- Dr. Janice Lester (in Kirk's body), "Turnabout Intruder",
    stardate 5928.5.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?B?T3R0byBLZWvDpGzDpGluZW4=?@21:1/5 to All on Thu Mar 6 20:00:02 2025
    Hi!

    Salsa CI has had for many years the job 'missing-breaks' that
    complements piuparts by checking that the files a package introduce
    don't clash with files shipped by any other package in the
    distribution without having proper Breaks/Replaces in the
    `debian/control` file. This job works well, being quick to run and has
    had zero false positives in our experience.

    In salsa CI now I see:

    $ check_for_missing_breaks_replaces.py -o ${WORKING_DIR}/missing_breaks.xml --changes-file ${WORKING_DIR}/*.changes
    [ERROR] Missing Breaks/Replaces found
    [ERROR] runit-init conflicts with init-system-helpers files: {'/usr/share/man/man8/invoke-rc.d.8.gz', '/usr/sbin/service', '/usr/sbin/invoke-rc.d', '/usr/share/man/man8/service.8.gz'}
    Uploading artifacts for failed job

    this looks like false positive, file are in fact diverted. Does the test check for for diversions?

    No, it does not. This is now tracked at https://salsa.debian.org/salsa-ci-team/pipeline/-/issues/418

    The challenge is that most of the debian/ contents is declarative,
    such as the file lists in debian-*.install files, while the diversions
    are procedural code inside maintainer scripts and challenging to
    automatically analyze.

    If I get more people interested in collaborating on getting the script
    first included in devscripts (https://salsa.debian.org/debian/devscripts/-/merge_requests/478), we
    could later take a stab at adding somekind of diversion detection.

    ## Schedule

    1. March 1st: Enable this job by default, but in allow_failure mode,
    making Salsa CI yellow on packages that fail on this job
    2. March 31st: Remove the allow_failure mode, potentially making the
    Salsa CI red for packages that fail on this job

    Could you please consider delaying 2. until diversion are properly
    detected?

    If this CI job is too incorrect for your package, you can also opt out
    but having this in your salsa-ci.yml file:

    variables:
    SALSA_CI_DISABLE_MISSING_BREAKS: 1


    The point with having this job enabled for a month in allow_failure
    mode is precisely to collect this feedback. If there is enough
    packages that use diversions or have other issues, we might indeed
    postpone this change, or roll it back completely. Thanks for sharing
    your feedback!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Thu Mar 6 21:10:01 2025
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------xw0GAPIKpeti9wCgTkaZ5SLG
    Content-Type: multipart/alternative;
    boundary="------------bfBuuXe204S0JDAyBSr2toVJ"

    --------------bfBuuXe204S0JDAyBSr2toVJ
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMDYuMDMuMjUgMTk6NDIsIEJhc3RpYW4gQmxhbmsgd3JvdGU6DQo+IE9uIFRodSwgTWFy IDA2LCAyMDI1IGF0IDA2OjIxOjEwUE0gKzAxMDAsIE1hdHRoaWFzIFVybGljaHMgd3JvdGU6 DQo+PiBIb3dldmVyLCBJJ20gcmVhc29uYWJseSBjZXJ0YWluIHRoYXQgdGhlcmUgYXJlIG90 aGVyIGNhc2VzIHdoZXJlIGRpdmVyc2lvbnMNCj4+IGFyZSBpbnRlbnRpb25hbCBhbmQgcGVy ZmVjdGx5IHZhbGlkLg0KPiBEbyB5b3UgaGF2ZSBhbiBleGFtcGxlPw0KDQpEb2VzIHBlcmxk b2MgZGl2ZXJ0aW5nIHRoZSBzdHViIHBlcmxkb2Mgc28gdGhhdCBpdCBjYW4gaW5zdGFsbCB0 aGUgcmVhbCANCm9uZSBjb3VudD8NCg0KKFRoYXQncyB0aGUgb25seSBvbmUgb24gbXkgZGVz a3RvcCB0aGF0J3Mgbm90IGdseC1kaXZlcnNpb25zIG9yIHVzcm1lcmdlLikNCg0KPj4gSSBr aW5kb2YgZG91YnQgdGhhdCB3ZSdkIGdldCBhIG1ham9yaXR5IHRvIHNpZ24gb2ZmIG9uIHRo YXQuDQo+IFlvdSBkb24ndCBuZWVkIHRvIHVzZSBpdCwgc28gZG9uJ3Q/ICBBbGwgb2YgdGhh dCBpcyBvcHQtaW4uDQpGYWlyIGVub3VnaC4NCg0KLS0gDQotLSByZWdhcmRzDQotLSANCi0t IE1hdHRoaWFzIFVybGljaHMNCg0K
    --------------bfBuuXe204S0JDAyBSr2toVJ
    Content-Type: text/html; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <div class="moz-cite-prefix">On 06.03.25 19:42, Bastian Blank wrote:<br>
    </div>
    <blockquote type="cite"
    cite="mid:20250306184258.rzcyevzeheznsts2@shell.thinkmo.de">
    <pre wrap="" class="moz-quote-pre">On Thu, Mar 06, 2025 at 06:21:10PM +0100, Matthias Urlichs wrote:
    </pre>
    <blockquote type="cite">
    <pre wrap="" class="moz-quote-pre">However, I'm reasonably certain that there are other cases where diversions
    are intentional and perfectly valid. </pre>
    </blockquote>
    <pre wrap="" class="moz-quote-pre">Do you have an example?
    </pre>
    </blockquote>
    <p>Does perldoc diverting the stub perldoc so that it can install
    the real one count?<br>
    </p>
    <p>(That's the only one on my desktop that's not glx-diversions or
    usrmerge.)</p>
    <blockquote type="cite"
    cite="mid:20250306184258.rzcyevzeheznsts2@shell.thinkmo.de">
    <blockquote type="cite">
    <pre wrap="" class="moz-quote-pre">I kindof doubt that we'd get a majority to sign off on that.
    </pre>
    </blockquote>
    <pre wrap="" class="moz-quote-pre">
    You don't need to use it, so don't? All of that is opt-in.</pre>
    </blockquote>
    Fair enough.<span style="white-space: pre-wrap">
    </span>
    <pre class="moz-signature" cols="72">--
    -- regards
    --
    -- Matthias Urlichs</pre>
    </body>
    </html>

    --------------bfBuuXe204S0JDAyBSr2toVJ--

    --------------xw0GAPIKpeti9wCgTkaZ5SLG--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmfJ/b4FAwAAAAAACgkQcs+OXiW0wpMh ThAAocx9i0tqQS63Bn2vDieyl6tsIRgZ5s5ueMhTP2OMXgZ4ErnZm261HhEvDUW+xYwa4rrxySVh gz3n4hiMRp2euEztS5bT/btmCvhCzJQS87YPgRTBgzkksX/4HDFWPDa8DoCQaP2hdv/rGtD/nV7f 3PsH68fhDEJxt9CLVPITkFZ9dYrqitTk307/bEf6aHpE7iW54xCtHMsy4irbfEE3ZN9Q7Qmwlbfs cuo/OM2frQyneSmnB4qzS7Fik20IaTnQKpw+7znWVQZyK9d71hfjagkasog54cZNHgufJI9DqKhQ UJDjoJBwNQgmecmEJ5E4N1Ti3ZacqhrSZ/acPPsXtFIu/OfHfdKxc7/7ASYegkiG2kSWMpZsFF3M ATkHI6jPXTVanHq83/q7YqTWW67BZYtBOf8H05yvEDUHsa5fmlWjsMZQzUsDuLYJ9LQa+ru16VlS WRO3W9zlqKw+dxFHrAkCinpZBcX9NiiirnmoU92xRlCfupf/ON1I3o6GVygFgjGHOFKi/2ZDnIOb SHuk0VOB/8DpBZJGUkVn1jfuq3Ff2HxW7wO5JNoVrSXUj4a43a9OtV0pg8ZV5eG+PtwqFzJ/Lj1s 3LuV/k04HguGnNDoZk89m3vgQ66lDHUutEET5rnn0pfQHxAOkjnxLraQOCQDXI7KRQHscJooqAw4 SkY=
    =SWQ6
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
  • From Chris Hofstaedtler@21:1/5 to All on Thu Mar 6 23:10:02 2025
    * Otto Kekäläinen <otto@debian.org> [250306 19:57]:
    Salsa CI has had for many years the job 'missing-breaks' that
    complements piuparts by checking that the files a package introduce
    don't clash with files shipped by any other package in the
    distribution without having proper Breaks/Replaces in the
    `debian/control` file. This job works well, being quick to run and has
    had zero false positives in our experience.
    ^^^^

    https://binarycontrol.debian.net/?q=dpkg-divert&path=unstable%2F

    This doesn't give a huge list of packages using diversions, but very
    high profile packages are in there. I wonder what your testing
    strategy was :-)

    In salsa CI now I see:

    $ check_for_missing_breaks_replaces.py -o ${WORKING_DIR}/missing_breaks.xml --changes-file ${WORKING_DIR}/*.changes
    [ERROR] Missing Breaks/Replaces found
    [ERROR] runit-init conflicts with init-system-helpers files: {'/usr/share/man/man8/invoke-rc.d.8.gz', '/usr/sbin/service', '/usr/sbin/invoke-rc.d', '/usr/share/man/man8/service.8.gz'}
    Uploading artifacts for failed job

    this looks like false positive, file are in fact diverted. Does the test
    check for for diversions?

    No, it does not. This is now tracked at >https://salsa.debian.org/salsa-ci-team/pipeline/-/issues/418

    The challenge is that most of the debian/ contents is declarative,
    such as the file lists in debian-*.install files, while the diversions
    are procedural code inside maintainer scripts and challenging to >automatically analyze.

    Yup. dumat has a lot of code to deal with diversions. But overall it
    seems totally doable/reusable.

    live-tools also seems to divert files from initramfs-tools, which is
    how I found out about this mail thread.

    Best,
    Chris

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Urlichs@21:1/5 to All on Fri Mar 7 08:30:01 2025
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------pz0ubgbzhMzo5qi0Su6rMWNf
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMDYuMDMuMjUgMjM6MDEsIENocmlzIEhvZnN0YWVkdGxlciB3cm90ZToNCj4gVGhpcyBk b2Vzbid0IGdpdmUgYSBodWdlIGxpc3Qgb2YgcGFja2FnZXMgdXNpbmcgZGl2ZXJzaW9ucywg YnV0IHZlcnkgDQo+IGhpZ2ggcHJvZmlsZSBwYWNrYWdlcyBhcmUgaW4gdGhlcmUuDQoNCktl ZXAgaW4gbWluZCB0aGF0IG1hbnkgb2YgdGhvc2UgYXJlIHRoZXJlIHRvIHN1cHBvcnQgdXNy bWVyZ2U7IHRoZXNlIA0KcHJvYmFibHkgc2hvdWxkIGJlIGZpbHRlcmVkIG91dC4NCg0KT24g dGhlIG90aGVyIGhhbmQsIG9uIG15IHN5c3RlbSBsb3RzIG9mIGRpdmVyc2lvbnMgYXJlIHRh Z2dlZCANCiJnbHgtZGl2ZXJzaW9ucyI7IHRoZSBwYWNrYWdlcyB0aGF0IGluc3RhbGxlZCB0 aGVzZSBkb24ndCBzaG93IHVwIGluIA0KaHR0cHM6Ly9iaW5hcnljb250cm9sLmRlYmlhbi5u ZXQvP3E9ZHBrZy1kaXZlcnQmcGF0aD11bnN0YWJsZS4gDQpBcHBhcmVudGx5ICJkcGtnLW1h aW50c2NyaXB0LWhlbHBlciBzeW1saW5rX3RvX2RpciIgZG9lcyAoZGlkPykgc29tZSANCmlu dGVyZXN0aW5nIGJlaGluZC10aGUtc2NlbmVzIG1hZ2ljIHRoZXJlLg0KDQpCb3R0b20gbGlu ZTogSXQncyBub3QgKnRoYXQqIGVhc3kuDQoNCi0tIA0KLS0gcmVnYXJkcw0KLS0gDQotLSBN YXR0aGlhcyBVcmxpY2hzDQoNCg==

    --------------pz0ubgbzhMzo5qi0Su6rMWNf--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEEr9eXgvO67AILKKGfcs+OXiW0wpMFAmfKmkcFAwAAAAAACgkQcs+OXiW0wpPv BRAAyY3Y7gfa0c390sDg9UgwTOtKsUB28uIuT+AwRJN6Q3F0R9GjA0D/rbXusNDsD/iVuHW/8pAI vX8bOWV9uBxIB8gIVox9j4XPcuJVfF4SItnZqfTRoTL/Z1jCadXZ7aZmKIwMlr9knm/2DZyK1DBY EGbq92TnKzJkWv93PE33MVIaaJuY1Go8M9aFaR3PYgTzXw+3K6Q38oDH6tlx1EEChKA5OVOv9f7l igyUV+rhKdkO+10XGtLrMdRJGH89+5wKcbaTYY0S1fyqWZ0783tUlxvWew4Bfl0t3o+spCECJo+O 1OOFvep2jzZ0bXBMyGDDnZX/53fnepymL+hnAMH+pEUcstNuAfFn9qrt3n0I0hQNggGOcGoGtDtr HcVGYTOAJGyJtz2GqNpRaPa6LLGlO3P5qzL2YQaPjk9UNgDr8T9QKRZa8JqWgr2otkXNNt/lX9/A 2uqxaPT5qzATMkFnUX0WaAP3ea8Fe9ZPaShDfrOKOhE/lsGiOz83h+T+ZtpVY2pTaAOyXisMXxsS s84fT909rFaFOoWOE0ksR1txHlLB8jQEZzNkP8c10exgpSgK1+caIbAlmYY4v7znBnUTrMf21WUy IfH2i+9sfge1Zl84MrkiSLDTtCxE1MPzbAEk2+pI7CA5A7I0Swi0mpJsUzBVQfteTbtnvWg384iD 9zY=
    =pNMj
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?B?T3R0byBLZWvDpGzDpGluZW4=?@21:1/5 to All on Thu Mar 13 00:40:01 2025
    Hi,

    Would Matthias or anyone else active in this discussion be willing to
    be the reviewer for https://salsa.debian.org/debian/devscripts/-/merge_requests/478?
    It has been pending for almost two weeks with zero reviews. I don't
    feel it would be prudent of me to merge it with no additional eyeballs
    checking it at least superficially.

    - Otto

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)