mirror of
https://github.com/openSUSE/osc.git
synced 2025-02-23 02:32:13 +01:00
Merge pull request #1430 from dmach/virtualenv
Support installing osc into virtualenv
This commit is contained in:
commit
7fff395e7d
25
.github/workflows/build-install.yaml
vendored
25
.github/workflows/build-install.yaml
vendored
@ -121,3 +121,28 @@ jobs:
|
|||||||
- name: 'Run installed osc'
|
- name: 'Run installed osc'
|
||||||
run: |
|
run: |
|
||||||
osc --help
|
osc --help
|
||||||
|
|
||||||
|
virtualenv:
|
||||||
|
name: 'virtualenv install test'
|
||||||
|
runs-on: 'ubuntu-latest'
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: 'Install packages'
|
||||||
|
run: |
|
||||||
|
sudo apt-get -y update
|
||||||
|
sudo apt-get -y --no-install-recommends install git python3-pip python3-rpm python3-virtualenv
|
||||||
|
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: 'Initialize virtualenv'
|
||||||
|
run: |
|
||||||
|
python3 -m venv .env3
|
||||||
|
source .env3/bin/activate
|
||||||
|
pip3 install .
|
||||||
|
|
||||||
|
- name: 'Run installed osc'
|
||||||
|
run: |
|
||||||
|
source .env3/bin/activate
|
||||||
|
osc --help
|
||||||
|
@ -5,6 +5,9 @@ Extending osc with plugins
|
|||||||
.. note::
|
.. note::
|
||||||
New in osc 1.1.0
|
New in osc 1.1.0
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
Plugins are currently NOT supported in virtualenv.
|
||||||
|
|
||||||
|
|
||||||
This is a simple tutorial.
|
This is a simple tutorial.
|
||||||
More details can be found in the :py:class:`osc.commandline.OscCommand` reference.
|
More details can be found in the :py:class:`osc.commandline.OscCommand` reference.
|
||||||
|
@ -17,6 +17,9 @@ def print_msg(*args, print_to="debug"):
|
|||||||
elif print_to == "stdout":
|
elif print_to == "stdout":
|
||||||
# print the message to stdout
|
# print the message to stdout
|
||||||
print(*args)
|
print(*args)
|
||||||
|
elif print_to == "stderr":
|
||||||
|
# print the message to stderr
|
||||||
|
print(*args, file=sys.stderr)
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Invalid value of the 'print_to' option: {print_to}")
|
raise ValueError(f"Invalid value of the 'print_to' option: {print_to}")
|
||||||
|
|
||||||
|
@ -40,6 +40,10 @@ from .util import cpio, rpmquery, safewriter
|
|||||||
from .util.helper import _html_escape, format_table
|
from .util.helper import _html_escape, format_table
|
||||||
|
|
||||||
|
|
||||||
|
# python3.6 requires reading sys.real_prefix to detect virtualenv
|
||||||
|
IN_VENV = getattr(sys, "real_prefix", sys.base_prefix) != sys.prefix
|
||||||
|
|
||||||
|
|
||||||
class Command:
|
class Command:
|
||||||
#: Name of the command as used in the argument parser.
|
#: Name of the command as used in the argument parser.
|
||||||
name: str = None
|
name: str = None
|
||||||
@ -262,6 +266,9 @@ class MainCommand(Command):
|
|||||||
return cmd
|
return cmd
|
||||||
|
|
||||||
def load_commands(self):
|
def load_commands(self):
|
||||||
|
if IN_VENV:
|
||||||
|
_private.print_msg("Running in virtual environment, skipping loading plugins installed outside the virtual environment.", print_to="stderr")
|
||||||
|
|
||||||
for module_prefix, module_path in self.MODULES:
|
for module_prefix, module_path in self.MODULES:
|
||||||
module_path = os.path.expanduser(module_path)
|
module_path = os.path.expanduser(module_path)
|
||||||
|
|
||||||
@ -317,12 +324,16 @@ class OscMainCommand(MainCommand):
|
|||||||
|
|
||||||
MODULES = (
|
MODULES = (
|
||||||
("osc.commands", osc_commands.__path__[0]),
|
("osc.commands", osc_commands.__path__[0]),
|
||||||
("osc.commands.usr_lib", "/usr/lib/osc-plugins"),
|
|
||||||
("osc.commands.usr_local_lib", "/usr/local/lib/osc-plugins"),
|
|
||||||
("osc.commands.home_local_lib", "~/.local/lib/osc-plugins"),
|
|
||||||
("osc.commands.home", "~/.osc-plugins"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if not IN_VENV:
|
||||||
|
MODULES += (
|
||||||
|
("osc.commands.usr_lib", "/usr/lib/osc-plugins"),
|
||||||
|
("osc.commands.usr_local_lib", "/usr/local/lib/osc-plugins"),
|
||||||
|
("osc.commands.home_local_lib", "~/.local/lib/osc-plugins"),
|
||||||
|
("osc.commands.home", "~/.osc-plugins"),
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.args = None
|
self.args = None
|
||||||
@ -10056,6 +10067,10 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
print(result)
|
print(result)
|
||||||
|
|
||||||
def _load_plugins(self):
|
def _load_plugins(self):
|
||||||
|
if IN_VENV:
|
||||||
|
_private.print_msg("Running in virtual environment, skipping loading legacy plugins.", print_to="stderr")
|
||||||
|
return
|
||||||
|
|
||||||
plugin_dirs = [
|
plugin_dirs = [
|
||||||
'/usr/lib/osc-plugins',
|
'/usr/lib/osc-plugins',
|
||||||
'/usr/local/lib/osc-plugins',
|
'/usr/local/lib/osc-plugins',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user