diff --git a/.dockerignore b/.dockerignore index 0f1a95af5..024325812 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,7 +1,3 @@ * !build/release/packaging/rpm/* -!thirdparty/libxil/ -!thirdparty/criterion/ -!thirdparty/libwebsockets/ -!thirdparty/nanomsg/ -!thirdparty/libzmq/ +!thirdparty/ \ No newline at end of file diff --git a/Dockerfile.dev b/Dockerfile.dev index 4eb8472d8..c3c3c7864 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -88,6 +88,5 @@ EXPOSE 443 ENV LD_LIBRARY_PATH /usr/local/lib:/usr/local/lib64 -ENTRYPOINT villas WORKDIR /villas ENTRYPOINT bash diff --git a/Dockerfile.dev-centos b/Dockerfile.dev-centos new file mode 100644 index 000000000..ee3e20a0e --- /dev/null +++ b/Dockerfile.dev-centos @@ -0,0 +1,106 @@ +# Dockerfile for VILLASnode development. +# +# This Dockerfile builds an image which contains all library dependencies +# and tools to build VILLASnode. +# However, VILLASnode itself it not part of the image. +# +# This image can be used for developing VILLASnode +# by running: +# make docker +# +# @author Steffen Vogel +# @copyright 2017, Institute for Automation of Complex Power Systems, EONERC +# @license GNU General Public License (version 3) +# +# VILLASnode +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +################################################################################### + +FROM centos:7 +MAINTAINER Steffen Vogel + +# Some of the dependencies are only available in our own repo +ADD https://villas.fein-aachen.org/packages/villas.repo /etc/yum.repos.d/ + +# Enable Extra Packages for Enterprise Linux (EPEL) and Software collection repo +RUN yum -y install epel-release centos-release-scl + +# Toolchain +RUN yum -y install \ + devtoolset-6-toolchain \ + gcc gcc-c++ \ + pkgconfig make cmake \ + autoconf automake autogen libtool \ + flex bison \ + texinfo git curl tar + +# Several tools only needed for developement and testing +RUN yum -y install \ + doxygen dia graphviz \ + openssh-clients \ + rpmdevtools rpm-build \ + jq \ + iproute \ + python-pip \ + valgrind gdb gdb-gdbserver \ + xmlto rubygem-asciidoctor + +# 32bit versions of some standard libraries for RT-LAB code +RUN yum -y install \ + libstdc++-devel.i686 \ + libuuid-devel.i686 \ + glibc-devel.i686 + +# Tools for debugging, coverage, profiling +RUN pip install \ + gcovr + +# Dependencies +RUN yum -y install \ + openssl openssl-devel \ + libconfig-devel \ + libnl3-devel \ + hdf5-devel \ + zeromq-devel \ + nanomsg-devel \ + libxil-devel + +# Build & Install Criterion +COPY thirdparty/criterion /tmp/criterion +RUN cd /tmp/criterion && cmake . && make install && rm -rf /tmp/* + +# Build & Install Jansson +COPY thirdparty/jansson /tmp/jansson +RUN cd /tmp/jansson && cmake -DJANSSON_BUILD_DOCS=OFF . && make install && rm -rf /tmp/* + +# Build & Install libwebsockets +COPY thirdparty/libwebsockets /tmp/libwebsockets +RUN cd /tmp/libwebsockets && cmake -DLWS_IPV6=1 -DLWS_WITH_STATIC=0 -DLWS_WITHOUT_TESTAPPS=1 -DLWS_WITH_HTTP2=1 . && make install && rm -rf /tmp/* + +# Build & Install libcurl +COPY thirdparty/libcurl /tmp/libcurl +RUN cd /tmp/libcurl/ && ./buildconf && ./configure && make install && rm -rf /tmp/* + +# Workaround for libnl3's search path for netem distributions +RUN ln -s /usr/lib64/tc /usr/lib/tc + +# Expose ports for HTTP and WebSocket frontend +EXPOSE 80 +EXPOSE 443 + +ENV LD_LIBRARY_PATH /usr/local/lib:/usr/local/lib64 + +WORKDIR /villas +ENTRYPOINT scl enable devtoolset-6 bash diff --git a/Dockerfile.dev-ubuntu b/Dockerfile.dev-ubuntu index d0ee9aa79..d36f13a71 100644 --- a/Dockerfile.dev-ubuntu +++ b/Dockerfile.dev-ubuntu @@ -98,6 +98,5 @@ ENV LD_LIBRARY_PATH /usr/local/lib:/usr/local/lib64 # Workaround for libnl3's search path for netem distributions RUN ln -s /usr/lib64/tc /usr/lib/tc -ENTRYPOINT villas WORKDIR /villas ENTRYPOINT bash diff --git a/etc/Makefile.inc b/etc/Makefile.inc index 25044f61e..f12aa55cc 100644 --- a/etc/Makefile.inc +++ b/etc/Makefile.inc @@ -22,8 +22,8 @@ etc: -install-etc: - install -D -t $(DESTDIR)/etc/villas/node etc/*.conf +install-etc: | $(DESTDIR)/etc/villas/node/ + install -D -t $(DESTDIR)/etc/villas/node $(SRCDIR)/etc/*.conf clean-etc: diff --git a/lib/Makefile.villas.inc b/lib/Makefile.villas.inc index 2d9a51d75..49090e7fb 100644 --- a/lib/Makefile.villas.inc +++ b/lib/Makefile.villas.inc @@ -67,7 +67,7 @@ $(LIB): $(LIB_OBJS) ln -srf $@ $(BUILDDIR)/$(LIB_NAME).so # Install -install-libvillas: libvillas +install-libvillas: libvillas | $(DESTDIR)$(PREFIX)/include/villas/ install -m 0755 -D -T $(LIB) $(DESTDIR)$(PREFIX)/lib/$(LIB_NAME).so.$(LIB_ABI_VERSION) install -m 0644 -D -t $(DESTDIR)$(PREFIX)/include/villas/ include/villas/*.h ln -srf $(DESTDIR)$(PREFIX)/lib/$(LIB_NAME).so.$(LIB_ABI_VERSION) $(DESTDIR)$(PREFIX)/lib/$(LIB_NAME).so diff --git a/plugins/Makefile.inc b/plugins/Makefile.inc index 895241b83..ea1cecde8 100644 --- a/plugins/Makefile.inc +++ b/plugins/Makefile.inc @@ -43,7 +43,7 @@ $(PLUGINS): $(CC) $(PLUGIN_LDFLAGS) -o $@ $^ $(PLUGIN_LDLIBS) # Plugins are not installed to the system for now... -install-plugins: plugins +install-plugins: plugins | $(DESTDIR)$(PREFIX)/share/villas/node/plugins/ install -D -t $(DESTDIR)$(PREFIX)/share/villas/node/plugins $(PLUGINS) clean-plugins: