Release 0.1.0-jammy¶
Release 0.1.0-jammy is the Ubuntu 22.04 (Jammy) x86-64 host runtime. The GitHub release tag is v0.1.0-jammy. The asset name is:
goliath-align-host-linux-amd64-jammy.tar.gz
The tarball contains a single top-level directory, goliath-align/. Unpacking it gives a tree that runs methylGrapher with the Mojo toolchain frozen inside mojo-env/. It does not use pixi at run time.
pixi.toml version is 0.1.0. The Python help banner reports methylGrapher 0.2.0 (the upstream CLI this port tracks). The Mojo help banner reports 0.1.0-mojo. The release label 0.1.0-jammy is the host-runtime version written to VERSION.txt when the asset is built from tag v0.1.0-jammy.
What is inside¶
scripts/package_host_runtime.sh builds the archive in a ubuntu:22.04 container (Docker or Podman). The container installs pixi, runs pixi install, stages a flat tree, and copies:
Path inside goliath-align/ |
Role |
|---|---|
bin/methylGrapher |
Launcher generated by the package script |
engine/ |
Python package (cli.py, fq2bam_meth.py, Giraffe helpers) |
src/ |
Mojo sources, including main.mojo and linear_mapper.mojo |
scripts/ |
Giraffe and linear helper scripts from the flat stage |
mojo-env/bin/mojo |
Mojo binary from the pixi env |
mojo-env/bin/python3 |
CPython used by Mojo's Python interop, when the pixi env has it |
mojo-env/lib/ and mojo-env/lib/mojo/ |
Mojo and libpython libraries that the pixi env provides |
mojo-env/share/max/modular.cfg |
Modular config with the pixi prefix rewritten to __GOLIATH_ALIGN_HOME__/mojo-env |
cuda/bin/ptxas |
Copied only when the build image already has ptxas |
VERSION.txt |
Version string (0.1.0-jammy for this release) |
HOST_RUNTIME.txt |
os=ubuntu-22.04 and arch=amd64 |
The script refuses to finish if bin/methylGrapher or mojo-env/bin/mojo is missing.
How the packaged launcher starts¶
goliath-align/bin/methylGrapher:
- Sets
PYTHONPATHto<root>/scriptsand<root>. - If
METHYLGRAPHER_MCALL_ENGINEispython(any case), runs<root>/mojo-env/bin/python3 -m engine.cli, orpython3onPATHwhen the bundled interpreter is absent. - Otherwise, when
mojo-env/bin/mojois executable, runsmojo src/main.mojowithLD_LIBRARY_PATHpointed atmojo-env/lib. - If
modular.cfgstill contains__GOLIATH_ALIGN_HOME__, copiesshare/maxto a temp directory, substitutes the install root, and setsMODULAR_HOMEthere so a read-only install is left unchanged. - Sets
MODULAR_CACHE_DIRto/tmp/modular_cachewhen unset, and setsMODULAR_NVPTX_COMPILER_PATHfrom the firstptxasit finds under the install,/usr/local/cuda/bin, or/usr/bin. - If
mojois missing, falls through topython -m engine.cli.
tar -xzf goliath-align-host-linux-amd64-jammy.tar.gz
./goliath-align/bin/methylGrapher help
./goliath-align/bin/methylGrapher MojoFq2bamMeth -fq1 R1.fastq.gz -fq2 R2.fastq.gz \
-ref ref.fa -out_bam sample.bam -out_qc_dir qc -sample_id SAMPLE -device cpu
samtools is still required on PATH for MojoFq2bamMeth. The tarball does not vendor it. bwa and vg follow the same rule as in a checkout (Install).
Workflow that publishes it¶
.github/workflows/release-host-runtime.yml runs on a tag that starts with v, and on manual dispatch.
The version written into VERSION.txt is the version workflow input when that input is set. Otherwise it is the tag name with a leading v removed, so tag v0.1.0-jammy produces version 0.1.0-jammy.
After packaging, the workflow starts ubuntu:22.04 with --network none, mounts the tree at /opt/goliath-align, and runs methylGrapher help. If that process exits non-zero, it retries with METHYLGRAPHER_MCALL_ENGINE=python. It then invokes MojoFq2bamMeth, MethylCall, MergeCpG, ConversionRate, and QC with --help. QC is not a command in engine/cli.py or main.mojo; the workflow keeps going when that invocation fails. The asset is uploaded to the GitHub release for tag v<version>, creating that release when it does not already exist.
Building the same archive locally:
bash scripts/package_host_runtime.sh \
--version 0.1.0-jammy \
--output "$PWD/goliath-align-host-linux-amd64-jammy.tar.gz"
The build needs Docker or Podman and pulls ubuntu:22.04. The filename stays goliath-align-host-linux-amd64-jammy.tar.gz for every version; the version string is inside VERSION.txt and in the GitHub tag.