Skip to content

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:

  1. Sets PYTHONPATH to <root>/scripts and <root>.
  2. If METHYLGRAPHER_MCALL_ENGINE is python (any case), runs <root>/mojo-env/bin/python3 -m engine.cli, or python3 on PATH when the bundled interpreter is absent.
  3. Otherwise, when mojo-env/bin/mojo is executable, runs mojo src/main.mojo with LD_LIBRARY_PATH pointed at mojo-env/lib.
  4. If modular.cfg still contains __GOLIATH_ALIGN_HOME__, copies share/max to a temp directory, substitutes the install root, and sets MODULAR_HOME there so a read-only install is left unchanged.
  5. Sets MODULAR_CACHE_DIR to /tmp/modular_cache when unset, and sets MODULAR_NVPTX_COMPILER_PATH from the first ptxas it finds under the install, /usr/local/cuda/bin, or /usr/bin.
  6. If mojo is missing, falls through to python -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.