From b684ef24ad4620c5ee2eda8b227712b3d6399aa6 Mon Sep 17 00:00:00 2001 From: George Artavanis Date: Wed, 29 Apr 2026 13:33:26 -0400 Subject: [PATCH 1/5] Create codespace with existing dockerfile --- .devcontainer/Dockerfile | 186 ++++++++++++++++++++++++++++++++ .devcontainer/devcontainer.json | 8 ++ 2 files changed, 194 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..0a6c0b2 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,186 @@ +FROM --platform=linux/amd64 quay.io/jupyter/datascience-notebook + +SHELL ["/bin/bash", "+o", "pipefail", "-c"] + +# Non interactive mode +ENV DEBIAN_FRONTEND noninteractive + +USER root +# Fetch the latest definitions of packages +RUN apt-get update && \ + ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime && \ + apt-get install -y tzdata && \ + dpkg-reconfigure --frontend noninteractive tzdata && \ + apt-get install -y \ + build-essential \ + curl \ + libcurl4 \ + git \ + vim \ + gfortran \ + libopenblas-dev \ + liblapack-dev \ + openssh-client \ + openssh-server \ + openmpi-bin \ + libopenmpi-dev \ + python3 \ + python3-pip \ + python3-venv \ + tcl-dev \ + tk-dev + +USER jovyan +WORKDIR /home/jovyan/ +ENV BASE_PATH /home/jovyan/ + +RUN mkdir -p \ + $BASE_PATH/parflow/build \ + $BASE_PATH/parflow/dependencies/cmake \ + $BASE_PATH/parflow/dependencies/silo-src \ + $BASE_PATH/parflow/dependencies/hdf5-src \ + $BASE_PATH/parflow/dependencies/hypre-src \ + $BASE_PATH/parflow/dependencies/netcdf-src + +# ----------------------------------------------------------------------------- +# Setup CMake 3.1 8.2 +# ----------------------------------------------------------------------------- + +ARG CMAKE_URL=https://cmake.org/files/LatestRelease/cmake-3.29.0-linux-x86_64.tar.gz + +RUN cd $BASE_PATH/parflow/dependencies/cmake && \ + curl -L $CMAKE_URL | tar --strip-components=1 -xzv + +ENV CMAKE $BASE_PATH/parflow/dependencies/cmake/bin/cmake +ENV CTEST $BASE_PATH/parflow/dependencies/cmake/bin/ctest + +# ----------------------------------------------------------------------------- +# Install HDF5 +# ----------------------------------------------------------------------------- + +ARG HDF5_URL=https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0/src/hdf5-1.12.0.tar.gz + +ENV HDF5_DIR /opt/hdf5 + +WORKDIR $BASE_PATH/parflow/dependencies/hdf5-src +RUN curl -L $HDF5_URL | tar --strip-components=1 -xzv && \ + CC=mpicc ./configure \ + --prefix=$HDF5_DIR \ + --enable-parallel && \ + make + +USER root +RUN make install +USER jovyan + +# ----------------------------------------------------------------------------- +# Install NetCDF +# ----------------------------------------------------------------------------- + +ARG NETCDF_URL=https://github.com/Unidata/netcdf-c/archive/v4.7.4.tar.gz + +ENV NETCDF_DIR /opt/netcdf + +WORKDIR $BASE_PATH/parflow/dependencies/netcdf-src +RUN curl -L $NETCDF_URL | tar --strip-components=1 -xzv && \ + CC=mpicc CPPFLAGS=-I$HDF5_DIR/include LDFLAGS=-L$HDF5_DIR/lib \ + ./configure --disable-shared --disable-dap --prefix=${NETCDF_DIR} && \ + make + +USER root +RUN make install +USER jovyan + +# ----------------------------------------------------------------------------- +# Install SILO +# ----------------------------------------------------------------------------- + +#ARG SILO_URL=https://wci.llnl.gov/sites/wci/files/2021-01/silo-4.10.2.tgz + +#ENV SILO_DIR /opt/silo + +#WORKDIR $BASE_PATH/parflow/dependencies/silo-src +#RUN curl -L $SILO_URL | tar --strip-components=1 -xzv && \ +# ./configure --prefix=$SILO_DIR --disable-silex --disable-hzip --disable-fpzip && \ +# make + +#USER root +#RUN make install +#USER jovyan + + +# ----------------------------------------------------------------------------- +# Install Hypre +# ----------------------------------------------------------------------------- + +ARG HYPRE_VERSION=v2.19.0 + +ENV HYPRE_DIR /opt/hypre + +WORKDIR $BASE_PATH/parflow/dependencies/hypre-src +RUN git clone https://github.com/hypre-space/hypre.git --single-branch --branch $HYPRE_VERSION + +WORKDIR $BASE_PATH/parflow/dependencies/hypre-src/hypre/src +RUN ./configure --prefix=$HYPRE_DIR --with-MPI + +USER root +RUN make install +USER jovyan + + +# ----------------------------------------------------------------------------- +# Install Parflow +# ----------------------------------------------------------------------------- + +#COPY --chown=ubuntu:ubuntu . $BASE_PATH/parflow/src +#RUN pip3 install -r $BASE_PATH/parflow/src/pftools/python/requirements_all.txt + + +# ARG PARFLOW_VERSION=master +# ARG PARFLOW_GIT_URL= +# RUN git clone \ +# --recursive --single-branch \ +# --branch $PARFLOW_VERSION \ +# $PARFLOW_GIT_URL \ +# $BASE_PATH/parflow/src + +RUN git clone -b master --depth 1 --single-branch https://github.com/parflow/parflow.git $BASE_PATH/parflow/src + +RUN $CMAKE \ + -S $BASE_PATH/parflow/src \ + -B $BASE_PATH/parflow/build \ + -D CMAKE_BUILD_TYPE=Release \ + -D HDF5_ROOT=$HDF5_DIR \ + -D PARFLOW_ENABLE_HDF5=TRUE \ + -D HYPRE_ROOT=$HYPRE_DIR \ + -D PARFLOW_ENABLE_HYPRE=TRUE \ + -D PARFLOW_ENABLE_SILO=TRUE \ + -D SILO_ROOT=$SILO_DIR \ + -D PARFLOW_HAVE_CLM=TRUE \ + -D PARFLOW_ENABLE_PYTHON=TRUE \ + -D PARFLOW_ENABLE_TIMING=TRUE \ + -D PARFLOW_AMPS_LAYER=mpi1 \ + -D PARFLOW_AMPS_SEQUENTIAL_IO=TRUE \ + -D PARFLOW_ENABLE_NETCDF=TRUE \ + -D NETCDF_DIR=$NETCDF_DIR \ + -D CURL_LIBRARY=/usr/lib/x86_64-linux-gnu/libcurl.so.4 + +RUN $CMAKE --build $BASE_PATH/parflow/build + +USER root +RUN $CMAKE --install $BASE_PATH/parflow/build --prefix /opt/parflow +USER jovyan + +RUN pip3 install \ + "subsettools>=2.0.1" \ + "hf_hydrodata>=1.4.3" \ + "matplotlib>=3.7.2" \ + "bokeh>=3.3.0" \ + jupyter \ + ipykernel + +ENV PARFLOW_DIR /opt/parflow/ +ENV LD_LIBRARY_PATH=/opt/parflow/lib:$LD_LIBRARY_PATH +ENV LD_LIBRARY_PATH=/opt/hypre/lib:$LD_LIBRARY_PATH +ENV LD_LIBRARY_PATH=/usr/include/:$LD_LIBRARY_PATH +WORKDIR /home/jovyan \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..9e1acc3 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,8 @@ +{ + "name": "Subsetting ShortCourse", + "build": { + "dockerfile": "Dockerfile", + "context": ".." + }, + "postCreateCommand": "python -m ipykernel install --user --name subsetting-shortcourse --display-name \"Python (Subsetting ShortCourse)\"" +} From b96265cdcbfffc7cf4c5ec43fb099d87b32b08d8 Mon Sep 17 00:00:00 2001 From: George Artavanis Date: Wed, 29 Apr 2026 13:43:47 -0400 Subject: [PATCH 2/5] Fix cmake version --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 0a6c0b2..80c6c5a 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -46,7 +46,7 @@ RUN mkdir -p \ # Setup CMake 3.1 8.2 # ----------------------------------------------------------------------------- -ARG CMAKE_URL=https://cmake.org/files/LatestRelease/cmake-3.29.0-linux-x86_64.tar.gz +ARG CMAKE_URL=https://cmake.org/files/v3.29/cmake-3.29.0-linux-x86_64.tar.gz RUN cd $BASE_PATH/parflow/dependencies/cmake && \ curl -L $CMAKE_URL | tar --strip-components=1 -xzv From 8c03cd98b4d43ed8b375e06c7788fbdd13d11282 Mon Sep 17 00:00:00 2001 From: George Artavanis Date: Wed, 29 Apr 2026 14:12:30 -0400 Subject: [PATCH 3/5] Fix linker issues --- .devcontainer/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 80c6c5a..ae4751a 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -162,7 +162,8 @@ RUN $CMAKE \ -D PARFLOW_AMPS_LAYER=mpi1 \ -D PARFLOW_AMPS_SEQUENTIAL_IO=TRUE \ -D PARFLOW_ENABLE_NETCDF=TRUE \ - -D NETCDF_DIR=$NETCDF_DIR \ + -D NETCDF_DIR=$NETCDF_DIR \ + -D CMAKE_EXE_LINKER_FLAGS="-Wl,--no-as-needed -L$HDF5_DIR/lib -lhdf5_hl -lhdf5 -ldl -lz -lm" \ -D CURL_LIBRARY=/usr/lib/x86_64-linux-gnu/libcurl.so.4 RUN $CMAKE --build $BASE_PATH/parflow/build From 2c8a900c7c36e2670a9df58d46f10e9f8aef2f64 Mon Sep 17 00:00:00 2001 From: George Artavanis Date: Wed, 29 Apr 2026 14:36:33 -0400 Subject: [PATCH 4/5] Fix linker errors --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index ae4751a..2bd77c2 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -163,7 +163,7 @@ RUN $CMAKE \ -D PARFLOW_AMPS_SEQUENTIAL_IO=TRUE \ -D PARFLOW_ENABLE_NETCDF=TRUE \ -D NETCDF_DIR=$NETCDF_DIR \ - -D CMAKE_EXE_LINKER_FLAGS="-Wl,--no-as-needed -L$HDF5_DIR/lib -lhdf5_hl -lhdf5 -ldl -lz -lm" \ + -D CMAKE_EXE_LINKER_FLAGS="-Wl,--no-as-needed -L$HDF5_DIR/lib -lhdf5_hl -lhdf5 -ldl -lz -lm -lmvec" \ -D CURL_LIBRARY=/usr/lib/x86_64-linux-gnu/libcurl.so.4 RUN $CMAKE --build $BASE_PATH/parflow/build From f2ae8853a21db9a412d629c86c79b4563b193d51 Mon Sep 17 00:00:00 2001 From: George Artavanis Date: Wed, 29 Apr 2026 14:55:41 -0400 Subject: [PATCH 5/5] Fix persmissions issue --- .devcontainer/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 2bd77c2..f89fd88 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -166,9 +166,8 @@ RUN $CMAKE \ -D CMAKE_EXE_LINKER_FLAGS="-Wl,--no-as-needed -L$HDF5_DIR/lib -lhdf5_hl -lhdf5 -ldl -lz -lm -lmvec" \ -D CURL_LIBRARY=/usr/lib/x86_64-linux-gnu/libcurl.so.4 -RUN $CMAKE --build $BASE_PATH/parflow/build - USER root +RUN $CMAKE --build $BASE_PATH/parflow/build RUN $CMAKE --install $BASE_PATH/parflow/build --prefix /opt/parflow USER jovyan