← Back to issue list

can't build python part with C modules

View original Launchpad issue

Metadata

Project
snapcraft (launchpad)
Number
#1802345
Type
issue
State
open
Author
~ack
Labels
—
Created
Updated
Closed
—

Current evaluation

Python plugin can't build packages with C extensions (Python.h not found). Maintainer-confirmed build-environment workaround exists, but the plugin still never sets C_INCLUDE_PATH itself. Reproducer targets core18/snapcraft 3.0 and needs re-verification on current bases.

Suggested action: keep open

Reason: Maintainer ~brlin acknowledged the issue and supplied a working `build-environment: C_INCLUDE_PATH` recipe via snapcore/snapcraft#2322, but the reporter's closing comment explicitly keeps the root request alive: 'I think this bug is valid as snapcraft should pass that export itself in the python plugin'. That request is verifiably still unimplemented — `C_INCLUDE_PATH` appears in zero files and zero commits across both snapcraft and craft-parts, and `BasePythonPlugin.get_build_environment()` sets only PATH/PARTS_PYTHON_INTERPRETER/PARTS_PYTHON_VENV_ARGS. Age alone does not warrant closing, and the reporter remains engaged. Confidence is held down because the reproducer is unverifiable against current snapcraft: it uses `base: core18` (docs: 'The latest release of Snapcraft does not support older bases'), snapcraft 2.43.1/3.0, and `stage-packages: libpython3.6`, whereas the plugin has since been refactored into craft-parts with a venv-based interpreter discovery flow that no longer creates the system-python3-dev vs. staged-libpython mismatch behind the original failure. A maintainer should first confirm whether C-extension packages still fail on core22/core24 before scoping a fix, and note the fix would need to land in craft-parts, not snapcraft.

Evaluated by: mr-cal-bot

Impact: 30 Quick Win: 9 Complexity: 30 Confidence: 58 Actionability: 45

Issue body

Building python packages that have C modules fails with snapcraft as C headers are not found. This is a sample snap that fails building on Bionic: name: test version: '1.0' summary: test description: test grade: stable confinement: strict base: core18 apps:   uwsgi:     command: uwsgi parts:   uwsgi:     plugin: python     source: .     python-packages:       - uWSGI     build-packages:       - python3-dev     stage-packages:       - libpython3.6 exporting C_INCLUDE_PATH=/usr/include/python3.6 makes it work. Tested with both stable (2.43.1) and candidate (3.0) snaps. Also, removing the core18 base and using libpython3.5 when building on xenial shows the same issue

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha
Impact: 30
Quick Win: 9
Complexity: 30
Confidence: 58
Actionability: 45
keep open Python plugin can't build packages with C extensions (Python.h not found). Maintainer-confirmed build-environment workaround exists, but the plugin still never sets C_INCLUDE_PATH itself. Reproducer targets core18/snapcraft 3.0 and needs re-verification on current bases.
stealth/space-bunny-alpha
Impact: 38
Quick Win: 15
Complexity: 30
Confidence: 69
Actionability: 58
needs triage Python parts with C extensions could not find Python headers. A build-environment workaround exists, but no maintainer triage or verified resolution is recorded.
stealth/space-bunny-alpha
Impact: 55
Quick Win: 25
Complexity: 45
Confidence: 85
Actionability: 82
needs triage Python packages with C extensions fail to build on Bionic/core18 and core16 because Python headers are not found; C_INCLUDE_PATH works around the failure, with no maintainer response or recorded resolution.
qwen/qwen3.8-27b
Impact: 40
Quick Win: 28
Staleness: 95
Complexity: 30
Confidence: 70
Support Request: 10
close stale Snapcraft python plugin fails to build Python packages with C extensions because C headers (e.g. Python.h) are not found; reporter found a workaround by exporting C_INCLUDE_PATH=/usr/include/python3.6. No maintainer response or labels; issue is ~7 years old and targets core18/core16 bases.
qwen/qwen3.6-35b-a3b
Staleness: 95
Complexity: 20
Confidence: 90
Support Request: 40
close stale Reports snapcraft build failure for Python packages with C modules due to missing headers. Suggests C_INCLUDE_PATH workaround. No activity in 7 years, references obsolete bases.
qwen/qwen3.6-35b-a3b
Staleness: 98
Complexity: 30
Confidence: 85
Support Request: 10
close stale Snapcraft python plugin fails to find C headers when building packages with C extensions. Issue is over 7 years old with no maintainer interaction.
qwen3.6-35b-a3b-mtp-q6
Staleness: 98
Complexity: 20
Confidence: 92
Support Request: 10
close stale Snapcraft python plugin fails to locate C headers during build. Open for over seven years with zero maintainer interaction. Irrelevant due to Snapcraft migrating to core20/22 and rewriting the python plugin.

Update history

Date Change
created

Related work

  • Related To: snapcore/snapcraft#2322 (confidence 85%)

    Cited directly by maintainer ~brlin as the source of the `build-environment` key that provides the documented workaround for this issue.

Related issues

No related issues found above the similarity threshold.