Skip to content

CI/CD Failing due to command: 'gcc' failed: No such file or directory #16

@dominiquekleeven

Description

@dominiquekleeven

Error log:

#13 [linux/arm/v6  2/11] RUN apk update     && apk add --no-cache certbot py-pip inotify-tools tar curl openssl     && rm -f /var/cache/apk/*     && pip install certbot-dns-route53 --break-system-packages
#13 98.79   Installing build dependencies: finished with status 'error'
#13 98.90   error: subprocess-exited-with-error
#13 98.90   
#13 98.90   × pip subprocess to install build dependencies did not run successfully.
#13 98.90   │ exit code: 1
#13 98.90   ╰─> [88 lines of output]
#13 98.90       Ignoring cffi: markers 'platform_python_implementation != "PyPy" and python_version == "3.8"' don't match your environment
#13 98.90       Collecting maturin<2,>=1.9.4
#13 98.90         Downloading maturin-1.11.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl.metadata (16 kB)
#13 98.90       Collecting cffi>=2.0.0
#13 98.90         Downloading cffi-2.0.0.tar.gz (523 kB)
#13 98.90         Installing build dependencies: started
#13 98.90         Installing build dependencies: finished with status 'done'
#13 98.90         Getting requirements to build wheel: started
#13 98.90         Getting requirements to build wheel: finished with status 'done'
#13 98.90         Preparing metadata (pyproject.toml): started
#13 98.90         Preparing metadata (pyproject.toml): finished with status 'done'
#13 98.90       Collecting setuptools!=74.0.0,!=74.1.0,!=74.1.1,!=74.1.2
#13 98.90         Using cached setuptools-80.10.2-py3-none-any.whl.metadata (6.6 kB)
#13 98.90       Collecting pycparser (from cffi>=2.0.0)
#13 98.90         Downloading pycparser-3.0-py3-none-any.whl.metadata (8.2 kB)
#13 98.90       Downloading maturin-1.11.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl (8.7 MB)
#13 98.90          ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.7/8.7 MB 18.5 MB/s eta 0:00:00
#13 98.90       Using cached setuptools-80.10.2-py3-none-any.whl (1.1 MB)
#13 98.90       Downloading pycparser-3.0-py3-none-any.whl (48 kB)
#13 98.90       Building wheels for collected packages: cffi
#13 98.90         Building wheel for cffi (pyproject.toml): started
#13 98.90         Building wheel for cffi (pyproject.toml): finished with status 'error'
#13 98.90         error: subprocess-exited-with-error
#13 98.90       
#13 98.90         × Building wheel for cffi (pyproject.toml) did not run successfully.
#13 98.90         │ exit code: 1
#13 98.90         ╰─> [55 lines of output]
#13 98.90       
#13 98.90                 No working compiler found, or bogus compiler options passed to
#13 98.90                 the compiler from Python's standard "distutils" module.  See
#13 98.90                 the error messages above.  Likely, the problem is not related
#13 98.90                 to CFFI but generic to the setup.py of any Python package that
#13 98.90                 tries to compile C code.  (Hints: on OS/X 10.8, for errors about
#13 98.90                 -mno-fused-madd see http://stackoverflow.com/questions/22313407/
#13 98.90                 Otherwise, see https://wiki.python.org/moin/CompLangPython or
#13 98.90                 the IRC channel #python on irc.libera.chat.)
#13 98.90       
#13 98.90                 Trying to continue anyway.  If you are trying to install CFFI from
#13 98.90                 a build done in a different context, you can ignore this warning.
#13 98.90       
#13 98.90             running bdist_wheel
#13 98.90             running build
#13 98.90             running build_py
#13 98.90             creating build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/lock.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/vengine_cpy.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/error.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/pkgconfig.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/vengine_gen.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/setuptools_ext.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/backend_ctypes.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/recompiler.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/_imp_emulation.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/_shimmed_dist_utils.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/verifier.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/api.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/model.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/cffi_opcode.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/ffiplatform.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/commontypes.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/__init__.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/cparser.py -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             running egg_info
#13 98.90             writing src/cffi.egg-info/PKG-INFO
#13 98.90             writing dependency_links to src/cffi.egg-info/dependency_links.txt
#13 98.90             writing entry points to src/cffi.egg-info/entry_points.txt
#13 98.90             writing requirements to src/cffi.egg-info/requires.txt
#13 98.90             writing top-level names to src/cffi.egg-info/top_level.txt
#13 98.90             reading manifest file 'src/cffi.egg-info/SOURCES.txt'
#13 98.90             reading manifest template 'MANIFEST.in'
#13 98.90             adding license file 'LICENSE'
#13 98.90             adding license file 'AUTHORS'
#13 98.90             writing manifest file 'src/cffi.egg-info/SOURCES.txt'
#13 98.90             copying src/cffi/_cffi_errors.h -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/_cffi_include.h -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/_embedding.h -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             copying src/cffi/parse_c_type.h -> build/lib.linux-armv7l-cpython-312/cffi
#13 98.90             running build_ext
#13 98.90             building '_cffi_backend' extension
#13 98.90             creating build/temp.linux-armv7l-cpython-312/src/c
#13 98.90             gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -DFFI_BUILDING=1 -I/usr/include/ffi -I/usr/include/libffi -I/usr/include/python3.12 -c src/c/_cffi_backend.c -o build/temp.linux-armv7l-cpython-312/src/c/_cffi_backend.o
#13 98.90             error: command 'gcc' failed: No such file or directory
#13 98.90             [end of output]
#13 98.90       
#13 98.90         note: This error originates from a subprocess, and is likely not a problem with pip.
#13 98.90         ERROR: Failed building wheel for cffi
#13 98.90       Failed to build cffi
#13 98.90       ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (cffi)
#13 98.90       [end of output]
#13 98.90   
#13 98.90   note: This error originates from a subprocess, and is likely not a problem with pip.
#13 99.93 error: subprocess-exited-with-error
#13 99.93 
#13 99.93 × pip subprocess to install build dependencies did not run successfully.
#13 99.93 │ exit code: 1
#13 99.93 ╰─> See above for output.
#13 99.93 
#13 99.93 note: This error originates from a subprocess, and is likely not a problem with pip.
#13 ERROR: process "/bin/sh -c apk update     && apk add --no-cache certbot py-pip inotify-tools tar curl openssl     && rm -f /var/cache/apk/*     && pip install certbot-dns-route53 --break-system-packages" did not complete successfully: exit code: 1

#25 [linux/arm/v7  2/11] RUN apk update     && apk add --no-cache certbot py-pip inotify-tools tar curl openssl     && rm -f /var/cache/apk/*     && pip install certbot-dns-route53 --break-system-packages
#25 CANCELED
------
 > [linux/arm/v6  2/11] RUN apk update     && apk add --no-cache certbot py-pip inotify-tools tar curl openssl     && rm -f /var/cache/apk/*     && pip install certbot-dns-route53 --break-system-packages:
98.90       [end of output]
98.90   
98.90   note: This error originates from a subprocess, and is likely not a problem with pip.
99.93 error: subprocess-exited-with-error
99.93 
99.93 × pip subprocess to install build dependencies did not run successfully.
99.93 │ exit code: 1
99.93 ╰─> See above for output.
99.93 
99.93 note: This error originates from a subprocess, and is likely not a problem with pip.
------

 35 warnings found (use docker --debug to expand):
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 13)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 15)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 17)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 18)
 - UndefinedVar: Usage of undefined variable '$KEYCLOAK_HOST' (line 24)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 25)
 - UndefinedVar: Usage of undefined variable '$DOMAINNAME' (line 11)
 - UndefinedVar: Usage of undefined variable '$HAPROXY_USER_PARAMS' (line 14)
 - UndefinedVar: Usage of undefined variable '$NAMESERVER' (line 19)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 19)
 - UndefinedVar: Usage of undefined variable '$PROXY_LOGLEVEL' (line 20)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 22)
 - UndefinedVar: Usage of undefined variable '$LOGFILE' (line 26)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 14)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 29)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 12)
 - UndefinedVar: Usage of undefined variable '$HAPROXY_CONFIG' (line 15)
 - UndefinedVar: Usage of undefined variable '$HTTPS_FORWARDED_PORT' (line 18)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 20)
 - UndefinedVar: Usage of undefined variable '$MANAGER_HOST' (line 21)
 - UndefinedVar: Usage of undefined variable '$MANAGER_MQTT_PORT' (line 23)
 - UndefinedVar: Usage of undefined variable '$KEYCLOAK_PORT' (did you mean $KEYCLOAK_HOST?) (line 25)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 16)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 24)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 26)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 27)
 - MaintainerDeprecated: Maintainer instruction is deprecated in favor of using label (line 7)
 - UndefinedVar: Usage of undefined variable '$HTTP_PORT' (line 16)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 21)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 11)
 - UndefinedVar: Usage of undefined variable '$DOMAINNAMES' (did you mean $DOMAINNAME?) (line 12)
 - UndefinedVar: Usage of undefined variable '$HTTPS_PORT' (did you mean $HTTP_PORT?) (line 17)
 - UndefinedVar: Usage of undefined variable '$MANAGER_WEB_PORT' (line 22)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 23)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 28)
Dockerfile:32
--------------------
  31 |     # Install certbot and Route53 DNS plugin
  32 | >>> RUN apk update \
  33 | >>>     && apk add --no-cache certbot py-pip inotify-tools tar curl openssl \
  34 | >>>     && rm -f /var/cache/apk/* \
  35 | >>>     && pip install certbot-dns-route53 --break-system-packages
  36 |     
--------------------

Codex analysis:

The build is failing on linux/arm/v6 because pip is trying to compile cffi (a dependency of cryptography) from source and there is no compiler in the image:
  error: command 'gcc' failed: No such file or directory
  So the root issue is: missing build toolchain (gcc/make) and headers for the armv6 image during pip install.
  Why only armv6? arm64/v7 have prebuilt wheels available, so they don’t need a compiler. armv6 usually lacks wheels, so it falls back to source build.

  Minimal fix options:

  1. Install build deps for the pip install step (armv6 only):

  apk add --no-cache build-base python3-dev libffi-dev openssl-dev

  Then pip install ..., and optionally apk del build-base python3-dev afterward.

  2. Avoid building on armv6 (drop linux/arm/v6 from your build matrix).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions