diff --git a/Dockerfile b/Dockerfile index 77b32e2..98cbc4e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -49,6 +49,12 @@ RUN apt-get update && apt-get install -y build-essential wget libbz2-dev zlib1g- COPY install_samtools.sh . RUN bash install_samtools.sh 1.22.1 +FROM debian:bookworm AS cdhit +WORKDIR /build +RUN apt-get update && apt-get install -y wget build-essential libz-dev && rm -rf /var/lib/apt/lists/* +COPY install_cdhit.sh . +RUN bash install_cdhit.sh 4.8.1 v4.8.1-2019-0228 + # Combine tools into a single image. FROM debian:bookworm AS combine WORKDIR /tools @@ -59,6 +65,7 @@ COPY --from=hmmer /hmmer ./hmmer COPY --from=pigz /pigz/ ./pigz COPY --from=samtools /samtools/ ./samtools COPY --from=skewer /skewer ./skewer +COPY --from=cdhit /cd-hit ./cd-hit # Testing FROM debian:bookworm AS test diff --git a/install_cdhit.sh b/install_cdhit.sh new file mode 100644 index 0000000..2746079 --- /dev/null +++ b/install_cdhit.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Get the version from the command line argument +version=$1 +slug=$2 + +# Download, extract, configure, and install the version +wget https://github.com/weizhongli/cdhit/releases/download/V${version}/cd-hit-${slug}.tar.gz +tar -xf cd-hit-$slug.tar.gz +cd cd-hit-$slug +sed -i 's/LDFLAGS += -lz -o/LDFLAGS += -Wl,-Bstatic -lgomp -Wl,-Bdynamic -lz -o/' Makefile +make && make install +cd .. +mkdir -p /cd-hit/${version} +mv cd-hit-$slug/cd-hit* /cd-hit/${version} \ No newline at end of file diff --git a/test.sh b/test.sh index 76364fe..a302091 100644 --- a/test.sh +++ b/test.sh @@ -137,4 +137,24 @@ for version in "${skewer_versions[@]}"; do echo "Skewer version ${version} is not installed or not executable." exit 1 fi -done \ No newline at end of file +done + +# Test cd-hit +cd_hit_versions=("4.8.1") + +for version in "${cd_hit_versions[@]}"; do + cd_hit_path="/tools/cd-hit/${version}/cd-hit" + + if [ -x "$cd_hit_path" ]; then + detected_version=$("$cd_hit_path" | head -n 1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+') + if [ "$detected_version" = "$version" ]; then + echo "cd-hit version ${version} is installed and correct." + else + echo "cd-hit version ${version} is installed but version mismatch (found $detected_version)." + exit 1 + fi + else + echo "cd-hit version ${version} is not installed or not executable." + exit 1 + fi +done