pypa / readme_renderer

Safely render long_description/README files in Warehouse
Apache License 2.0
157 stars 88 forks source link

Switch to `cmarkgfm` now seems to require a compiler #124

Closed raiderrobert closed 5 years ago

raiderrobert commented 5 years ago

The switch to cmarkgfm (on this commit, I think https://github.com/pypa/readme_renderer/commit/50d399cd6cc1cf45a780f9e9057b397c0cc14586 ) seems to require a compiler based on the message below.

I'm running on a docker image without all those things installed, and I expect many others are too.

ERROR

Using Docker executor with image python:3.6-alpine3.8 ...
Pulling docker image python:3.6-alpine3.8 ...
Using docker image sha256:da04299043e37f3ac248a7045993ce5dc84bc08a163713331202b908096dce96 for python:3.6-alpine3.8 ...
Running on runner-71faaddd-project-42-concurrent-0 via 5eb10032be48...

***SNIP***

$ pip install -U setuptools wheel twine
Collecting setuptools
  Downloading https://files.pythonhosted.org/packages/96/06/c8ee69628191285ddddffb277bd5abdf769166e7a14b867c2a172f0175b1/setuptools-40.4.3-py2.py3-none-any.whl (569kB)
Requirement already up-to-date: wheel in /usr/local/lib/python3.6/site-packages (0.31.1)
Collecting twine
  Downloading https://files.pythonhosted.org/packages/13/ad/4738f78528f4c47ef1fd145e929bc123f19b0a424d6847ce618365c2826e/twine-1.12.0-py2.py3-none-any.whl
Collecting pkginfo>=1.4.2 (from twine)
  Downloading https://files.pythonhosted.org/packages/a3/fe/f32a48d48f40a7209be9825fba2566cab92364787cf37de2e08300dd6ce7/pkginfo-1.4.2-py2.py3-none-any.whl
Collecting requests!=2.15,!=2.16,>=2.5.0 (from twine)
  Downloading https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl (91kB)
Collecting tqdm>=4.14 (from twine)
  Downloading https://files.pythonhosted.org/packages/79/43/19c9fee28110cd47f73e6bc596394337fe9f3e5825b4de402bbf30b3beb5/tqdm-4.26.0-py2.py3-none-any.whl (43kB)
Collecting readme-renderer>=21.0 (from twine)
  Downloading https://files.pythonhosted.org/packages/a8/a1/6f474ee3be067328e11faa3c6391823ceb687cabd54ac6801c8db346d6e4/readme_renderer-22.0-py2.py3-none-any.whl
Collecting requests-toolbelt>=0.8.0 (from twine)
  Downloading https://files.pythonhosted.org/packages/97/8a/d710f792d6f6ecc089c5e55b66e66c3f2f35516a1ede5a8f54c13350ffb0/requests_toolbelt-0.8.0-py2.py3-none-any.whl (54kB)
Collecting urllib3<1.24,>=1.21.1 (from requests!=2.15,!=2.16,>=2.5.0->twine)
  Downloading https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c53851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl (133kB)
Collecting chardet<3.1.0,>=3.0.2 (from requests!=2.15,!=2.16,>=2.5.0->twine)
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
Collecting certifi>=2017.4.17 (from requests!=2.15,!=2.16,>=2.5.0->twine)
  Downloading https://files.pythonhosted.org/packages/df/f7/04fee6ac349e915b82171f8e23cee63644d83663b34c539f7a09aed18f9e/certifi-2018.8.24-py2.py3-none-any.whl (147kB)
Collecting idna<2.8,>=2.5 (from requests!=2.15,!=2.16,>=2.5.0->twine)
  Downloading https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB)
Collecting cmarkgfm>=0.2.0 (from readme-renderer>=21.0->twine)
  Downloading https://files.pythonhosted.org/packages/e2/a3/4021fbc17c5afe7f307d14eba0d6899a8e66b351ab65649b1c89c50a836d/cmarkgfm-0.4.2.tar.gz (133kB)
    Complete output from command python setup.py egg_info:

        No working compiler found, or bogus compiler options passed to
        the compiler from Python's standard "distutils" module.  See
        the error messages above.  Likely, the problem is not related
        to CFFI but generic to the setup.py of any Python package that
        tries to compile C code.  (Hints: on OS/X 10.8, for errors about
        -mno-fused-madd see http://stackoverflow.com/questions/22313407/
        Otherwise, see https://wiki.python.org/moin/CompLangPython or
        the IRC channel #python on irc.freenode.net.)
    Traceback (most recent call last):
      File "/usr/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 154, in save_modules
        yield saved
      File "/usr/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 195, in setup_context
        yield
      File "/usr/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 250, in run_setup
        _execfile(setup_script, ns)
      File "/usr/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 45, in _execfile
        exec(code, globals, locals)
      File "/tmp/easy_install-qbnzeym8/cffi-1.11.5/setup.py", line 142, in <module>
      File "/tmp/easy_install-qbnzeym8/cffi-1.11.5/setup.py", line 77, in ask_supports_thread
      File "/tmp/easy_install-qbnzeym8/cffi-1.11.5/setup.py", line 59, in no_working_compiler_found
        cmdclass={
    SystemExit: 1

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/usr/local/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 1141, in run_setup
        run_setup(setup_script, args)
      File "/usr/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 253, in run_setup
        raise
      File "/usr/local/lib/python3.6/contextlib.py", line 99, in __exit__
        self.gen.throw(type, value, traceback)
      File "/usr/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 195, in setup_context
        yield
      File "/usr/local/lib/python3.6/contextlib.py", line 99, in __exit__
        self.gen.throw(type, value, traceback)
      File "/usr/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 166, in save_modules
        saved_exc.resume()
      File "/usr/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 141, in resume
        six.reraise(type, exc, self._tb)
      File "/usr/local/lib/python3.6/site-packages/setuptools/_vendor/six.py", line 685, in reraise
        raise value.with_traceback(tb)
      File "/usr/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 154, in save_modules
        yield saved
      File "/usr/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 195, in setup_context
        yield
      File "/usr/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 250, in run_setup
        _execfile(setup_script, ns)
      File "/usr/local/lib/python3.6/site-packages/setuptools/sandbox.py", line 45, in _execfile
        exec(code, globals, locals)
      File "/tmp/easy_install-qbnzeym8/cffi-1.11.5/setup.py", line 142, in <module>
      File "/tmp/easy_install-qbnzeym8/cffi-1.11.5/setup.py", line 77, in ask_supports_thread
      File "/tmp/easy_install-qbnzeym8/cffi-1.11.5/setup.py", line 59, in no_working_compiler_found
        cmdclass={
    SystemExit: 1

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-3krl0lcz/cmarkgfm/setup.py", line 60, in <module>
        'build_ext': custom_build_ext,
      File "/usr/local/lib/python3.6/site-packages/setuptools/__init__.py", line 139, in setup
        _install_setup_requires(attrs)
      File "/usr/local/lib/python3.6/site-packages/setuptools/__init__.py", line 134, in _install_setup_requires
        dist.fetch_build_eggs(dist.setup_requires)
      File "/usr/local/lib/python3.6/site-packages/setuptools/dist.py", line 514, in fetch_build_eggs
        replace_conflicting=True,
      File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 777, in resolve
        replace_conflicting=replace_conflicting
      File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1060, in best_match
        return self.obtain(req, installer)
      File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1072, in obtain
        return installer(requirement)
      File "/usr/local/lib/python3.6/site-packages/setuptools/dist.py", line 581, in fetch_build_egg
        return cmd.easy_install(req)
      File "/usr/local/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 676, in easy_install
        return self.install_item(spec, dist.location, tmpdir, deps)
      File "/usr/local/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 702, in install_item
        dists = self.install_eggs(spec, download, tmpdir)
      File "/usr/local/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 887, in install_eggs
        return self.build_and_install(setup_script, setup_base)
      File "/usr/local/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 1155, in build_and_install
        self.run_setup(setup_script, setup_base, args)
      File "/usr/local/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 1143, in run_setup
        raise DistutilsError("Setup script exited with %s" % (v.args[0],))
    distutils.errors.DistutilsError: Setup script exited with 1

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-3krl0lcz/cmarkgfm/
ERROR: Job failed: exit code 1

Solution/Work Around

My current solution is to basically prevent using this commit with twine as the previous one worked just fine.

gitlab.ci config

image:
  python:3.6-alpine3.8

stages:
  - deploy

package:
  stage: deploy
  only:
    - tags
  script:
    - pip install -r requirements/test.txt
    - pip install -U setuptools wheel "twine<1.12"
    - python setup.py bdist_wheel
    - twine upload --repository-url https://pypi.example.com/simple/ dist/*
dstufft commented 5 years ago

Alpine Linux can't use manylinux wheels, so this is expected.

theacodes commented 5 years ago

Closing as WAI, but @dstufft, if there's anything we can do to help alpine users let me know.