canonical / layer-basic

Base layer for building charms using the reactive pattern
Apache License 2.0
11 stars 43 forks source link

venv ends up in a broken state on focal #159

Closed johnsca closed 4 years ago

johnsca commented 4 years ago

Focal includes a newer version of pip than we're bundling (20.0.2 vs 18.1) and the bootstrap logic ends up downgrading it in the venv. This is succeeds during the install hook, but on the first upgrade-charm hook it fails with:

Traceback (most recent call last):
  File "/var/lib/juju/agents/unit-flannel-0/.venv/bin/pip", line 5, in <module>
    from pip._internal import main
  File "/var/lib/juju/agents/unit-flannel-0/.venv/lib/python3.8/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/var/lib/juju/agents/unit-flannel-0/.venv/lib/python3.8/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/var/lib/juju/agents/unit-flannel-0/.venv/lib/python3.8/site-packages/pip/_internal/cli/main_parser.py", line 12, in <module>
    from pip._internal.commands import (
  File "/var/lib/juju/agents/unit-flannel-0/.venv/lib/python3.8/site-packages/pip/_internal/commands/__init__.py", line 6, in <module>
    from pip._internal.commands.completion import CompletionCommand
  File "/var/lib/juju/agents/unit-flannel-0/.venv/lib/python3.8/site-packages/pip/_internal/commands/completion.py", line 6, in <module>
    from pip._internal.cli.base_command import Command
  File "/var/lib/juju/agents/unit-flannel-0/.venv/lib/python3.8/site-packages/pip/_internal/cli/base_command.py", line 23, in <module>
    from pip._internal.index import PackageFinder
ImportError: cannot import name 'PackageFinder' from 'pip._internal.index' (/var/lib/juju/agents/unit-flannel-0/.venv/lib/python3.8/site-packages/pip/_internal/index/__init__.py)

Since the bundled pip (and setuptools) was there to work around an upstream pip bug due to bionic and below bundling pip < 10, we should just ignore the bundled pip when deploying on focal and above.

johnsca commented 4 years ago

This is the cause of lp:1870134