Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cryptacular is broken

this weekend our docker image broke because it cannot be build anymore. While looking into the stats, I saw this line:

crypt_blowfish-1.2/crypt.h:17:23: fatal error: gnu-crypt.h: No such file or directory

In more detail:

  Running setup.py bdist_wheel for cryptacular: started
  Running setup.py bdist_wheel for cryptacular: finished with status 'error'
  Complete output from command /usr/local/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-sayd65k0/cryptacular/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/tmp5734bf55pip-wheel- --python-tag cp36:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.6
  creating build/lib.linux-x86_64-3.6/cryptacular
  copying cryptacular/__init__.py -> build/lib.linux-x86_64-3.6/cryptacular
  creating build/lib.linux-x86_64-3.6/cryptacular/crypt
  copying cryptacular/crypt/test_crypt.py -> build/lib.linux-x86_64-3.6/cryptacular/crypt
  copying cryptacular/crypt/__init__.py -> build/lib.linux-x86_64-3.6/cryptacular/crypt
  creating build/lib.linux-x86_64-3.6/cryptacular/bcrypt
  copying cryptacular/bcrypt/test_bcrypt.py -> build/lib.linux-x86_64-3.6/cryptacular/bcrypt
  copying cryptacular/bcrypt/__init__.py -> build/lib.linux-x86_64-3.6/cryptacular/bcrypt
  creating build/lib.linux-x86_64-3.6/cryptacular/core
  copying cryptacular/core/test_core.py -> build/lib.linux-x86_64-3.6/cryptacular/core
  copying cryptacular/core/__init__.py -> build/lib.linux-x86_64-3.6/cryptacular/core
  creating build/lib.linux-x86_64-3.6/cryptacular/pbkdf2
  copying cryptacular/pbkdf2/test_pbkdf2.py -> build/lib.linux-x86_64-3.6/cryptacular/pbkdf2
  copying cryptacular/pbkdf2/__init__.py -> build/lib.linux-x86_64-3.6/cryptacular/pbkdf2
  running egg_info
  writing cryptacular.egg-info/PKG-INFO
  writing dependency_links to cryptacular.egg-info/dependency_links.txt
  writing namespace_packages to cryptacular.egg-info/namespace_packages.txt
  writing requirements to cryptacular.egg-info/requires.txt
  writing top-level names to cryptacular.egg-info/top_level.txt
  reading manifest file 'cryptacular.egg-info/SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  writing manifest file 'cryptacular.egg-info/SOURCES.txt'
  copying cryptacular/bcrypt/_bcrypt.c -> build/lib.linux-x86_64-3.6/cryptacular/bcrypt
  running build_ext
  building 'cryptacular.bcrypt._bcrypt' extension
  creating build/temp.linux-x86_64-3.6
  creating build/temp.linux-x86_64-3.6/crypt_blowfish-1.2
  creating build/temp.linux-x86_64-3.6/cryptacular
  creating build/temp.linux-x86_64-3.6/cryptacular/bcrypt
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DNO_BF_ASM -Icrypt_blowfish-1.2/ -I/usr/local/include/python3.6m -c crypt_blowfish-1.2/crypt_blowfish.c -o build/temp.linux-x86_64-3.6/crypt_blowfish-1.2/crypt_blowfish.o
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DNO_BF_ASM -Icrypt_blowfish-1.2/ -I/usr/local/include/python3.6m -c crypt_blowfish-1.2/crypt_gensalt.c -o build/temp.linux-x86_64-3.6/crypt_blowfish-1.2/crypt_gensalt.o
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DNO_BF_ASM -Icrypt_blowfish-1.2/ -I/usr/local/include/python3.6m -c crypt_blowfish-1.2/wrapper.c -o build/temp.linux-x86_64-3.6/crypt_blowfish-1.2/wrapper.o
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DNO_BF_ASM -Icrypt_blowfish-1.2/ -I/usr/local/include/python3.6m -c cryptacular/bcrypt/_bcrypt.c -o build/temp.linux-x86_64-3.6/cryptacular/bcrypt/_bcrypt.o
  In file included from /usr/local/include/python3.6m/Python.h:39:0,
                   from cryptacular/bcrypt/_bcrypt.c:26:
  crypt_blowfish-1.2/crypt.h:17:23: fatal error: gnu-crypt.h: No such file or directory
   #include <gnu-crypt.h>
                         ^
  compilation terminated.
  error: command 'gcc' failed with exit status 1

  ----------------------------------------
  Failed building wheel for cryptacular
  Running setup.py clean for cryptacular

Our implementation works with the package cryptacular which uses bcrypt. None of the packages were updated last week and I dont know where to start.

As additional information, the error occurs in this block of our Dockerfile

RUN apt-get install -y build-essential libfontconfig && \
    pip install -q -U pip && \
    pip install -q -r requirements.txt && \
    apt-get remove -y --purge build-essential && \
    apt-get autoremove -y && \
    apt-get clean -y

where the requirements.txt uses cryptacular==1.4.1

Edit: We are working with the python:3.6-slim image

like image 673
Tobias S Avatar asked Apr 03 '18 10:04

Tobias S


Video Answer


2 Answers

I had the same issue running python 3.6.6. With this one liner I was able to install cryptacular from the latest commit.

pipenv install -e hg+https://bitbucket.org/dholth/cryptacular@cb96fb3#egg=cryptacular

You will need to have mercurial installed

apt-get update && apt-get install -y mercurial

More info on this thread

like image 189
webjunkie Avatar answered Sep 23 '22 03:09

webjunkie


We don't know the error exactly, but last weekend there was an security update in the base image. Therefore we pinned our python image to 3.6.4.

like image 43
Tobias S Avatar answered Sep 21 '22 03:09

Tobias S