haplotyper-battle-royale/modules/viquas/Dockerfile

249 lines
7 KiB
Docker

###
### R base image
### Based on r-ver
###
FROM debian:buster AS rver
LABEL org.label-schema.license="GPL-2.0" \
org.label-schema.vcs-url="https://github.com/rocker-org/rocker-versioned" \
org.label-schema.vendor="Rocker Project" \
maintainer="Carl Boettiger <cboettig@ropensci.org>"
ARG R_VERSION
ARG BUILD_DATE
ARG CRAN
ENV BUILD_DATE ${BUILD_DATE:-2020-04-24}
ENV R_VERSION=${R_VERSION:-3.6.3} \
CRAN=${CRAN:-https://cran.r-project.org} \
LC_ALL=en_US.UTF-8 \
LANG=en_US.UTF-8 \
TERM=xterm
RUN <<END_RUN_CMD
DEBIAN_FRONTEND=noninteractive
apt-get update && apt-get install -y --no-install-recommends \
bash-completion \
ca-certificates \
file \
fonts-texgyre \
g++ \
gfortran \
gsfonts \
libblas-dev \
libbz2-1.0 \
libcurl4 \
libicu63 \
libjpeg62-turbo \
libopenblas-dev \
libpangocairo-1.0-0 \
libpcre3 \
libpng16-16 \
libreadline7 \
libtiff5 \
liblzma5 \
locales \
make \
unzip \
zip \
zlib1g
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen en_US.utf8
/usr/sbin/update-locale LANG=en_US.UTF-8
BUILDDEPS="curl \
default-jdk \
libbz2-dev \
libcairo2-dev \
libcurl4-openssl-dev \
libpango1.0-dev \
libjpeg-dev \
libicu-dev \
libpcre3-dev \
libpng-dev \
libreadline-dev \
libtiff5-dev \
liblzma-dev \
libx11-dev \
libxt-dev \
perl \
tcl8.6-dev \
tk8.6-dev \
texinfo \
texlive-extra-utils \
texlive-fonts-recommended \
texlive-fonts-extra \
texlive-latex-recommended \
x11proto-core-dev \
xauth \
xfonts-base \
xvfb \
zlib1g-dev"
apt-get install -y --no-install-recommends $BUILDDEPS
## Download source code
curl -O https://cran.r-project.org/src/base/R-3/R-${R_VERSION}.tar.gz
## Extract source code
tar -xf R-${R_VERSION}.tar.gz
cd R-${R_VERSION}
## Set compiler flags
R_PAPERSIZE=letter \
R_BATCHSAVE="--no-save --no-restore"
R_BROWSER=xdg-open
PAGER=/usr/bin/pager
PERL=/usr/bin/perl
R_UNZIPCMD=/usr/bin/unzip
R_ZIPCMD=/usr/bin/zip
R_PRINTCMD=/usr/bin/lpr
LIBnn=lib
AWK=/usr/bin/awk
CFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g"
CXXFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g"
## Configure options
./configure --enable-R-shlib \
--enable-memory-profiling \
--with-readline \
--with-blas \
--with-tcltk \
--disable-nls \
--with-recommended-packages \
--prefix /usr/local
## Build and install
make -j $(nproc) -O
make install
## Add a library directory (for user-installed packages)
mkdir -p /usr/local/lib/R/site-library
chown root:staff /usr/local/lib/R/site-library
chmod g+ws /usr/local/lib/R/site-library
## Fix library path
sed -i '/^R_LIBS_USER=.*$/d' /usr/local/lib/R/etc/Renviron
echo "R_LIBS_USER=\${R_LIBS_USER-'/usr/local/lib/R/site-library'}" >> /usr/local/lib/R/etc/Renviron
echo "R_LIBS=\${R_LIBS-'/usr/local/lib/R/site-library:/usr/local/lib/R/library:/usr/lib/R/library'}" >> /usr/local/lib/R/etc/Renviron
echo "options(repos = c(CRAN='$CRAN'), download.file.method = 'libcurl')" >> /usr/local/lib/R/etc/Rprofile.site
## Clean up from R source install
apt-get remove --purge -y $BUILDDEPS
apt-get autoremove -y
apt-get autoclean -y
rm -rf /var/lib/apt/lists/*
END_RUN_CMD
###
### Added Bioconductor packages to r-ver
###
FROM rver as bioconductor
RUN <<END_RUN_CMD
apt-get update && apt-get install --no-install-recommends -y \
zlib1g-dev
R -e "install.packages('BiocManager', repos='https://cran.r-project.org')"
R -e "BiocManager::install('Biostrings')"
R -e "BiocManager::install('seqinr')"
apt-get autoremove -y
apt-get autoclean -y
rm -rf /var/lib/apt/lists/*
END_RUN_CMD
###
### Perl base image
###
FROM buildpack-deps:buster AS perl
LABEL maintainer="Peter Martini <PeterCMartini@GMail.com>, Zak B. Elep <zakame@cpan.org>"
RUN <<END_RUN_CMD
curl -fL https://www.cpan.org/src/5.0/perl-5.34.1.tar.xz -o perl-5.34.1.tar.xz
tar --strip-components=1 -xaf perl-5.34.1.tar.xz -C /usr/src/perl
rm perl-5.34.1.tar.xz
cat *.patch | patch -p1
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"
archBits="$(dpkg-architecture --query DEB_BUILD_ARCH_BITS)"
archFlag="$([ "$archBits" = '64' ] && echo '-Duse64bitall' || echo '-Duse64bitint')"
./Configure -Darchname="$gnuArch" "$archFlag" -Dusethreads -Duseshrplib -Dvendorprefix=/usr/local -des
make -j$(nproc)
TEST_JOBS=$(nproc) make test_harness
make install
cd /usr/src
curl -fLO https://www.cpan.org/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7047.tar.gz
tar -xzf App-cpanminus-1.7047.tar.gz && cd App-cpanminus-1.7047 && perl bin/cpanm . && cd /root
cpanm IO::Socket::SSL
curl -fL https://raw.githubusercontent.com/skaji/cpm/0.997011/cpm -o /usr/local/bin/cpm
chmod +x /usr/local/bin/cpm
rm -fr /root/.cpanm /usr/src/perl /usr/src/App-cpanminus-1.7047*
END_RUN_CMD
###
### Added bioperl packaged
###
FROM perl AS bioperl
RUN <<END_RUN_CMD
cpanm -n -v Bio::Seq Bio::SeqIO Perl4::CoreLibs
END_RUN_CMD
###
### Samtools build
###
FROM buildpack-deps:buster AS samtools
ARG SAMTOOLS_VERSION=1.2
RUN <<END_RUN_CMD
curl -L "https://github.com/samtools/samtools/releases/download/${SAMTOOLS_VERSION}/samtools-${SAMTOOLS_VERSION}.tar.bz2" | tar xvj
cd samtools-${SAMTOOLS_VERSION} && make && make install && cd ..
END_RUN_CMD
###
### Viquas extraction
###
FROM buildpack-deps:buster AS viquas
RUN <<END_RUN_CMD
mkdir /viquas
curl -L "https://master.dl.sourceforge.net/project/viquas/ViQuaS1.3.tar.gz" | tar xvz -C /viquas --strip-components=1
END_RUN_CMD
###
### Final build
###
FROM debian:buster as final
RUN <<END_RUN_CMD
apt-get update && apt-get install -y --no-install-recommends \
bash-completion \
file \
fonts-texgyre \
gfortran \
gsfonts \
libblas-dev \
libbz2-1.0 \
libcurl4 \
libicu63 \
libjpeg62-turbo \
libncurses5-dev \
libopenblas-dev \
libpangocairo-1.0-0 \
libpcre3 \
libpng16-16 \
libreadline7 \
libtiff5 \
liblzma5 \
locales \
procps \
unzip \
zip \
zlib1g
apt-get autoremove -y
apt-get autoclean -y
rm -rf /var/lib/apt/lists/*
END_RUN_CMD
COPY --from=bioconductor /usr/local/bin /usr/local/bin
COPY --from=bioconductor /usr/local/lib /usr/local/lib
COPY --from=bioconductor /usr/local/share /usr/local/share
COPY --from=bioperl /usr/local/bin /usr/local/bin
COPY --from=bioperl /usr/local/lib /usr/local/lib
COPY --from=bioperl /usr/local/share /usr/local/share
COPY --from=bioperl /usr/share/perl /usr/share/perl
COPY --from=samtools /usr/local/bin /usr/local/bin
COPY --from=samtools /usr/local/lib /usr/local/lib
COPY --from=samtools /usr/local/share /usr/local/share
COPY --from=viquas --chmod=777 /viquas /viquas
COPY --chmod=755 viquas /usr/local/bin/viquas
ENTRYPOINT [ "viquas" ]