Checked for duplicates
Yes - I've already checked
🧑🔬 User Persona(s)
PDS Software Developer, Repository Maintainer, CI/CD Pipeline Operator
💪 Motivation
...so that I can successfully build and test packages with OS-specific dependencies that don't compile or run correctly on Alpine Linux's MUSL C library, particularly when working with packages like spiceypy that have native C extensions.
📖 Additional Details
Background
The roundup action currently uses Alpine Linux as its base image. While Alpine is valued for its small size, it uses MUSL C library instead of glibc, which causes compatibility issues with certain Python packages and their native dependencies.
Specific Issue: naif-pds4-bundler + spiceypy
Testing with naif-pds4-bundler revealed the following OS-dependent behavior:
Alpine Linux (current roundup base):
- spiceypy==4.0.3: Installation succeeds but tox tests fail (py3, lint)
- spiceypy==7.0.0: Installation fails entirely with wheel build errors
Debian Linux:
- spiceypy==4.0.3: Installation succeeds but tox tests fail (py3, lint)
- spiceypy==7.0.0: Installation succeeds, tox tests fail only on lint
macOS:
- spiceypy==4.0.3: Installation succeeds but tox tests fail (py3)
- spiceypy==7.0.0: Everything succeeds (closest to full success)
Proposed Solution
Offer two variants of the roundup action to allow users to choose based on their dependency requirements:
- stable-default (or just stable): Continue using Alpine Linux for most cases
- stable-debian: New Debian-based variant for packages with Alpine compatibility issues
Example usage in workflow files:
# Alpine version (current default)
uses: NASA-PDS/roundup-action@stable
# Debian version (new variant)
uses: NASA-PDS/roundup-action@stable-debian
Technical Context
- Alpine achieves small size by using MUSL C library instead of glibc
- Many Python packages with C extensions assume glibc and may not compile or work correctly with MUSL
- This has not been a widespread issue until now, but is a known trade-off of Alpine
- Both image variants would maintain the same functionality, just with different base OS
References
- Original issue: naif-pds4-bundler spiceypy compatibility
- Failed GitHub Actions run: Package installation failures with spiceypy>=7.0.0
- Previous successful builds used spiceypy 7.0.0 on different infrastructure
For Internal Dev Team To Complete
Acceptance Criteria
Given a repository with dependencies that require glibc (like spiceypy)
When I configure my workflow to use NASA-PDS/roundup-action@stable-debian
Then I expect the roundup to execute successfully with those dependencies installed and tested
⚙️ Engineering Details
To be filled by engineering team
🎉 I&T
To be filled by engineering team
Checked for duplicates
Yes - I've already checked
🧑🔬 User Persona(s)
PDS Software Developer, Repository Maintainer, CI/CD Pipeline Operator
💪 Motivation
...so that I can successfully build and test packages with OS-specific dependencies that don't compile or run correctly on Alpine Linux's MUSL C library, particularly when working with packages like spiceypy that have native C extensions.
📖 Additional Details
Background
The roundup action currently uses Alpine Linux as its base image. While Alpine is valued for its small size, it uses MUSL C library instead of glibc, which causes compatibility issues with certain Python packages and their native dependencies.
Specific Issue: naif-pds4-bundler + spiceypy
Testing with naif-pds4-bundler revealed the following OS-dependent behavior:
Alpine Linux (current roundup base):
Debian Linux:
macOS:
Proposed Solution
Offer two variants of the roundup action to allow users to choose based on their dependency requirements:
Example usage in workflow files:
Technical Context
References
For Internal Dev Team To Complete
Acceptance Criteria
Given a repository with dependencies that require glibc (like spiceypy)
When I configure my workflow to use
NASA-PDS/roundup-action@stable-debianThen I expect the roundup to execute successfully with those dependencies installed and tested
⚙️ Engineering Details
To be filled by engineering team
🎉 I&T
To be filled by engineering team