upm/Dockerfile

112 lines
3.3 KiB
Docker
Raw Normal View History

FROM ubuntu:16.04
ENV DEBIAN_FRONTEND noninteractive
# Preapare apt-get
RUN apt-get update && apt-get -y --no-install-recommends install software-properties-common
# Add Mraa Repository
RUN add-apt-repository ppa:mraa/mraa && \
# Update apt-get
apt-get -y update && \
# Install apt-utils
apt-get -y --no-install-recommends install apt-utils && \
# Main Build Dependencies
apt-get -y --no-install-recommends install git build-essential cmake clang-3.8 g++-4.8 libpthread-stubs0-dev pkg-config wget libpcre3 libpcre3-dev unzip \
# Mraa Build Dependencies
libmraa1 libmraa-dev mraa-tools python-mraa python3-mraa libmraa-java \
# Docs Build Dependencies
python-sphinx doxygen graphviz \
# Python Build Dependencies
python python-dev python3 python3-dev python-pip python3-pip \
# Java Build Dependencies
default-jre default-jdk \
# Sensor Specific Build Dependencies
libjpeg-dev
# Configure Java Home
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
# Install libbacnet 0.3.12
RUN wget https://downloads.sourceforge.net/project/bacnet/bacnet-stack/bacnet-stack-0.8.3/bacnet-stack-0.8.3.zip && \
unzip -qq bacnet-stack-0.8.3.zip && cd bacnet-stack-0.8.3 && \
BACDL_DEFINE=-DBACDL_MSTP=1 MAKE_DEFINE=-fPIC make clean all
# Install libmodbus 3.1.4
RUN wget http://libmodbus.org/releases/libmodbus-3.1.4.tar.gz && \
tar xf libmodbus-3.1.4.tar.gz && cd libmodbus-3.1.4 && \
./configure && make -j8 && make install
# Install openzwave
RUN apt-get update && apt-get -y --no-install-recommends install libudev-dev && \
git clone --depth 1 https://github.com/OpenZWave/open-zwave.git && cd open-zwave && make -j8 install
# Swig Build Dependencies
RUN wget http://iotdk.intel.com/misc/tr/swig-3.0.10.tar.gz && \
tar xf swig-3.0.10.tar.gz && cd swig-3.0.10 && \
./configure --prefix=/usr/ && make && make install && cd ..
# Node.js Build Dependencies
RUN wget -q -O - https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
ARG NODE_VERSION
ENV NVM_DIR /root/.nvm
RUN . $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm use $NODE_VERSION && \
npm install -g node-gyp && node-gyp install
# Install Test Dependencies
RUN pip install chardet && pip3 install chardet
# Set Workdir
WORKDIR /usr/src/app
# Configure Build Arguments
ARG BUILDDOC
ARG BUILDCPP
ARG BUILDFTI
ARG BUILDSWIGPYTHON
ARG BUILDSWIGNODE
ARG BUILDSWIGJAVA
ARG BUILDEXAMPLES
ARG IPK
ARG RPM
ARG NPM
ARG BUILDTESTS
ARG WERROR
ARG CC
ARG CXX
# Configure Build Environment
ENV CC $CC
ENV CXX $CXX
# Copy sources
COPY . .
# Temp solution for libbacnet install
COPY bacnet/libbacnet.pc /usr/lib/pkgconfig/libbacnet.pc
RUN cp /bacnet-stack-0.8.3/lib/libbacnet.a /usr/lib/libbacnet.a
RUN mkdir /usr/include/bacnet && cp /bacnet-stack-0.8.3/include/* /usr/include/bacnet/
# Change Workdir to build directory
WORKDIR /usr/src/app/build
# Run cmake
RUN . $NVM_DIR/nvm.sh && cmake \
-DSWIG_EXECUTABLE=/usr/bin/swig \
-DSWIG_DIR:PATH=/usr/share/swig/3.0.10/ \
-DBUILDDOC=$BUILDDOC \
-DBUILDCPP=$BUILDCPP \
-DBUILDFTI=$BUILDFTI \
-DBUILDSWIGPYTHON=$BUILDSWIGPYTHON \
-DBUILDSWIGNODE=$BUILDSWIGNODE \
-DBUILDSWIGJAVA=$BUILDSWIGJAVA \
-DBUILDEXAMPLES=$BUILDEXAMPLES \
-DIPK=$IPK \
-DRPM=$RPM \
-DNPM=$NPM \
-DBUILDTESTS=$BUILDTESTS \
-DWERROR=$WERROR \
..
CMD make