[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: