FROM hysds/cuda-dev:latest

# Set an encoding to make things work smoothly.
ENV LANG en_US.UTF-8

# Set ISCE repo
ENV ISCE_ORG isce-framework

# set to root user
USER root

# install tools for RPM generation
RUN set -ex \
 && yum update -y \
 && yum groupinstall -y "development tools" \
 && yum install -y \
      make ruby-devel rpm-build rubygems \
 && gem install ffi -v 1.12.2 \
 && gem install --no-ri --no-rdoc fpm

# install isce requirements
RUN set -ex \
 && . /opt/conda/bin/activate root \
 && conda install --yes \
      cython \
      gdal \
      git \
      h5py \
      libgdal \
      pytest \
      numpy \
      fftw \
      scipy \
      scons \
      hdf4 \
      hdf5 \
      libgcc \
      libstdcxx-ng \
      cmake \
 && yum install -y uuid-devel x11-devel motif-devel jq \
    opencv opencv-devel opencv-python \
 && ln -sf /opt/conda/bin/cython /opt/conda/bin/cython3 \
 && mkdir -p /opt/isce2/src

# override system libuuid into conda env to link in libXm and libXt
RUN set -ex \
 && cd /opt/conda/lib \
 && unlink libuuid.so \
 && unlink libuuid.so.1 \
 && ln -s /lib64/libuuid.so.1.3.0 libuuid.so \
 && ln -s /lib64/libuuid.so.1.3.0 libuuid.so.1

# install libgfortran.so.3 and create missing link
RUN set -ex \
 && yum install -y gcc-gfortran \
 && cd /lib64 \
 && ( test -f libgfortran.so || ln -sv libgfortran.so.*.* libgfortran.so )

# copy repo
COPY . /opt/isce2/src/isce2

# build ISCE
RUN set -ex \
 && . /opt/conda/bin/activate root \
 && cd /opt/isce2/src/isce2 \
 && source docker/build_env.sh \
 && mkdir -p $BUILD_DIR \
 && cp docker/SConfigISCE.cuda configuration/SConfigISCE \
 && scons install \
 && cp docker/isce_env.sh $ISCE_INSTALL_ROOT \
 && cd /tmp \
 && mkdir -p /tmp/rpm-build/opt \
 && mv $ISCE_INSTALL_ROOT /tmp/rpm-build/opt \
 && curl -s https://api.github.com/repos/$ISCE_ORG/isce2/git/refs/heads/main \
    > /tmp/rpm-build/opt/isce2/version.json \
 && hash=$(cat /tmp/rpm-build/opt/isce2/version.json | jq -r .object.sha) \
 && short_hash=$(echo $hash | cut -c1-5) \
 && fpm -s dir -t rpm -C /tmp/rpm-build --name isce \
      --prefix=/ --version=2.3 --provides=isce \
      --maintainer=piyush.agram@jpl.nasa.gov \
      --description="InSAR Scientific Computing Environment v2 (${hash})"

FROM hysds/cuda-pge-base:latest

# Set an encoding to make things work smoothly.
ENV LANG en_US.UTF-8

# install ISCE from RPM
COPY --from=0 /tmp/isce-2.3-1.x86_64.rpm /tmp/isce-2.3-1.x86_64.rpm

# install isce and its minimal requirements
RUN set -ex \
 && sudo /opt/conda/bin/conda install --yes \
      gdal \
      h5py \
      libgdal \
      pytest \
      numpy \
      fftw \
      scipy \
      hdf4 \
      hdf5 \
 && sudo yum update -y \
 && sudo yum install -y uuid-devel x11-devel motif-devel gcc-gfortran \
 && cd /opt/conda/lib \
 && sudo unlink libuuid.so \
 && sudo unlink libuuid.so.1 \
 && sudo ln -s /lib64/libuuid.so.1.3.0 libuuid.so \
 && sudo ln -s /lib64/libuuid.so.1.3.0 libuuid.so.1 \
 && cd /lib64 \
 && ( test -f libgfortran.so || sudo ln -sv libgfortran.so.*.* libgfortran.so ) \
 && sudo yum install -y /tmp/isce-2.3-1.x86_64.rpm \
 && sudo yum clean all \
 && sudo rm -rf /var/cache/yum \
 && sudo rm /tmp/isce-2.3-1.x86_64.rpm
