manimino/ducks

cykhash build error while installing in Docker

Opened this issue · 2 comments

Describe the bug
I am trying to get ducks to install in a Docker for AWS Lambda, I see this error during the build process. The Docker image being used here is this lambda/python:3.9-x86_64 found here https://gallery.ecr.aws/lambda/python.

#7 31.42   × Building wheel for cykhash (pyproject.toml) did not run successfully.
#7 31.42   │ exit code: 1
#7 31.42   ╰─> [53 lines of output]
#7 31.42       running bdist_wheel
#7 31.42       running build
#7 31.42       running build_py
#7 31.42       creating build
#7 31.42       creating build/lib.linux-x86_64-cpython-39
#7 31.42       creating build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/compat.py -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/__init__.py -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       running egg_info
#7 31.42       writing src/cykhash.egg-info/PKG-INFO
#7 31.42       writing dependency_links to src/cykhash.egg-info/dependency_links.txt
#7 31.42       writing top-level names to src/cykhash.egg-info/top_level.txt
#7 31.42       reading manifest file 'src/cykhash.egg-info/SOURCES.txt'
#7 31.42       reading manifest template 'MANIFEST.in'
#7 31.42       adding license file 'LICENSE'
#7 31.42       writing manifest file 'src/cykhash.egg-info/SOURCES.txt'
#7 31.42       copying src/cykhash/common.pxi -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/floatdef.pxd -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/hash_functions.pxi -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/khash.pxi -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/khashmaps.pxd -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/khashmaps.pyx -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/khashsets.pxd -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/khashsets.pyx -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/memory.pxi -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/murmurhash.pxi -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/unique.pxd -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/unique.pyx -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       copying src/cykhash/utils.pyx -> build/lib.linux-x86_64-cpython-39/cykhash
#7 31.42       creating build/lib.linux-x86_64-cpython-39/cykhash/unique
#7 31.42       copying src/cykhash/unique/unique_impl.pxi.in -> build/lib.linux-x86_64-cpython-39/cykhash/unique
#7 31.42       creating build/lib.linux-x86_64-cpython-39/cykhash/sets
#7 31.42       copying src/cykhash/sets/set_init.pxi.in -> build/lib.linux-x86_64-cpython-39/cykhash/sets
#7 31.42       copying src/cykhash/sets/set_impl.pxi.in -> build/lib.linux-x86_64-cpython-39/cykhash/sets
#7 31.42       copying src/cykhash/sets/set_header.pxi.in -> build/lib.linux-x86_64-cpython-39/cykhash/sets
#7 31.42       creating build/lib.linux-x86_64-cpython-39/cykhash/maps
#7 31.42       copying src/cykhash/maps/map_header.pxi.in -> build/lib.linux-x86_64-cpython-39/cykhash/maps
#7 31.42       copying src/cykhash/maps/map_impl.pxi.in -> build/lib.linux-x86_64-cpython-39/cykhash/maps
#7 31.42       copying src/cykhash/maps/map_init.pxi.in -> build/lib.linux-x86_64-cpython-39/cykhash/maps
#7 31.42       copying src/cykhash/unique/unique_impl.pxi -> build/lib.linux-x86_64-cpython-39/cykhash/unique
#7 31.42       copying src/cykhash/sets/set_header.pxi -> build/lib.linux-x86_64-cpython-39/cykhash/sets
#7 31.42       copying src/cykhash/sets/set_impl.pxi -> build/lib.linux-x86_64-cpython-39/cykhash/sets
#7 31.42       copying src/cykhash/sets/set_init.pxi -> build/lib.linux-x86_64-cpython-39/cykhash/sets
#7 31.42       copying src/cykhash/maps/map_header.pxi -> build/lib.linux-x86_64-cpython-39/cykhash/maps
#7 31.42       copying src/cykhash/maps/map_impl.pxi -> build/lib.linux-x86_64-cpython-39/cykhash/maps
#7 31.42       copying src/cykhash/maps/map_init.pxi -> build/lib.linux-x86_64-cpython-39/cykhash/maps
#7 31.42       running build_ext
#7 31.42       building 'cykhash.khashsets' extension
#7 31.42       creating build/temp.linux-x86_64-cpython-39
#7 31.42       creating build/temp.linux-x86_64-cpython-39/src
#7 31.42       creating build/temp.linux-x86_64-cpython-39/src/cykhash
#7 31.42       gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/var/lang/include/python3.9 -c src/cykhash/khashsets.c -o build/temp.linux-x86_64-cpython-39/src/cykhash/khashsets.o
#7 31.42       error: command 'gcc' failed: No such file or directory
#7 31.42       [end of output]

To Reproduce
Steps to reproduce the behavior:

  1. create a requirements.txt with ducks
  2. Create a dockerfile as below
FROM public.ecr.aws/lambda/python:3.9-x86_64
COPY requirements.txt  .
RUN  pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"

Expected behavior
The installation to work properly.

Desktop (please complete the following information):

  • Linux, x86-64
yhack commented

@anjanvb cykhash requires a compiler, gcc. If you pip install it on a machine with gcc it should work. But Poetry still has trouble with cykhash due to lack of PEP 517 compatibility. @manimino this library fills a useful niche. Any chance of making installation work without compile?

Agreed, the compile hurdle is one that many people have hit. I will look into ways to improve this in future.