Control: reassign -1 python3.7 Control: severity -1 important On Wed, 13 Nov 2019 01:27:11 +0100 Guillem Jover <guil...@debian.org> wrote: > Control: reassign -1 python3-augeas > Control: severity -1 serious > > Hi! > > On Sat, 2019-11-09 at 11:06:15 +0100, Jakub Wilk wrote: > > * Alexander Thomas <doctor.lex+db...@gmail.com>, 2019-11-08, 15:50: > > > Traceback (most recent call last): > > > File "/usr/lib/the-package/setup-package.py", line 3, in <module> > > > from augeas import Augeas > > > File "/usr/lib/python2.7/dist-packages/augeas.py", line 78, in <module> > > > class Augeas(object): > > > File "/usr/lib/python2.7/dist-packages/augeas.py", line 82, in Augeas > > > _libaugeas = _dlopen("augeas") > > > File "/usr/lib/python2.7/dist-packages/augeas.py", line 75, in _dlopen > > > raise ImportError("Unable to import lib%s!" % args[0]) > > > ImportError: Unable to import libaugeas! > > > > The _dlopen() function uses ctypes.util.find_library(), which is a > > fundamentally broken API. This is the culprit, not dpkg. > > Ah, thanks for tracking this down! I was not sure whether the ld caching > logic in glibc might have regressed perhaps. > > > > ldconfig is one of the triggers of libc-bin. It seems that its > > > invocation is now postponed too late. > > > > ldconfig is declared as a noawait trigger, so dpkg is allowed to configure > > the triggering package immediately, without waiting for the trigger to be > > run. > > > > This declaration is correct, because running ldconfig shouldn't have any > > effect on software functionality, unless there's a bug somewhere else. > > Exactly. So I guess this needs to be reassigned first to augeas, which > I'm doing now. And perhaps cloned or a new bug filed to python too for > the brokeness in the ctypes.util.find_library() API, but I'd leave that > to you Jakub, as I've not checked any of that.
Hello, When reporting this bug, python-augeas was used as an example to demonstrate the problem when a python library is used by a package that depends on it. The problem is not specific to pythone-augeas and is reproducible on other python packages that use ctypes.util.find_library(). I have tried this with the library python3-magic which opens its library as follows: "ctypes.cdll.LoadLibrary(find_library('magic'))" ... Setting up libpython3.7-stdlib:amd64 (3.7.6-1) ... Setting up libpython3-stdlib:amd64 (3.7.5-3) ... Setting up python3.7 (3.7.6-1) ... Setting up python3 (3.7.5-3) ... running python rtupdate hooks for python3.7... running python post-rtupdate hooks for python3.7... Setting up python3-magic (2:0.4.15-2) ... Setting up the-package (1.2.3ubuntu1-2-1) ... Traceback (most recent call last): File "/usr/lib/the-package/setup-package.py", line 3, in <module> import magic File "/usr/lib/python3/dist-packages/magic/__init__.py", line 361, in <module> add_compat(globals()) File "/usr/lib/python3/dist-packages/magic/__init__.py", line 325, in add_compat from magic import compat File "/usr/lib/python3/dist-packages/magic/compat.py", line 61, in <module> _open = _libraries['magic'].magic_open File "/usr/lib/python3.7/ctypes/__init__.py", line 377, in __getattr__ func = self.__getitem__(name) File "/usr/lib/python3.7/ctypes/__init__.py", line 382, in __getitem__ func = self._FuncPtr((name_or_ordinal, self)) AttributeError: /usr/bin/python3: undefined symbol: magic_open dpkg: error processing package the-package (--configure): installed the-package package post-installation script subprocess returned error exit status 1 Processing triggers for libc-bin (2.29-6) ... Errors were encountered while processing: the-package E: Sub-process /usr/bin/dpkg returned an error code (1) This is either a bug with all python libraries that use ctypes' find_library() for simply using the method or it is a bug with ctypes find_library(). I am inclined to think the latter because judging by ctypes documentation, using find_library() followed by LoadLibrary() is the expected usage pattern on GNU/Linux. Hence reassigning this bug to Python. Also, severity 'serious' does not fit this bug as the affected packages (and ctypes API) are fully usable expect from within Debian postinst scripts. Demoting severity to important again. Thanks, -- Sunil
signature.asc
Description: OpenPGP digital signature