Trying to install additional pip/pip3 packages fails due to invalid
version of python3-gpg.

----------

Platform: Ubuntu 20.04 (Focal)
----------
Package: python3-gpg
Version: 1.13.1-7ubuntu2
Priority: optional
Section: python
Source: gpgme1.0
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-disc...@lists.ubuntu.com>
Original-Maintainer: Debian GnuPG Maintainers 
<pkg-gnupg-ma...@lists.alioth.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1,110 kB
Provides: python3.8-gpg
Depends: python3 (<< 3.9), python3 (>= 3.8~), python3:any, libc6 (>= 2.14), 
libgpgme11 (>= 1.12.0)
Homepage: https://www.gnupg.org/related_software/gpgme/
Task: samba-server, kubuntu-desktop, kubuntu-full, ubuntukylin-desktop, 
ubuntu-mate-core, ubuntu-mate-desktop
Download-Size: 165 kB
APT-Manual-Installed: no
APT-Sources: http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
Description: Python interface to the GPGME GnuPG encryption library (Python 3)
---------
Installed as dependency of python3-rosinstall:

#apt install python3-rosinstall
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  brz bzr git git-man less libapr1 libaprutil1 libcurl3-gnutls liberror-perl 
libgpgme11 libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib 
libserf-1-1 libsvn1 libutf8proc2 mercurial
  mercurial-common python2 python2-minimal python2.7 python2.7-minimal 
python3-blinker python3-breezy python3-catkin-pkg python3-cffi-backend 
python3-configobj python3-cryptography
  python3-deprecated python3-dulwich python3-entrypoints python3-fastimport 
python3-github python3-gitlab python3-gpg python3-httplib2 python3-jwt 
python3-keyring python3-launchpadlib
  python3-lazr.restfulclient python3-lazr.uri python3-oauthlib 
python3-rosdistro python3-rosdistro-modules python3-rospkg 
python3-rospkg-modules python3-secretstorage python3-simplejson
  python3-vcstools python3-wadllib python3-wrapt python3-wstool subversion

--------

command: pip install -y gcovr cobertura-clover-transform
output:
ERROR: Exception:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 
186, in _main
    status = self.run(options, args)
  File "/usr/lib/python3/dist-packages/pip/_internal/commands/install.py", line 
357, in run
    resolver.resolve(requirement_set)
  File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 
177, in resolve
    discovered_reqs.extend(self._resolve_one(requirement_set, req))
  File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 
333, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 
270, in _get_abstract_dist_for
    skip_reason = self._check_skip_installed(req)
  File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 
228, in _check_skip_installed
    req_to_install.check_if_exists(self.use_user_site)
  File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 
443, in check_if_exists
    self.satisfied_by = pkg_resources.get_distribution(str(no_marker))
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 
514, in get_distribution
    dist = get_provider(dist)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 
386, in get_provider
    return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 
956, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 
815, in resolve
    dist = self._resolve_dist(
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 
844, in _resolve_dist
    env = Environment(self.entries)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 
1044, in __init__
    self.scan(search_path)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 
1077, in scan
    self.add(dist)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 
1096, in add
    dists.sort(key=operator.attrgetter('hashcmp'), reverse=True)
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 
2640, in hashcmp
    self.parsed_version,
  File "/usr/local/lib/python3.8/dist-packages/pkg_resources/__init__.py", line 
2694, in parsed_version
    raise packaging.version.InvalidVersion(f"{str(ex)} {info}") from None
pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: 
'1.13.1-unknown' (package: gpg)

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to gpgme1.0 in Ubuntu.
https://bugs.launchpad.net/bugs/1977645

Title:
  python3-gpg 1.16.0-unknown version is incomparable, dependencies
  always fail

Status in gpgme1.0 package in Ubuntu:
  Confirmed
Status in gpgme1.0 package in Debian:
  Fix Released

Bug description:
  The python version of the gpgme version contains "unknown" and is
  therefore not PEP440 order compatible.

  See this example:

    # pip3 freeze | grep gpg
    gpg===1.16.0-unknown

    # pip3 install pstore
    ...
    Successfully installed gpg-1.10.0
    Successfully installed pstore-2.0.0

    # pip3 freeze | grep gpg
    gpg==1.10.0

  
  Key takeways from that example:

  - pstore depends on gpg>=1.10

  - 1.16 SHOULD be higher than 1.10

  - pip installs 1.10 even though 1.16 exists

  - the triple-= (gpg===1.16.0-unknown) means that the version exists,
  but cannot be version compared:
  https://peps.python.org/pep-0440/#arbitrary-equality


  Suggested fix:

  - replace the '-' from `gpgme-config --version` "1.16.0-unknown" with
  a '+'; that will compare as expected;

  - fix so "-unknown" isn't appended.

  
  Apparently, this is caused by insufficient fixes in 
0001-avoid-identifying-as-beta.patch

  I've attached a FIXED version, which should fix things.

  Before:

    $ autoreconf -ivf

    $ grep Generated.*gpgme configure
    # Generated by GNU Autoconf 2.71 for gpgme 1.16.0-unknown.

  After:

    $ quilt push 
    Applying patch 0001-avoid-identifying-as-beta-FIXED.patch

    $ autoreconf -ivf

    $ grep Generated.*gpgme configure
    # Generated by GNU Autoconf 2.71 for gpgme 1.16.0.

  
  Versions:

  $ lsb_release -a 2>/dev/null| grep Codename
  Codename:     jammy

  $ apt-cache policy python3-gpg  | grep Installed
    Installed: 1.16.0-1.2ubuntu4

  
  Cheers,
  Walter Doekes
  OSSO B.V.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gpgme1.0/+bug/1977645/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to