Skip to content

Commit b92c946

Browse files
authored
Merge pull request #40 from Bioconductor/install_bioc_deps
Separate out system dependencies of Bioconductor into a folder `bioc_scripts` --> with `install_bioc_sysdeps.sh` as the place for all sys deps.
2 parents ea5985e + 723ca91 commit b92c946

4 files changed

Lines changed: 156 additions & 134 deletions

File tree

.github/workflows/test-images.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
test-built-containers:
1414
strategy:
1515
matrix:
16-
container-tag: [devel, RELEASE_3_13]
16+
container-tag: [devel, RELEASE_3_14]
1717
runs-on: ubuntu-latest
1818
container: bioconductor/bioconductor_docker:${{ matrix.container-tag }}
1919

Dockerfile

Lines changed: 14 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ ARG BIOCONDUCTOR_VERSION=3.15
77
##### IMPORTANT ########
88
## The PATCH version number should be incremented each time
99
## there is a change in the Dockerfile.
10-
ARG BIOCONDUCTOR_PATCH=14
10+
ARG BIOCONDUCTOR_PATCH=15
11+
1112
ARG BIOCONDUCTOR_DOCKER_VERSION=${BIOCONDUCTOR_VERSION}.${BIOCONDUCTOR_PATCH}
1213

1314
LABEL name="bioconductor/bioconductor_docker" \
@@ -18,147 +19,28 @@ LABEL name="bioconductor/bioconductor_docker" \
1819
description="Bioconductor docker image with system dependencies to install all packages." \
1920
license="Artistic-2.0"
2021

21-
# nuke cache dirs before installing pkgs; tip from Dirk E fixes broken img
22-
RUN rm -f /var/lib/dpkg/available && rm -rf /var/cache/apt/*
23-
24-
# issues with '/var/lib/dpkg/available' not found
25-
# this will recreate
26-
RUN dpkg --clear-avail
27-
28-
# This is to avoid the error
29-
# 'debconf: unable to initialize frontend: Dialog'
30-
ENV DEBIAN_FRONTEND noninteractive
31-
32-
# Update apt-get
33-
RUN apt-get update \
34-
&& apt-get install -y --no-install-recommends apt-utils \
35-
&& apt-get install -y --no-install-recommends \
36-
## Basic deps
37-
gdb \
38-
libxml2-dev \
39-
python3-pip \
40-
libz-dev \
41-
liblzma-dev \
42-
libbz2-dev \
43-
libpng-dev \
44-
libgit2-dev \
45-
## sys deps from bioc_full
46-
pkg-config \
47-
fortran77-compiler \
48-
byacc \
49-
automake \
50-
curl \
51-
## This section installs libraries
52-
libpcre2-dev \
53-
libnetcdf-dev \
54-
libhdf5-serial-dev \
55-
libfftw3-dev \
56-
libopenbabel-dev \
57-
libopenmpi-dev \
58-
libxt-dev \
59-
libudunits2-dev \
60-
libgeos-dev \
61-
libproj-dev \
62-
libcairo2-dev \
63-
libtiff5-dev \
64-
libreadline-dev \
65-
libgsl0-dev \
66-
libgslcblas0 \
67-
libgtk2.0-dev \
68-
libgl1-mesa-dev \
69-
libglu1-mesa-dev \
70-
libgmp3-dev \
71-
libhdf5-dev \
72-
libncurses-dev \
73-
libbz2-dev \
74-
libxpm-dev \
75-
liblapack-dev \
76-
libv8-dev \
77-
libgtkmm-2.4-dev \
78-
libmpfr-dev \
79-
libmodule-build-perl \
80-
libapparmor-dev \
81-
libprotoc-dev \
82-
librdf0-dev \
83-
libmagick++-dev \
84-
libsasl2-dev \
85-
libpoppler-cpp-dev \
86-
libprotobuf-dev \
87-
libpq-dev \
88-
libperl-dev \
89-
## software - perl extentions and modules
90-
libarchive-extract-perl \
91-
libfile-copy-recursive-perl \
92-
libcgi-pm-perl \
93-
libdbi-perl \
94-
libdbd-mysql-perl \
95-
libxml-simple-perl \
96-
libmysqlclient-dev \
97-
default-libmysqlclient-dev \
98-
libgdal-dev \
99-
## new libs
100-
libglpk-dev \
101-
libeigen3-dev \
102-
## Databases and other software
103-
sqlite \
104-
openmpi-bin \
105-
mpi-default-bin \
106-
openmpi-common \
107-
openmpi-doc \
108-
tcl8.6-dev \
109-
tk-dev \
110-
default-jdk \
111-
imagemagick \
112-
tabix \
113-
ggobi \
114-
graphviz \
115-
protobuf-compiler \
116-
jags \
117-
## Additional resources
118-
xfonts-100dpi \
119-
xfonts-75dpi \
120-
biber \
121-
libsbml5-dev \
122-
libzmq3-dev \
123-
## python3 dev
124-
python3-dev \
125-
&& apt-get clean \
126-
&& rm -rf /var/lib/apt/lists/*
127-
128-
## Python installations
129-
RUN pip3 install sklearn \
130-
pandas \
131-
pyyaml
132-
133-
## FIXME
134-
## These two libraries don't install in the above section--WHY?
135-
RUN apt-get update \
136-
&& apt-get -y --no-install-recommends install \
137-
libmariadb-dev-compat \
138-
libjpeg-dev \
139-
libjpeg-turbo8-dev \
140-
libjpeg8-dev \
141-
&& apt-get clean \
142-
&& rm -rf /var/lib/apt/lists/*
22+
## Add Bioconductor system dependencies
23+
ADD bioc_scripts/install_bioc_sysdeps.sh /tmp/
24+
RUN bash /tmp/install_bioc_sysdeps.sh
14325

14426
## Add host-site-library
14527
RUN echo "R_LIBS=/usr/local/lib/R/host-site-library:\${R_LIBS}" > /usr/local/lib/R/etc/Renviron.site
14628

147-
ADD install.R /tmp/
148-
29+
## Install specific version of BiocManager
30+
ADD bioc_scripts/install.R /tmp/
14931
RUN R -f /tmp/install.R
15032

15133
# DEVEL: Add sys env variables to DEVEL image
15234
# Variables in Renviron.site are made available inside of R.
15335
# Add libsbml CFLAGS
15436
RUN curl -O http://bioconductor.org/checkResults/devel/bioc-LATEST/Renviron.bioc \
155-
&& cat Renviron.bioc | grep -o '^[^#]*' | sed 's/export //g' >>/etc/environment \
156-
&& cat Renviron.bioc >> /usr/local/lib/R/etc/Renviron.site \
157-
&& echo BIOCONDUCTOR_VERSION=${BIOCONDUCTOR_VERSION} >> /usr/local/lib/R/etc/Renviron.site \
158-
&& echo BIOCONDUCTOR_DOCKER_VERSION=${BIOCONDUCTOR_DOCKER_VERSION} >> /usr/local/lib/R/etc/Renviron.site \
159-
&& echo 'LIBSBML_CFLAGS="-I/usr/include"' >> /usr/local/lib/R/etc/Renviron.site \
160-
&& echo 'LIBSBML_LIBS="-lsbml"' >> /usr/local/lib/R/etc/Renviron.site \
161-
&& rm -rf Renviron.bioc
37+
&& cat Renviron.bioc | grep -o '^[^#]*' | sed 's/export //g' >>/etc/environment \
38+
&& cat Renviron.bioc >> /usr/local/lib/R/etc/Renviron.site \
39+
&& echo BIOCONDUCTOR_VERSION=${BIOCONDUCTOR_VERSION} >> /usr/local/lib/R/etc/Renviron.site \
40+
&& echo BIOCONDUCTOR_DOCKER_VERSION=${BIOCONDUCTOR_DOCKER_VERSION} >> /usr/local/lib/R/etc/Renviron.site \
41+
&& echo 'LIBSBML_CFLAGS="-I/usr/include"' >> /usr/local/lib/R/etc/Renviron.site \
42+
&& echo 'LIBSBML_LIBS="-lsbml"' >> /usr/local/lib/R/etc/Renviron.site \
43+
&& rm -rf Renviron.bioc
16244

16345
ENV LIBSBML_CFLAGS="-I/usr/include"
16446
ENV LIBSBML_LIBS="-lsbml"

install.R renamed to bioc_scripts/install.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ install.packages("BiocManager", repos="https://cran.rstudio.com")
22

33
BiocManager::install(version="3.15", update=TRUE, ask=FALSE)
44

5-
BiocManager::install(c('devtools', 'AnVIL'))
5+
BiocManager::install('devtools')
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# This is to avoid the error
5+
# 'debconf: unable to initialize frontend: Dialog'
6+
export DEBIAN_FRONTEND=noninteractive
7+
8+
## Update apt-get
9+
apt-get update
10+
11+
apt-get install -y --no-install-recommends apt-utils
12+
13+
## Basic Deps
14+
apt-get install -y --no-install-recommends \
15+
gdb \
16+
libxml2-dev \
17+
python3-pip \
18+
libz-dev \
19+
liblzma-dev \
20+
libbz2-dev \
21+
libpng-dev \
22+
libgit2-dev
23+
24+
## sys deps from bioc_full
25+
apt-get install -y --no-install-recommends \
26+
pkg-config \
27+
fortran77-compiler \
28+
byacc \
29+
automake \
30+
curl \
31+
cmake
32+
33+
## This section installs libraries
34+
apt-get install -y --no-install-recommends \
35+
libpcre2-dev \
36+
libnetcdf-dev \
37+
libhdf5-serial-dev \
38+
libfftw3-dev \
39+
libopenbabel-dev \
40+
libopenmpi-dev \
41+
libxt-dev \
42+
libudunits2-dev \
43+
libgeos-dev \
44+
libproj-dev \
45+
libcairo2-dev \
46+
libtiff5-dev \
47+
libreadline-dev \
48+
libgsl0-dev \
49+
libgslcblas0 \
50+
libgtk2.0-dev \
51+
libgl1-mesa-dev \
52+
libglu1-mesa-dev \
53+
libgmp3-dev \
54+
libhdf5-dev \
55+
libncurses-dev \
56+
libxpm-dev \
57+
liblapack-dev \
58+
libv8-dev \
59+
libgtkmm-2.4-dev \
60+
libmpfr-dev \
61+
libmodule-build-perl \
62+
libapparmor-dev \
63+
libprotoc-dev \
64+
librdf0-dev \
65+
libmagick++-dev \
66+
libsasl2-dev \
67+
libpoppler-cpp-dev \
68+
libprotobuf-dev \
69+
libpq-dev
70+
71+
## software - perl extentions and modules
72+
apt-get install -y --no-install-recommends \
73+
libperl-dev \
74+
libarchive-extract-perl \
75+
libfile-copy-recursive-perl \
76+
libcgi-pm-perl \
77+
libdbi-perl \
78+
libdbd-mysql-perl \
79+
libxml-simple-perl
80+
81+
## new libs
82+
apt-get install -y --no-install-recommends \
83+
libglpk-dev \
84+
libeigen3-dev
85+
86+
## Databases and other software
87+
apt-get install -y --no-install-recommends \
88+
sqlite \
89+
openmpi-bin \
90+
mpi-default-bin \
91+
openmpi-common \
92+
openmpi-doc \
93+
tcl8.6-dev \
94+
tk-dev \
95+
default-jdk \
96+
imagemagick \
97+
tabix \
98+
ggobi \
99+
graphviz \
100+
protobuf-compiler \
101+
jags
102+
103+
## Additional resources
104+
apt-get install -y --no-install-recommends \
105+
xfonts-100dpi \
106+
xfonts-75dpi \
107+
biber \
108+
libsbml5-dev \
109+
libzmq3-dev \
110+
python3-dev
111+
112+
## More additional resources
113+
## libavfilter-dev - <infinityFlow, host of other packages>
114+
## mono-runtime - <rawrr, MsBackendRawFileReader>
115+
## libfuse-dev - <Travel>
116+
## ocl-icd-opencl-dev - <gpuMagic> - but machine needs to be a GPU--otherwise it's useless
117+
apt-get -y --no-install-recommends install \
118+
libmariadb-dev-compat \
119+
libjpeg-dev \
120+
libjpeg-turbo8-dev \
121+
libjpeg8-dev \
122+
libavfilter-dev \
123+
libfuse-dev \
124+
mono-runtime \
125+
ocl-icd-opencl-dev
126+
127+
## Python installations
128+
pip3 install sklearn pandas pyyaml
129+
130+
## libgdal is needed for sf
131+
apt-get install -y --no-install-recommends \
132+
libgdal-dev \
133+
default-libmysqlclient-dev \
134+
libmysqlclient-dev
135+
136+
## clean up
137+
apt-get clean
138+
apt-get autoremove -y
139+
apt-get autoclean -y
140+
rm -rf /var/lib/apt/lists/*

0 commit comments

Comments
 (0)