On Wed, 29 Oct 2014 at 10:33:32 +0100, Balint Reczey wrote:
> Filing bugs against reverse dependencies to migrate to sqlite 3 would be
> a better start IMO.

5 years later, here is an updated status, using dak (the same tool the
ftp team would use to remove packages) rather than apt-cache rdepends,
so that all binary packages and all dependency types are considered:

> smcv@coccia ~ % dak rm -R -n sqlite
> ...
> Checking reverse dependencies...
> # Broken Depends:
> cl-sql: cl-sql-sqlite
> dbconfig-common: dbconfig-sqlite
> golang-gosqlite-dev: golang-gosqlite-dev
> kannel-sqlbox: kannel-sqlbox
> libdbi-drivers: libdbd-sqlite
> libopendbx: libopendbx1-sqlite
> python-sqlite: python-sqlite
>                python-sqlite-dbg
> qsf: qsf
> qt4-x11: libqt4-sql-sqlite2
> 
> # Broken Build-Depends:
> libapp-info-perl: libsqlite0-dev
> libdbi-drivers: libsqlite0-dev
> libopendbx: libsqlite0-dev
> python-sqlite: libsqlite0-dev (>= 2.5.6)
> qsf: libsqlite0-dev
> qt4-x11: libsqlite0-dev

These can be classified into three groups:

1. Non-database-specific access layers that have both sqlite 2 and sqlite 3
   integration, in separate binary packages:
   - cl-sql
   - dbconfig-common
   - libdbi-drivers
   - libopendbx
   - qt4-x11
2. Packages that pull in *both* sqlite 2 and sqlite 3 via the same binary
   package:
   - golang-gosqlite-dev
   - kannel-sqlbox
3. Packages that specifically depend on sqlite 2:
   - libapp-info-perl (B-D only, for a unit test)
   - python-sqlite (Python 2 only, so already considered RC-buggy)
   - qsf

Additionally, if I ask dak "what would happen if we removed all the
sqlite 2 bindings from group 1?", we get:

> smcv@coccia ~ % dak rm -R -n -b sqlite libsqlite-tcl libsqlite0 
> libsqlite0-dev sqlite-doc python-sqlite python-sqlite-dbg libopendbx1-sqlite 
> libdbd-sqlite dbconfig-sqlite cl-sql-sqlite libqt4-sql-sqlite2
> ...
> # Broken Depends:
> cl-sql: cl-sql-tests
> cylc: python-cylc
> dtc-xen: dtc-xen
> golang-gosqlite-dev: golang-gosqlite-dev
> kannel-sqlbox: kannel-sqlbox
> qsf: qsf
> yum: yum
> 
> # Broken Build-Depends:
> libapp-info-perl: libsqlite0-dev
> libdbi-drivers: libsqlite0-dev
> libopendbx: libsqlite0-dev
> qsf: libsqlite0-dev
> qt4-x11: libsqlite0-dev

The newly-mentioned packages there are:

* cl-sql-tests: can be ignored, presumably the dependency on its own
  sqlite 2 backend would be dropped at the same time the backend is
* cylc: Python-2-only, already removed from bullseye
* dtc-xen: Python-2-only, already removed from bullseye
* yum: Python-2-only, already removed from bullseye

So I think the steps that would be necessary to remove sqlite 2 from
bullseye (or any future release if bullseye is considered too soon)
would go something like this:

* port or remove qsf (popcon inst:9, maintained via NMUs and FTBFS with
  a future version of gdbm, so removal seems more likely)
* make libapp-info-perl's unit test use sqlite 3 or a mock sqlite
  (in fact it seems like it already does, so perhaps the dependency on
  libsqlite0-dev is a mistake)
* for packages in group 1 (libdbi-drivers and similar), ask their
  maintainers to remove the sqlite 2 binary package, with a migration path
  if appropriate (for example, if a Perl app is configured to use the
  sqlite 2 backend, and sqlite 3 can still read and write sqlite 2
  databases, then DBI could select its sqlite 3 backend instead)
* for packages in group 2 (golang-gosqlite-dev and kannel-sqlbox), ask
  their maintainers to drop the sqlite 2 part, leaving only the sqlite 3
  part (possibly with a migration path, as above)

Regards,
    smcv

Reply via email to