diff --git a/.github/workflows/test-images.yaml b/.github/workflows/test-images.yaml index b4f69f8..654d9fd 100644 --- a/.github/workflows/test-images.yaml +++ b/.github/workflows/test-images.yaml @@ -13,7 +13,7 @@ jobs: test-built-containers: strategy: matrix: - container-tag: [devel, RELEASE_3_13] + container-tag: [devel, RELEASE_3_14] runs-on: ubuntu-latest container: bioconductor/bioconductor_docker:${{ matrix.container-tag }} diff --git a/Dockerfile b/Dockerfile index 6f47b01..a46294f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,8 @@ ARG BIOCONDUCTOR_VERSION=3.15 ##### IMPORTANT ######## ## The PATCH version number should be incremented each time ## there is a change in the Dockerfile. -ARG BIOCONDUCTOR_PATCH=14 +ARG BIOCONDUCTOR_PATCH=15 + ARG BIOCONDUCTOR_DOCKER_VERSION=${BIOCONDUCTOR_VERSION}.${BIOCONDUCTOR_PATCH} LABEL name="bioconductor/bioconductor_docker" \ @@ -18,147 +19,28 @@ LABEL name="bioconductor/bioconductor_docker" \ description="Bioconductor docker image with system dependencies to install all packages." \ license="Artistic-2.0" -# nuke cache dirs before installing pkgs; tip from Dirk E fixes broken img -RUN rm -f /var/lib/dpkg/available && rm -rf /var/cache/apt/* - -# issues with '/var/lib/dpkg/available' not found -# this will recreate -RUN dpkg --clear-avail - -# This is to avoid the error -# 'debconf: unable to initialize frontend: Dialog' -ENV DEBIAN_FRONTEND noninteractive - -# Update apt-get -RUN apt-get update \ - && apt-get install -y --no-install-recommends apt-utils \ - && apt-get install -y --no-install-recommends \ - ## Basic deps - gdb \ - libxml2-dev \ - python3-pip \ - libz-dev \ - liblzma-dev \ - libbz2-dev \ - libpng-dev \ - libgit2-dev \ - ## sys deps from bioc_full - pkg-config \ - fortran77-compiler \ - byacc \ - automake \ - curl \ - ## This section installs libraries - libpcre2-dev \ - libnetcdf-dev \ - libhdf5-serial-dev \ - libfftw3-dev \ - libopenbabel-dev \ - libopenmpi-dev \ - libxt-dev \ - libudunits2-dev \ - libgeos-dev \ - libproj-dev \ - libcairo2-dev \ - libtiff5-dev \ - libreadline-dev \ - libgsl0-dev \ - libgslcblas0 \ - libgtk2.0-dev \ - libgl1-mesa-dev \ - libglu1-mesa-dev \ - libgmp3-dev \ - libhdf5-dev \ - libncurses-dev \ - libbz2-dev \ - libxpm-dev \ - liblapack-dev \ - libv8-dev \ - libgtkmm-2.4-dev \ - libmpfr-dev \ - libmodule-build-perl \ - libapparmor-dev \ - libprotoc-dev \ - librdf0-dev \ - libmagick++-dev \ - libsasl2-dev \ - libpoppler-cpp-dev \ - libprotobuf-dev \ - libpq-dev \ - libperl-dev \ - ## software - perl extentions and modules - libarchive-extract-perl \ - libfile-copy-recursive-perl \ - libcgi-pm-perl \ - libdbi-perl \ - libdbd-mysql-perl \ - libxml-simple-perl \ - libmysqlclient-dev \ - default-libmysqlclient-dev \ - libgdal-dev \ - ## new libs - libglpk-dev \ - libeigen3-dev \ - ## Databases and other software - sqlite \ - openmpi-bin \ - mpi-default-bin \ - openmpi-common \ - openmpi-doc \ - tcl8.6-dev \ - tk-dev \ - default-jdk \ - imagemagick \ - tabix \ - ggobi \ - graphviz \ - protobuf-compiler \ - jags \ - ## Additional resources - xfonts-100dpi \ - xfonts-75dpi \ - biber \ - libsbml5-dev \ - libzmq3-dev \ - ## python3 dev - python3-dev \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -## Python installations -RUN pip3 install sklearn \ - pandas \ - pyyaml - -## FIXME -## These two libraries don't install in the above section--WHY? -RUN apt-get update \ - && apt-get -y --no-install-recommends install \ - libmariadb-dev-compat \ - libjpeg-dev \ - libjpeg-turbo8-dev \ - libjpeg8-dev \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* +## Add Bioconductor system dependencies +ADD bioc_scripts/install_bioc_sysdeps.sh /tmp/ +RUN bash /tmp/install_bioc_sysdeps.sh ## Add host-site-library RUN echo "R_LIBS=/usr/local/lib/R/host-site-library:\${R_LIBS}" > /usr/local/lib/R/etc/Renviron.site -ADD install.R /tmp/ - +## Install specific version of BiocManager +ADD bioc_scripts/install.R /tmp/ RUN R -f /tmp/install.R # DEVEL: Add sys env variables to DEVEL image # Variables in Renviron.site are made available inside of R. # Add libsbml CFLAGS RUN curl -O http://bioconductor.org/checkResults/devel/bioc-LATEST/Renviron.bioc \ - && cat Renviron.bioc | grep -o '^[^#]*' | sed 's/export //g' >>/etc/environment \ - && cat Renviron.bioc >> /usr/local/lib/R/etc/Renviron.site \ - && echo BIOCONDUCTOR_VERSION=${BIOCONDUCTOR_VERSION} >> /usr/local/lib/R/etc/Renviron.site \ - && echo BIOCONDUCTOR_DOCKER_VERSION=${BIOCONDUCTOR_DOCKER_VERSION} >> /usr/local/lib/R/etc/Renviron.site \ - && echo 'LIBSBML_CFLAGS="-I/usr/include"' >> /usr/local/lib/R/etc/Renviron.site \ - && echo 'LIBSBML_LIBS="-lsbml"' >> /usr/local/lib/R/etc/Renviron.site \ - && rm -rf Renviron.bioc + && cat Renviron.bioc | grep -o '^[^#]*' | sed 's/export //g' >>/etc/environment \ + && cat Renviron.bioc >> /usr/local/lib/R/etc/Renviron.site \ + && echo BIOCONDUCTOR_VERSION=${BIOCONDUCTOR_VERSION} >> /usr/local/lib/R/etc/Renviron.site \ + && echo BIOCONDUCTOR_DOCKER_VERSION=${BIOCONDUCTOR_DOCKER_VERSION} >> /usr/local/lib/R/etc/Renviron.site \ + && echo 'LIBSBML_CFLAGS="-I/usr/include"' >> /usr/local/lib/R/etc/Renviron.site \ + && echo 'LIBSBML_LIBS="-lsbml"' >> /usr/local/lib/R/etc/Renviron.site \ + && rm -rf Renviron.bioc ENV LIBSBML_CFLAGS="-I/usr/include" ENV LIBSBML_LIBS="-lsbml" diff --git a/install.R b/bioc_scripts/install.R similarity index 74% rename from install.R rename to bioc_scripts/install.R index bcaa9df..b10690f 100644 --- a/install.R +++ b/bioc_scripts/install.R @@ -2,4 +2,4 @@ install.packages("BiocManager", repos="https://cran.rstudio.com") BiocManager::install(version="3.15", update=TRUE, ask=FALSE) -BiocManager::install(c('devtools', 'AnVIL')) +BiocManager::install('devtools') diff --git a/bioc_scripts/install_bioc_sysdeps.sh b/bioc_scripts/install_bioc_sysdeps.sh new file mode 100644 index 0000000..c04951c --- /dev/null +++ b/bioc_scripts/install_bioc_sysdeps.sh @@ -0,0 +1,140 @@ +#!/bin/bash +set -e + +# This is to avoid the error +# 'debconf: unable to initialize frontend: Dialog' +export DEBIAN_FRONTEND=noninteractive + +## Update apt-get +apt-get update + +apt-get install -y --no-install-recommends apt-utils + +## Basic Deps +apt-get install -y --no-install-recommends \ + gdb \ + libxml2-dev \ + python3-pip \ + libz-dev \ + liblzma-dev \ + libbz2-dev \ + libpng-dev \ + libgit2-dev + +## sys deps from bioc_full +apt-get install -y --no-install-recommends \ + pkg-config \ + fortran77-compiler \ + byacc \ + automake \ + curl \ + cmake + +## This section installs libraries +apt-get install -y --no-install-recommends \ + libpcre2-dev \ + libnetcdf-dev \ + libhdf5-serial-dev \ + libfftw3-dev \ + libopenbabel-dev \ + libopenmpi-dev \ + libxt-dev \ + libudunits2-dev \ + libgeos-dev \ + libproj-dev \ + libcairo2-dev \ + libtiff5-dev \ + libreadline-dev \ + libgsl0-dev \ + libgslcblas0 \ + libgtk2.0-dev \ + libgl1-mesa-dev \ + libglu1-mesa-dev \ + libgmp3-dev \ + libhdf5-dev \ + libncurses-dev \ + libxpm-dev \ + liblapack-dev \ + libv8-dev \ + libgtkmm-2.4-dev \ + libmpfr-dev \ + libmodule-build-perl \ + libapparmor-dev \ + libprotoc-dev \ + librdf0-dev \ + libmagick++-dev \ + libsasl2-dev \ + libpoppler-cpp-dev \ + libprotobuf-dev \ + libpq-dev + +## software - perl extentions and modules +apt-get install -y --no-install-recommends \ + libperl-dev \ + libarchive-extract-perl \ + libfile-copy-recursive-perl \ + libcgi-pm-perl \ + libdbi-perl \ + libdbd-mysql-perl \ + libxml-simple-perl + +## new libs +apt-get install -y --no-install-recommends \ + libglpk-dev \ + libeigen3-dev + +## Databases and other software +apt-get install -y --no-install-recommends \ + sqlite \ + openmpi-bin \ + mpi-default-bin \ + openmpi-common \ + openmpi-doc \ + tcl8.6-dev \ + tk-dev \ + default-jdk \ + imagemagick \ + tabix \ + ggobi \ + graphviz \ + protobuf-compiler \ + jags + +## Additional resources +apt-get install -y --no-install-recommends \ + xfonts-100dpi \ + xfonts-75dpi \ + biber \ + libsbml5-dev \ + libzmq3-dev \ + python3-dev + +## More additional resources +## libavfilter-dev - +## mono-runtime - +## libfuse-dev - +## ocl-icd-opencl-dev - - but machine needs to be a GPU--otherwise it's useless +apt-get -y --no-install-recommends install \ + libmariadb-dev-compat \ + libjpeg-dev \ + libjpeg-turbo8-dev \ + libjpeg8-dev \ + libavfilter-dev \ + libfuse-dev \ + mono-runtime \ + ocl-icd-opencl-dev + +## Python installations +pip3 install sklearn pandas pyyaml + +## libgdal is needed for sf +apt-get install -y --no-install-recommends \ + libgdal-dev \ + default-libmysqlclient-dev \ + libmysqlclient-dev + +## clean up +apt-get clean +apt-get autoremove -y +apt-get autoclean -y +rm -rf /var/lib/apt/lists/*