-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Complete support for Docker and Github Codespace (#157)
Include support for Docker and Github Codespace so we can run our dev environment with the support of Docker.
- Loading branch information
1 parent
2e67268
commit 3dc730c
Showing
31 changed files
with
561 additions
and
350 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,95 +1,8 @@ | ||
# Note: Run `docker build -f .devcontainer/Dockerfile -t pdc:latest .` from the root directory of the repository to build the docker image. | ||
|
||
# Use Ubuntu Jammy (latest LTS) as the base image | ||
FROM ubuntu:jammy | ||
|
||
|
||
|
||
# Install necessary tools, MPICH, UUID library and developer files | ||
RUN apt-get update && apt-get install -y \ | ||
build-essential \ | ||
git \ | ||
mpich \ | ||
libmpich-dev \ | ||
uuid \ | ||
uuid-dev \ | ||
autoconf \ | ||
libtool \ | ||
cmake \ | ||
cmake-curses-gui \ | ||
wget \ | ||
axel \ | ||
curl \ | ||
vim \ | ||
nano \ | ||
gdb \ | ||
cgdb \ | ||
curl \ | ||
valgrind | ||
|
||
# Set WORK_SPACE environment variable and create necessary directories | ||
RUN mkdir -p /workspaces | ||
ENV WORK_SPACE=/workspaces | ||
|
||
|
||
# Clone the repositories | ||
WORKDIR $WORK_SPACE/source | ||
RUN git clone https://github.com/ofiwg/libfabric.git && \ | ||
git clone https://github.com/mercury-hpc/mercury.git --recursive | ||
|
||
COPY ./ ${WORK_SPACE}/source/pdc | ||
|
||
ENV LIBFABRIC_SRC_DIR=$WORK_SPACE/source/libfabric | ||
ENV MERCURY_SRC_DIR=$WORK_SPACE/source/mercury | ||
ENV PDC_SRC_DIR=$WORK_SPACE/source/pdc | ||
ENV LIBFABRIC_DIR=$WORK_SPACE/install/libfabric | ||
ENV MERCURY_DIR=$WORK_SPACE/install/mercury | ||
ENV PDC_DIR=$WORK_SPACE/install/pdc | ||
|
||
RUN mkdir -p $LIBFABRIC_SRC_DIR && \ | ||
mkdir -p $MERCURY_SRC_DIR && \ | ||
mkdir -p $LIBFABRIC_DIR && \ | ||
mkdir -p $MERCURY_DIR && \ | ||
mkdir -p $PDC_DIR | ||
|
||
|
||
# Save the environment variables to a file | ||
RUN echo "export LIBFABRIC_SRC_DIR=$WORK_SPACE/source/libfabric" > $WORK_SPACE/pdc_env.sh && \ | ||
echo "export MERCURY_SRC_DIR=$WORK_SPACE/source/mercury" >> $WORK_SPACE/pdc_env.sh && \ | ||
echo "export PDC_SRC_DIR=$WORK_SPACE/source/pdc" >> $WORK_SPACE/pdc_env.sh && \ | ||
echo "export LIBFABRIC_DIR=$WORK_SPACE/install/libfabric" >> $WORK_SPACE/pdc_env.sh && \ | ||
echo "export MERCURY_DIR=$WORK_SPACE/install/mercury" >> $WORK_SPACE/pdc_env.sh && \ | ||
echo "export PDC_DIR=$WORK_SPACE/install/pdc" >> $WORK_SPACE/pdc_env.sh | ||
|
||
|
||
# Build and install libfabric | ||
WORKDIR $LIBFABRIC_SRC_DIR | ||
RUN git checkout v1.18.0 && \ | ||
./autogen.sh && \ | ||
./configure --prefix=$LIBFABRIC_DIR CC=mpicc CFLAG="-O2" && \ | ||
make clean && \ | ||
make -j && make install && \ | ||
make check | ||
|
||
ENV LD_LIBRARY_PATH="$LIBFABRIC_DIR/lib:$LD_LIBRARY_PATH" | ||
ENV PATH="$LIBFABRIC_DIR/include:$LIBFABRIC_DIR/lib:$PATH" | ||
RUN echo 'export LD_LIBRARY_PATH=$LIBFABRIC_DIR/lib:$LD_LIBRARY_PATH' >> $WORK_SPACE/pdc_env.sh && \ | ||
echo 'export PATH=$LIBFABRIC_DIR/include:$LIBFABRIC_DIR/lib:$PATH' >> $WORK_SPACE/pdc_env.sh | ||
|
||
|
||
# Build and install Mercury | ||
WORKDIR $MERCURY_SRC_DIR | ||
ENV MERCURY_CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=$MERCURY_DIR -DCMAKE_C_COMPILER=mpicc -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=ON -DNA_USE_OFI=ON -DNA_USE_SM=OFF -DNA_OFI_TESTING_PROTOCOL=tcp " | ||
RUN git checkout v2.2.0 \ | ||
mkdir -p build | ||
WORKDIR ${MERCURY_SRC_DIR}/build | ||
RUN cmake $MERCURY_CMAKE_FLAGS ../ && \ | ||
make -j && make install && \ | ||
ctest | ||
|
||
# Set the environment variables | ||
ENV LD_LIBRARY_PATH="$MERCURY_DIR/lib:$LD_LIBRARY_PATH" | ||
ENV PATH="$MERCURY_DIR/include:$MERCURY_DIR/lib:$PATH" | ||
RUN echo 'export LD_LIBRARY_PATH=$MERCURY_DIR/lib:$LD_LIBRARY_PATH' >> $WORK_SPACE/pdc_env.sh \ | ||
echo 'export PATH=$MERCURY_DIR/include:$MERCURY_DIR/lib:$PATH' >> $WORK_SPACE/pdc_env.sh | ||
# FROM ubuntu:jammy | ||
FROM hpcio/pdc-dev-base:latest | ||
|
||
RUN rm -rf $PDC_SRC_DIR && \ | ||
rm -rf $PDC_DIR |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
#!/bin/bash | ||
|
||
|
||
WORK_SPACE_INITIALIZED_FILE=/workspaces/.workspace_initialized | ||
|
||
if ! [ -f $WORK_SPACE_INITIALIZED_FILE ]; then | ||
/bin/bash /workspaces/pdc/.devcontainer/post-start.sh | ||
watch -t -n 5 'echo "Press Ctrl+C when there is no building processes."; echo "Number of initial PDC building processes:"; ps -ef | grep make | grep -v -c grep' | ||
else | ||
echo "Welcome Back!" | ||
fi | ||
|
||
/bin/bash |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,41 @@ | ||
#!/bin/bash | ||
|
||
|
||
WORK_SPACE_INITIALIZED_FILE=/workspaces/.workspace_initialized | ||
|
||
if ! [ -f $WORK_SPACE_INITIALIZED_FILE ]; then | ||
touch $WORK_SPACE_INITIALIZED_FILE | ||
echo "First time to create workspace, start to install PDC" | ||
else | ||
echo "Workspace already initialized, skip the installation" | ||
exit 0 | ||
fi | ||
|
||
rm -rf $PDC_SRC_DIR | ||
rm -rf $PDC_DIR | ||
|
||
|
||
ln -s /workspaces/pdc $(dirname $PDC_SRC_DIR) | ||
|
||
mkdir -p /workspaces/source | ||
ln -s $PDC_SRC_DIR /workspaces/source/pdc | ||
|
||
mkdir -p /workspaces/install/pdc | ||
ln -s /workspaces/install/pdc $(dirname $PDC_SRC_DIR) | ||
|
||
# Build and install PDC | ||
export PDC_CMAKE_FLAGS="-DBUILD_MPI_TESTING=ON -DBUILD_SHARED_LIBS=ON -DBUILD_TOOLS=OFF -DBUILD_TESTING=ON -DCMAKE_INSTALL_PREFIX=$PDC_DIR -DPDC_ENABLE_MPI=ON -DMERCURY_DIR=$MERCURY_DIR -DCMAKE_C_COMPILER=mpicc -DMPI_RUN_CMD=mpiexec " | ||
|
||
cd $PDC_SRC_DIR | ||
rm -rf build && mkdir -p build | ||
|
||
|
||
cd ${PDC_SRC_DIR}/build | ||
cmake $PDC_CMAKE_FLAGS ../ 2>&1 > ./cmake_config.log || echo "ignoring cmake config error and proceed" | ||
make -j && make install | ||
|
||
# Set the environment variables | ||
export LD_LIBRARY_PATH="$PDC_DIR/lib:$LD_LIBRARY_PATH" | ||
export PATH="$PDC_DIR/include:$PDC_DIR/lib:$PATH" | ||
echo 'export LD_LIBRARY_PATH=$PDC_DIR/lib:$LD_LIBRARY_PATH' >> $WORK_SPACE/pdc_env.sh | ||
echo 'export PATH=$PDC_DIR/include:$PDC_DIR/lib:$PATH' >> $WORK_SPACE/pdc_env.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,31 +1,6 @@ | ||
#!/bin/bash | ||
|
||
nohup /bin/bash /workspaces/pdc/.devcontainer/post-create.sh 2>&1 > /workspaces/pdc_install.out & | ||
|
||
ln -s /workspaces/pdc /home/codespace/source/pdc | ||
mkdir -p /workspaces/install | ||
mkdir -p /workspaces/source | ||
ln -s $PDC_SRC_DIR /workspaces/source/pdc | ||
ln -s $PDC_DIR /workspaces/install/pdc | ||
|
||
export PDC_SRC_DIR=/workspaces/source/pdc | ||
|
||
# Build and install PDC | ||
export PDC_CMAKE_FLAGS="-DBUILD_MPI_TESTING=ON -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=ON -DCMAKE_INSTALL_PREFIX=$PDC_DIR -DPDC_ENABLE_MPI=ON -DMERCURY_DIR=$MERCURY_DIR -DCMAKE_C_COMPILER=mpicc -DMPI_RUN_CMD=mpiexec " | ||
|
||
cd $PDC_SRC_DIR | ||
rm -rf build && mkdir -p build | ||
|
||
|
||
cd ${PDC_SRC_DIR}/build | ||
cmake $PDC_CMAKE_FLAGS ../ 2>&1 > ./cmake_config.log || echo "ignoring cmake config error and proceed" | ||
make -j && make install | ||
|
||
# Set the environment variables | ||
export LD_LIBRARY_PATH="$PDC_DIR/lib:$LD_LIBRARY_PATH" | ||
export PATH="$PDC_DIR/include:$PDC_DIR/lib:$PATH" | ||
echo 'export LD_LIBRARY_PATH=$PDC_DIR/lib:$LD_LIBRARY_PATH' >> $WORK_SPACE/pdc_env.sh | ||
echo 'export PATH=$PDC_DIR/include:$PDC_DIR/lib:$PATH' >> $WORK_SPACE/pdc_env.sh | ||
|
||
|
||
cd $PDC_SRC_DIR/build | ||
# ctest | ||
echo "Wait for 10 seconds for the building processes to start." | ||
sleep 10s |
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.