When attempting to set up the development environment using docker-compose up, the build process failed while installing the PyICU package. The error message indicated a version mismatch between the installed ICU library and the version supported by PyICU, as well as a C++ compiler version issue.
Steps to Reproduce
Clone the gcd-django-docker repository.
Run docker-compose up.
Error Message excerpt
#16 61.32 Building wheel for PyICU (pyproject.toml): finished with status 'error'
#16 61.34 error: subprocess-exited-with-error
#16 61.34
#16 61.34 × Building wheel for PyICU (pyproject.toml) did not run successfully.
#16 61.34 │ exit code: 1
#16 61.34 ╰─> [419 lines of output]
#16 61.34
#16 61.34 Building PyICU 2.12 for ICU 76.1 (max ICU major version supported: 74)
#16 61.34
#16 61.34 (running 'icu-config --cxxflags --cppflags')
#16 61.34 Could not configure CFLAGS with icu-config
#16 61.34 (running 'pkg-config --cflags icu-i18n')
#16 61.34 (running 'icu-config --ldflags')
#16 61.34 Could not configure LFLAGS with icu-config
#16 61.34 (running 'pkg-config --libs icu-i18n')
#16 61.34 :56: DeprecationWarning: Use shutil.which instead of find_executable
#16 61.34 Adding LFLAGS="-licui18n -licuuc -licudata" from /usr/bin/pkg-config
#16 61.34 /tmp/pip-build-env-g8g0b_c8/overlay/lib/python3.13/site-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'test_suite'
#16 61.34 warnings.warn(msg)
#16 61.34 /tmp/pip-build-env-g8g0b_c8/overlay/lib/python3.13/site-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'tests_require'
#16 61.34 warnings.warn(msg)
#16 61.34 /tmp/pip-build-env-g8g0b_c8/overlay/lib/python3.13/site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.
#16 61.34 !!
#16 61.34
#16 61.34 ********************************************************************************
#16 61.34 Please consider removing the following classifiers in favor of a SPDX license expression:
#16 61.34
#16 61.34 License :: OSI Approved
#16 61.34
#16 61.34 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
#16 61.34 ********************************************************************************
#16 61.34
#16 61.34 !!
#16 61.34 self._finalize_license_expression()
#16 61.34 running bdist_wheel
#16 61.34 running build
#16 61.34 running build_py
#16 61.34 creating build/lib.linux-x86_64-cpython-313/icu
#16 61.34 copying py/icu/init.py -> build/lib.linux-x86_64-cpython-313/icu
#16 61.34 warning: build_py: byte-compiling is disabled, skipping.
#16 61.34
#16 61.34 running build_ext
#16 61.34 building 'icu.icu' extension
#16 61.34 creating build/temp.linux-x86_64-cpython-313
#16 61.34 g++ -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -I/usr/local/include/python3.13 -c icu.cpp -o build/temp.linux-x86_64-cpython-313/icu.o -std=c++11 -DPYICU_VER="2.12" -DPYICU_ICU_MAX_VER="74"
#16 61.34 In file included from /usr/include/unicode/unistr.h:37,
#16 61.34 from common.h:107,
#16 61.34 from icu.cpp:27:
#16 61.34 /usr/include/unicode/char16ptr.h:317:10: error: ‘is_convertible_v’ is not a member of ‘std’
#16 61.34 317 | std::is_convertible_v<T, std::u16string_view>
#16 61.34 | ^~~~~~~~~~~~~~~~
Proposed Solution
The error points to a version incompatibility between the PyICU library (which supports ICU up to version 74) and the ICU library present in the container (version 76.1). The C++ compiler also appears to be too old to support features required by the ICU version.
Might be resolved by:
Downgrading the ICU library in the Docker image to a version compatible with PyICU (e.g., version 74 or earlier).
Upgrading the PyICU version in the requirements.txt to one that supports ICU 76.1 or newer.
Updating the base Docker image to a version that includes a C++ compiler compatible with the current setup.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.
Closed #669 as completed.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.