Search code examples
pythondockermacos

Docker build fail after OS update


Running Docker v4.30.0 on MacOS Sonoma 14.5 and I'm experiencing unusual issue on a Docker program that otherwise used to work three weeks ago.

What should I do to fix this?

Dockerfile

FROM python:3.11

# Keeps Python from generating .pyc files in the container
ENV PYTHONDONTWRITEBYTECODE=1

# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1

# Set the working directory to /app
WORKDIR /app

COPY requirements.txt .
RUN pip3 install --no-cache-dir -r requirements.txt

# Switching to a non-root user, please refer to https://aka.ms/vscode-docker-python-user-rights
RUN useradd appuser && chown -R appuser /app
USER appuser

EXPOSE 5001

# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
CMD ["python", "main.py"]

Requirements

# Main actors
pandas==1.5.2
numpy==1.23.5

PyYAML==6.0

# openpyxl is required if we load xlsx files.
openpyxl==3.0.9

# only for plotting
# matplotlib==3.3.3

# compare name similarity using ngrams
string_grouper==0.1.1

# Only if adjusting excel column widths
xlsxwriter==3.0.2

# for mock data generation
faker==13.0.0

# For repeating experiments
# flask==2.0.3

# Unit testing
pytest==7.0.1

# For json.dump but converting NaN into null
simplejson==3.18.0

gender-guesser==0.4.0

Output of the build fail

[internal] load build definition from Dockerfile
    transferring 763/0 0.003
[internal] load metadata for docker.io/library/python:3.11
[internal] load .dockerignore
[internal] load build context
    transferring 611/0 0.004
[1/5] FROM docker.io/library/python:3.11@sha256:091e0f5da680e5c972c59cb7eca172141bb6350045b592c284e2fd3bf2916dd9
    resolve docker.io/library/python:3.11@sha256:091e0f5da680e5c972c59cb7eca172141bb6350045b592c284e2fd3bf2916dd9 0/0 0.01
    sha256:b493cb19e676119b08c94a6372eab5d2b845a6f629e7c831b5f02a19083ef80d 3130340/3130340 0.547
    sha256:01f4847499fb013c8a68df2e212cd4360f2a55fb657a634e1a935faca96ec8f7 244/244 0.382
    sha256:1270f6c33d669576d0e7ff84d12e4f923f6bf50968cf95b23d33ca1b4e9a484e 19491183/19491183 8.538
    sha256:228270bb5dc5207f6bbf31f0728807c55124238c0b5e44dc35eafcc56e166acb 6470678/6470678 2.499
    sha256:feb30c5ba2d151512d29ff4b92109a740559509ef6f3072a86c5006a1379397b 202593312/202593312 27.239
    sha256:30ed4c12791345d3f20f66024e1f22275ce507868c508509b83dcf231b1c9adc 63994370/63994370 15.215
    sha256:15856ca26414127b85cee6d10acbc4cee6eba9070f3f5a04b9cc72ce95abfa7f 23586610/23586610 7.574
    sha256:91e301773f03e9e0fabc5c177fe6bfe8daf14e992ab816f151692b814ddc462c 49613388/49613388 11.366
    extracting 0/0 0.509
    extracting 0/0 0.172
    extracting 0/0 0.604
    extracting 0/0 1.913
    extracting 0/0 0.066
    extracting 0/0 0.172
    extracting 0/0 0.003
    extracting 0/0 0.052
[2/5] WORKDIR /app
[3/5] COPY requirements.txt .
[4/5] RUN pip3 install --no-cache-dir -r requirements.txt
    Collecting pandas==1.5.2 (from -r requirements.txt (line 2))
    Downloading pandas-1.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (11 kB)
    Collecting numpy==1.23.5 (from -r requirements.txt (line 3))
    Downloading numpy-1.23.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (2.3 kB)
    Collecting PyYAML==6.0 (from -r requirements.txt (line 5))
    Downloading PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (2.1 kB)
    Collecting openpyxl==3.0.9 (from -r requirements.txt (line 8))
    Downloading openpyxl-3.0.9-py2.py3-none-any.whl.metadata (2.4 kB)
    Collecting string_grouper==0.1.1 (from -r requirements.txt (line 14))
    Downloading string_grouper-0.1.1-py3-none-any.whl.metadata (18 kB)
    Collecting xlsxwriter==3.0.2 (from -r requirements.txt (line 17))
    Downloading XlsxWriter-3.0.2-py3-none-any.whl.metadata (2.5 kB)
    Collecting faker==13.0.0 (from -r requirements.txt (line 20))
    Downloading Faker-13.0.0-py3-none-any.whl.metadata (15 kB)
    Collecting pytest==7.0.1 (from -r requirements.txt (line 26))
    Downloading pytest-7.0.1-py3-none-any.whl.metadata (7.8 kB)
    Collecting simplejson==3.18.0 (from -r requirements.txt (line 29))
    Downloading simplejson-3.18.0.tar.gz (83 kB)
    ââââââââââââââââââââââââââââââââââââââââ 83.5/83.5 kB 3.4 MB/s eta 0:00:00
    Preparing metadata (setup.py): started
    Preparing metadata (setup.py): finished with status 'done'
    Collecting gender-guesser==0.4.0 (from -r requirements.txt (line 31))
    Downloading gender_guesser-0.4.0-py2.py3-none-any.whl.metadata (3.0 kB)
    Collecting python-dateutil>=2.8.1 (from pandas==1.5.2->-r requirements.txt (line 2))
    Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
    Collecting pytz>=2020.1 (from pandas==1.5.2->-r requirements.txt (line 2))
    Downloading pytz-2024.1-py2.py3-none-any.whl.metadata (22 kB)
    Collecting et-xmlfile (from openpyxl==3.0.9->-r requirements.txt (line 8))
    Downloading et_xmlfile-1.1.0-py3-none-any.whl.metadata (1.8 kB)
    Collecting scipy (from string_grouper==0.1.1->-r requirements.txt (line 14))
    Downloading scipy-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (60 kB)
    ââââââââââââââââââââââââââââââââââââââââ 60.6/60.6 kB 4.8 MB/s eta 0:00:00
    Collecting scikit-learn (from string_grouper==0.1.1->-r requirements.txt (line 14))
    Downloading scikit_learn-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (11 kB)
    Collecting sparse-dot-topn>=0.2.6 (from string_grouper==0.1.1->-r requirements.txt (line 14))
    Downloading sparse-dot-topn-1.1.1.tar.gz (43 kB)
    ââââââââââââââââââââââââââââââââââââââââ 43.4/43.4 kB 5.2 MB/s eta 0:00:00
    Installing build dependencies: started
    Installing build dependencies: finished with status 'done'
    Getting requirements to build wheel: started
    Getting requirements to build wheel: finished with status 'done'
    Installing backend dependencies: started
    Installing backend dependencies: finished with status 'done'
    Preparing metadata (pyproject.toml): started
    Preparing metadata (pyproject.toml): finished with status 'done'
    Collecting attrs>=19.2.0 (from pytest==7.0.1->-r requirements.txt (line 26))
    Downloading attrs-23.2.0-py3-none-any.whl.metadata (9.5 kB)
    Collecting iniconfig (from pytest==7.0.1->-r requirements.txt (line 26))
    Downloading iniconfig-2.0.0-py3-none-any.whl.metadata (2.6 kB)
    Collecting packaging (from pytest==7.0.1->-r requirements.txt (line 26))
    Downloading packaging-24.0-py3-none-any.whl.metadata (3.2 kB)
    Collecting pluggy<2.0,>=0.12 (from pytest==7.0.1->-r requirements.txt (line 26))
    Downloading pluggy-1.5.0-py3-none-any.whl.metadata (4.8 kB)
    Collecting py>=1.8.2 (from pytest==7.0.1->-r requirements.txt (line 26))
    Downloading py-1.11.0-py2.py3-none-any.whl.metadata (2.8 kB)
    Collecting tomli>=1.0.0 (from pytest==7.0.1->-r requirements.txt (line 26))
    Downloading tomli-2.0.1-py3-none-any.whl.metadata (8.9 kB)
    Collecting six>=1.5 (from python-dateutil>=2.8.1->pandas==1.5.2->-r requirements.txt (line 2))
    Downloading six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
    Collecting psutil (from sparse-dot-topn>=0.2.6->string_grouper==0.1.1->-r requirements.txt (line 14))
    Downloading psutil-5.9.8.tar.gz (503 kB)
    âââââââââââââââââââââââââââââââââââââââ 503.2/503.2 kB 6.3 MB/s eta 0:00:00
    Installing build dependencies: started
    Installing build dependencies: finished with status 'done'
    Getting requirements to build wheel: started
    Getting requirements to build wheel: finished with status 'done'
    Preparing metadata (pyproject.toml): started
    Preparing metadata (pyproject.toml): finished with status 'done'
    Collecting joblib>=1.2.0 (from scikit-learn->string_grouper==0.1.1->-r requirements.txt (line 14))
    Downloading joblib-1.4.2-py3-none-any.whl.metadata (5.4 kB)
    Collecting threadpoolctl>=3.1.0 (from scikit-learn->string_grouper==0.1.1->-r requirements.txt (line 14))
    Downloading threadpoolctl-3.5.0-py3-none-any.whl.metadata (13 kB)
    Downloading pandas-1.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.4 MB)
    ââââââââââââââââââââââââââââââââââââââââ 11.4/11.4 MB 13.6 MB/s eta 0:00:00
    Downloading numpy-1.23.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (13.9 MB)
    ââââââââââââââââââââââââââââââââââââââââ 13.9/13.9 MB 13.5 MB/s eta 0:00:00
    Downloading PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (732 kB)
    ââââââââââââââââââââââââââââââââââââââââ 732.4/732.4 kB 12.6 MB/s eta 0:00:00
    Downloading openpyxl-3.0.9-py2.py3-none-any.whl (242 kB)
    ââââââââââââââââââââââââââââââââââââââââ 242.2/242.2 kB 22.9 MB/s eta 0:00:00
    Downloading string_grouper-0.1.1-py3-none-any.whl (11 kB)
    Downloading XlsxWriter-3.0.2-py3-none-any.whl (149 kB)
    ââââââââââââââââââââââââââââââââââââââââ 149.9/149.9 kB 12.2 MB/s eta 0:00:00
    Downloading Faker-13.0.0-py3-none-any.whl (1.5 MB)
    ââââââââââââââââââââââââââââââââââââââââ 1.5/1.5 MB 14.0 MB/s eta 0:00:00
    Downloading pytest-7.0.1-py3-none-any.whl (296 kB)
    ââââââââââââââââââââââââââââââââââââââââ 297.0/297.0 kB 16.5 MB/s eta 0:00:00
    Downloading gender_guesser-0.4.0-py2.py3-none-any.whl (379 kB)
    ââââââââââââââââââââââââââââââââââââââââ 379.3/379.3 kB 15.8 MB/s eta 0:00:00
    Downloading attrs-23.2.0-py3-none-any.whl (60 kB)
    ââââââââââââââââââââââââââââââââââââââââ 60.8/60.8 kB 110.0 MB/s eta 0:00:00
    Downloading pluggy-1.5.0-py3-none-any.whl (20 kB)
    Downloading py-1.11.0-py2.py3-none-any.whl (98 kB)
    ââââââââââââââââââââââââââââââââââââââââ 98.7/98.7 kB 98.1 MB/s eta 0:00:00
    Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
    ââââââââââââââââââââââââââââââââââââââââ 229.9/229.9 kB 14.6 MB/s eta 0:00:00
    Downloading pytz-2024.1-py2.py3-none-any.whl (505 kB)
    ââââââââââââââââââââââââââââââââââââââââ 505.5/505.5 kB 14.0 MB/s eta 0:00:00
    Downloading scipy-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (33.7 MB)
    ââââââââââââââââââââââââââââââââââââââââ 33.7/33.7 MB 13.6 MB/s eta 0:00:00
    Downloading tomli-2.0.1-py3-none-any.whl (12 kB)
    Downloading et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB)
    Downloading iniconfig-2.0.0-py3-none-any.whl (5.9 kB)
    Downloading packaging-24.0-py3-none-any.whl (53 kB)
    ââââââââââââââââââââââââââââââââââââââââ 53.5/53.5 kB 67.1 MB/s eta 0:00:00
    Downloading scikit_learn-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (12.5 MB)
    ââââââââââââââââââââââââââââââââââââââââ 12.5/12.5 MB 13.5 MB/s eta 0:00:00
    Downloading joblib-1.4.2-py3-none-any.whl (301 kB)
    ââââââââââââââââââââââââââââââââââââââââ 301.8/301.8 kB 16.6 MB/s eta 0:00:00
    Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
    Downloading threadpoolctl-3.5.0-py3-none-any.whl (18 kB)
    Building wheels for collected packages: simplejson, sparse-dot-topn, psutil
    Building wheel for simplejson (setup.py): started
    Building wheel for simplejson (setup.py): finished with status 'done'
    Created wheel for simplejson: filename=simplejson-3.18.0-cp311-cp311-linux_aarch64.whl size=138961 sha256=2c399c222a90ca55045f87a57a2512ac229656b6a7810fc24557f3f5c5d5eb74
    Stored in directory: /tmp/pip-ephem-wheel-cache-1ech32zu/wheels/fa/db/a0/36fb3a2307fcdd78b8df351678850dab004261bb3f3feca281
    Building wheel for sparse-dot-topn (pyproject.toml): started
    Building wheel for sparse-dot-topn (pyproject.toml): finished with status 'error'
    error: subprocess-exited-with-error
    
    Ã Building wheel for sparse-dot-topn (pyproject.toml) did not run successfully.
    â exit code: 1
    â°â> [89 lines of output]
    *** scikit-build-core 0.9.4 using CMake 3.29.3 (wheel)
    *** Configuring CMake...
    loading initial cache file build/cp311-cp311-linux_aarch64/CMakeInit.txt
    -- The CXX compiler identification is GNU 12.2.0
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: /usr/bin/c++ - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Found Python: /usr/local/bin/python (found suitable version "3.11.9", minimum required is "3.8") found components: Interpreter Development.Module Development.SABIModule
    -- sparse-dot-topn | OpenMP disabled: OFF
    -- Found OpenMP_CXX: -fopenmp (found version "4.5")
    -- Found OpenMP: TRUE (found version "4.5")
    -- Performing Test HAVE_MARCH
    -- Performing Test HAVE_MARCH - Success
    -- Performing Test HAVE_MM_MALLOC
    -- Performing Test HAVE_MM_MALLOC - Failed
    -- Performing Test HAVE_POSIX_MEMALIGN
    -- Performing Test HAVE_POSIX_MEMALIGN - Success
    -- Performing Test HAVE_SSE4_2_EXTENSIONS
    -- Performing Test HAVE_SSE4_2_EXTENSIONS - Failed
    -- Performing Test HAVE_SSE4_1_EXTENSIONS
    -- Performing Test HAVE_SSE4_1_EXTENSIONS - Failed
    -- Performing Test HAVE_SSSE3_EXTENSIONS
    -- Performing Test HAVE_SSSE3_EXTENSIONS - Failed
    -- Performing Test HAVE_SSE3_EXTENSIONS
    -- Performing Test HAVE_SSE3_EXTENSIONS - Failed
    -- Performing Test HAVE_SSE2_EXTENSIONS
    -- Performing Test HAVE_SSE2_EXTENSIONS - Failed
    -- Performing Test HAVE_SSE_EXTENSIONS
    -- Performing Test HAVE_SSE_EXTENSIONS - Failed
    -- Using CPU native flags for SSE optimization:  -ffloat-store -march=native
    -- Performing Test HAVE_AVX2
    -- Performing Test HAVE_AVX2 - Failed
    -- Performing Test HAVE_AVX
    -- Performing Test HAVE_AVX - Failed
    -- sparse-dot-topn | Enabled arch flags: -ffloat-store -march=native
    -- Configuring done (0.3s)
    -- Generating done (0.0s)
    -- Build files have been written to: /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/build/cp311-cp311-linux_aarch64
    *** Building project with Ninja...
    [1/16] Building CXX object CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/extension.cpp.o
    [2/16] Building CXX object CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/sp_matmul_bindings.cpp.o
    FAILED: CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/sp_matmul_bindings.cpp.o
    /usr/bin/c++ -DSDTN_OMP_ENABLED=TRUE -DVERSION_INFO=1.1.1 -D_sparse_dot_topn_core_EXPORTS -I/tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/include -I/usr/local/include/python3.11 -I/tmp/pip-build-env-9irisywo/overlay/lib/python3.11/site-packages/nanobind/include -O3 -DNDEBUG -std=gnu++17 -flto=auto -fno-fat-lto-objects -fPIC -fvisibility=hidden -fno-stack-protector -ffloat-store -march=native -ffunction-sections -fdata-sections -fopenmp -MD -MT CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/sp_matmul_bindings.cpp.o -MF CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/sp_matmul_bindings.cpp.o.d -o CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/sp_matmul_bindings.cpp.o -c /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_bindings.cpp
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_bindings.cpp: In function âvoid sdtn::bindings::bind_sp_matmul(nanobind::module_&)â:
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_bindings.cpp:39:13: error: âraw_docâ is not a member of âsdtn::bindings::nbâ
    39 |         nb::raw_doc(
    |             ^~~~~~~
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_bindings.cpp: In function âvoid sdtn::bindings::bind_sp_matmul_mt(nanobind::module_&)â:
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_bindings.cpp:159:13: error: âraw_docâ is not a member of âsdtn::bindings::nbâ
    159 |         nb::raw_doc(
    |             ^~~~~~~
    [3/16] Building CXX object CMakeFiles/nanobind-static.dir/tmp/pip-build-env-9irisywo/overlay/lib/python3.11/site-packages/nanobind/src/nb_ndarray.cpp.o
    [4/16] Building CXX object CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/zip_sp_matmul_topn_bindings.cpp.o
    FAILED: CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/zip_sp_matmul_topn_bindings.cpp.o
    /usr/bin/c++ -DSDTN_OMP_ENABLED=TRUE -DVERSION_INFO=1.1.1 -D_sparse_dot_topn_core_EXPORTS -I/tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/include -I/usr/local/include/python3.11 -I/tmp/pip-build-env-9irisywo/overlay/lib/python3.11/site-packages/nanobind/include -O3 -DNDEBUG -std=gnu++17 -flto=auto -fno-fat-lto-objects -fPIC -fvisibility=hidden -fno-stack-protector -ffloat-store -march=native -ffunction-sections -fdata-sections -fopenmp -MD -MT CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/zip_sp_matmul_topn_bindings.cpp.o -MF CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/zip_sp_matmul_topn_bindings.cpp.o.d -o CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/zip_sp_matmul_topn_bindings.cpp.o -c /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/zip_sp_matmul_topn_bindings.cpp
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/zip_sp_matmul_topn_bindings.cpp: In function âvoid sdtn::bindings::bind_zip_sp_matmul_topn(nanobind::module_&)â:
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/zip_sp_matmul_topn_bindings.cpp:38:13: error: âraw_docâ is not a member of âsdtn::bindings::nbâ
    38 |         nb::raw_doc(
    |             ^~~~~~~
    [5/16] Building CXX object CMakeFiles/nanobind-static.dir/tmp/pip-build-env-9irisywo/overlay/lib/python3.11/site-packages/nanobind/src/nb_internals.cpp.o
    [6/16] Building CXX object CMakeFiles/nanobind-static.dir/tmp/pip-build-env-9irisywo/overlay/lib/python3.11/site-packages/nanobind/src/nb_static_property.cpp.o
    [7/16] Building CXX object CMakeFiles/nanobind-static.dir/tmp/pip-build-env-9irisywo/overlay/lib/python3.11/site-packages/nanobind/src/nb_enum.cpp.o
    [8/16] Building CXX object CMakeFiles/nanobind-static.dir/tmp/pip-build-env-9irisywo/overlay/lib/python3.11/site-packages/nanobind/src/nb_func.cpp.o
    [9/16] Building CXX object CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp.o
    FAILED: CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp.o
    /usr/bin/c++ -DSDTN_OMP_ENABLED=TRUE -DVERSION_INFO=1.1.1 -D_sparse_dot_topn_core_EXPORTS -I/tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/include -I/usr/local/include/python3.11 -I/tmp/pip-build-env-9irisywo/overlay/lib/python3.11/site-packages/nanobind/include -O3 -DNDEBUG -std=gnu++17 -flto=auto -fno-fat-lto-objects -fPIC -fvisibility=hidden -fno-stack-protector -ffloat-store -march=native -ffunction-sections -fdata-sections -fopenmp -MD -MT CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp.o -MF CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp.o.d -o CMakeFiles/_sparse_dot_topn_core.dir/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp.o -c /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp: In function âvoid sdtn::bindings::bind_sp_matmul_topn(nanobind::module_&)â:
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp:42:13: error: âraw_docâ is not a member of âsdtn::bindings::nbâ
    42 |         nb::raw_doc(
    |             ^~~~~~~
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp: In function âvoid sdtn::bindings::bind_sp_matmul_topn_sorted(nanobind::module_&)â:
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp:188:13: error: âraw_docâ is not a member of âsdtn::bindings::nbâ
    188 |         nb::raw_doc(
    |             ^~~~~~~
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp: In function âvoid sdtn::bindings::bind_sp_matmul_topn_mt(nanobind::module_&)â:
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp:335:13: error: âraw_docâ is not a member of âsdtn::bindings::nbâ
    335 |         nb::raw_doc(
    |             ^~~~~~~
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp: In function âvoid sdtn::bindings::bind_sp_matmul_topn_sorted_mt(nanobind::module_&)â:
    /tmp/pip-install-sqqiishr/sparse-dot-topn_f7ed7deb02154b10921b5737d69b0438/src/sparse_dot_topn_core/src/sp_matmul_topn_bindings.cpp:479:13: error: âraw_docâ is not a member of âsdtn::bindings::nbâ
    479 |         nb::raw_doc(
    |             ^~~~~~~
    [10/16] Building CXX object CMakeFiles/nanobind-static.dir/tmp/pip-build-env-9irisywo/overlay/lib/python3.11/site-packages/nanobind/src/common.cpp.o
    [11/16] Building CXX object CMakeFiles/nanobind-static.dir/tmp/pip-build-env-9irisywo/overlay/lib/python3.11/site-packages/nanobind/src/nb_type.cpp.o
    ninja: build stopped: subcommand failed.
    
    *** CMake build failed
    [end of output]
    
    note: This error originates from a subprocess, and is likely not a problem with pip.
    ERROR: Failed building wheel for sparse-dot-topn
    Building wheel for psutil (pyproject.toml): started
    Building wheel for psutil (pyproject.toml): finished with status 'done'
    Created wheel for psutil: filename=psutil-5.9.8-cp311-abi3-linux_aarch64.whl size=290020 sha256=719e6f4cbd1080653c53d9c2fa3cdf5e7608e8833020a400502d1d9ca80fecda
    Stored in directory: /tmp/pip-ephem-wheel-cache-1ech32zu/wheels/a6/1e/65/fb0ad37886dca3f25a0aa8e50f4903c5bdbde4bb8a9b1e27de
    Successfully built simplejson psutil
    Failed to build sparse-dot-topn
    ERROR: Could not build wheels for sparse-dot-topn, which is required to install pyproject.toml-based projects

Using docker-compose up I get an error in the build of the docker container that used to work until three weeks ago.


Solution

  • Very good question, the problem is in one of the sparse-dot-topn dependencies. To build the package you need python library nanobind with version less than 2. Nanobind was updated to 2.0 recently and removed part of the functionality that is used to build sparse-dot-topn.

    Here is edited build file that you can use:

    FROM python:3.11
    
    RUN apt-get update && apt-get -y install cmake ninja-build
    
    # Keeps Python from generating .pyc files in the container
    ENV PYTHONDONTWRITEBYTECODE=1
    
    # Turns off buffering for easier container logging
    ENV PYTHONUNBUFFERED=1
    
    RUN python -m pip install --force-reinstall pip setuptools wheel && \
        pip3 install nanobind~=1.9
    
    
    # Set the working directory to /app
    WORKDIR /app
    COPY requirements.txt .
    RUN pip3 install --no-cache-dir -r requirements.txt
    
    # Switching to a non-root user, please refer to https://aka.ms/vscode-docker-python-user-rights
    RUN useradd appuser && chown -R appuser /app
    USER appuser
    
    EXPOSE 5001
    
    # During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
    CMD ["python", "main.py"]