neoave / mrack

Multicloud use-case based multihost async provisioner for CIs and testing during development
Apache License 2.0
11 stars 14 forks source link

Mrack cannot be installed via pip if gssapi is not present on a system #38

Open pvoborni opened 3 years ago

pvoborni commented 3 years ago

Tried build in readthedocs and it fails with:

$ /home/docs/checkouts/readthedocs.org/user_builds/mrack/envs/stable/bin/python -m pip install --exists-action=w --no-cache-dir -r requirements.txt
Collecting beaker-client>=27
  Downloading beaker_client-28.0-py3-none-any.whl (168 kB)
Collecting boto3
  Downloading boto3-1.15.16-py2.py3-none-any.whl (129 kB)
Collecting click
  Downloading click-7.1.2-py2.py3-none-any.whl (82 kB)
Collecting pyyaml
  Downloading PyYAML-5.3.1.tar.gz (269 kB)
Collecting asyncopenstackclient
  Downloading AsyncOpenStackClient-0.8.1.tar.gz (23 kB)
Collecting beaker-common
  Downloading beaker_common-28.0-py3-none-any.whl (42 kB)
Collecting PrettyTable
  Downloading prettytable-1.0.1-py2.py3-none-any.whl (22 kB)
Requirement already satisfied: Jinja2 in /home/docs/checkouts/readthedocs.org/user_builds/mrack/envs/stable/lib/python3.7/site-packages (from beaker-client>=27->-r requirements.txt (line 1)) (2.11.2)
Collecting gssapi
  Downloading gssapi-1.6.9.tar.gz (1.1 MB)
    ERROR: Command errored out with exit status 1:
     command: /home/docs/checkouts/readthedocs.org/user_builds/mrack/envs/stable/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9rb3067q/gssapi/setup.py'"'"'; __file__='"'"'/tmp/pip-install-9rb3067q/gssapi/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-_ydqr8vm
         cwd: /tmp/pip-install-9rb3067q/gssapi/
    Complete output (13 lines):
    /bin/sh: 1: krb5-config: not found
    In distributed package, building from C files...
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-9rb3067q/gssapi/setup.py", line 87, in <module>
        link_args = shlex.split(get_output('krb5-config --libs gssapi'))
      File "/tmp/pip-install-9rb3067q/gssapi/setup.py", line 34, in get_output
        res = subprocess.check_output(*args, shell=True, **kwargs)
      File "/home/docs/.pyenv/versions/3.7.3/lib/python3.7/subprocess.py", line 395, in check_output
        **kwargs).stdout
      File "/home/docs/.pyenv/versions/3.7.3/lib/python3.7/subprocess.py", line 487, in run
        output=stdout, stderr=stderr)
    subprocess.CalledProcessError: Command 'krb5-config --libs gssapi' returned non-zero exit status 127.
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

In https://github.com/pythongssapi/requests-gssapi/issues/14 is said that gssapi is expected to be on a system when python-gssapi is being pulled in.

I think we should make beaker-client requirement optional (e.g. via extras_require ) / to be explicitly pulled in + beaker should not be registered as a provider if it is not present.