From 2a9377bdfeb93cd770cbd22bc6f9715a7d150da0 Mon Sep 17 00:00:00 2001 From: baichom1 Date: Fri, 10 Apr 2026 10:57:31 -0400 Subject: [PATCH 01/17] try claudes attempt at improving this dockerfile --- biobakery-profiler/Dockerfile | 133 +++++++++++------- .../config_4.0.0.alpha.1-final-smaller.patch | 14 ++ 2 files changed, 98 insertions(+), 49 deletions(-) create mode 100644 biobakery-profiler/config_4.0.0.alpha.1-final-smaller.patch diff --git a/biobakery-profiler/Dockerfile b/biobakery-profiler/Dockerfile index 6356888..3aea350 100644 --- a/biobakery-profiler/Dockerfile +++ b/biobakery-profiler/Dockerfile @@ -1,65 +1,100 @@ -FROM python:3.9.17-bookworm AS dbbuild +# ============================================================ +# Stage 1: Build samtools +# ============================================================ +FROM python:3.9.17-slim-bookworm AS dbbuild + RUN apt-get update && \ - DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y wget ca-certificates build-essential zlib1g-dev libbz2-dev liblzma-dev && \ + DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y \ + wget ca-certificates build-essential zlib1g-dev libbz2-dev liblzma-dev && \ rm -rf /var/lib/apt/lists/* -# RUN mkdir -p /dbs/util/ && \ -# wget -c --read-timeout=5 http://huttenhower.sph.harvard.edu/humann_data/full_mapping_v201901b.tar.gz && \ -# cd /dbs/util/ && \ -# tar xzf /full_mapping_v201901b.tar.gz && \ -# rm /full_mapping_v201901b.tar.gz -RUN wget https://github.com/samtools/samtools/releases/download/1.15.1/samtools-1.15.1.tar.bz2 && \ - tar xjf samtools-1.15.1.tar.bz2 && cd samtools-1.15.1 && \ - ./configure --without-curses && make && make install && which samtools # - - - -#FROM ubuntu:18.04 AS runtime-image -FROM python:3.9.17-bookworm AS runtime-image +RUN wget -q https://github.com/samtools/samtools/releases/download/1.15.1/samtools-1.15.1.tar.bz2 && \ + tar xjf samtools-1.15.1.tar.bz2 && \ + cd samtools-1.15.1 && \ + ./configure --without-curses && \ + make -j$(nproc) && \ + make install && \ + which samtools +# ============================================================ +# Stage 2: Build Python packages in a venv we can copy +# ============================================================ +FROM python:3.9.17-slim-bookworm AS pybuild ARG HUMANNVERSION=0.0.0 ARG METAPHLANVERSION=0.0.0 -COPY --from=dbbuild /usr/local/bin/samtools /usr/local/bin/samtools - -WORKDIR /tmp -RUN export LC_ALL=en_US.UTF-8 && export LANG=en_US.UTF-8 - RUN apt-get update && \ - DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y build-essential libjpeg-dev zlib1g-dev libbz2-dev liblzma-dev ncbi-blast+ mafft raxml && \ + DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y \ + build-essential \ + wget \ + ca-certificates \ + patch \ + libjpeg-dev \ + zlib1g-dev \ + libbz2-dev \ + liblzma-dev && \ rm -rf /var/lib/apt/lists/* +RUN python3 -m venv /opt/venv +ENV PATH="/opt/venv/bin:$PATH" + +COPY nucleotide_${HUMANNVERSION}.patch /tmp/nucleotide.patch +COPY config_${HUMANNVERSION}.patch /tmp/config.patch + +RUN pip install --no-cache-dir numpy cython && \ + pip install --no-cache-dir boto3 cloudpickle awscli && \ + pip install --no-cache-dir biom-format && \ + wget -qO- https://github.com/biobakery/humann/archive/refs/tags/${HUMANNVERSION}.tar.gz \ + | tar xz -C /tmp && \ + mv /tmp/humann-* /tmp/humann && \ + cd /tmp/humann && \ + patch humann/search/nucleotide.py < /tmp/nucleotide.patch && \ + patch humann/config.py < /tmp/config.patch && \ + mv setup.py tmp.py && \ + sed 's|2\.2\.3|2\.5\.1|g' tmp.py > tmp2.py && \ + sed 's|bowtie2_folder="bowtie2-2\.5\.1|bowtie2_folder="bowtie2-2\.5\.1-linux-x86_64|g' tmp2.py > setup.py && \ + pip install --no-cache-dir . --no-binary :all: && \ + pip install --no-cache-dir metaphlan==${METAPHLANVERSION} && \ + find /opt/venv -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null; \ + find /opt/venv -type d -name "tests" -exec rm -rf {} + 2>/dev/null; \ + find /opt/venv -type d -name "test" -exec rm -rf {} + 2>/dev/null; \ + find /opt/venv -name "*.pyc" -delete 2>/dev/null; \ + find /opt/venv -name "*.pyo" -delete 2>/dev/null; \ + rm -rf /tmp/humann /tmp/*.patch + +# ============================================================ +# Stage 3: Minimal runtime image +# ============================================================ +FROM python:3.9.17-slim-bookworm AS runtime-image -# You may be tempted to do these all in one call but unfortunately -# (eg) biom-format wont build without numpy, and it wont install it automatically - -# see the glpsol issue here https://forum.biobakery.org/t/silent-errors-with-bad-install-of-libglpk/4814 - -# this nucleotide.py makes bowtie indexing parallel -ADD nucleotide_${HUMANNVERSION}.patch /tmp/nucleotide.patch -ADD config_${HUMANNVERSION}.patch /tmp/config.patch +ARG HUMANNVERSION=0.0.0 +ARG METAPHLANVERSION=0.0.0 -# We also have to bump to a more recent version of bowtie that is multithreaded, -# so we clumsily make that with some uninspired sed calls -RUN pip3 install boto3 cloudpickle awscli && \ - git clone --depth=1 --branch ${HUMANNVERSION} https://github.com/biobakery/humann.git humann && \ - du -h --max-depth=0 humann && \ - cd humann && \ - patch humann/search/nucleotide.py < /tmp/nucleotide.patch && \ - patch humann/config.py < /tmp/config.patch && \ - mv setup.py tmp.py && cat tmp.py | sed "s|2\.2\.3|2\.5\.1|g" > tmp2.py && \ - sed "s|bowtie2_folder\=\"bowtie2-2\.5\.1|bowtie2_folder\=\"bowtie2-2\.5\.1-linux-x86_64|g" tmp2.py > setup.py && \ - pip3 install -vvv . --no-binary :all: && \ - ldconfig /usr/local/lib && glpsol --version && \ - pip3 install numpy cython && pip3 install --no-cache-dir biom-format && \ - pip3 install metaphlan==${METAPHLANVERSION} && du --max-depth 1 -h ~/.cache/pip && \ - rm -r ~/.cache/pip +# Copy samtools binary and its needed libs +COPY --from=dbbuild /usr/local/bin/samtools /usr/local/bin/samtools -# The --help is so you can check to ensure that the grouping table are properly read -#RUN humann_config --update database_folders utility_mapping /dbs/util/ && \ -# humann_regroup_table --help +# Copy the entire pre-built venv +COPY --from=pybuild /opt/venv /opt/venv +ENV PATH="/opt/venv/bin:$PATH" -#RUN humann_test --run-functional-tests-end-to-end +# Install ONLY runtime dependencies — no build-essential, no git +RUN apt-get update && \ + DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y \ + libjpeg62-turbo \ + zlib1g \ + libbz2-1.0 \ + liblzma5 \ + ncbi-blast+ \ + mafft \ + raxml \ + libgomp1 \ + libglpk40 && \ + rm -rf /var/lib/apt/lists/* && \ + ldconfig /usr/local/lib && \ + glpsol --version + +ENV LC_ALL=en_US.UTF-8 +ENV LANG=en_US.UTF-8 -#RUN cd humann-3.9 && ls examples && humann --input examples/demo.fasta.gz --output tmpout +WORKDIR /tmp diff --git a/biobakery-profiler/config_4.0.0.alpha.1-final-smaller.patch b/biobakery-profiler/config_4.0.0.alpha.1-final-smaller.patch new file mode 100644 index 0000000..c5246b8 --- /dev/null +++ b/biobakery-profiler/config_4.0.0.alpha.1-final-smaller.patch @@ -0,0 +1,14 @@ +105c105,107 +< user_edit_config_file="humann.cfg" +--- +> # User config file +> if not os.environ.get("HUMANN_CONFIG"): +> user_edit_config_file="humann.cfg" +107,108c109,112 +< full_path_user_edit_config_file=os.path.join(os.path.dirname(os.path.abspath(__file__)), +< user_edit_config_file) +--- +> full_path_user_edit_config_file=os.path.join(os.path.dirname(os.path.abspath(__file__)), +> user_edit_config_file) +> else: +> full_path_user_edit_config_file=os.environ.get("HUMANN_CONFIG") From 74cce6e20dc7b6b8bbff99c6cc2bb7e1770f62a9 Mon Sep 17 00:00:00 2001 From: baichom1 Date: Fri, 10 Apr 2026 11:02:08 -0400 Subject: [PATCH 02/17] update build manifest --- biobakery_build_manifest.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/biobakery_build_manifest.csv b/biobakery_build_manifest.csv index 527a0f5..bab1bb7 100644 --- a/biobakery_build_manifest.csv +++ b/biobakery_build_manifest.csv @@ -1,3 +1,3 @@ -biobakery-profiler,4.0.6--4.0.0.alpha.1-final +biobakery-profiler,4.0.6--4.0.0.alpha.1-final-smaller biobakery-profiler,4.1.0--v3.9 biobakery-profiler,4.0.5--3.6.1 From 85b2d311b61528bc2386e8cb6a8222d41a19c02b Mon Sep 17 00:00:00 2001 From: baichom1 Date: Fri, 10 Apr 2026 11:03:41 -0400 Subject: [PATCH 03/17] rename nucleotide as well --- ...1-final.patch => nucleotide_4.0.0.alpha.1-final-smaller.patch} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename biobakery-profiler/{nucleotide_4.0.0.alpha.1-final.patch => nucleotide_4.0.0.alpha.1-final-smaller.patch} (100%) diff --git a/biobakery-profiler/nucleotide_4.0.0.alpha.1-final.patch b/biobakery-profiler/nucleotide_4.0.0.alpha.1-final-smaller.patch similarity index 100% rename from biobakery-profiler/nucleotide_4.0.0.alpha.1-final.patch rename to biobakery-profiler/nucleotide_4.0.0.alpha.1-final-smaller.patch From 345b015d961c2c4d195318eac47a91c7087aa8a6 Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 11:08:13 -0400 Subject: [PATCH 04/17] add glpsol --- biobakery-profiler/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/biobakery-profiler/Dockerfile b/biobakery-profiler/Dockerfile index 3aea350..2d6c946 100644 --- a/biobakery-profiler/Dockerfile +++ b/biobakery-profiler/Dockerfile @@ -89,7 +89,8 @@ RUN apt-get update && \ mafft \ raxml \ libgomp1 \ - libglpk40 && \ + libglpk40 \ + glpk-utils && \ rm -rf /var/lib/apt/lists/* && \ ldconfig /usr/local/lib && \ glpsol --version From 6fcd4c265b2540af0d165ad65ea1952a22997267 Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 12:23:14 -0400 Subject: [PATCH 05/17] -verify-build --- biobakery-profiler/Dockerfile | 39 +++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/biobakery-profiler/Dockerfile b/biobakery-profiler/Dockerfile index 2d6c946..2f02fae 100644 --- a/biobakery-profiler/Dockerfile +++ b/biobakery-profiler/Dockerfile @@ -8,6 +8,13 @@ RUN apt-get update && \ wget ca-certificates build-essential zlib1g-dev libbz2-dev liblzma-dev && \ rm -rf /var/lib/apt/lists/* +#old command that was at this stage, commented out: +# RUN mkdir -p /dbs/util/ && \ +# wget -c --read-timeout=5 http://huttenhower.sph.harvard.edu/humann_data/full_mapping_v201901b.tar.gz && \ +# cd /dbs/util/ && \ +# tar xzf /full_mapping_v201901b.tar.gz && \ +# rm /full_mapping_v201901b.tar.gz + RUN wget -q https://github.com/samtools/samtools/releases/download/1.15.1/samtools-1.15.1.tar.bz2 && \ tar xjf samtools-1.15.1.tar.bz2 && \ cd samtools-1.15.1 && \ @@ -42,7 +49,10 @@ ENV PATH="/opt/venv/bin:$PATH" COPY nucleotide_${HUMANNVERSION}.patch /tmp/nucleotide.patch COPY config_${HUMANNVERSION}.patch /tmp/config.patch -RUN pip install --no-cache-dir numpy cython && \ +# We also have to bump to a more recent version of bowtie that is multithreaded, +# so we clumsily make that with some uninspired sed calls +RUN set -e && \ + pip install --no-cache-dir numpy cython && \ pip install --no-cache-dir boto3 cloudpickle awscli && \ pip install --no-cache-dir biom-format && \ wget -qO- https://github.com/biobakery/humann/archive/refs/tags/${HUMANNVERSION}.tar.gz \ @@ -51,10 +61,19 @@ RUN pip install --no-cache-dir numpy cython && \ cd /tmp/humann && \ patch humann/search/nucleotide.py < /tmp/nucleotide.patch && \ patch humann/config.py < /tmp/config.patch && \ - mv setup.py tmp.py && \ - sed 's|2\.2\.3|2\.5\.1|g' tmp.py > tmp2.py && \ - sed 's|bowtie2_folder="bowtie2-2\.5\.1|bowtie2_folder="bowtie2-2\.5\.1-linux-x86_64|g' tmp2.py > setup.py && \ + # --- Safer setup.py modification with verification --- + cp setup.py setup.py.orig && \ + sed -i 's|2\.2\.3|2\.5\.1|g' setup.py && \ + sed -i 's|bowtie2_folder="bowtie2-2\.5\.1|bowtie2_folder="bowtie2-2\.5\.1-linux-x86_64|g' setup.py && \ + echo "=== setup.py diff ===" && \ + diff setup.py.orig setup.py || true && \ + echo "=== Installing humann ===" && \ pip install --no-cache-dir . --no-binary :all: && \ + # --- Verify it actually installed --- + echo "=== Verifying humann install ===" && \ + which humann_config && \ + humann --version && \ + ls /opt/venv/bin/humann* && \ pip install --no-cache-dir metaphlan==${METAPHLANVERSION} && \ find /opt/venv -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null; \ find /opt/venv -type d -name "tests" -exec rm -rf {} + 2>/dev/null; \ @@ -78,6 +97,10 @@ COPY --from=dbbuild /usr/local/bin/samtools /usr/local/bin/samtools COPY --from=pybuild /opt/venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" +# You may be tempted to do these all in one call but unfortunately +# (eg) biom-format wont build without numpy, and it wont install it automatically + +# see the glpsol issue here https://forum.biobakery.org/t/silent-errors-with-bad-install-of-libglpk/4814 # Install ONLY runtime dependencies — no build-essential, no git RUN apt-get update && \ DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y \ @@ -99,3 +122,11 @@ ENV LC_ALL=en_US.UTF-8 ENV LANG=en_US.UTF-8 WORKDIR /tmp + +# The --help is so you can check to ensure that the grouping table are properly read +#RUN humann_config --update database_folders utility_mapping /dbs/util/ && \ +# humann_regroup_table --help + +#RUN humann_test --run-functional-tests-end-to-end + +#RUN cd humann-3.9 && ls examples && humann --input examples/demo.fasta.gz --output tmpout From 7fdcdfa96c69796303ffaed0c32b3ce3ec3b180f Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 12:26:43 -0400 Subject: [PATCH 06/17] bump v --- ...maller.patch => config_4.0.0.alpha.1-final-smaller-v2.patch} | 0 ...er.patch => nucleotide_4.0.0.alpha.1-final-smaller-v2.patch} | 0 biobakery_build_manifest.csv | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename biobakery-profiler/{config_4.0.0.alpha.1-final-smaller.patch => config_4.0.0.alpha.1-final-smaller-v2.patch} (100%) rename biobakery-profiler/{nucleotide_4.0.0.alpha.1-final-smaller.patch => nucleotide_4.0.0.alpha.1-final-smaller-v2.patch} (100%) diff --git a/biobakery-profiler/config_4.0.0.alpha.1-final-smaller.patch b/biobakery-profiler/config_4.0.0.alpha.1-final-smaller-v2.patch similarity index 100% rename from biobakery-profiler/config_4.0.0.alpha.1-final-smaller.patch rename to biobakery-profiler/config_4.0.0.alpha.1-final-smaller-v2.patch diff --git a/biobakery-profiler/nucleotide_4.0.0.alpha.1-final-smaller.patch b/biobakery-profiler/nucleotide_4.0.0.alpha.1-final-smaller-v2.patch similarity index 100% rename from biobakery-profiler/nucleotide_4.0.0.alpha.1-final-smaller.patch rename to biobakery-profiler/nucleotide_4.0.0.alpha.1-final-smaller-v2.patch diff --git a/biobakery_build_manifest.csv b/biobakery_build_manifest.csv index bab1bb7..9cc97e4 100644 --- a/biobakery_build_manifest.csv +++ b/biobakery_build_manifest.csv @@ -1,3 +1,3 @@ -biobakery-profiler,4.0.6--4.0.0.alpha.1-final-smaller +biobakery-profiler,4.0.6--4.0.0.alpha.1-final-smaller-v2 biobakery-profiler,4.1.0--v3.9 biobakery-profiler,4.0.5--3.6.1 From ce0be69321b5f3e3c68cef97d942cdac0a0aafbc Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 12:59:42 -0400 Subject: [PATCH 07/17] more intense debugging --- biobakery-profiler/Dockerfile | 76 ++++++++++++------- ...alpha.1-final-smaller-v2-with_tests.patch} | 0 ...alpha.1-final-smaller-v2-with_tests.patch} | 0 biobakery_build_manifest.csv | 2 +- 4 files changed, 51 insertions(+), 27 deletions(-) rename biobakery-profiler/{config_4.0.0.alpha.1-final-smaller-v2.patch => config_4.0.0.alpha.1-final-smaller-v2-with_tests.patch} (100%) rename biobakery-profiler/{nucleotide_4.0.0.alpha.1-final-smaller-v2.patch => nucleotide_4.0.0.alpha.1-final-smaller-v2-with_tests.patch} (100%) diff --git a/biobakery-profiler/Dockerfile b/biobakery-profiler/Dockerfile index 2f02fae..592de00 100644 --- a/biobakery-profiler/Dockerfile +++ b/biobakery-profiler/Dockerfile @@ -26,6 +26,7 @@ RUN wget -q https://github.com/samtools/samtools/releases/download/1.15.1/samtoo # ============================================================ # Stage 2: Build Python packages in a venv we can copy # ============================================================ + FROM python:3.9.17-slim-bookworm AS pybuild ARG HUMANNVERSION=0.0.0 @@ -49,39 +50,62 @@ ENV PATH="/opt/venv/bin:$PATH" COPY nucleotide_${HUMANNVERSION}.patch /tmp/nucleotide.patch COPY config_${HUMANNVERSION}.patch /tmp/config.patch -# We also have to bump to a more recent version of bowtie that is multithreaded, -# so we clumsily make that with some uninspired sed calls -RUN set -e && \ - pip install --no-cache-dir numpy cython && \ +# Install prerequisites +RUN pip install --no-cache-dir numpy cython && \ pip install --no-cache-dir boto3 cloudpickle awscli && \ - pip install --no-cache-dir biom-format && \ - wget -qO- https://github.com/biobakery/humann/archive/refs/tags/${HUMANNVERSION}.tar.gz \ - | tar xz -C /tmp && \ + pip install --no-cache-dir biom-format + +# Download and inspect humann — STOP HERE to debug +RUN set -e && \ + echo "=== HUMANNVERSION is: ${HUMANNVERSION} ===" && \ + wget -qO /tmp/humann.tar.gz https://github.com/biobakery/humann/archive/refs/tags/${HUMANNVERSION}.tar.gz && \ + echo "=== Tarball contents (top-level) ===" && \ + tar tzf /tmp/humann.tar.gz | head -20 && \ + tar xzf /tmp/humann.tar.gz -C /tmp && \ + echo "=== Directories in /tmp ===" && \ + ls -la /tmp/ && \ + echo "=== Moving to /tmp/humann ===" && \ mv /tmp/humann-* /tmp/humann && \ + ls -la /tmp/humann/ && \ + echo "=== setup.py exists? ===" && \ + cat /tmp/humann/setup.py | head -30 + +# Patch and modify setup.py +RUN set -e && \ cd /tmp/humann && \ + echo "=== Applying patches ===" && \ patch humann/search/nucleotide.py < /tmp/nucleotide.patch && \ patch humann/config.py < /tmp/config.patch && \ - # --- Safer setup.py modification with verification --- cp setup.py setup.py.orig && \ sed -i 's|2\.2\.3|2\.5\.1|g' setup.py && \ sed -i 's|bowtie2_folder="bowtie2-2\.5\.1|bowtie2_folder="bowtie2-2\.5\.1-linux-x86_64|g' setup.py && \ echo "=== setup.py diff ===" && \ diff setup.py.orig setup.py || true && \ - echo "=== Installing humann ===" && \ - pip install --no-cache-dir . --no-binary :all: && \ - # --- Verify it actually installed --- - echo "=== Verifying humann install ===" && \ - which humann_config && \ - humann --version && \ - ls /opt/venv/bin/humann* && \ - pip install --no-cache-dir metaphlan==${METAPHLANVERSION} && \ - find /opt/venv -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null; \ - find /opt/venv -type d -name "tests" -exec rm -rf {} + 2>/dev/null; \ - find /opt/venv -type d -name "test" -exec rm -rf {} + 2>/dev/null; \ - find /opt/venv -name "*.pyc" -delete 2>/dev/null; \ - find /opt/venv -name "*.pyo" -delete 2>/dev/null; \ - rm -rf /tmp/humann /tmp/*.patch + echo "=== Full setup.py ===" && \ + cat setup.py +# Install humann — this is the step we need to watch carefully +RUN set -e && \ + echo "=== which pip ===" && \ + which pip && \ + echo "=== which python ===" && \ + which python && \ + echo "=== pip location ===" && \ + pip --version && \ + cd /tmp/humann && \ + echo "=== Installing humann ===" && \ + pip install --no-cache-dir . --no-binary :all: 2>&1 && \ + echo "=== pip install exit code: $? ===" && \ + echo "=== Checking install ===" && \ + pip show humann && \ + echo "=== venv bin contents ===" && \ + ls -la /opt/venv/bin/ && \ + echo "=== humann files in venv ===" && \ + ls /opt/venv/bin/humann* || echo "NO HUMANN BINARIES FOUND" && \ + echo "=== entry_points check ===" && \ + pip show -f humann | head -50 && \ + echo "=== system-wide check ===" && \ + find / -name "humann*" -type f 2>/dev/null | head -20 # ============================================================ # Stage 3: Minimal runtime image # ============================================================ @@ -124,9 +148,9 @@ ENV LANG=en_US.UTF-8 WORKDIR /tmp # The --help is so you can check to ensure that the grouping table are properly read -#RUN humann_config --update database_folders utility_mapping /dbs/util/ && \ -# humann_regroup_table --help +RUN humann_config --update database_folders utility_mapping /dbs/util/ && \ + humann_regroup_table --help -#RUN humann_test --run-functional-tests-end-to-end +RUN humann_test --run-functional-tests-end-to-end -#RUN cd humann-3.9 && ls examples && humann --input examples/demo.fasta.gz --output tmpout +RUN cd humann-3.9 && ls examples && humann --input examples/demo.fasta.gz --output tmpout diff --git a/biobakery-profiler/config_4.0.0.alpha.1-final-smaller-v2.patch b/biobakery-profiler/config_4.0.0.alpha.1-final-smaller-v2-with_tests.patch similarity index 100% rename from biobakery-profiler/config_4.0.0.alpha.1-final-smaller-v2.patch rename to biobakery-profiler/config_4.0.0.alpha.1-final-smaller-v2-with_tests.patch diff --git a/biobakery-profiler/nucleotide_4.0.0.alpha.1-final-smaller-v2.patch b/biobakery-profiler/nucleotide_4.0.0.alpha.1-final-smaller-v2-with_tests.patch similarity index 100% rename from biobakery-profiler/nucleotide_4.0.0.alpha.1-final-smaller-v2.patch rename to biobakery-profiler/nucleotide_4.0.0.alpha.1-final-smaller-v2-with_tests.patch diff --git a/biobakery_build_manifest.csv b/biobakery_build_manifest.csv index 9cc97e4..065d9a5 100644 --- a/biobakery_build_manifest.csv +++ b/biobakery_build_manifest.csv @@ -1,3 +1,3 @@ -biobakery-profiler,4.0.6--4.0.0.alpha.1-final-smaller-v2 +biobakery-profiler,4.0.6--4.0.0.alpha.1-final-smaller-v2-with_tests biobakery-profiler,4.1.0--v3.9 biobakery-profiler,4.0.5--3.6.1 From b7b2cfd2b6de13899014a2a5d558a4b3c2716dd2 Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 13:06:37 -0400 Subject: [PATCH 08/17] fix image names --- ...4.0.0.alpha.1-final-smaller-v2-with_tests.patch | 14 -------------- ....patch => nucleotide_4.0.0.alpha.1-final.patch} | 0 biobakery_build_manifest.csv | 2 +- 3 files changed, 1 insertion(+), 15 deletions(-) delete mode 100644 biobakery-profiler/config_4.0.0.alpha.1-final-smaller-v2-with_tests.patch rename biobakery-profiler/{nucleotide_4.0.0.alpha.1-final-smaller-v2-with_tests.patch => nucleotide_4.0.0.alpha.1-final.patch} (100%) diff --git a/biobakery-profiler/config_4.0.0.alpha.1-final-smaller-v2-with_tests.patch b/biobakery-profiler/config_4.0.0.alpha.1-final-smaller-v2-with_tests.patch deleted file mode 100644 index c5246b8..0000000 --- a/biobakery-profiler/config_4.0.0.alpha.1-final-smaller-v2-with_tests.patch +++ /dev/null @@ -1,14 +0,0 @@ -105c105,107 -< user_edit_config_file="humann.cfg" ---- -> # User config file -> if not os.environ.get("HUMANN_CONFIG"): -> user_edit_config_file="humann.cfg" -107,108c109,112 -< full_path_user_edit_config_file=os.path.join(os.path.dirname(os.path.abspath(__file__)), -< user_edit_config_file) ---- -> full_path_user_edit_config_file=os.path.join(os.path.dirname(os.path.abspath(__file__)), -> user_edit_config_file) -> else: -> full_path_user_edit_config_file=os.environ.get("HUMANN_CONFIG") diff --git a/biobakery-profiler/nucleotide_4.0.0.alpha.1-final-smaller-v2-with_tests.patch b/biobakery-profiler/nucleotide_4.0.0.alpha.1-final.patch similarity index 100% rename from biobakery-profiler/nucleotide_4.0.0.alpha.1-final-smaller-v2-with_tests.patch rename to biobakery-profiler/nucleotide_4.0.0.alpha.1-final.patch diff --git a/biobakery_build_manifest.csv b/biobakery_build_manifest.csv index 065d9a5..8252386 100644 --- a/biobakery_build_manifest.csv +++ b/biobakery_build_manifest.csv @@ -1,3 +1,3 @@ -biobakery-profiler,4.0.6--4.0.0.alpha.1-final-smaller-v2-with_tests +biobakery-profiler,4.0.6_smaller--4.0.0.alpha.1-final biobakery-profiler,4.1.0--v3.9 biobakery-profiler,4.0.5--3.6.1 From e6f04ac9976672b90a61dacb7fc383f199c096bd Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 13:15:13 -0400 Subject: [PATCH 09/17] comment out tests again --- biobakery-profiler/Dockerfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/biobakery-profiler/Dockerfile b/biobakery-profiler/Dockerfile index 592de00..bfdd8f7 100644 --- a/biobakery-profiler/Dockerfile +++ b/biobakery-profiler/Dockerfile @@ -148,9 +148,9 @@ ENV LANG=en_US.UTF-8 WORKDIR /tmp # The --help is so you can check to ensure that the grouping table are properly read -RUN humann_config --update database_folders utility_mapping /dbs/util/ && \ - humann_regroup_table --help - -RUN humann_test --run-functional-tests-end-to-end - -RUN cd humann-3.9 && ls examples && humann --input examples/demo.fasta.gz --output tmpout +#RUN humann_config --update database_folders utility_mapping /dbs/util/ && \ +# humann_regroup_table --help +# +#RUN humann_test --run-functional-tests-end-to-end +# +#RUN cd humann-3.9 && ls examples && humann --input examples/demo.fasta.gz --output tmpout From b4082e49ac87f3fa052cf15d1f713abce53ca4d8 Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 15:03:09 -0400 Subject: [PATCH 10/17] tries to fix order of install --- biobakery-profiler/Dockerfile | 116 ++++++++-------------------------- biobakery_build_manifest.csv | 2 +- 2 files changed, 27 insertions(+), 91 deletions(-) diff --git a/biobakery-profiler/Dockerfile b/biobakery-profiler/Dockerfile index bfdd8f7..79cea3f 100644 --- a/biobakery-profiler/Dockerfile +++ b/biobakery-profiler/Dockerfile @@ -8,40 +8,28 @@ RUN apt-get update && \ wget ca-certificates build-essential zlib1g-dev libbz2-dev liblzma-dev && \ rm -rf /var/lib/apt/lists/* -#old command that was at this stage, commented out: -# RUN mkdir -p /dbs/util/ && \ -# wget -c --read-timeout=5 http://huttenhower.sph.harvard.edu/humann_data/full_mapping_v201901b.tar.gz && \ -# cd /dbs/util/ && \ -# tar xzf /full_mapping_v201901b.tar.gz && \ -# rm /full_mapping_v201901b.tar.gz - RUN wget -q https://github.com/samtools/samtools/releases/download/1.15.1/samtools-1.15.1.tar.bz2 && \ tar xjf samtools-1.15.1.tar.bz2 && \ cd samtools-1.15.1 && \ ./configure --without-curses && \ make -j$(nproc) && \ - make install && \ - which samtools + make install # ============================================================ # Stage 2: Build Python packages in a venv we can copy # ============================================================ - FROM python:3.9.17-slim-bookworm AS pybuild ARG HUMANNVERSION=0.0.0 ARG METAPHLANVERSION=0.0.0 +# libglpk-dev needed at compile time for Python GLPK bindings +# see: https://forum.biobakery.org/t/silent-errors-with-bad-install-of-libglpk/4814 RUN apt-get update && \ DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y \ - build-essential \ - wget \ - ca-certificates \ - patch \ - libjpeg-dev \ - zlib1g-dev \ - libbz2-dev \ - liblzma-dev && \ + build-essential git patch \ + libjpeg-dev zlib1g-dev libbz2-dev liblzma-dev \ + libglpk-dev glpk-utils && \ rm -rf /var/lib/apt/lists/* RUN python3 -m venv /opt/venv @@ -50,101 +38,49 @@ ENV PATH="/opt/venv/bin:$PATH" COPY nucleotide_${HUMANNVERSION}.patch /tmp/nucleotide.patch COPY config_${HUMANNVERSION}.patch /tmp/config.patch -# Install prerequisites -RUN pip install --no-cache-dir numpy cython && \ - pip install --no-cache-dir boto3 cloudpickle awscli && \ - pip install --no-cache-dir biom-format +# Install order matters: numpy → biom-format → humann → metaphlan +RUN pip install --no-cache-dir numpy cython +RUN pip install --no-cache-dir biom-format +RUN pip install --no-cache-dir boto3 cloudpickle awscli -# Download and inspect humann — STOP HERE to debug -RUN set -e && \ - echo "=== HUMANNVERSION is: ${HUMANNVERSION} ===" && \ - wget -qO /tmp/humann.tar.gz https://github.com/biobakery/humann/archive/refs/tags/${HUMANNVERSION}.tar.gz && \ - echo "=== Tarball contents (top-level) ===" && \ - tar tzf /tmp/humann.tar.gz | head -20 && \ - tar xzf /tmp/humann.tar.gz -C /tmp && \ - echo "=== Directories in /tmp ===" && \ - ls -la /tmp/ && \ - echo "=== Moving to /tmp/humann ===" && \ - mv /tmp/humann-* /tmp/humann && \ - ls -la /tmp/humann/ && \ - echo "=== setup.py exists? ===" && \ - cat /tmp/humann/setup.py | head -30 - -# Patch and modify setup.py RUN set -e && \ + git clone --depth=1 --branch ${HUMANNVERSION} https://github.com/biobakery/humann.git /tmp/humann && \ cd /tmp/humann && \ - echo "=== Applying patches ===" && \ patch humann/search/nucleotide.py < /tmp/nucleotide.patch && \ patch humann/config.py < /tmp/config.patch && \ - cp setup.py setup.py.orig && \ sed -i 's|2\.2\.3|2\.5\.1|g' setup.py && \ sed -i 's|bowtie2_folder="bowtie2-2\.5\.1|bowtie2_folder="bowtie2-2\.5\.1-linux-x86_64|g' setup.py && \ - echo "=== setup.py diff ===" && \ - diff setup.py.orig setup.py || true && \ - echo "=== Full setup.py ===" && \ - cat setup.py + pip install --no-cache-dir . --no-binary :all: && \ + ldconfig /usr/local/lib && \ + rm -rf /tmp/humann /tmp/*.patch + +RUN pip install --no-cache-dir metaphlan==${METAPHLANVERSION} + +# Verify everything works +RUN python3 -c "from biom import load_table; print('biom OK')" && \ + humann --version && \ + metaphlan --version -# Install humann — this is the step we need to watch carefully -RUN set -e && \ - echo "=== which pip ===" && \ - which pip && \ - echo "=== which python ===" && \ - which python && \ - echo "=== pip location ===" && \ - pip --version && \ - cd /tmp/humann && \ - echo "=== Installing humann ===" && \ - pip install --no-cache-dir . --no-binary :all: 2>&1 && \ - echo "=== pip install exit code: $? ===" && \ - echo "=== Checking install ===" && \ - pip show humann && \ - echo "=== venv bin contents ===" && \ - ls -la /opt/venv/bin/ && \ - echo "=== humann files in venv ===" && \ - ls /opt/venv/bin/humann* || echo "NO HUMANN BINARIES FOUND" && \ - echo "=== entry_points check ===" && \ - pip show -f humann | head -50 && \ - echo "=== system-wide check ===" && \ - find / -name "humann*" -type f 2>/dev/null | head -20 # ============================================================ # Stage 3: Minimal runtime image # ============================================================ FROM python:3.9.17-slim-bookworm AS runtime-image -ARG HUMANNVERSION=0.0.0 -ARG METAPHLANVERSION=0.0.0 - -# Copy samtools binary and its needed libs COPY --from=dbbuild /usr/local/bin/samtools /usr/local/bin/samtools - -# Copy the entire pre-built venv COPY --from=pybuild /opt/venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" -# You may be tempted to do these all in one call but unfortunately -# (eg) biom-format wont build without numpy, and it wont install it automatically - -# see the glpsol issue here https://forum.biobakery.org/t/silent-errors-with-bad-install-of-libglpk/4814 -# Install ONLY runtime dependencies — no build-essential, no git +# Runtime libs (not -dev) matching what was compiled against in pybuild RUN apt-get update && \ DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y \ - libjpeg62-turbo \ - zlib1g \ - libbz2-1.0 \ - liblzma5 \ - ncbi-blast+ \ - mafft \ - raxml \ - libgomp1 \ - libglpk40 \ - glpk-utils && \ + libjpeg62-turbo zlib1g libbz2-1.0 liblzma5 \ + libglpk40 glpk-utils libgomp1 \ + ncbi-blast+ mafft raxml && \ rm -rf /var/lib/apt/lists/* && \ - ldconfig /usr/local/lib && \ - glpsol --version + ldconfig /usr/local/lib ENV LC_ALL=en_US.UTF-8 ENV LANG=en_US.UTF-8 - WORKDIR /tmp # The --help is so you can check to ensure that the grouping table are properly read diff --git a/biobakery_build_manifest.csv b/biobakery_build_manifest.csv index 8252386..dcbeb21 100644 --- a/biobakery_build_manifest.csv +++ b/biobakery_build_manifest.csv @@ -1,3 +1,3 @@ -biobakery-profiler,4.0.6_smaller--4.0.0.alpha.1-final +biobakery-profiler,4.0.7_smaller--4.0.0.alpha.1-final biobakery-profiler,4.1.0--v3.9 biobakery-profiler,4.0.5--3.6.1 From 3d791fcc75131af75b541d9c05c3a2df693ea6eb Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 15:16:58 -0400 Subject: [PATCH 11/17] try again full not simplified dockerfile with tests --- biobakery-profiler/Dockerfile | 104 ++++++++++++++++++++++++++-------- 1 file changed, 81 insertions(+), 23 deletions(-) diff --git a/biobakery-profiler/Dockerfile b/biobakery-profiler/Dockerfile index 79cea3f..8d893f9 100644 --- a/biobakery-profiler/Dockerfile +++ b/biobakery-profiler/Dockerfile @@ -13,7 +13,8 @@ RUN wget -q https://github.com/samtools/samtools/releases/download/1.15.1/samtoo cd samtools-1.15.1 && \ ./configure --without-curses && \ make -j$(nproc) && \ - make install + make install && \ + which samtools # ============================================================ # Stage 2: Build Python packages in a venv we can copy @@ -23,13 +24,19 @@ FROM python:3.9.17-slim-bookworm AS pybuild ARG HUMANNVERSION=0.0.0 ARG METAPHLANVERSION=0.0.0 -# libglpk-dev needed at compile time for Python GLPK bindings -# see: https://forum.biobakery.org/t/silent-errors-with-bad-install-of-libglpk/4814 +# IMPORTANT: libglpk-dev is needed here at compile time +# so that the Python GLPK bindings compile correctly RUN apt-get update && \ DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y \ - build-essential git patch \ - libjpeg-dev zlib1g-dev libbz2-dev liblzma-dev \ - libglpk-dev glpk-utils && \ + build-essential \ + git \ + patch \ + libjpeg-dev \ + zlib1g-dev \ + libbz2-dev \ + liblzma-dev \ + libglpk-dev \ + glpk-utils && \ rm -rf /var/lib/apt/lists/* RUN python3 -m venv /opt/venv @@ -38,28 +45,58 @@ ENV PATH="/opt/venv/bin:$PATH" COPY nucleotide_${HUMANNVERSION}.patch /tmp/nucleotide.patch COPY config_${HUMANNVERSION}.patch /tmp/config.patch -# Install order matters: numpy → biom-format → humann → metaphlan +# IMPORTANT: Installation order matters! +# 1. numpy and cython MUST be installed before biom-format +# 2. biom-format must be installed before humann +# 3. GLPK libs must be present when installing packages that link against them +# see: https://forum.biobakery.org/t/silent-errors-with-bad-install-of-libglpk/4814 + +# Step 1: numpy and cython first — biom-format needs these at build time RUN pip install --no-cache-dir numpy cython -RUN pip install --no-cache-dir biom-format + +# Step 2: biom-format — needs numpy already installed to compile +RUN pip install --no-cache-dir biom-format && \ + python3 -c "from biom import load_table; print('biom-format OK')" + +# Step 3: Other Python dependencies RUN pip install --no-cache-dir boto3 cloudpickle awscli +# Step 4: humann — needs biom-format already working RUN set -e && \ git clone --depth=1 --branch ${HUMANNVERSION} https://github.com/biobakery/humann.git /tmp/humann && \ cd /tmp/humann && \ patch humann/search/nucleotide.py < /tmp/nucleotide.patch && \ patch humann/config.py < /tmp/config.patch && \ + cp setup.py setup.py.orig && \ sed -i 's|2\.2\.3|2\.5\.1|g' setup.py && \ sed -i 's|bowtie2_folder="bowtie2-2\.5\.1|bowtie2_folder="bowtie2-2\.5\.1-linux-x86_64|g' setup.py && \ + diff setup.py.orig setup.py || true && \ pip install --no-cache-dir . --no-binary :all: && \ ldconfig /usr/local/lib && \ - rm -rf /tmp/humann /tmp/*.patch + glpsol --version +# Step 5: metaphlan after humann RUN pip install --no-cache-dir metaphlan==${METAPHLANVERSION} -# Verify everything works -RUN python3 -c "from biom import load_table; print('biom OK')" && \ +# Verify the full dependency chain works +RUN set -e && \ + echo "=== Verifying dependency chain ===" && \ + python3 -c "import numpy; print(f'numpy {numpy.__version__} OK')" && \ + python3 -c "from biom import load_table; print('biom-format OK')" && \ + python3 -c "import humann; print('humann OK')" && \ + python3 -c "import metaphlan; print('metaphlan OK')" && \ + which humann && \ humann --version && \ - metaphlan --version + ls /opt/venv/bin/humann* && \ + echo "=== All pybuild checks passed ===" + +# Clean up +RUN find /opt/venv -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null; \ + find /opt/venv -type d -name "tests" -exec rm -rf {} + 2>/dev/null; \ + find /opt/venv -type d -name "test" -exec rm -rf {} + 2>/dev/null; \ + find /opt/venv -name "*.pyc" -delete 2>/dev/null; \ + find /opt/venv -name "*.pyo" -delete 2>/dev/null; \ + rm -rf /tmp/humann /tmp/*.patch # ============================================================ # Stage 3: Minimal runtime image @@ -70,12 +107,20 @@ COPY --from=dbbuild /usr/local/bin/samtools /usr/local/bin/samtools COPY --from=pybuild /opt/venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" -# Runtime libs (not -dev) matching what was compiled against in pybuild +# IMPORTANT: Runtime versions of the same libraries that were used at compile time +# libglpk40 + glpk-utils must be here or humann/biom will fail at runtime RUN apt-get update && \ DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y \ - libjpeg62-turbo zlib1g libbz2-1.0 liblzma5 \ - libglpk40 glpk-utils libgomp1 \ - ncbi-blast+ mafft raxml && \ + libjpeg62-turbo \ + zlib1g \ + libbz2-1.0 \ + liblzma5 \ + ncbi-blast+ \ + mafft \ + raxml \ + libgomp1 \ + libglpk40 \ + glpk-utils && \ rm -rf /var/lib/apt/lists/* && \ ldconfig /usr/local/lib @@ -83,10 +128,23 @@ ENV LC_ALL=en_US.UTF-8 ENV LANG=en_US.UTF-8 WORKDIR /tmp -# The --help is so you can check to ensure that the grouping table are properly read -#RUN humann_config --update database_folders utility_mapping /dbs/util/ && \ -# humann_regroup_table --help -# -#RUN humann_test --run-functional-tests-end-to-end -# -#RUN cd humann-3.9 && ls examples && humann --input examples/demo.fasta.gz --output tmpout +# Thorough smoke tests — verify the full chain works at runtime +RUN set -e && \ + echo "=== Runtime smoke tests ===" && \ + echo "--- Binary checks ---" && \ + glpsol --version && \ + samtools --version | head -1 && \ + echo "--- Python import chain (order matters) ---" && \ + python3 -c "import numpy; print(f'numpy {numpy.__version__} OK')" && \ + python3 -c "from biom import load_table; print('biom-format OK')" && \ + python3 -c "import humann; print('humann OK')" && \ + python3 -c "import metaphlan; print('metaphlan OK')" && \ + echo "--- HUMAnN tool checks ---" && \ + humann --version && \ + humann_config --print && \ + humann_regroup_table --help > /dev/null && \ + humann_renorm_table --help > /dev/null && \ + humann_join_tables --help > /dev/null && \ + echo "--- MetaPhlAn check ---" && \ + metaphlan --version && \ + echo "=== All runtime smoke tests passed ===" \ No newline at end of file From 53b4c976e2150f7dad75791ba6c6d620ff4dbdd3 Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 16:04:07 -0400 Subject: [PATCH 12/17] fix parsing of version --- .github/workflows/bb_builder.yaml | 2 +- biobakery_build_manifest.csv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/bb_builder.yaml b/.github/workflows/bb_builder.yaml index c34feea..465f14c 100644 --- a/.github/workflows/bb_builder.yaml +++ b/.github/workflows/bb_builder.yaml @@ -45,7 +45,7 @@ jobs: env: tool_ver: ${{ matrix.manifest }} id: humannversplit - run: TMP=${tool_ver##*,} && echo "HUMANNVERSION=${TMP##*--}" >> $GITHUB_OUTPUT + run: TMP=${tool_ver##*,} && echo "AFTER_DASH=${TMP##*--}" && echo "HUMANNVERSION=${AFTER_DASH%%;*}" >> $GITHUB_OUTPUT - name: Get metaphlan version env: tool_ver: ${{ matrix.manifest }} diff --git a/biobakery_build_manifest.csv b/biobakery_build_manifest.csv index dcbeb21..5061feb 100644 --- a/biobakery_build_manifest.csv +++ b/biobakery_build_manifest.csv @@ -1,3 +1,3 @@ -biobakery-profiler,4.0.7_smaller--4.0.0.alpha.1-final +biobakery-profiler,4.0.6--4.0.0.alpha.1-final;smaller biobakery-profiler,4.1.0--v3.9 biobakery-profiler,4.0.5--3.6.1 From 436348478615d8f56385be0d12755c0fc4fae7fb Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 16:07:19 -0400 Subject: [PATCH 13/17] better symbol breaking --- .github/workflows/bb_builder.yaml | 2 +- biobakery_build_manifest.csv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/bb_builder.yaml b/.github/workflows/bb_builder.yaml index 465f14c..e2330c0 100644 --- a/.github/workflows/bb_builder.yaml +++ b/.github/workflows/bb_builder.yaml @@ -45,7 +45,7 @@ jobs: env: tool_ver: ${{ matrix.manifest }} id: humannversplit - run: TMP=${tool_ver##*,} && echo "AFTER_DASH=${TMP##*--}" && echo "HUMANNVERSION=${AFTER_DASH%%;*}" >> $GITHUB_OUTPUT + run: TMP=${tool_ver##*,} && echo "AFTER_DASH=${TMP##*--}" && echo "HUMANNVERSION=${AFTER_DASH%%_*}" >> $GITHUB_OUTPUT - name: Get metaphlan version env: tool_ver: ${{ matrix.manifest }} diff --git a/biobakery_build_manifest.csv b/biobakery_build_manifest.csv index 5061feb..6f035b2 100644 --- a/biobakery_build_manifest.csv +++ b/biobakery_build_manifest.csv @@ -1,3 +1,3 @@ -biobakery-profiler,4.0.6--4.0.0.alpha.1-final;smaller +biobakery-profiler,4.0.6--4.0.0.alpha.1-final_smaller biobakery-profiler,4.1.0--v3.9 biobakery-profiler,4.0.5--3.6.1 From 57def9bb66a9accc20d89627858ce342fb139a41 Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 16:12:14 -0400 Subject: [PATCH 14/17] actually set middleman variable --- .github/workflows/bb_builder.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bb_builder.yaml b/.github/workflows/bb_builder.yaml index e2330c0..65916a3 100644 --- a/.github/workflows/bb_builder.yaml +++ b/.github/workflows/bb_builder.yaml @@ -45,7 +45,7 @@ jobs: env: tool_ver: ${{ matrix.manifest }} id: humannversplit - run: TMP=${tool_ver##*,} && echo "AFTER_DASH=${TMP##*--}" && echo "HUMANNVERSION=${AFTER_DASH%%_*}" >> $GITHUB_OUTPUT + run: TMP=${tool_ver##*,} && AFTER_DASH=${TMP#*--} && echo "HUMANNVERSION=${AFTER_DASH%%_*}" >> $GITHUB_OUTPUT - name: Get metaphlan version env: tool_ver: ${{ matrix.manifest }} From 72dc5e9c1ab47610fe45d84913547e947716fcc0 Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 17:24:07 -0400 Subject: [PATCH 15/17] add things nextflow needs --- biobakery-profiler/Dockerfile | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/biobakery-profiler/Dockerfile b/biobakery-profiler/Dockerfile index 8d893f9..0d574c3 100644 --- a/biobakery-profiler/Dockerfile +++ b/biobakery-profiler/Dockerfile @@ -147,4 +147,19 @@ RUN set -e && \ humann_join_tables --help > /dev/null && \ echo "--- MetaPhlAn check ---" && \ metaphlan --version && \ - echo "=== All runtime smoke tests passed ===" \ No newline at end of file + echo "=== All runtime smoke tests passed ===" + +RUN apt-get update && \ + DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y \ + libjpeg62-turbo zlib1g libbz2-1.0 liblzma5 \ + libglpk40 glpk-utils libgomp1 \ + ncbi-blast+ mafft raxml \ + procps \ + locales && \ + rm -rf /var/lib/apt/lists/* && \ + ldconfig /usr/local/lib && \ + sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \ + locale-gen en_US.UTF-8 + +ENV LC_ALL=en_US.UTF-8 +ENV LANG=en_US.UTF-8 \ No newline at end of file From 553e442282a753ee93145dd2020a1a2481d3cc17 Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 17:25:11 -0400 Subject: [PATCH 16/17] update image stuff --- biobakery_build_manifest.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/biobakery_build_manifest.csv b/biobakery_build_manifest.csv index 6f035b2..871342b 100644 --- a/biobakery_build_manifest.csv +++ b/biobakery_build_manifest.csv @@ -1,3 +1,3 @@ -biobakery-profiler,4.0.6--4.0.0.alpha.1-final_smaller +biobakery-profiler,4.0.6--4.0.0.alpha.1-final_smaller-pt2 biobakery-profiler,4.1.0--v3.9 biobakery-profiler,4.0.5--3.6.1 From e645c7d55964d52c6e88bffc60a14f40dbbce5cb Mon Sep 17 00:00:00 2001 From: miraep8 Date: Fri, 10 Apr 2026 19:02:48 -0400 Subject: [PATCH 17/17] make humann3 smaller as well --- biobakery_build_manifest.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/biobakery_build_manifest.csv b/biobakery_build_manifest.csv index 871342b..8bc8841 100644 --- a/biobakery_build_manifest.csv +++ b/biobakery_build_manifest.csv @@ -1,3 +1,3 @@ biobakery-profiler,4.0.6--4.0.0.alpha.1-final_smaller-pt2 biobakery-profiler,4.1.0--v3.9 -biobakery-profiler,4.0.5--3.6.1 +biobakery-profiler,4.0.5--3.6.1_smaller-pt2