Bug#950111: libvigraimpex-doc: unhandled symlink to directory conversion: /usr/share/doc/libvigraimpex-dev/html

2020-02-02 Thread Andreas Metzler
On 2020-01-28 Andreas Beckmann  wrote:
> Package: libvigraimpex-doc
> Version: 1.11.1+dfsg-6
> Severity: serious
> User: debian...@lists.debian.org
> Usertags: piuparts

> Hi,

> an upgrade test with piuparts revealed that your package installs files
> over existing symlinks and possibly overwrites files owned by other
> packages. This usually means an old version of the package shipped a
> symlink but that was later replaced by a real (and non-empty)
> directory. This kind of overwriting another package's files cannot be
> detected by dpkg.

> This was observed on the following upgrade paths:

>   buster -> bullseye
[...]
> It is recommended to use the dpkg-maintscript-helper commands
> 'dir_to_symlink' and 'symlink_to_dir' (available since dpkg 1.17.14)
> to perform the conversion, ideally using d/$PACKAGE.maintscript.
> See dpkg-maintscript-helper(1) and dh_installdeb(1) for details.

Hello Andreas,

thanks for report and pointers.

Afaiu (and that is what my tests showed) dpkg-maintscript-helper will
help me for upgrades from before-the-move to after-the-move but will not
fix the broken installations that have already upgraded from
before-the-move to 1.11.1+dfsg-6 and I will need to handle this
separately in the maintainerscripts. - Or am I missing something?

I have already got some draft packages, but they will probably not be
uploaded before next weekend.

cu Andreas
-- 
`What a good friend you are to him, Dr. Maturin. His other friends are
so grateful to you.'
`I sew his ears on from time to time, sure'



Bug#950111: libvigraimpex-doc: unhandled symlink to directory conversion: /usr/share/doc/libvigraimpex-dev/html

2020-01-28 Thread Andreas Beckmann
Package: libvigraimpex-doc
Version: 1.11.1+dfsg-6
Severity: serious
User: debian...@lists.debian.org
Usertags: piuparts

Hi,

an upgrade test with piuparts revealed that your package installs files
over existing symlinks and possibly overwrites files owned by other
packages. This usually means an old version of the package shipped a
symlink but that was later replaced by a real (and non-empty)
directory. This kind of overwriting another package's files cannot be
detected by dpkg.

This was observed on the following upgrade paths:

  buster -> bullseye

For /usr/share/doc/PACKAGE this may not be problematic as long as both
packages are installed, ship byte-for-byte identical files and are
upgraded in lockstep. But once one of the involved packages gets
removed, the other one will lose its documentation files, too,
including the copyright file, which is a violation of Policy 12.5:
https://www.debian.org/doc/debian-policy/ch-docs.html#copyright-information

For other overwritten locations anything interesting may happen.

Note that dpkg intentionally does not replace directories with symlinks
and vice versa, you need the maintainer scripts to do this.
See in particular the end of point 4 in
https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#details-of-unpack-phase-of-installation-or-upgrade

It is recommended to use the dpkg-maintscript-helper commands
'dir_to_symlink' and 'symlink_to_dir' (available since dpkg 1.17.14)
to perform the conversion, ideally using d/$PACKAGE.maintscript.
See dpkg-maintscript-helper(1) and dh_installdeb(1) for details.


>From the attached log (scroll to the bottom...):

0m58.6s ERROR: installs objects over existing directory symlinks:
  /usr/share/doc/libvigraimpex-dev/html/AlgebraicConcepts.html 
(libvigraimpex-doc) != 
/usr/share/doc/libvigraimpex-doc/html/AlgebraicConcepts.html (?)
/usr/share/doc/libvigraimpex-dev/html -> ../libvigraimpex-doc/html
  /usr/share/doc/libvigraimpex-dev/html/ArgumentObjectFactories.html 
(libvigraimpex-doc) != 
/usr/share/doc/libvigraimpex-doc/html/ArgumentObjectFactories.html (?)
/usr/share/doc/libvigraimpex-dev/html -> ../libvigraimpex-doc/html
  /usr/share/doc/libvigraimpex-dev/html/BorderTreatmentMode.html 
(libvigraimpex-doc) != 
/usr/share/doc/libvigraimpex-doc/html/BorderTreatmentMode.html (?)
/usr/share/doc/libvigraimpex-dev/html -> ../libvigraimpex-doc/html
  /usr/share/doc/libvigraimpex-dev/html/CrackEdgeImage.html (libvigraimpex-doc) 
!= /usr/share/doc/libvigraimpex-doc/html/CrackEdgeImage.html (?)
/usr/share/doc/libvigraimpex-dev/html -> ../libvigraimpex-doc/html
  /usr/share/doc/libvigraimpex-dev/html/CreditsChangelog.html 
(libvigraimpex-doc) != 
/usr/share/doc/libvigraimpex-doc/html/CreditsChangelog.html (?)
/usr/share/doc/libvigraimpex-dev/html -> ../libvigraimpex-doc/html
...


cheers,

Andreas


libvigraimpex-doc_1.11.1+dfsg-6.log.gz
Description: application/gzip