• Bug#1098948: Changing 10.1 requirements for /usr/games

    From Simon McVittie@21:1/5 to Sean Whitton on Wed Feb 26 14:50:01 2025
    XPost: linux.debian.bugs.dist, linux.debian.policy

    On Wed, 26 Feb 2025 at 20:33:46 +0800, Sean Whitton wrote:
    I believe that there is a procedural issue which trumps the substantive
    issue about merging or not merging [/usr/bin with /usr/games]
    ...
    I would encourage those of you most interested in the merge to do an MBF requesting the merge be performed for all the affected packages, and
    then we can undo this again.

    You're talking about this in terms of a "merge", but I think both the
    existing Policy wording and the change you're proposing are about the
    extent to which executables with different functionality in /usr/bin/ and /usr/games/ are allowed to have the same name, like /usr/bin/pacman (Arch Linux's package manager) and /usr/games/pacman (a maze-navigation game),
    and that's not quite the same thing.

    I think it's reasonable to want to forbid/avoid name collisions between /usr/bin and /usr/games, even without also wanting to merge the two
    directories (make one an alias for the other) or otherwise remove
    /usr/games as a separate concept.

    I am unsure whether it is a good idea to merge or remove /usr/games
    (there is lots of reasoning for and against it in #567033), but I do
    think we should consider it to be a bug to have two executables of the
    same name in the PATH. For example, if one of the pacmans (pacmen?) was renamed, then I would be able to be confident that running 'pacman'
    on a sufficiently modern Debian system would either do what I expect,
    or raise an error because the package was not installed, but certainly
    not result in getting the other meaning of pacman, regardless of whether
    my PATH looks like /usr/bin:/usr/games or /usr/games:/usr/bin.

    Similarly I think it would be a consistent and reasonable position to want
    to keep /usr/sbin separate from /usr/bin, but require /usr/sbin/foo to be functionally equivalent to /usr/bin/foo in any situation where both exist.

    What I would like to avoid here is having maintainers feel that they
    should reject attempts to resolve naming collisions with reasoning like
    "this is part of a merge like the /usr-merge and I didn't like the
    /usr-merge", because I think resolving naming collisions in the PATH is
    a good goal in its own right, independent of whether any more directories
    get merged.

    ("may" and "encouraged" here have their official Policy meanings)

    --8<---------------cut here---------------start------------->8---
    diff --git a/policy/ch-files.rst b/policy/ch-files.rst
    index 6fda3b1..c2e4700 100644
    --- a/policy/ch-files.rst
    +++ b/policy/ch-files.rst
    @@ -19,6 +19,13 @@ to the ``debian-devel`` mailing list and try to find a consensus about
    which program will have to be renamed. If a consensus cannot be reached,
    *both* programs must be renamed.

    +There is a exception to the above rules for ``/usr/games``: packages that +already install programs to ``/usr/games``, where another package installs a +program of the same with different functionality to a different directory on +the default ``PATH``, may continue to do so. However, packages must not +install any newly conflicting programs to ``/usr/games``, and packages already
    +doing so are encouraged to move these programs to non-conflicting names.
    +
    Packages must not install files to paths whose first component is a name
    directly under the file system root and which is a symbolic link to a
    directory of the same name under ``/usr``. That is, packages must not install
    --8<---------------cut here---------------end--------------->8---

    Do we know that this is only a practical problem for /usr/games, or are
    there also collisions between /usr/bin/foo and /usr/sbin/foo in practice?
    (Is this something that dumat or debian-dedup can tell us?)

    smcv

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Chris Hofstaedtler@21:1/5 to Chris Hofstaedtler on Wed Feb 26 17:30:01 2025
    XPost: linux.debian.bugs.dist, linux.debian.policy

    On Wed, Feb 26, 2025 at 02:59:54PM +0100, Chris Hofstaedtler wrote:
    * Simon McVittie <[email protected]> [250226 14:45]:
    Do we know that this is only a practical problem for /usr/games, or are there also collisions between /usr/bin/foo and /usr/sbin/foo in practice?

    /usr/bin/foo and /usr/sbin/foo is where this started, and most
    packages got fixed. The remaining ones have open bugs.

    I finally usertagged and pinged the remaining bin<>sbin bugs: https://udd.debian.org/cgi-bin/[email protected]&tag=bin-sbin-conflict

    So really, this is now about the accidential expansion to
    /usr/games. I agree it would be good to fix the name conflicts there
    too. Just not in time for trixie.

    Unfortunately it turns out, we _already_ have problems in the
    archive. I was previously under the impression that it /probably/
    didn't really matter.

    Simon however pointed out the pacman-package-manager <> pacman
    conflict, which is actually *bad*:

    pacman installs a pacman.desktop file with "Exec=pacman". It
    *relies* on /usr/games/pacman a) being in PATH and b) being _the
    only_ "pacman" program in PATH.

    At least this conflict is IMO truly a serious bug, _regardless_ of
    what policy says.


    Having found this example (thanks to Michael Biebl for some
    discussion on this), I no longer belief we should really have an
    exception for trixie. Also, if its ~22 bugs, then it's not the end
    of the world either.


    Chris

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to All on Wed Feb 26 13:40:01 2025
    XPost: linux.debian.bugs.dist, linux.debian.policy

    Package: debian-policy
    Version: 4.7.1.0
    Severity: important
    X-debbugs-cc: [email protected], [email protected], [email protected], [email protected]

    Hello,

    Thank you all for your replies.

    I believe that there is a procedural issue which trumps the substantive
    issue about merging or not merging: releasing Policy is not meant to
    render a bunch of packages buggy (of any bug severity) except where the
    change to Policy is a deliberate step in some larger process.

    If this was one or two cases, we could ignore it. But it's not, it's
    loads of packages. Procedurally, this is just too far from our norm.

    So we have to lower the severity of the wording for /etc/games.

    Therefore I am seeking seconds for the following patch.
    I would encourage those of you most interested in the merge to do an MBF requesting the merge be performed for all the affected packages, and
    then we can undo this again.

    ("may" and "encouraged" here have their official Policy meanings)

    --8<---------------cut here---------------start------------->8---
    diff --git a/policy/ch-files.rst b/policy/ch-files.rst
    index 6fda3b1..c2e4700 100644
    --- a/policy/ch-files.rst
    +++ b/policy/ch-files.rst
    @@ -19,6 +19,13 @@ to the ``debian-devel`` mailing list and try to find a consensus about
    which program will have to be renamed. If a consensus cannot be reached,
    *both* programs must be renamed.

    +There is a exception to the above rules for ``/usr/games``: packages that +already install programs to ``/usr/games``, where another package installs a +program of the same with different functionality to a different directory on +the default ``PATH``, may continue to do so. However, packages must not +install any newly conflicting programs to ``/usr/games``, and packages already +doing so are encouraged to move these programs to non-conflicting names.
    +
    Packages must not install files to paths whose first component is a name
    directly under the file system root and which is a symbolic link to a
    directory of the same name under ``/usr``. That is, packages must not install --8<---------------cut here---------------end--------------->8---

    --
  • From Chris Hofstaedtler@21:1/5 to All on Wed Feb 26 15:10:01 2025
    XPost: linux.debian.bugs.dist, linux.debian.policy

    * Simon McVittie <[email protected]> [250226 14:45]:
    Do we know that this is only a practical problem for /usr/games, or are
    there also collisions between /usr/bin/foo and /usr/sbin/foo in practice?

    /usr/bin/foo and /usr/sbin/foo is where this started, and most
    packages got fixed. The remaining ones have open bugs.

    (Is this something that dumat or debian-dedup can tell us?)

    The (dumat) database knows, and can be queried. But as said, the
    bugs are filed and mostly fixed.

    So really, this is now about the accidential expansion to
    /usr/games. I agree it would be good to fix the name conflicts there
    too. Just not in time for trixie.

    Chris


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

    iQIzBAABCAAdFiEEfRrP+tnggGycTNOSXBPW25MFLgMFAme/Hk4ACgkQXBPW25MF LgMVNw/8D7gaQ8s53JQzNHIqV0GC5OcXzv0++Atk4PbiubjxqXlIbtR3FconL0Po lzzLrMfOGaTi9R/U2bfb8TczX/lnWWA3wODdCRKikfHpZ+kaH9zmZx4hiatKUE5P Gh3XPVabB8IPia9PgfRoKuioZq6e/2s8EPFFDumhckY0PCJWI+TzHUd8ffqQkvu5 sxIXmG8rfvC+llmWROA7+2/rpqUAgjKUjcEGRXhNjuct9Hf8T2PKtGWjHhlKZwFi X9bbO009NsHjxdb3YptYM8nRrsYbslKc05ephs7QXb1EQJ0XhzkJzWRO2WNOQ/x+ gHa12sEbgwWlQavSdtmV8OdiOlC45C8dClIiC5oL2LrOJvOnnuw0JWZ40ELt+OzJ anw+gP9VSrIZX8cDUtuTCl2nPw1WucYWshjlrVP3M7bVXosiq5i//v72SHzoyZ4J asaf+0xQBgDQqdtfHkPyD63cW9hAay6OGAj1ZsBQrexcM76LtEbpQ0uG6/PnWOWR lE4olrPrXREREnl1l8wIWsMJMNUbOkM5M7CT8qjw45AtZ9qoxD0r/iI8XBzcKTmj yATtREz+QMC6HeEUPhY48Rq/sGGLkGO4f/f/oSdNaVjkD9dT+biEE255SWUC8wr/ h7vcGbk3pZcG06w05mk8G8QY57CDtz1hrh6o1J51KaOtj83HK94=
    =Urhb
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Jeremy_B=C3=ADcha?=@21:1/5 to All on Wed Feb 26 20:10:03 2025
    XPost: linux.debian.bugs.dist, linux.debian.policy

    I'm -1 on changing Policy here, even though the change would not have
    landed this week had you realized it affected these packages.

    By the way, the games I maintain in the GNOME team install to
    /usr/games/ . I believe this is a deviation from what distros not
    based on Debian do. We don't touch their .desktop files which means
    their Exec line does not have a /usr/games/ prefix.

    Thank you,
    Jeremy Bícha

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Helmut Grohne@21:1/5 to Simon McVittie on Wed Feb 26 23:40:01 2025
    XPost: linux.debian.bugs.dist, linux.debian.policy

    On Wed, Feb 26, 2025 at 01:41:54PM +0000, Simon McVittie wrote:
    What I would like to avoid here is having maintainers feel that they
    should reject attempts to resolve naming collisions with reasoning like
    "this is part of a merge like the /usr-merge and I didn't like the /usr-merge", because I think resolving naming collisions in the PATH is
    a good goal in its own right, independent of whether any more directories
    get merged.

    Let me second this.

    Do we know that this is only a practical problem for /usr/games, or are
    there also collisions between /usr/bin/foo and /usr/sbin/foo in practice?
    (Is this something that dumat or debian-dedup can tell us?)

    You don't have to reach that deeply into the toolbox.

    #!/usr/bin/python3
    import re
    import subprocess
    names = {}
    for subdir in ("bin", "games", "sbin"):
    for line in subprocess.check_output(
    ["apt-file", "search", "-x", f"^/usr/{subdir}/"], encoding="utf8",
    ).splitlines():
    match = re.match("^([^:]+): /usr/[^/]+/(.*)$", line)
    names.setdefault(match.group(2), {})[match.group(1)] = subdir
    for name, owners in names.items():
    if len(owners) > 1:
    print(name, owners)

    Of course this does not consider conflicts, so in practice we have some
    false positives. Here is an example output.

    ace {'ace': 'bin', 'libace-perl': 'bin'}

    This one uses Conflicts and I consider this an abuse of Conflicts,
    because the two tools don't even roughly do the same thing.

    efetch {'acedb-other': 'bin', 'ncbi-entrez-direct': 'bin'}

    Not sure about this one.

    adb {'adb': 'bin', 'google-android-platform-tools-installer': 'bin'}

    This kinda is a false positive as it conflicts adb and provides a
    different implementation.

    alevt {'alevt': 'bin', 'dvb-apps': 'bin'}
    alevt-cap {'alevt': 'bin', 'dvb-apps': 'bin'}
    alevt-date {'alevt': 'bin', 'dvb-apps': 'bin'}

    Does that mean that dvb-apps ships a vendor copy of alevt?

    sethdlc {'ax25-tools': 'bin', 'dahdi': 'sbin'}

    Here is a case of bin vs sbin conflict.

    bart {'bart': 'bin', 'bart-cuda': 'bin'}
    crontab {'bcron': 'bin', 'cron': 'bin', 'cronie': 'bin', 'systemd-cron': 'bin'}
    x86_64-linux-gnu-addr2line {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-ar {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gprof {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-nm {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-objcopy {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-objdump {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-ranlib {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-readelf {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-size {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-strings {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-strip {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    bison {'bison': 'bin', 'bison++': 'bin'}
    borg {'borgbackup': 'bin', 'borgbackup-is-borgbackup2': 'bin'}
    borgfs {'borgbackup': 'bin', 'borgbackup-is-borgbackup2': 'bin'}
    busybox {'busybox': 'bin', 'busybox-static': 'bin'}
    cargo {'cargo': 'bin', 'rustup': 'bin'}

    bart, cron and binutils, bison, borg, busybox, cargo are all proper
    Conflicts with vaguely compatible command semantics.

    cdecl {'cdecl': 'bin', 'cutils': 'bin'}
    vg {'cgvg': 'bin', 'vg': 'bin'}
    chr {'chr': 'bin', 'chr-tiny': 'bin'}
    colorize {'colorize': 'bin', 'forensics-colorize': 'bin'}
    conky {'conky-all': 'bin', 'conky-cli': 'bin', 'conky-std': 'bin'}
    ckbcomp {'console-setup': 'bin', 'console-setup-mini': 'bin'}
    setupcon {'console-setup': 'bin', 'console-setup-mini': 'bin'}
    mailq {'courier-mta': 'bin', 'dma': 'bin', 'esmtp-run': 'bin', 'exim4-daemon-heavy': 'bin', 'exim4-daemon-light': 'bin', 'nullmailer': 'bin', 'postfix': 'bin', 'ssmtp': 'sbin'}

    mailq is an interesting one as ssmtp installs to sbin, but they properly conflict via mail-transport-agent.

    crm {'crm114': 'bin', 'crmsh': 'sbin'}

    This is a classic bin vs sbin conflict. I don't see it filed anywhere.

    cu {'cu': 'bin', 'opencu': 'bin'}
    lpq {'cups-bsd': 'bin', 'lpr': 'bin', 'lprng': 'bin'}
    lpr {'cups-bsd': 'bin', 'lpr': 'bin', 'lprng': 'bin'}
    lprm {'cups-bsd': 'bin', 'lpr': 'bin', 'lprng': 'bin'}
    cancel {'cups-client': 'bin', 'lprng': 'bin'}
    lp {'cups-client': 'bin', 'lprng': 'bin'}
    lpstat {'cups-client': 'bin', 'lprng': 'bin'}
    foomatic-rip {'cups-filters': 'bin', 'foomatic-filters': 'bin'}
    ippfind {'cups-ipp-utils': 'bin', 'ippsample': 'bin'}
    ipptool {'cups-ipp-utils': 'bin', 'ippsample': 'bin'}
    cygdb3 {'cython3': 'bin', 'cython3-legacy': 'bin'}
    cython3 {'cython3': 'bin', 'cython3-legacy': 'bin'}
    dk_make_protocol {'dbuskit-dev-tools': 'bin', 'libdbuskit-dev': 'bin'}
    dclock {'dclock': 'bin', 'ivtools-bin': 'bin'}
    dico {'dico': 'bin', 'le-dico-de-rene-cougnenc': 'bin'}
    markdown {'discount': 'bin', 'libtext-markdown-perl': 'bin', 'markdown': 'bin'}
    newaliases {'dma': 'bin', 'esmtp-run': 'bin', 'exim4-daemon-heavy': 'bin', 'exim4-daemon-light': 'bin', 'msmtp-mta': 'bin', 'nullmailer': 'bin', 'postfix': 'bin', 'courier-mta': 'sbin', 'opensmtpd': 'sbin', 'ssmtp': 'sbin'}
    dmtracedump {'dmtracedump': 'bin', 'google-android-platform-tools-installer': 'bin'}
    docker {'docker-cli': 'bin', 'podman-docker': 'bin'}
    dcut {'dput': 'bin', 'dput-ng': 'bin'}
    dput {'dput': 'bin', 'dput-ng': 'bin'}
    drawterm {'drawterm': 'bin', 'drawterm-9front': 'bin'}
    dstat {'dstat': 'bin', 'pcp': 'bin'}
    duc {'duc': 'bin', 'duc-nox': 'bin'}
    zap {'dvb-apps': 'bin', 'libxbase64-bin': 'bin'}
    busctl {'elogind': 'bin', 'systemd': 'bin'}
    loginctl {'elogind': 'bin', 'systemd': 'bin'}
    emacsclient.emacs {'emacs-gtk': 'bin', 'emacs-lucid': 'bin', 'emacs-nox': 'bin', 'emacs-pgtk': 'bin'}
    showdb {'emboss': 'bin', 'sqlite3-tools': 'bin'}
    einfo {'epub-utils': 'bin', 'ncbi-entrez-direct': 'bin'}
    espeak {'espeak': 'bin', 'espeak-ng-espeak': 'bin'}
    etc1tool {'etc1tool': 'bin', 'google-android-platform-tools-installer': 'bin'}
    ettercap {'ettercap-graphical': 'bin', 'ettercap-text-only': 'bin'}
    etterfilter {'ettercap-graphical': 'bin', 'ettercap-text-only': 'bin'}
    etterlog {'ettercap-graphical': 'bin', 'ettercap-text-only': 'bin'}
    far2l {'far2l': 'bin', 'far2l-wx': 'bin'}
    far2ledit {'far2l': 'bin', 'far2l-wx': 'bin'}
    fastboot {'fastboot': 'bin', 'google-android-platform-tools-installer': 'bin'}
    ffindex_apply {'ffindex': 'bin', 'hhsuite': 'bin'}
    ffindex_build {'ffindex': 'bin', 'hhsuite': 'bin'}
    ffindex_from_fasta {'ffindex': 'bin', 'hhsuite': 'bin'}
    ffindex_get {'ffindex': 'bin', 'hhsuite': 'bin'}
    ffindex_modify {'ffindex': 'bin', 'hhsuite': 'bin'}
    ffindex_unpack {'ffindex': 'bin', 'hhsuite': 'bin'}
    firefox {'firefox': 'bin', 'firefox-esr': 'bin'}
    rtmpsrv {'flvstreamer': 'bin', 'rtmpdump': 'sbin'}
    rtmpsuck {'flvstreamer': 'bin', 'rtmpdump': 'sbin'}

    Are we sure bin vs sbin conflicts are filed?

    fontforge {'fontforge': 'bin', 'fontforge-nox': 'bin'}
    fontimage {'fontforge': 'bin', 'fontforge-nox': 'bin'}
    fontlint {'fontforge': 'bin', 'fontforge-nox': 'bin'}
    sfddiff {'fontforge': 'bin', 'fontforge-nox': 'bin'}
    x86_64-w64-mingw32ucrt-c++ {'g++-mingw-w64-ucrt64': 'bin', 'gcc-mingw-w64-bootstrap': 'bin'}
    x86_64-w64-mingw32ucrt-g++ {'g++-mingw-w64-ucrt64': 'bin', 'gcc-mingw-w64-bootstrap': 'bin'}
    harep {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hbal {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hcheck {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hinfo {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hroller {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hscan {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hspace {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hsqueeze {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    x86_64-w64-mingw32ucrt-cpp {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcc {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcc-ar {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcc-nm {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcc-ranlib {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcov {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcov-dump {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcov-tool {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    go {'gccgo-go': 'bin', 'golang-go': 'bin'}
    gofmt {'gccgo-go': 'bin', 'golang-go': 'bin'}
    gearmand {'gearman-server': 'bin', 'gearman-job-server': 'sbin'}

    Really?

    git-remote-hg {'git-cinnabar': 'bin', 'git-remote-hg': 'bin'}
    gitaly {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-backup {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-blackbox {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-debug {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-gpg {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-hooks {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-lfs-smudge {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-ssh {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-wrapper {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    praefect {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gnat {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatbind {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatchop {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatclean {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnathtml {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatkr {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatlink {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatls {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatmake {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatname {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatprep {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatgcc {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    x86_64-linux-gnu-gnat {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatbind {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatchop {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatclean {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatgcc {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnathtml {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatkr {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatlink {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatls {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatmake {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatname {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatprep {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnat {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatbind {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatchop {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatclean {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatgcc {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnathtml {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatkr {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatlink {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatls {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatmake {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatname {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatprep {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    alpha-linux-gnu-gnat {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatbind {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatchop {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatclean {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatgcc {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnathtml {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatkr {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatlink {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatls {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatmake {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatname {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatprep {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    arm-linux-gnueabi-gnat {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatbind {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatchop {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatclean {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatgcc {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnathtml {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatkr {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatlink {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatls {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatmake {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatname {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatprep {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabihf-gnat {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatbind {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatchop {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatclean {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatgcc {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnathtml {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatkr {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatlink {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatls {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatmake {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatname {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatprep {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    hppa-linux-gnu-gnat {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatbind {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatchop {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatclean {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatgcc {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnathtml {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatkr {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatlink {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatls {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatmake {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatname {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatprep {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    i686-linux-gnu-gnat {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatbind {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatchop {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatclean {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatgcc {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnathtml {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatkr {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatlink {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatls {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatmake {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatname {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatprep {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    mips-linux-gnu-gnat {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatbind {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatchop {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatclean {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatgcc {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnathtml {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatkr {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatlink {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatls {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatmake {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatname {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatprep {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips64-linux-gnuabi64-gnat {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatbind {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatchop {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatclean {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatgcc {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnathtml {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatkr {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatlink {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatls {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatmake {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatname {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatprep {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnat {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatbind {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatchop {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatclean {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatgcc {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnathtml {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatkr {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatlink {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatls {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatmake {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatname {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatprep {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mipsel-linux-gnu-gnat {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatbind {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatchop {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatclean {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatgcc {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnathtml {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatkr {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatlink {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatls {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatmake {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatname {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatprep {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnat {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatbind {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatchop {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatclean {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatgcc {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnathtml {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatkr {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatlink {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatls {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatmake {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatname {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatprep {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6el-linux-gnu-gnat {'gnat-11-mipsisa32r6el-linux-gnu': 'bin', 'gnat-12-mipsisa32r6el-linux-gnu': 'bin', 'gnat-13-mipsisa32r6el-linux-gnu': 'bin'}
    mipsisa32r6el-linux-gnu-gnatbind {'gnat-11-mipsisa32r6el-linux-gnu': 'bin', 'gnat-12-mipsisa32r6el-linux-gnu': 'bin', 'gnat-13-mipsisa32r6el-linux-gnu': 'bin'}
    mipsisa32r6el-linux-gnu-gnatchop {'gnat-11-mipsisa32r6el-linux-gnu': 'bin', 'gnat-12-mipsisa32r6el-linux-gnu': 'bin', 'gnat-13-mipsisa32r6el-linux-gnu': 'bin'}
    mipsisa32r6el-linux-gnu-gnatclean {'gnat-11-mipsisa32r6el-linux-gnu': 'bin', 'gnat-12-mipsisa32r6el-linux-gnu': 'bin', 'gnat-13-mipsisa32r6el-linux-gnu': 'bin'}
    mipsisa32r6el-linux-gnu-gnatgcc {'gnat-11-mipsisa32r6el-linux-gnu': 'bin', 'gnat-12-mipsisa32r6el-linux-gnu': 'bin', 'gnat-13-mipsisa32r6el-linux-gnu': 'bin'}
    mipsisa32r6el-linux-gnu-gnathtml {'gnat-11-mipsisa32r6el-linux-gnu': 'bin', 'gnat-12-mipsisa32r6el-linux-gnu': 'bin', 'gnat-13-mipsisa32r6el-linux-gnu': 'bin'}
    mipsisa32r6el-linux-gnu-gnatkr {'gnat-11-mipsisa32r6el-linux-gnu': 'bin', 'gnat-12-mipsisa32r6el-linux-gnu': 'bin', 'gnat-13-mipsisa32r6el-linux-gnu': 'bin'}

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Chris Hofstaedtler@21:1/5 to All on Thu Feb 27 00:40:02 2025
    XPost: linux.debian.bugs.dist, linux.debian.policy

    * Helmut Grohne <[email protected]> [250226 23:31]:
    On Wed, Feb 26, 2025 at 01:41:54PM +0000, Simon McVittie wrote:
    What I would like to avoid here is having maintainers feel that they
    should reject attempts to resolve naming collisions with reasoning like "this is part of a merge like the /usr-merge and I didn't like the /usr-merge", because I think resolving naming collisions in the PATH is
    a good goal in its own right, independent of whether any more directories get merged.

    Let me second this.

    Do we know that this is only a practical problem for /usr/games, or are there also collisions between /usr/bin/foo and /usr/sbin/foo in practice? (Is this something that dumat or debian-dedup can tell us?)

    You don't have to reach that deeply into the toolbox.

    #!/usr/bin/python3
    import re
    import subprocess
    names = {}
    for subdir in ("bin", "games", "sbin"):
    for line in subprocess.check_output(
    ["apt-file", "search", "-x", f"^/usr/{subdir}/"], encoding="utf8",
    ).splitlines():
    match = re.match("^([^:]+): /usr/[^/]+/(.*)$", line)
    names.setdefault(match.group(2), {})[match.group(1)] = subdir
    for name, owners in names.items():
    if len(owners) > 1:
    print(name, owners)

    Of course this does not consider conflicts, so in practice we have some
    false positives.

    "some" is an understatement.

    Here is an example output.

    ace {'ace': 'bin', 'libace-perl': 'bin'}

    This one uses Conflicts and I consider this an abuse of Conflicts,
    because the two tools don't even roughly do the same thing.

    efetch {'acedb-other': 'bin', 'ncbi-entrez-direct': 'bin'}

    Not sure about this one.

    This looks like a traditional filename conflict, not touched by the
    change. Someone should file a bug.


    adb {'adb': 'bin', 'google-android-platform-tools-installer': 'bin'}

    This kinda is a false positive as it conflicts adb and provides a
    different implementation.

    Both are in bin, not touched by this policy change.


    alevt {'alevt': 'bin', 'dvb-apps': 'bin'}
    alevt-cap {'alevt': 'bin', 'dvb-apps': 'bin'}
    alevt-date {'alevt': 'bin', 'dvb-apps': 'bin'}

    Does that mean that dvb-apps ships a vendor copy of alevt?

    They are all in bin, not touched by this policy change.

    sethdlc {'ax25-tools': 'bin', 'dahdi': 'sbin'}

    Here is a case of bin vs sbin conflict.

    This is filed.

    bart {'bart': 'bin', 'bart-cuda': 'bin'}
    crontab {'bcron': 'bin', 'cron': 'bin', 'cronie': 'bin', 'systemd-cron': 'bin'}
    x86_64-linux-gnu-addr2line {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-ar {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gprof {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-nm {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-objcopy {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-objdump {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-ranlib {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-readelf {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-size {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-strings {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-strip {'binutils-multiarch': 'bin', 'binutils-x86-64-linux-gnu': 'bin'}
    bison {'bison': 'bin', 'bison++': 'bin'}
    borg {'borgbackup': 'bin', 'borgbackup-is-borgbackup2': 'bin'}
    borgfs {'borgbackup': 'bin', 'borgbackup-is-borgbackup2': 'bin'}
    busybox {'busybox': 'bin', 'busybox-static': 'bin'}
    cargo {'cargo': 'bin', 'rustup': 'bin'}

    bart, cron and binutils, bison, borg, busybox, cargo are all proper
    Conflicts with vaguely compatible command semantics.

    cdecl {'cdecl': 'bin', 'cutils': 'bin'}
    vg {'cgvg': 'bin', 'vg': 'bin'}
    chr {'chr': 'bin', 'chr-tiny': 'bin'}
    colorize {'colorize': 'bin', 'forensics-colorize': 'bin'}
    conky {'conky-all': 'bin', 'conky-cli': 'bin', 'conky-std': 'bin'}
    ckbcomp {'console-setup': 'bin', 'console-setup-mini': 'bin'}
    setupcon {'console-setup': 'bin', 'console-setup-mini': 'bin'}
    mailq {'courier-mta': 'bin', 'dma': 'bin', 'esmtp-run': 'bin', 'exim4-daemon-heavy': 'bin', 'exim4-daemon-light': 'bin', 'nullmailer': 'bin', 'postfix': 'bin', 'ssmtp': 'sbin'}

    mailq is an interesting one as ssmtp installs to sbin, but they properly conflict via mail-transport-agent.

    Again these are all within bin, except for mailq. But as you said,
    they (heopfully) conflict via mail-transport-agent.

    Starting from here I'll snip bin<>sbin conflicts from your list, and
    answer them below.

    cu {'cu': 'bin', 'opencu': 'bin'}
    lpq {'cups-bsd': 'bin', 'lpr': 'bin', 'lprng': 'bin'}
    lpr {'cups-bsd': 'bin', 'lpr': 'bin', 'lprng': 'bin'}
    lprm {'cups-bsd': 'bin', 'lpr': 'bin', 'lprng': 'bin'}
    cancel {'cups-client': 'bin', 'lprng': 'bin'}
    lp {'cups-client': 'bin', 'lprng': 'bin'}
    lpstat {'cups-client': 'bin', 'lprng': 'bin'}
    foomatic-rip {'cups-filters': 'bin', 'foomatic-filters': 'bin'}
    ippfind {'cups-ipp-utils': 'bin', 'ippsample': 'bin'}
    ipptool {'cups-ipp-utils': 'bin', 'ippsample': 'bin'}
    cygdb3 {'cython3': 'bin', 'cython3-legacy': 'bin'}
    cython3 {'cython3': 'bin', 'cython3-legacy': 'bin'}
    dk_make_protocol {'dbuskit-dev-tools': 'bin', 'libdbuskit-dev': 'bin'}
    dclock {'dclock': 'bin', 'ivtools-bin': 'bin'}
    dico {'dico': 'bin', 'le-dico-de-rene-cougnenc': 'bin'}
    markdown {'discount': 'bin', 'libtext-markdown-perl': 'bin', 'markdown': 'bin'}
    newaliases {'dma': 'bin', 'esmtp-run': 'bin', 'exim4-daemon-heavy': 'bin', 'exim4-daemon-light': 'bin', 'msmtp-mta': 'bin', 'nullmailer': 'bin', 'postfix': 'bin', 'courier-mta': 'sbin', 'opensmtpd': 'sbin', 'ssmtp': 'sbin'}
    dmtracedump {'dmtracedump': 'bin', 'google-android-platform-tools-installer': 'bin'}
    docker {'docker-cli': 'bin', 'podman-docker': 'bin'}
    dcut {'dput': 'bin', 'dput-ng': 'bin'}
    dput {'dput': 'bin', 'dput-ng': 'bin'}
    drawterm {'drawterm': 'bin', 'drawterm-9front': 'bin'}
    dstat {'dstat': 'bin', 'pcp': 'bin'}
    duc {'duc': 'bin', 'duc-nox': 'bin'}
    zap {'dvb-apps': 'bin', 'libxbase64-bin': 'bin'}
    busctl {'elogind': 'bin', 'systemd': 'bin'}
    loginctl {'elogind': 'bin', 'systemd': 'bin'}
    emacsclient.emacs {'emacs-gtk': 'bin', 'emacs-lucid': 'bin', 'emacs-nox': 'bin', 'emacs-pgtk': 'bin'}
    showdb {'emboss': 'bin', 'sqlite3-tools': 'bin'}
    einfo {'epub-utils': 'bin', 'ncbi-entrez-direct': 'bin'}
    espeak {'espeak': 'bin', 'espeak-ng-espeak': 'bin'}
    etc1tool {'etc1tool': 'bin', 'google-android-platform-tools-installer': 'bin'}
    ettercap {'ettercap-graphical': 'bin', 'ettercap-text-only': 'bin'}
    etterfilter {'ettercap-graphical': 'bin', 'ettercap-text-only': 'bin'}
    etterlog {'ettercap-graphical': 'bin', 'ettercap-text-only': 'bin'}
    far2l {'far2l': 'bin', 'far2l-wx': 'bin'}
    far2ledit {'far2l': 'bin', 'far2l-wx': 'bin'}
    fastboot {'fastboot': 'bin', 'google-android-platform-tools-installer': 'bin'}
    ffindex_apply {'ffindex': 'bin', 'hhsuite': 'bin'}
    ffindex_build {'ffindex': 'bin', 'hhsuite': 'bin'}
    ffindex_from_fasta {'ffindex': 'bin', 'hhsuite': 'bin'}
    ffindex_get {'ffindex': 'bin', 'hhsuite': 'bin'}
    ffindex_modify {'ffindex': 'bin', 'hhsuite': 'bin'}
    ffindex_unpack {'ffindex': 'bin', 'hhsuite': 'bin'}
    firefox {'firefox': 'bin', 'firefox-esr': 'bin'}
    fontforge {'fontforge': 'bin', 'fontforge-nox': 'bin'}
    fontimage {'fontforge': 'bin', 'fontforge-nox': 'bin'}
    fontlint {'fontforge': 'bin', 'fontforge-nox': 'bin'}
    sfddiff {'fontforge': 'bin', 'fontforge-nox': 'bin'}
    x86_64-w64-mingw32ucrt-c++ {'g++-mingw-w64-ucrt64': 'bin', 'gcc-mingw-w64-bootstrap': 'bin'}
    x86_64-w64-mingw32ucrt-g++ {'g++-mingw-w64-ucrt64': 'bin', 'gcc-mingw-w64-bootstrap': 'bin'}
    harep {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hbal {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hcheck {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hinfo {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hroller {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hscan {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hspace {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    hsqueeze {'ganeti': 'bin', 'ganeti-htools': 'bin'}
    x86_64-w64-mingw32ucrt-cpp {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcc {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcc-ar {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcc-nm {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcc-ranlib {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcov {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcov-dump {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    x86_64-w64-mingw32ucrt-gcov-tool {'gcc-mingw-w64-bootstrap': 'bin', 'gcc-mingw-w64-ucrt64': 'bin'}
    go {'gccgo-go': 'bin', 'golang-go': 'bin'}
    gofmt {'gccgo-go': 'bin', 'golang-go': 'bin'}
    git-remote-hg {'git-cinnabar': 'bin', 'git-remote-hg': 'bin'}
    gitaly {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-backup {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-blackbox {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-debug {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-gpg {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-hooks {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-lfs-smudge {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-ssh {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gitaly-wrapper {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    praefect {'gitaly': 'bin', 'gitaly-installer': 'bin'}
    gnat {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatbind {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatchop {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatclean {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnathtml {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatkr {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatlink {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatls {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatmake {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatname {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatprep {'gnat': 'bin', 'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    gnatgcc {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13': 'bin'}
    x86_64-linux-gnu-gnat {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatbind {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatchop {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatclean {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatgcc {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnathtml {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatkr {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatlink {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatls {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatmake {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatname {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    x86_64-linux-gnu-gnatprep {'gnat-11': 'bin', 'gnat-12': 'bin', 'gnat-13-x86-64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnat {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatbind {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatchop {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatclean {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatgcc {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnathtml {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatkr {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatlink {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatls {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatmake {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatname {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    aarch64-linux-gnu-gnatprep {'gnat-11-aarch64-linux-gnu': 'bin', 'gnat-12-aarch64-linux-gnu': 'bin', 'gnat-13-aarch64-linux-gnu': 'bin'}
    alpha-linux-gnu-gnat {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatbind {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatchop {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatclean {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatgcc {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnathtml {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatkr {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatlink {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatls {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatmake {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatname {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    alpha-linux-gnu-gnatprep {'gnat-11-alpha-linux-gnu': 'bin', 'gnat-12-alpha-linux-gnu': 'bin', 'gnat-13-alpha-linux-gnu': 'bin'}
    arm-linux-gnueabi-gnat {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatbind {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatchop {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatclean {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatgcc {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnathtml {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatkr {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatlink {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatls {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatmake {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatname {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabi-gnatprep {'gnat-11-arm-linux-gnueabi': 'bin', 'gnat-12-arm-linux-gnueabi': 'bin', 'gnat-13-arm-linux-gnueabi': 'bin'}
    arm-linux-gnueabihf-gnat {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatbind {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatchop {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatclean {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatgcc {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnathtml {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatkr {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatlink {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatls {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatmake {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatname {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    arm-linux-gnueabihf-gnatprep {'gnat-11-arm-linux-gnueabihf': 'bin', 'gnat-12-arm-linux-gnueabihf': 'bin', 'gnat-13-arm-linux-gnueabihf': 'bin'}
    hppa-linux-gnu-gnat {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatbind {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatchop {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatclean {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatgcc {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnathtml {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatkr {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatlink {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatls {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatmake {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatname {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    hppa-linux-gnu-gnatprep {'gnat-11-hppa-linux-gnu': 'bin', 'gnat-12-hppa-linux-gnu': 'bin', 'gnat-13-hppa-linux-gnu': 'bin'}
    i686-linux-gnu-gnat {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatbind {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatchop {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatclean {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatgcc {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnathtml {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatkr {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatlink {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatls {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatmake {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatname {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    i686-linux-gnu-gnatprep {'gnat-11-i686-linux-gnu': 'bin', 'gnat-12-i686-linux-gnu': 'bin', 'gnat-13-i686-linux-gnu': 'bin'}
    mips-linux-gnu-gnat {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatbind {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatchop {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatclean {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatgcc {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnathtml {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatkr {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatlink {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatls {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatmake {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatname {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips-linux-gnu-gnatprep {'gnat-11-mips-linux-gnu': 'bin', 'gnat-12-mips-linux-gnu': 'bin', 'gnat-13-mips-linux-gnu': 'bin'}
    mips64-linux-gnuabi64-gnat {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatbind {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatchop {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatclean {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatgcc {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnathtml {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatkr {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatlink {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatls {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatmake {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatname {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64-linux-gnuabi64-gnatprep {'gnat-11-mips64-linux-gnuabi64': 'bin', 'gnat-12-mips64-linux-gnuabi64': 'bin', 'gnat-13-mips64-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnat {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatbind {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatchop {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatclean {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatgcc {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnathtml {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatkr {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatlink {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatls {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatmake {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatname {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mips64el-linux-gnuabi64-gnatprep {'gnat-11-mips64el-linux-gnuabi64': 'bin', 'gnat-12-mips64el-linux-gnuabi64': 'bin', 'gnat-13-mips64el-linux-gnuabi64': 'bin'}
    mipsel-linux-gnu-gnat {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatbind {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatchop {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatclean {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatgcc {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnathtml {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatkr {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatlink {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatls {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatmake {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatname {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsel-linux-gnu-gnatprep {'gnat-11-mipsel-linux-gnu': 'bin', 'gnat-12-mipsel-linux-gnu': 'bin', 'gnat-13-mipsel-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnat {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatbind {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatchop {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatclean {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatgcc {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnathtml {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatkr {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatlink {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatls {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatmake {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatname {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6-linux-gnu-gnatprep {'gnat-11-mipsisa32r6-linux-gnu': 'bin', 'gnat-12-mipsisa32r6-linux-gnu': 'bin', 'gnat-13-mipsisa32r6-linux-gnu': 'bin'}
    mipsisa32r6el-linux-gnu-gnat {'gnat-11-mipsisa32r6el-linux-gnu': 'bin', 'gnat-12-mipsisa32r6el-linux-gnu': 'bin', 'gnat-13-mipsisa32r6el-linux-gnu': 'bin'}
    mipsisa32r6el-linux-gnu-gnatbind {'gnat-11-mipsisa32r6el-linux-gnu': 'bin', 'gnat-12-mipsisa32r6el-linux-gnu': 'bin', 'gnat-13-mipsisa32r6el-linux-gnu': 'bin'}

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Vincent Lefevre@21:1/5 to Helmut Grohne on Thu Feb 27 09:30:01 2025
    XPost: linux.debian.bugs.dist, linux.debian.policy

    On 2025-02-26 15:55:06 +0100, Helmut Grohne wrote:
    Of course this does not consider conflicts, so in practice we have
    some false positives. Here is an example output.
    [...]

    As the policy is written, a Conflicts does not seem to be a resolution
    for programs with the same filenames:

    10.1
    Two different packages must not install programs with different
    functionality to the same filenames, even names under different
    directories, when the directories are on the default PATH.

    There is no mention of non-conflicting packages here (such as
    "Two different non-conflicting packages"), and it does not say that
    this concerns simultaneous installations (or on the same machine).

    As I understand it, if a program name "foo" comes from conflicting
    packages A and B, this may confuse the user and possibly scripts
    (or configuration in applications that run other programs) if
    package A is installed on some machine and package B is installed
    on another machine, or if some day on some machine, package A gets
    removed and package B gets installed. This could be a reason why
    such a case may be forbidden, just like for non-conflicting
    packages.

    Moreover, if the program "foo" does not do the same thing in these
    two packages A and B, then the user may want to be able to use both
    programs on the same installation, which would be possible if the
    program names were different (avoiding the package conflict).

    --
    Vincent Lef�vre <[email protected]> - Web: <https://www.vinc17.net/>
    100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
    Work: CR INRIA - computer arithmetic / Pascaline project (LIP, ENS-Lyon)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sean Whitton@21:1/5 to Simon McVittie on Thu Feb 27 07:50:01 2025
    XPost: linux.debian.bugs.dist, linux.debian.policy

    Hello,

    On Wed 26 Feb 2025 at 01:41pm GMT, Simon McVittie wrote:

    On Wed, 26 Feb 2025 at 20:33:46 +0800, Sean Whitton wrote:
    I believe that there is a procedural issue which trumps the substantive
    issue about merging or not merging [/usr/bin with /usr/games]
    ...
    I would encourage those of you most interested in the merge to do an MBF
    requesting the merge be performed for all the affected packages, and
    then we can undo this again.

    You're talking about this in terms of a "merge", but I think both the existing Policy wording and the change you're proposing are about the
    extent to which executables with different functionality in /usr/bin/ and /usr/games/ are allowed to have the same name, like /usr/bin/pacman (Arch Linux's package manager) and /usr/games/pacman (a maze-navigation game),
    and that's not quite the same thing.
    [...]
    What I would like to avoid here is having maintainers feel that they
    should reject attempts to resolve naming collisions with reasoning like
    "this is part of a merge like the /usr-merge and I didn't like the /usr-merge", because I think resolving naming collisions in the PATH is
    a good goal in its own right, independent of whether any more directories
    get merged.

    I agree. I shouldn't have typed "merge'.

    --
    Sean Whitton

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

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

    iQJNBAEBCgA3FiEEm5FwB64DDjbk/CSLaVt65L8GYkAFAmfACREZHHNwd2hpdHRv bkBzcHdoaXR0b24ubmFtZQAKCRBpW3rkvwZiQKY+D/98QBoGL/G4fx6vKS/6Gy4F oNMI3UXsoGeumzEhxUYx0F9ZAjNr08Wc7INcnAF3Jg8PGh4ff1RS4SgSm2xk6njK wtul9QwiN96vKzshw8TFMBtB06DNnROckWgUEbkp2cwLsmYxxBwojQbg5nhtb2XL CuKxG9Ye+JLvC99lOTB5AUL5aE7mbN12Hx7D+LBQ5KuA0rvhCudv4aLMA42HrjzQ cWnaD0UG/tmi2sQanAol5JBtOko7sUKnEqPZr1X8aYx6jwiV1PLmiWTtPexwX0Od Wss7BIhp4XZ/VSm53MamzOssj0mZpHGaxYjmg6HiqNEw78dE2zn+QQKLk/szOQ+8 cl+HAZ8LJ9hA8qT3iKUVHPrbPbb8X7Z+NS60n/9EOHDdpNnvQ+olT2iDoJaCIK78 8C9Q97tOYGbCtUTh96okD2aCSS6vj8EkOHGzlF0F5U/iHPkN9Yt4FnTXRypXs6uz F1QdmWdwz97sjVbaBgCGqv/ZPR7QmsDDA2PLywlWzbIcvT34dKeTlvd1jUz9eiR4 Ub9nHgXbHFfGlhwAcnQzn8aGpThy18MjIAe9zHucdH6RHRLadTU3giai2iubOObz 5Up0Ohibs7V2yIrxfYuqXY6WhRrBxLRBQYX4T7v9DxEFkSX5e5UIjQbEzcxCNfnb xhVTV4OqC4rXHGHANtU4Dg==o4z7
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Us