mulled-biopixi
mulled-biopixi turns a Biopixi-compatible Pixi environment into a
local mulled container build. It reads pixi.toml from the current directory by default, uses the
linux-64 solve in pixi.lock to pin the direct Conda dependencies, publishes direct L1 path
packages into an indexed local channel, and calls Galaxy's mull_targets implementation.
Installation
Until the package is published to PyPI, install it directly from GitHub:
uv tool install git+https://github.com/jmchilton/mulled-biopixi.git
Then run it in a Biopixi-compatible project:
mulled-biopixi --dry-run
mulled-biopixi --command build-and-test --test 'samtools --version'
The dry run is useful on any host. A real build needs Docker. With current stable
galaxy-tool-util, the CLI downloads a checksum-pinned Involucro 1.2.0 into the project's ignored
.mulled-biopixi/ cache and injects --platform linux/amd64, allowing Docker Desktop to emulate
the Biopixi profile platform on Apple Silicon. Galaxy's development implementation exposes this
platform directly, and the compatibility path switches off automatically when that API is present.
The shim also pre-pulls the amd64 Conda and destination base images with the modern Docker CLI;
this avoids Involucro's older embedded Docker client attempting a pull against newer daemons. The
pre-pull safeguard remains active when Galaxy supplies native platform support because its current
Involucro 1.2.0 binary has the same Docker 29 limitation.
Translation contract
- The manifest selects the effective direct dependencies:
[dependencies]plus Linux target overrides from[target.linux-64.dependencies]. - The lock supplies exact registry-package versions and build strings. Manifest ranges alone are not reproducible container inputs.
- Explicit dependency channel qualifiers are preserved in the mulled package name.
- A direct path dependency gets its concrete version from its package
pixi.toml, is built withpixi publish --target-channel ... --target-platform linux-64, and is then resolved by mulled from that localfile://channel. - Only roots are passed to mulled. Conda resolves their transitive closure inside the image, which matches the Biopixi L4 target-set rule.
This is intentionally not another complete Biopixi validator. It rejects unsupported shapes when they would make the build ambiguous, while relying on the caller's L1-or-higher assumption for the full profile contract.
Current limits
- Recursive path-package graphs are detected but not published. Supporting them needs a proper topological package publication workflow and a decision about rewriting source dependencies.
- The local channel lives at
.mulled-biopixi/channelby default and is not pushed anywhere. osx-arm64can be present in the workspace, but container construction always uses the profile'slinux-64environment and produceslinux/amd64. Foreign-architecture builds depend on the Docker daemon's binfmt/QEMU support and will be slower than native builds.- The integration uses Galaxy's importable
mull_targetsfunction. That API is practical and tested within Galaxy, but is not documented as a separately versioned public library contract. - Galaxy's base-image selection performs one full Conda metadata search per root. Under amd64 emulation this can dominate build time even when the eventual package solve and image wrap are quick.
Development
Create the locked development environment and run the complete local CI suite:
uv sync
make ci
The individual commands are make format, make lint, make typing, make test, and
make dist. Install the repository hook with make pre-commit. Maintainers can follow the
release checklist to publish a
version through PyPI Trusted Publishing.
This project is licensed under the MIT License.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mulled_biopixi-0.1.0.tar.gz.
File metadata
- Download URL: mulled_biopixi-0.1.0.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cb549479ac848786b73632fce99c6b6e5db0f63d7f83dd224fab174dd4f8ff5
|
|
| MD5 |
2e430c2b71b6f563f6666bb72704e191
|
|
| BLAKE2b-256 |
11a8fefd1abfffcaa8eb5e07ce6d177e916728ab49666b80f18c62ad8452e4be
|
Provenance
The following attestation bundles were made for mulled_biopixi-0.1.0.tar.gz:
Publisher:
release.yml on jmchilton/mulled-biopixi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mulled_biopixi-0.1.0.tar.gz -
Subject digest:
0cb549479ac848786b73632fce99c6b6e5db0f63d7f83dd224fab174dd4f8ff5 - Sigstore transparency entry: 2306125684
- Sigstore integration time:
-
Permalink:
jmchilton/mulled-biopixi@eebd3b4453e667a1f9280f3de6b26de7a951d96f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jmchilton
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@eebd3b4453e667a1f9280f3de6b26de7a951d96f -
Trigger Event:
release
-
Statement type:
File details
Details for the file mulled_biopixi-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mulled_biopixi-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78e105dccea19edc7375350f45d3a5526ce2efd558342e32ac32ccac98ca3883
|
|
| MD5 |
ae816547b3edd5d7292509a281748033
|
|
| BLAKE2b-256 |
8806fc809d7efbb7a35838039e2440211f1eccc5345381a1241fcdd33de4f45d
|
Provenance
The following attestation bundles were made for mulled_biopixi-0.1.0-py3-none-any.whl:
Publisher:
release.yml on jmchilton/mulled-biopixi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mulled_biopixi-0.1.0-py3-none-any.whl -
Subject digest:
78e105dccea19edc7375350f45d3a5526ce2efd558342e32ac32ccac98ca3883 - Sigstore transparency entry: 2306125789
- Sigstore integration time:
-
Permalink:
jmchilton/mulled-biopixi@eebd3b4453e667a1f9280f3de6b26de7a951d96f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/jmchilton
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@eebd3b4453e667a1f9280f3de6b26de7a951d96f -
Trigger Event:
release
-
Statement type: