coinstallable gnat versions
TLDR: Does anyone need the unversioned
* HOST-gnatmake executable,
* -lgnat shared library or
* gnatgcc executable?
Hello.
It seems possible to make the gnat-VERSION packages coinstallable.
The gnat-13 transition may be a good opportunity to debug this in
experimental.
A roadmap follows. Suggestions or critics are welcome.
Proposed changes
----------------
Package: gnat
Source: gnat
Architecture: all (#746588)
Depends: gnat-VERSION
+Installs /usr/bin/TOOL -> TOOL-VERSION (without HOST-)
+Breaks/Replaces: gnat-4.9, gnat-5, ..., gnat-12, gnat-13 (<< ${switch}
Package: gnat-VERSION
Source: gcc-VERSION
Architecture: HOST (for most HOSTs)
Installs /usr/bin/TOOL-VERSION -> HOST-TOOL-VERSION
/usr/bin/HOST-TOOL-VERSION (executable)
- /usr/bin/HOST-TOOL -> HOST-TOOL-VERSION
- /usr/bin/TOOL -> HOST-TOOL-VERSION
- /usr/lib/HOST/libgna{rl,t}.so -> libgna{rl,t}-VERSION.so
- /usr/bin/gnatgcc -> gcc-VERSION
- /usr/bin/HOST-gnatgcc -> HOST-gcc-VERSION
-Breaks/Replaces: gnat-4.9, gnat-5, ..., gnat-(VERSION-1)
Package: gnat-VERSION-TARGET
Source: gcc-VERSION
Architecture: HOST (for some HOST ≠ TARGET pairs)
Installs /usr/bin/TARGET-gnatmake-VERSION (executable)
Package: libFOO-dev
-Build-Depends: gnat-VERSION (gnatmake is not here anymore)
+Build-Depends: gnat (but here)
Depends: gnat, gnat-VERSION (this does not change)
+Breaks and Replaces: all libFOO-ALIVERSION-dev packages before bookworm
(these relations were allowed to be implicit via gnat-VERSION packages)
(the list won’t change anymore and will disappear with versioned -devs)
Details
-------
/usr/bin/TOOL -> HOST-TOOL-VERSION symbolic links
(for upstream TOOLs like gnatmake or gnatlink but not gnatgcc)
move from the gnat-VERSION package to the gnat package.
/usr/lib/HOST/libgna{rl,t}.so --> libgna{rl,t}-VERSION.so symbolic links
should be removed. People calling the compiler and linker
should explicitly select the same version.
Gpr{build,lib}, gnat{make,link} and debian/rules for
{libxmlada,gprbuild} already link with -lgnat-VERSION.
In case some ambiguous -lgna{rl,t} remain,
the symbolic links may move to the gnat package.
/usr/bin/HOST-TOOL -> HOST-TOOL-VERSION symbolic links
The gnat package cannot install them because it is Architecture:all.
The gnat-VERSIONs packages can only install them if not coinstallable.
All usages must be replaced with unambiguous commands.
The TOOLs call each other
For example, the upstream, unpatched
gnatmake calls gnatlink
gnatmake-VERSION calls gnatlink-VERSION
HOST-gnatmake calls HOST-gnatlink
HOST-gnatmake-VERSION calls HOST-gnatlink-VERSION
This has caused various bugs, so Debian now adds an explicit HOST
and VERSION to each known call. Upstream confirms that this
solution is correct (but it has a low priority and must be tested on
each architecture).
There has been no new issue for several GNAT transitions.
/usr/bin/gnatgcc -> gcc-VERSION
/usr/bin/HOST-gnatgcc -> HOST-gcc-VERSION
(symbolic links in gnat-12, wrappers emitting a deprecation warning
in gnat-13)
The first one could move (back) to the gnat package, but each such
move has caused bugs again and again (#802838 and many others).
Both should be removed, and remaining usages replaced with
gcc-VERSION. Most, maybe all the work is already done.
Reply to: