Skip to content

HELICS and GridLAB-D update #68

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
138 changes: 20 additions & 118 deletions Dockerfile.gridappsd_base
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
# This is a xenial base with python
FROM python:3.10.9-slim-bullseye
FROM python:3.10.17-slim-bullseye

RUN apt-get update \
&& apt-get install -y \
wget \
git \
automake \
autoconf \
cmake \
make \
ca-certificates \
openssl \
# These two for activemq \
Expand All @@ -19,144 +16,49 @@ RUN apt-get update \
python3-setuptools \
sudo \
vim \
# state-estimator \
liblapack-dev \
libblas-dev \
#libssl1.0-dev \
libssl-dev \
# helics \
libboost-dev \
libxerces-c-dev \
libzmq5-dev \
m4 \
procps \
libtool \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/cache/apt/archives/*

# Build and install cmake >= 10
RUN cd /opt \
&& wget https://github.com/Kitware/CMake/releases/download/v3.20.3/cmake-3.20.3.tar.gz \
&& tar zxf cmake-3.20.3.tar.gz \
&& cd cmake-3.20.3 \
&& ./bootstrap \
&& make \
&& make install \
&& cd \
&& rm -rf /opt/cmake-3.20.3 cmake-3-20.3.tar.gz

WORKDIR /gridappsd

ENV GRIDAPPSD=/gridappsd
ENV FNCS_INSTALL=${GRIDAPPSD}
ENV GLD_INSTALL=${GRIDAPPSD}
ENV CZMQ_VERSION 4.2.0
ENV ZMQ_VERSION 4.3.1
ENV TEMP_DIR=/tmp/source

ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${FNCS_INSTALL}/lib

ENV FNCS_LOG_FILE=yes
ENV FNCS_LOG_STDOUT=yes
ENV FNCS_LOG_TRACE=yes
ENV FNCS_LOG_LEVEL=DEBUG1

ENV PYHELICS_INSTALL=/usr/local

# ----------------------------------------------------
# INSTALL ZMQ and BINDINGS for c++
# ----------------------------------------------------

RUN mkdir ${TEMP_DIR} \
&& cd ${TEMP_DIR} \
&& wget http://github.com/zeromq/libzmq/releases/download/v${ZMQ_VERSION}/zeromq-${ZMQ_VERSION}.tar.gz \
&& tar -xzf zeromq-${ZMQ_VERSION}.tar.gz \
&& cd ${TEMP_DIR}/zeromq-${ZMQ_VERSION} \
&& ./configure --prefix=${FNCS_INSTALL} \
&& make \
&& make install \
&& cd /tmp \
&& /bin/rm -r ${TEMP_DIR}/zeromq-${ZMQ_VERSION} \
&& /bin/rm ${TEMP_DIR}/zeromq-${ZMQ_VERSION}.tar.gz

ENV CFLAGS=-I${FNCS_INSTALL}/include
ENV LDFLAGS=-L${FNCS_INSTALL}/lib
ENV PKG_CONFIG_PATH=${FNCS_INSTALL}/lib/pkgconfig

RUN cd ${TEMP_DIR} \
&& wget https://github.com/zeromq/czmq/releases/download/v${CZMQ_VERSION}/czmq-${CZMQ_VERSION}.tar.gz \
&& tar -xzf czmq-${CZMQ_VERSION}.tar.gz \
&& cd ${TEMP_DIR}/czmq-${CZMQ_VERSION} \
&& ./configure --prefix=${FNCS_INSTALL} \
&& make \
&& make install \
&& cd /tmp \
&& /bin/rm -r ${TEMP_DIR}/czmq-${CZMQ_VERSION} \
&& /bin/rm ${TEMP_DIR}/czmq-${CZMQ_VERSION}.tar.gz

ENV CLFAGS=
ENV LDFLAGS=
ENV PKG_CONFIG_PATH=

# ----------------------------------------------------
# INSTALL FNCS
# ----------------------------------------------------

RUN cd $TEMP_DIR \
&& git clone -b develop --single-branch https://github.com/GRIDAPPSD/fncs.git \
&& cd fncs \
&& ./configure --prefix=${FNCS_INSTALL} --with-zmq=${FNCS_INSTALL} \
&& make \
&& make install \
&& cd python \
&& python setup.py sdist \
&& pip install dist/fncs-2.0.1.tar.gz \
&& pip3 install dist/fncs-2.0.1.tar.gz \
&& cd /tmp \
&& /bin/rm -r ${TEMP_DIR}/fncs
ENV HELICS_INSTALL=/usr/local/lib/python3.10/site-packages/helics/install
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${HELICS_INSTALL}/lib64

# ----------------------------------------------------
# INSTALL Helics
# ----------------------------------------------------

RUN cd $TEMP_DIR \
&& git clone https://github.com/GMLC-TDC/HELICS -b v2.7.1 \
&& cd HELICS \
&& mkdir build \
&& cd build \
&& cmake ../ \
&& make \
&& make install \
&& cd /tmp \
&& /bin/rm -r ${TEMP_DIR}/HELICS \
&& pip install helics-apps==2.7.1 \
&& pip3 install helics-apps==2.7.1 \
&& pip install helics==2.7.1 \
&& pip3 install helics==2.7.1
RUN pip install 'helics[cli]'

# ----------------------------------------------------
# INSTALL Gridlab-D
# ----------------------------------------------------

RUN cd $TEMP_DIR \
&& git clone https://github.com/gridlab-d/gridlab-d.git -b gridappsd-branch --single-branch \
&& cd ${TEMP_DIR}/gridlab-d/third_party \
&& tar -xzf xerces-c-3.2.0.tar.gz \
&& cd ${TEMP_DIR}/gridlab-d/third_party/xerces-c-3.2.0 \
&& ./configure \
&& make \
&& make install \
&& cd ${TEMP_DIR}/gridlab-d \
&& autoreconf -if \
&& ./configure --with-helics=/usr/local/bin --prefix=$GLD_INSTALL --with-fncs=$FNCS_INSTALL --enable-silent-rules 'CFLAGS=-g -O2 -w' 'CXXFLAGS=-g -O2 -w -std=c++14' 'LDFLAGS=-g -O2 -w' \
&& make \
&& make install \
&& cd /tmp \
&& /bin/rm -r ${TEMP_DIR}/gridlab-d
RUN mkdir ${TEMP_DIR} \
&& cd ${TEMP_DIR} \
&& git clone https://github.com/gridlab-d/gridlab-d.git -b develop --single-branch \
&& cd ${TEMP_DIR}/gridlab-d \
&& git submodule update --init \
&& mkdir cmake-build \
&& cd cmake-build \
&& cmake -DCMAKE_INSTALL_PREFIX=${GLD_INSTALL} -DGLD_USE_HELICS=ON -DGLD_HELICS_DIR=${HELICS_INSTALL}/lib64/cmake/HELICS ../ \
&& cmake --build . -j20 --target install \
&& cd /tmp \
&& /bin/rm -r ${TEMP_DIR}/gridlab-d

# ----------------------------------------------------
# INSTALL Java
# ----------------------------------------------------

RUN cd ${TEMP_DIR} \
&& wget https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz \
&& mkdir /usr/lib/jvm \
Expand All @@ -173,7 +75,7 @@ RUN cd ${TEMP_DIR} \
&& wget http://archive.apache.org/dist/activemq/activemq-cpp/3.9.5/activemq-cpp-library-3.9.5-src.tar.gz \
&& tar -xzf activemq-cpp-library-3.9.5-src.tar.gz \
&& cd activemq-cpp-library-3.9.5 \
&& ./configure --prefix=${FNCS_INSTALL} \
&& ./configure --prefix=${GRIDAPPSD} \
&& make \
&& make install \
&& cd /tmp \
Expand All @@ -195,7 +97,7 @@ RUN cd ${TEMP_DIR} \
&& cd gridappsd-state-estimator \
&& git clone https://github.com/GRIDAPPSD/SuiteSparse \
&& git clone https://github.com/GRIDAPPSD/json \
&& LD_LIBRARY_PATH=${TEMP_DIR}/gridappsd-state-estimator/SuiteSparse/lib/ make -C SuiteSparse LAPACK=-llapack BLAS=-lblas \
&& LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${TEMP_DIR}/gridappsd-state-estimator/SuiteSparse/lib/ make -C SuiteSparse LAPACK=-llapack BLAS=-lblas \
&& make -C state-estimator AMQINCPATH3=/gridappsd/include/activemq-cpp-3.9.5 \
&& mkdir -p /gridappsd/services/gridappsd-state-estimator \
&& rm -rf .git SuiteSparse/.git json.git \
Expand All @@ -212,10 +114,10 @@ RUN cd ${TEMP_DIR} \
# && cd /gridappsd/services/gridappsd-ochre \
# && pip install -r requirements.txt \
# && rm -rf /root/.cache/pip/wheels
#

#ENV PYTHONPATH=${PYTHONPATH}:/gridappsd/services/gridappsd-ochre
#ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
#

# ----------------------------------------------------
# Set the JAVA_HOME variable
# ----------------------------------------------------
Expand Down