← Back to issue list

Cannot install cryptography Python package as sdist using `charmcraft -v pack`

View original Github issue

Metadata

Project
charmcraft
Number
#858
Type
issue
State
closed
Author
NucciTheBoss
Labels
Created
Updated
Closed

Current evaluation

Closed as not a bug. Resolved via workaround using override-build in charmcraft.yaml to configure pip and specify charm-binary-python-packages. Author plans to document the override-build feature.

Suggested action:

No scores available.

Issue body

### Description I am trying to pack a charm that depends on a Python package (in sdist format) from a [private PyPI server](https://pypi.org/project/pypiserver/), but charmcraft is failing to build the [`cryptography`](https://cryptography.io/en/latest/) Python package (a dependency of the private package) due to `libffi-dev` not being available in the LXD packing instance. The error is thrown when trying to build the Python package [`cffi`](https://cffi.readthedocs.io/en/latest/) from sdist format because it cannot find the C header file `ffi.h` in the LXD instance. ### `charmcraft`, `lxd`, and `snapd` version ``` $ snap list charmcraft Name Version Rev Tracking Publisher Notes charmcraft 2.0.0 1033 latest/stable canonical✓ classic ``` ``` $ snap list lxd Name Version Rev Tracking Publisher Notes lxd 5.5-37534be 23537 latest/stable canonical✓ - ``` ``` $ snap list snapd Name Version Rev Tracking Publisher Notes snapd 2.56.2 16292 latest/stable canonical✓ snapd ``` ### Stacktrace <details> <summary>Click to see stacktrace</summary> ```log 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.257 :: 2022-09-06 21:38:07.035 :: Collecting cryptography 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.257 :: 2022-09-06 21:38:07.038 :: Using cached cryptography-37.0.4.tar.gz (585 kB) 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.257 :: 2022-09-06 21:38:07.171 :: Installing build dependencies: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.257 :: 2022-09-06 21:38:27.251 :: Installing build dependencies: finished with status 'error' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.257 :: 2022-09-06 21:38:27.251 :: ERROR: Command errored out with exit status 1: 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.257 :: 2022-09-06 21:38:27.251 :: command: /root/parts/charm/build/staging-venv/bin/python3 /root/parts/charm/build/staging-venv/lib/python3.8/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-kb0_cvn0/overlay --no-warn-script-location --no-binary :all: --only-binary :none: -i https://pypi.org/simple --extra-index-url http://10.152.28.227:8080 --trusted-host 10.152.28.227 -- 'setuptools>=40.6.0,!=60.9.0' wheel 'cffi>=1.12; platform_python_implementation != '"'"'PyPy'"'"'' 'setuptools-rust>=0.11.4' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: cwd: None 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Complete output (102 lines): 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Looking in indexes: https://pypi.org/simple, http://10.152.28.227:8080 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Collecting setuptools!=60.9.0,>=40.6.0 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Using cached setuptools-65.3.0.tar.gz (2.6 MB) 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Getting requirements to build wheel: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Getting requirements to build wheel: finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Installing backend dependencies: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Installing backend dependencies: finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Preparing wheel metadata: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Preparing wheel metadata: finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Collecting wheel 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Using cached wheel-0.37.1.tar.gz (66 kB) 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.258 :: 2022-09-06 21:38:27.251 :: Collecting cffi>=1.12 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.259 :: 2022-09-06 21:38:27.251 :: Using cached cffi-1.15.1.tar.gz (508 kB) 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.259 :: 2022-09-06 21:38:27.251 :: Collecting setuptools-rust>=0.11.4 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.259 :: 2022-09-06 21:38:27.251 :: Using cached setuptools-rust-1.5.1.tar.gz (24 kB) 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.259 :: 2022-09-06 21:38:27.251 :: Installing build dependencies: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.259 :: 2022-09-06 21:38:27.251 :: Installing build dependencies: finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.259 :: 2022-09-06 21:38:27.251 :: Getting requirements to build wheel: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.259 :: 2022-09-06 21:38:27.251 :: Getting requirements to build wheel: finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.259 :: 2022-09-06 21:38:27.251 :: Installing backend dependencies: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.259 :: 2022-09-06 21:38:27.251 :: Installing backend dependencies: finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.260 :: 2022-09-06 21:38:27.251 :: Preparing wheel metadata: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.260 :: 2022-09-06 21:38:27.251 :: Preparing wheel metadata: finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.260 :: 2022-09-06 21:38:27.251 :: Collecting pycparser 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.260 :: 2022-09-06 21:38:27.251 :: Using cached pycparser-2.21.tar.gz (170 kB) 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.260 :: 2022-09-06 21:38:27.251 :: Collecting semantic-version<3,>=2.8.2 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.260 :: 2022-09-06 21:38:27.251 :: Using cached semantic_version-2.10.0.tar.gz (52 kB) 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.260 :: 2022-09-06 21:38:27.251 :: Collecting typing-extensions>=3.7.4.3 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.260 :: 2022-09-06 21:38:27.251 :: Using cached typing_extensions-4.3.0.tar.gz (47 kB) 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.260 :: 2022-09-06 21:38:27.251 :: Installing build dependencies: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.261 :: 2022-09-06 21:38:27.251 :: Installing build dependencies: finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.261 :: 2022-09-06 21:38:27.251 :: Getting requirements to build wheel: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.261 :: 2022-09-06 21:38:27.251 :: Getting requirements to build wheel: finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.261 :: 2022-09-06 21:38:27.251 :: Preparing wheel metadata: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.261 :: 2022-09-06 21:38:27.251 :: Preparing wheel metadata: finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.261 :: 2022-09-06 21:38:27.251 :: Skipping wheel build for wheel, due to binaries being disabled for it. 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.261 :: 2022-09-06 21:38:27.251 :: Skipping wheel build for cffi, due to binaries being disabled for it. 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.261 :: 2022-09-06 21:38:27.251 :: Skipping wheel build for pycparser, due to binaries being disabled for it. 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.261 :: 2022-09-06 21:38:27.252 :: Skipping wheel build for semantic-version, due to binaries being disabled for it. 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.262 :: 2022-09-06 21:38:27.252 :: Building wheels for collected packages: setuptools, setuptools-rust, typing-extensions 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.262 :: 2022-09-06 21:38:27.252 :: Building wheel for setuptools (PEP 517): started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.262 :: 2022-09-06 21:38:27.252 :: Building wheel for setuptools (PEP 517): finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.262 :: 2022-09-06 21:38:27.252 :: Created wheel for setuptools: filename=setuptools-65.3.0-py3-none-any.whl size=1232493 sha256=f1f3b5157b06f9aa13a95a1d6ab1f9803b6337333a53ad975912f28386fcd5c2 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.382 :: 2022-09-06 21:38:27.252 :: Stored in directory: /root/.cache/pip/wheels/d1/91/f4/517c55cb5dabfb5058ebf960ba998d02b59f78740f3c9914a6 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.383 :: 2022-09-06 21:38:27.252 :: Building wheel for setuptools-rust (PEP 517): started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.383 :: 2022-09-06 21:38:27.252 :: Building wheel for setuptools-rust (PEP 517): finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.383 :: 2022-09-06 21:38:27.252 :: Created wheel for setuptools-rust: filename=setuptools_rust-1.5.1-py3-none-any.whl size=23520 sha256=1be269d92f3b3109242b5504867174160e2771b03246a86b0dc3587c324b4df6 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.383 :: 2022-09-06 21:38:27.252 :: Stored in directory: /root/.cache/pip/wheels/ad/b1/bd/a7e02da5c5b825fa4ad806c468d79ceab842a02918be28dfd0 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.384 :: 2022-09-06 21:38:27.252 :: Building wheel for typing-extensions (PEP 517): started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.384 :: 2022-09-06 21:38:27.252 :: Building wheel for typing-extensions (PEP 517): finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.384 :: 2022-09-06 21:38:27.252 :: Created wheel for typing-extensions: filename=typing_extensions-4.3.0-py3-none-any.whl size=25596 sha256=4e110e067718fa35420fa8739d968edfacd2bb6b4988923875ba9406ad40d7c2 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.384 :: 2022-09-06 21:38:27.252 :: Stored in directory: /root/.cache/pip/wheels/00/53/4a/cba1742073c40c0f2053b20393f4bb92b824d338ec493e96fd 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.384 :: 2022-09-06 21:38:27.252 :: Successfully built setuptools setuptools-rust typing-extensions 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.384 :: 2022-09-06 21:38:27.252 :: Installing collected packages: setuptools, wheel, pycparser, cffi, semantic-version, typing-extensions, setuptools-rust 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.385 :: 2022-09-06 21:38:27.252 :: Running setup.py install for wheel: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.385 :: 2022-09-06 21:38:27.252 :: Running setup.py install for wheel: finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.385 :: 2022-09-06 21:38:27.252 :: Running setup.py install for pycparser: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.385 :: 2022-09-06 21:38:27.252 :: Running setup.py install for pycparser: finished with status 'done' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.385 :: 2022-09-06 21:38:27.252 :: Running setup.py install for cffi: started 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.391 :: 2022-09-06 21:38:27.252 :: Running setup.py install for cffi: finished with status 'error' 2022-09-06 17:52:52.005 :: 2022-09-06 21:38:27.391 :: 2022-09-06 21:38:27.252 :: ERROR: Command errored out with exit status 1: 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.391 :: 2022-09-06 21:38:27.252 :: command: /root/parts/charm/build/staging-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-pbuab8iy/cffi/setup.py'"'"'; __file__='"'"'/tmp/pip-install-pbuab8iy/cffi/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-v8yfaml6/install-record.txt --single-version-externally-managed --prefix /tmp/pip-build-env-kb0_cvn0/overlay --compile --install-headers /root/parts/charm/build/staging-venv/include/site/python3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.391 :: 2022-09-06 21:38:27.252 :: cwd: /tmp/pip-install-pbuab8iy/cffi/ 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.391 :: 2022-09-06 21:38:27.252 :: Complete output (36 lines): 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.391 :: 2022-09-06 21:38:27.252 :: running install 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.391 :: 2022-09-06 21:38:27.252 :: running build 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.392 :: 2022-09-06 21:38:27.252 :: running build_py 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.392 :: 2022-09-06 21:38:27.252 :: creating build 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.392 :: 2022-09-06 21:38:27.252 :: creating build/lib.linux-x86_64-3.8 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.392 :: 2022-09-06 21:38:27.252 :: creating build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.392 :: 2022-09-06 21:38:27.252 :: copying cffi/pkgconfig.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.392 :: 2022-09-06 21:38:27.252 :: copying cffi/vengine_gen.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.392 :: 2022-09-06 21:38:27.252 :: copying cffi/recompiler.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.392 :: 2022-09-06 21:38:27.252 :: copying cffi/cparser.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.393 :: 2022-09-06 21:38:27.252 :: copying cffi/__init__.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.393 :: 2022-09-06 21:38:27.252 :: copying cffi/vengine_cpy.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.393 :: 2022-09-06 21:38:27.252 :: copying cffi/verifier.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.393 :: 2022-09-06 21:38:27.252 :: copying cffi/setuptools_ext.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.393 :: 2022-09-06 21:38:27.252 :: copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.393 :: 2022-09-06 21:38:27.252 :: copying cffi/api.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.393 :: 2022-09-06 21:38:27.252 :: copying cffi/error.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.393 :: 2022-09-06 21:38:27.252 :: copying cffi/cffi_opcode.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.394 :: 2022-09-06 21:38:27.252 :: copying cffi/model.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.394 :: 2022-09-06 21:38:27.252 :: copying cffi/lock.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.396 :: 2022-09-06 21:38:27.252 :: copying cffi/ffiplatform.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.397 :: 2022-09-06 21:38:27.252 :: copying cffi/commontypes.py -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.397 :: 2022-09-06 21:38:27.252 :: copying cffi/_cffi_include.h -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.397 :: 2022-09-06 21:38:27.252 :: copying cffi/parse_c_type.h -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.397 :: 2022-09-06 21:38:27.252 :: copying cffi/_embedding.h -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.397 :: 2022-09-06 21:38:27.252 :: copying cffi/_cffi_errors.h -> build/lib.linux-x86_64-3.8/cffi 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.397 :: 2022-09-06 21:38:27.252 :: running build_ext 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.398 :: 2022-09-06 21:38:27.252 :: building '_cffi_backend' extension 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.398 :: 2022-09-06 21:38:27.252 :: creating build/temp.linux-x86_64-3.8 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.398 :: 2022-09-06 21:38:27.252 :: creating build/temp.linux-x86_64-3.8/c 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.398 :: 2022-09-06 21:38:27.252 :: x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DFFI_BUILDING=1 -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/ffi -I/usr/include/libffi -I/root/parts/charm/build/staging-venv/include -I/usr/include/python3.8 -c c/_cffi_backend.c -o build/temp.linux-x86_64-3.8/c/_cffi_backend.o 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.398 :: 2022-09-06 21:38:27.252 :: c/_cffi_backend.c:15:10: fatal error: ffi.h: No such file or directory 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.398 :: 2022-09-06 21:38:27.252 :: 15 | #include <ffi.h> 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.398 :: 2022-09-06 21:38:27.252 :: | ^~~~~~~ 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.398 :: 2022-09-06 21:38:27.252 :: compilation terminated. 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.398 :: 2022-09-06 21:38:27.252 :: error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.398 :: 2022-09-06 21:38:27.252 :: ---------------------------------------- 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.399 :: 2022-09-06 21:38:27.252 :: ERROR: Command errored out with exit status 1: /root/parts/charm/build/staging-venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-pbuab8iy/cffi/setup.py'"'"'; __file__='"'"'/tmp/pip-install-pbuab8iy/cffi/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-v8yfaml6/install-record.txt --single-version-externally-managed --prefix /tmp/pip-build-env-kb0_cvn0/overlay --compile --install-headers /root/parts/charm/build/staging-venv/include/site/python3.8/cffi Check the logs for full command output. 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.399 :: 2022-09-06 21:38:27.252 :: ---------------------------------------- 2022-09-06 17:52:52.006 :: 2022-09-06 21:38:27.399 :: 2022-09-06 21:38:27.327 :: ERROR: Command errored out with exit status 1: /root/parts/charm/build/staging-venv/bin/python3 /root/parts/charm/build/staging-venv/lib/python3.8/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-kb0_cvn0/overlay --no-warn-script-location --no-binary :all: --only-binary :none: -i https://pypi.org/simple --extra-index-url http://10.152.28.227:8080 --trusted-host 10.152.28.227 -- 'setuptools>=40.6.0,!=60.9.0' wheel 'cffi>=1.12; platform_python_implementation != '"'"'PyPy'"'"'' 'setuptools-rust>=0.11.4' Check the logs for full command output. ``` </details> ### Steps to reproduce 1. Add `cryptography` to `requirements.txt` file for charm. 2. Run `charmcraft -v pack`. ### Potential resolution Install `cffi` as binary wheel rather than sdist using *charm-binary-python-packages* in the `charmcraft.yaml` file. ### Future enhancements? It would be nice if `charmcraft.yaml` supported pulling Python packages in wheel (binary) format from private Python package repositories and not just from pypi.org. i.e. support pip options such as `--trusted-host` and `--extra-index-url`. Another potential enhancement could be allowing charm developers to specify build and/or stage packages that need to be pulled via `apt`. Could be similar to how `snapcraft` does it? ### Attachments * Log file for failed charm packing. [charmcraft-failed-pack.log](https://github.com/canonical/charmcraft/files/9506697/charmcraft-failed-pack.log)

Evaluation history

Date Model Scores Action Summary
qwen3.6-35b-a3b-mtp-q6 Closed as not a bug. Resolved via workaround using override-build in charmcraft.yaml to configure pip and specify charm-binary-python-packages. Author plans to document the override-build feature.
qwen/qwen3.6-35b-a3b Resolved as a configuration issue. Maintainer suggested using override-build in charmcraft.yaml to configure pip and charm-binary-python-packages for pre-installed wheels. Author verified the workaround and closed the issue, noting plans to update documentation.
qwen3.6-35b-a3b-mtp-q6 Closed as resolved. The author confirmed that configuring pip via the override-build hook in charmcraft.yaml bypasses the missing libffi-dev dependency and enables private PyPI access. The problem was identified as a configuration workaround.

Update history

No update history recorded yet.

Related issues

Issue Project State Summary Similarity
#922 Unable to pack charms on a GCP instance charmcraft closed Closed as not a Charmcraft bug. The error stems from a pip and setuptools version mismatch. Maintainers provided a workaround: adding setuptools to charm-python-packages in charmcraft.yaml to force an update and resolve the build failure.
73%
#566 Error when building with charmcraft from edge charmcraft closed Closed as a duplicate of #551. Resolved via a config workaround adding setuptools to charm-python-packages. A follow-up confirmed adding pip alongside setuptools fixed circular dependency build failures.
72%