Repository: avocado-framework/avocado

Issue:
Allow the deployment and use of development versions of Avocado
**Is your feature request related to a problem? Please describe.**
Epic issue https://github.com/avocado-framework/avocado/issues/4934 covers aspects such as creating and publishing (AFAICT) packages for every Avocado release, for every Python version, and how they will be deployed and installed on `DeploymentSpawner`s.

But, this doesn't address the development time needs, where unreleased code may be needed in both the job side (say running out of a GIT checkout), and on the isolated spawner environment.

**Describe the solution you'd like**
There should be a way to signal a preference for given wheels to be used, instead of the latest release ones. 

**Describe alternatives you've considered**
Building the wheels is probably going to be a separate step (such as the current `make whee`, and It will probably be necessary to refer to them by a local (non HTTP(s)) uri.   Bonus point for an all-in-one `--mirror-this-repo-as-a-wheel-and-deploy-it` kind of feature, but I think this will be too complex.



Discussion:
I'm assuming here we have a `s/wheel/eggs/g`

Resolving patch:
diff --git a/avocado/plugins/spawners/podman.py b/avocado/plugins/spawners/podman.py
--- a/avocado/plugins/spawners/podman.py
+++ b/avocado/plugins/spawners/podman.py
@@ -49,6 +49,16 @@ def initialize(self):
             help_msg=help_msg,
             default=default_distro)
 
+        help_msg = ('Avocado egg path to be used during initial bootstrap '
+                    'of avocado inside the isolated environment. By default, '
+                    'Avocado will try to download (or get from cache) an '
+                    'egg from its repository.')
+
+        settings.register_option(section=section,
+                                 key='avocado_spawner_egg',
+                                 help_msg=help_msg,
+                                 default=None)
+
 
 class PodmanCLI(CLI):
 
@@ -72,6 +82,13 @@ def configure(self, parser):
                                          long_arg='--spawner-podman-image',
                                          metavar='CONTAINER_IMAGE')
 
+        namespace = 'spawner.podman.avocado_spawner_egg'
+        long_arg = '--spawner-podman-avocado-egg'
+        settings.add_argparser_to_option(namespace=namespace,
+                                         parser=parser,
+                                         long_arg=long_arg,
+                                         metavar='AVOCADO_EGG')
+
     def run(self, config):
         pass
 
@@ -112,8 +129,14 @@ def get_eggs_paths(self, py_major, py_minor):
         # Setuptools
         # For now let's pin to setuptools 59.2.
         # TODO: Automatically get latest setuptools version.
-        eggs = [f"https://github.com/avocado-framework/setuptools/releases/download/v59.2.0/setuptools-59.2.0-py{py_major}.{py_minor}.egg",
-                f"https://github.com/avocado-framework/avocado/releases/download/{VERSION}/avocado_framework-{VERSION}-py{py_major}.{py_minor}.egg"]
+        eggs = [f"https://github.com/avocado-framework/setuptools/releases/download/v59.2.0/setuptools-59.2.0-py{py_major}.{py_minor}.egg"]
+        local_egg = self.config.get('spawner.podman.avocado_spawner_egg')
+        if local_egg:
+            eggs.append(local_egg)
+        else:
+            remote_egg = f"https://github.com/avocado-framework/avocado/releases/download/{VERSION}/avocado_framework-{VERSION}-py{py_major}.{py_minor}.egg"
+            eggs.append(remote_egg)
+
         for url in eggs:
             path = self._fetch_asset(url)
             to = os.path.join('/tmp/', os.path.basename(path))


Test patch: