flancian/agora

"invalid command 'bdist_wheel'" when building requirements for agora-server

JeffreyBenjaminBrown opened this issue · 4 comments

This project looks awesome.

To build it, I'm using an environment I defined specifically for Agora by this Dockerfile. I start a container from that image, then enter it as root to create the wheel group, and to add appuser to sudo and wheel:

groupadd -r wheel
usermod -a -G wheel appuser
usermod -a -G sudo appuser

(I would fold those commands into the Dockerfile, but my attempts to build it that way are rejected with the following message.)

groupadd: Permission denied.
groupadd: cannot lock /etc/group; try again later.`

Then enter the same container as appuser, and try the following:

cd ~/agora-server
python3 -m venv venv
. venv/bin/activate
pip3 install -r requirements.txt
./run-dev.sh

The pip3 install step gives me these errors:

Building wheels for collected packages: Flask-Markdown, org-python, python-Levenshtein, sgmllib3k, unicode-slugify, uWSGI
  Running setup.py bdist_wheel for Flask-Markdown ... error
  Complete output from command /home/appuser/agora-server/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-5r8b2lgm/Flask-Markdown/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(c
ompile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-hd9hgv8l --python-tag cp37:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for Flask-Markdown
  Running setup.py clean for Flask-Markdown
  Running setup.py bdist_wheel for org-python ... error
  Complete output from command /home/appuser/agora-server/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-5r8b2lgm/org-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compi
le(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-ynj7ra06 --python-tag cp37:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for org-python
  Running setup.py clean for org-python
  Running setup.py bdist_wheel for python-Levenshtein ... error
  Complete output from command /home/appuser/agora-server/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-5r8b2lgm/python-Levenshtein/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();ex
ec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-s0hhb0_c --python-tag cp37:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for python-Levenshtein
  Running setup.py clean for python-Levenshtein
  Running setup.py bdist_wheel for sgmllib3k ... error
  Complete output from command /home/appuser/agora-server/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-5r8b2lgm/sgmllib3k/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compil
e(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-dam7ohc_ --python-tag cp37:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for sgmllib3k
  Running setup.py clean for sgmllib3k
  Running setup.py bdist_wheel for unicode-slugify ... error
  Complete output from command /home/appuser/agora-server/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-5r8b2lgm/unicode-slugify/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(
compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-hnsm139i --python-tag cp37:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for unicode-slugify
  Running setup.py clean for unicode-slugify
  Running setup.py bdist_wheel for uWSGI ... error
  Complete output from command /home/appuser/agora-server/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-5r8b2lgm/uWSGI/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(co
de, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-evqgw8p2 --python-tag cp37:
  /usr/lib/python3.7/distutils/dist.py:274: UserWarning: Unknown distribution option: 'descriptions'
    warnings.warn(msg)
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for uWSGI
  Running setup.py clean for uWSGI
Failed to build Flask-Markdown org-python python-Levenshtein sgmllib3k unicode-slugify uWSGI
Installing collected packages: six, webencodings, pyparsing, packaging, bleach, cachetools, click, pytz, tzlocal, python-dateutil, regex, dateparser, sgmllib3k, feedparser, filetype, Werkzeug, MarkupSafe, Jinja2, itsdangerous, Flask, Flask-Caching, Flask-Cors, zipp,
importlib-metadata, Markdown, Flask-Markdown, WTForms, Flask-WTF, fuzzywuzzy, isodate, parso, jedi, typish, jsons, lxml, marko, mdx-truly-sane-lists, org-python, pylibmc, python-Levenshtein, PyYAML, rdflib, redis, text-unidecode, Unidecode, unicode-slugify, uWSGI
  Running setup.py install for sgmllib3k ... done
  Running setup.py install for Flask-Markdown ... done
  Running setup.py install for org-python ... done
  Running setup.py install for python-Levenshtein ... done
  Running setup.py install for unicode-slugify ... done
  Running setup.py install for uWSGI ... done
Successfully installed Flask-1.1.2 Flask-Caching-1.10.0 Flask-Cors-3.0.10 Flask-Markdown-0.3 Flask-WTF-0.14.3 Jinja2-2.11.2 Markdown-3.3.3 MarkupSafe-1.1.1 PyYAML-5.4.1 Unidecode-1.1.2 WTForms-2.3.3 Werkzeug-1.0.1 bleach-3.2.1 cachetools-4.2.0 click-7.1.2 dateparser-
1.0.0 feedparser-6.0.2 filetype-1.0.7 fuzzywuzzy-0.18.0 importlib-metadata-2.0.0 isodate-0.6.0 itsdangerous-1.1.0 jedi-0.17.2 jsons-1.4.0 lxml-4.6.2 marko-0.9.1 mdx-truly-sane-lists-1.2 org-python-0.3.2 packaging-20.4 parso-0.7.1 pylibmc-1.6.1 pyparsing-2.4.7 python-
Levenshtein-0.12.0 python-dateutil-2.8.1 pytz-2020.4 rdflib-5.0.0 redis-3.5.3 regex-2020.11.13 sgmllib3k-1.0.0 six-1.15.0 text-unidecode-1.3 typish-1.9.1 tzlocal-2.1 uWSGI-2.0.19.1 unicode-slugify-0.1.3 webencodings-0.5.1 zipp-3.4.0

After that, ./run-dev.sh gives me the following errors, but I'm hoping they're a symptom of the above bdist_wheel problem:

npm WARN js-src@1.0.0 No description
npm WARN js-src@1.0.0 No repository field.
audited 23 packages in 1.188s

1 package is looking for funding
  run `npm fund` for details

found 1 moderate severity vulnerability
  run `npm audit fix` to fix them, or `npm audit` for details

🚨  /home/appuser/.npm/_npx/142/lib/node_modules/parcel-bundler/node_modules/process/browser.js: ENOENT: no such file or directory, open '/home/appuser/.npm/_npx/142/lib/node_modules/parcel-bundler/node_modules/process/browser.js'
Error: ENOENT: no such file or directory, open '/home/appuser/.npm/_npx/142/lib/node_modules/parcel-bundler/node_modules/process/browser.js'
 * Serving Flask app "app" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 671-437-713
2021-06-20 13:23:45,010 DEBUG rdflib Thread-1 : RDFLib Version: 5.0.0
2021-06-20 13:23:45,192 DEBUG rdflib Thread-1 : RDFLib Version: 5.0.0
boehs commented

you need pip install wheel

Ah. Then I suppose I should also remove the line that uses apt to install python-wheel?

boehs commented

I have python3-wheel installed on my system, but I don't remember installing it. Getting agora configured is a bit of a pain, I wish I had documented the process more when I did it.

Hi, Jeffrey! Apologies for taking so long to respond -- I am a bit chaotic and sometimes things fall through the cracks when they slip from my attention before making an explicit note to come back to them, which happened here.

Thank you for opening this; also thank you Evan for responding much earlier :)

Since this issue was opened, I also created a Dockerfile that results in a simple but functional Agora (agora-server and agora-bridge running in the same container for now), thus apparently re-validating instructions.

The Dockerfile is here: https://github.com/flancian/agora/blob/master/Dockerfile

I can confirm that we had too many Debian-level dependencies in previous instructions and the only apt invocation that is needed here seems to be: apt-get install -y git python3 python3-pip python3-env.

I'll make sure now the current README reflects this!

Jeffrey, are you running your own Agora or would you still be interested in doing so? I'm happy to provide assistance (with a better SLO :)).

Have a nice day!