plone.docker
plone.docker copied to clipboard
Error while running buildout in alpine image
docker run -e SITE=Plone plone:5.2.1-alpine
ends with the following error during buildout.
Apparently it can't find gcc
in the container. Tried the same with the 5.2.1
image and no error showed up. Did not try with the 5.2.1-python2
image but I guess it should be fine.
Getting distribution for 'cryptography'.
WARNING: The easy_install command is deprecated and will be removed in a future version.
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-wheel-0ig51lj9/cffi/setup.py'"'"'; __file__='"'"'/tmp/pip-wheel-0ig51lj9/cffi/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-zd3hf4di
cwd: /tmp/pip-wheel-0ig51lj9/cffi/
Complete output (48 lines):
unable to execute 'gcc': No such file or directory
unable to execute 'gcc': No such file or directory
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.)
Trying to continue anyway. If you are trying to install CFFI from
a build done in a different context, you can ignore this warning.
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.7
creating build/lib.linux-x86_64-3.7/cffi
copying cffi/recompiler.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/cffi_opcode.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/setuptools_ext.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/api.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/vengine_cpy.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/error.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/vengine_gen.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/ffiplatform.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/verifier.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/model.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/commontypes.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/cparser.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/lock.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/pkgconfig.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/__init__.py -> build/lib.linux-x86_64-3.7/cffi
copying cffi/_cffi_include.h -> build/lib.linux-x86_64-3.7/cffi
copying cffi/parse_c_type.h -> build/lib.linux-x86_64-3.7/cffi
copying cffi/_embedding.h -> build/lib.linux-x86_64-3.7/cffi
copying cffi/_cffi_errors.h -> build/lib.linux-x86_64-3.7/cffi
running build_ext
building '_cffi_backend' extension
creating build/temp.linux-x86_64-3.7
creating build/temp.linux-x86_64-3.7/c
gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/include/ffi -I/usr/include/libffi -I/usr/local/include/python3.7m -c c/_cffi_backend.c -o build/temp.linux-x86_64-3.7/c/_cffi_backend.o
unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1
----------------------------------------
ERROR: Failed building wheel for cffi
ERROR: Failed to build one or more wheels
error: Command '['/usr/local/bin/python', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/easy_install-9rbqiac4/cryptography-2.9.2/temp/tmprd1nil_1', '--quiet', 'cffi!=1.11.3,>=1.8']' returned non-zero exit status 1.
An error occurred when trying to install /plone/buildout-cache/downloads/dist/cryptography-2.9.2.tar.gz. Look above this message for any errors that were output by easy_install.
While:
Installing releaser.
Getting distribution for 'cryptography'.
An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/zc/buildout/buildout.py", line 2174, in main
getattr(buildout, command)(args)
File "/usr/local/lib/python3.7/site-packages/zc/buildout/buildout.py", line 817, in install
installed_files = self[part]._call(recipe.install)
File "/usr/local/lib/python3.7/site-packages/zc/buildout/buildout.py", line 1603, in _call
return f()
File "/plone/buildout-cache/eggs/zc.recipe.egg-2.0.7-py3.7.egg/zc/recipe/egg/egg.py", line 227, in install
reqs, ws = self.working_set()
File "/plone/buildout-cache/eggs/zc.recipe.egg-2.0.7-py3.7.egg/zc/recipe/egg/egg.py", line 87, in working_set
allow_unknown_extras=bool_option(buildout_section, 'allow-unknown-extras')
File "/plone/buildout-cache/eggs/zc.recipe.egg-2.0.7-py3.7.egg/zc/recipe/egg/egg.py", line 168, in _working_set
allow_unknown_extras=allow_unknown_extras)
File "/usr/local/lib/python3.7/site-packages/zc/buildout/easy_install.py", line 957, in install
return installer.install(specs, working_set)
File "/usr/local/lib/python3.7/site-packages/zc/buildout/easy_install.py", line 730, in install
for dist in self._get_dist(req, ws):
File "/usr/local/lib/python3.7/site-packages/zc/buildout/easy_install.py", line 574, in _get_dist
dists = [_move_to_eggs_dir_and_compile(dist, self._dest)]
File "/usr/local/lib/python3.7/site-packages/zc/buildout/easy_install.py", line 1745, in _move_to_eggs_dir_and_compile
[tmp_loc] = glob.glob(os.path.join(tmp_dest, '*'))
ValueError: not enough values to unpack (expected 1, got 0)
A couple possible bonus ideas:
- wouldn't it be better to run buildout with the
-N
option? It updates a lot of packages while doing this buildout, not sure it's safe to do that in a docker image. - should we maybe detect that only the
SITE
env var was set and just run thecollective.recipe.plonesite
specific part of the buildout?
@pnicolli
All versions should be pinned to versions.cfg, but yes the -N
option would be more secure.
and just run the collective.recipe.plonesite specific part of the buildout?
Can we do that in buildout :astonished: ?
IIRC you can do something like buildout install somepart
. In this case, it should be buildout install plonesite
.
Regarding -N
, I will open a different issue maybe, with the logs I have and the list of what id downloads.