Bootstrap: docker
From: ubuntu:20.04
%files
run_geobamdata.R /opt/
geobamdata_0.1.0.tar.gz /opt/
%environment
# Point to OMPI binaries, libraries, man pages
export OMPI_DIR=/opt/ompi
export PATH="$OMPI_DIR/bin:$PATH"
export LD_LIBRARY_PATH="$OMPI_DIR/lib:$LD_LIBRARY_PATH"
export MANPATH="$OMPI_DIR/share/man:$MANPATH"
%post
# Install packages needed by OpenMPI and geoBAM
apt update
echo "America/New_York" | tee /etc/timezone
DEBIAN_FRONTEND=noninteractive apt install -y tzdata
apt -y install locales gnupg software-properties-common build-essential libcurl4-gnutls-dev libxml2-dev libssl-dev wget git bash gcc gfortran g++ make file libnetcdf-dev libnetcdff-dev
locale-gen en_US.UTF-8
# Install OpenMPI
export OMPI_DIR=/opt/ompi
export OMPI_VERSION=4.1.0
mkdir -p /tmp/ompi
mkdir -p /opt
# Download
cd /tmp/ompi && wget -O openmpi-$OMPI_VERSION.tar.bz2 $OMPI_URL && tar -xjf openmpi-$OMPI_VERSION.tar.bz2
# Compile and install
cd /tmp/ompi/openmpi-$OMPI_VERSION && ./configure --prefix=$OMPI_DIR && make -j8 install
# Set env variables so we can compile our application
export PATH=$OMPI_DIR/bin:$PATH
export LD_LIBRARY_PATH=$OMPI_DIR/lib:$LD_LIBRARY_PATH
# Install R and geoBAM
apt update
apt -y install r-base r-base-dev
/usr/bin/Rscript -e 'Sys.setenv(DOWNLOAD_STATIC_LIBV8 = 1); install.packages("V8")'
/usr/bin/Rscript -e 'devtools::install_github("craigbrinkerhoff/geoBAMr", force = TRUE)'
# Install Rmpi and doMPI
/usr/bin/R CMD INSTALL --configure-args="--with-mpi=/opt/ompi" /opt/Rmpi_0.6-9.1.tar.gz
# Install geobamdata
/usr/bin/R CMD INSTALL /opt/geobamdata_0.1.0.tar.gz
/usr/bin/rm /opt/Rmpi_0.6-9.1.tar.gz
/usr/bin/rm /opt/geobamdata_0.1.0.tar.gz
# Create directories for geobamdata
mkdir -p /opt/data/input
mkdir -p /opt/data/output
%runscript
exec /usr/bin/Rscript /opt/run_geobamdata.R "$@"
%labels
Version v0.0.1
Name rmpi
%help
This container has OpenMPI installed alongside Rmpi with geobamdata copied to the /opt directory.