travis: improve docker images generation for building
Make a build heriarchy to reduce images size. Add Android Thing Build. Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com> Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
committed by
Brendan Le Foll
parent
3d77c86634
commit
4bedd68c4e
37
.travis.yml
37
.travis.yml
@@ -13,37 +13,40 @@ env:
|
|||||||
- TARGET=java
|
- TARGET=java
|
||||||
- TARGET=node4
|
- TARGET=node4
|
||||||
- TARGET=node5
|
- TARGET=node5
|
||||||
- TARGET=python2 JSONPLAT=ON
|
- TARGET=android
|
||||||
- TARGET=python3 JSONPLAT=ON
|
|
||||||
- TARGET=java JSONPLAT=ON
|
|
||||||
- TARGET=node4 JSONPLAT=ON
|
|
||||||
- TARGET=node5 JSONPLAT=ON
|
|
||||||
- TARGET=python2 BUILDARCH=MOCK
|
|
||||||
- TARGET=python3 BUILDARCH=MOCK
|
|
||||||
- TARGET=java BUILDARCH=MOCK
|
|
||||||
- TARGET=node4 BUILDARCH=MOCK
|
|
||||||
- TARGET=node5 BUILDARCH=MOCK
|
|
||||||
- TARGET=sonar-scan
|
- TARGET=sonar-scan
|
||||||
|
- JSONPLAT=ON TARGET=python2
|
||||||
|
- JSONPLAT=ON TARGET=python3
|
||||||
|
- JSONPLAT=ON TARGET=java
|
||||||
|
- JSONPLAT=ON TARGET=node4
|
||||||
|
- JSONPLAT=ON TARGET=node5
|
||||||
|
- BUILDARCH=MOCK TARGET=python2
|
||||||
|
- BUILDARCH=MOCK TARGET=python3
|
||||||
|
- BUILDARCH=MOCK TARGET=java
|
||||||
|
- BUILDARCH=MOCK TARGET=node4
|
||||||
|
- BUILDARCH=MOCK TARGET=node5
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
exclude:
|
exclude:
|
||||||
- compiler: clang
|
- compiler: clang
|
||||||
env: TARGET=java
|
env: TARGET=java
|
||||||
- compiler: clang
|
- compiler: clang
|
||||||
env: TARGET=java JSONPLAT=ON
|
env: JSONPLAT=ON TARGET=java
|
||||||
- compiler: clang
|
- compiler: clang
|
||||||
env: TARGET=java BUILDARCH=MOCK
|
env: BUILDARCH=MOCK TARGET=java
|
||||||
|
- compiler: gcc
|
||||||
|
env: TARGET=android
|
||||||
- compiler: clang
|
- compiler: clang
|
||||||
env: TARGET=sonar-scan
|
env: TARGET=sonar-scan
|
||||||
allow_failures:
|
allow_failures:
|
||||||
- compiler: gcc
|
- compiler: gcc
|
||||||
env: TARGET=node4 JSONPLAT=ON
|
env: JSONPLAT=ON TARGET=node4
|
||||||
- compiler: clang
|
- compiler: clang
|
||||||
env: TARGET=node4 JSONPLAT=ON
|
env: JSONPLAT=ON TARGET=node4
|
||||||
- compiler: gcc
|
- compiler: gcc
|
||||||
env: TARGET=node5 JSONPLAT=ON
|
env: JSONPLAT=ON TARGET=node5
|
||||||
- compiler: clang
|
- compiler: clang
|
||||||
env: TARGET=node5 JSONPLAT=ON
|
env: JSONPLAT=ON TARGET=node5
|
||||||
|
|
||||||
services:
|
services:
|
||||||
- docker
|
- docker
|
||||||
@@ -59,6 +62,8 @@ before_script:
|
|||||||
- if [ "$CXX" == "g++" ]; then export CXX=g++-4.8; fi
|
- if [ "$CXX" == "g++" ]; then export CXX=g++-4.8; fi
|
||||||
- if [ "$CC" == "clang" ]; then export CC=clang-3.8; fi
|
- if [ "$CC" == "clang" ]; then export CC=clang-3.8; fi
|
||||||
- if [ "$CXX" == "clang++" ]; then export CXX=clang++-3.8; fi
|
- if [ "$CXX" == "clang++" ]; then export CXX=clang++-3.8; fi
|
||||||
|
- docker-compose build base
|
||||||
|
- if [ "$TARGET" == "android" ]; then docker-compose build java; fi
|
||||||
- docker-compose build ${TARGET}
|
- docker-compose build ${TARGET}
|
||||||
|
|
||||||
script:
|
script:
|
||||||
|
|||||||
116
Dockerfile
116
Dockerfile
@@ -1,116 +0,0 @@
|
|||||||
FROM ubuntu:16.04
|
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
|
||||||
|
|
||||||
# Update apt-get
|
|
||||||
RUN 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 wget unzip libpcre3 libpcre3-dev \
|
|
||||||
# Docs Build Dependencies
|
|
||||||
python-sphinx doxygen graphviz \
|
|
||||||
# Python Build Dependencies
|
|
||||||
python python-dev python3 python3-dev \
|
|
||||||
# Java Build Dependencies
|
|
||||||
default-jre default-jdk \
|
|
||||||
# Json Platform Build Dependencies
|
|
||||||
pkg-config libjson0 libjson0-dev
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# Static code analysis scanner
|
|
||||||
ENV SONAR_DIR /usr/sonar
|
|
||||||
ENV SONAR_VER "3.0.3.778"
|
|
||||||
WORKDIR $SONAR_DIR
|
|
||||||
|
|
||||||
RUN wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_VER}-linux.zip && \
|
|
||||||
wget https://sonarqube.com/static/cpp/build-wrapper-linux-x86.zip && \
|
|
||||||
unzip sonar-scanner-cli-${SONAR_VER}-linux.zip && \
|
|
||||||
unzip build-wrapper-linux-x86.zip && \
|
|
||||||
rm sonar-scanner-cli-${SONAR_VER}-linux.zip build-wrapper-linux-x86.zip
|
|
||||||
|
|
||||||
ENV PATH $SONAR_DIR/sonar-scanner-${SONAR_VER}-linux/bin:$SONAR_DIR/build-wrapper-linux-x86:$PATH
|
|
||||||
|
|
||||||
# Set Workdir
|
|
||||||
ARG MRAA_SRC_DIR
|
|
||||||
WORKDIR $MRAA_SRC_DIR
|
|
||||||
|
|
||||||
# Configure Build Arguments
|
|
||||||
ARG BUILDARCH
|
|
||||||
ARG BUILDDOC
|
|
||||||
ARG BUILDSWIG
|
|
||||||
ARG BUILDSWIGPYTHON
|
|
||||||
ARG BUILDSWIGNODE
|
|
||||||
ARG BUILDSWIGJAVA
|
|
||||||
ARG USBPLAT=OFF
|
|
||||||
ARG FIRMATA=OFF
|
|
||||||
ARG ONEWIRE=OFF
|
|
||||||
ARG JSONPLAT
|
|
||||||
ARG IMRAA=OFF
|
|
||||||
ARG FTDI4222=OFF
|
|
||||||
ARG IPK=OFF
|
|
||||||
ARG RPM=OFF
|
|
||||||
ARG ENABLEEXAMPLES
|
|
||||||
ARG INSTALLGPIOTOOL=OFF
|
|
||||||
ARG INSTALLTOOLS=OFF
|
|
||||||
ARG BUILDTESTS
|
|
||||||
ARG CC
|
|
||||||
ARG CXX
|
|
||||||
ARG NODE_VERSION
|
|
||||||
ARG USEPYTHON3TESTS
|
|
||||||
|
|
||||||
# Configure Build Environment
|
|
||||||
ENV NVM_DIR /root/.nvm
|
|
||||||
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
|
|
||||||
ENV CC $CC
|
|
||||||
ENV CXX $CXX
|
|
||||||
RUN . $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm use $NODE_VERSION && \
|
|
||||||
npm install -g node-gyp && node-gyp install
|
|
||||||
|
|
||||||
# Copy sources
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
# Update Submodule
|
|
||||||
RUN git submodule update --init --recursive
|
|
||||||
|
|
||||||
# Fix line ending issue in src/doxy2swig.py and do it executable
|
|
||||||
RUN tr -d "\r" < src/doxy2swig.py > src/_doxy2swig.py && \
|
|
||||||
mv src/_doxy2swig.py src/doxy2swig.py && \
|
|
||||||
chmod u+x src/doxy2swig.py
|
|
||||||
|
|
||||||
# Change Workdir to build directory
|
|
||||||
WORKDIR $MRAA_SRC_DIR/build
|
|
||||||
|
|
||||||
# Run cmake
|
|
||||||
RUN . $NVM_DIR/nvm.sh && cmake \
|
|
||||||
-DSWIG_EXECUTABLE=/usr/bin/swig \
|
|
||||||
-DSWIG_DIR:PATH=/usr/share/swig/3.0.10/ \
|
|
||||||
-DBUILDARCH=$BUILDARCH \
|
|
||||||
-DBUILDDOC=$BUILDDOC \
|
|
||||||
-DBUILDSWIG=$BUILDSWIG \
|
|
||||||
-DBUILDSWIGPYTHON=$BUILDSWIGPYTHON \
|
|
||||||
-DBUILDSWIGNODE=$BUILDSWIGNODE \
|
|
||||||
-DBUILDSWIGJAVA=$BUILDSWIGJAVA \
|
|
||||||
-DUSBPLAT=$USBPLAT \
|
|
||||||
-DFIRMATA=$FIRMATA \
|
|
||||||
-DONEWIRE=$ONEWIRE \
|
|
||||||
-DJSONPLAT=$JSONPLAT \
|
|
||||||
-DIMRAA=$IMRAA \
|
|
||||||
-DFTDI4222=$FTDI4222 \
|
|
||||||
-DIPK=$IPK \
|
|
||||||
-DRPM=$RPM \
|
|
||||||
-DENABLEEXAMPLES=$ENABLEEXAMPLES \
|
|
||||||
-DINSTALLGPIOTOOL=$INSTALLGPIOTOOL \
|
|
||||||
-DINSTALLTOOLS=$INSTALLTOOLS \
|
|
||||||
-DBUILDTESTS=$BUILDTESTS \
|
|
||||||
-DUSEPYTHON3TESTS=$USEPYTHON3TESTS \
|
|
||||||
..
|
|
||||||
|
|
||||||
CMD make
|
|
||||||
@@ -2,41 +2,63 @@ version: '2.1'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
|
|
||||||
main:
|
base:
|
||||||
|
image: mraa-base
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile
|
dockerfile: docker/Dockerfile.base
|
||||||
args:
|
args:
|
||||||
- http_proxy
|
- http_proxy
|
||||||
- https_proxy
|
- https_proxy
|
||||||
- no_proxy
|
- no_proxy
|
||||||
- BUILDDOC=${BUILDDOC:-OFF}
|
|
||||||
- BUILDSWIG=${BUILDSWIG:-OFF}
|
|
||||||
- BUILDSWIGPYTHON=${BUILDSWIGPYTHON:-OFF}
|
|
||||||
- BUILDSWIGJAVA=${BUILDSWIGJAVA:-OFF}
|
|
||||||
- BUILDSWIGNODE=${BUILDSWIGNODE:-OFF}
|
|
||||||
- USBPLAT=${USBPLAT:-OFF}
|
|
||||||
- FIRMATA=${FIRMATA:-OFF}
|
|
||||||
- ONEWIRE=${ONEWIRE:-OFF}
|
|
||||||
- JSONPLAT=${JSONPLAT:-OFF}
|
|
||||||
- IMRAA=${IMRAA:-OFF}
|
|
||||||
- FTDI4222=${FTDI4222:-OFF}
|
|
||||||
- IPK=${IPK:-OFF}
|
|
||||||
- RPM=${RPM:-OFF}
|
|
||||||
- ENABLEEXAMPLES=${ENABLEEXAMPLES:-ON}
|
|
||||||
- INSTALLGPIOTOOL=${INSTALLGPIOTOOL:-OFF}
|
|
||||||
- INSTALLTOOLS=${INSTALLTOOLS:-OFF}
|
|
||||||
- BUILDTESTS=${BUILDTESTS:-ON}
|
|
||||||
- CC=${CC:-clang-3.8}
|
|
||||||
- CXX=${CXX:-clang++-3.8}
|
|
||||||
- NODE_VERSION=${NODE_VERSION:-v4.4.7}
|
|
||||||
- BUILDARCH=${BUILDARCH}
|
|
||||||
- MRAA_SRC_DIR=${MRAA_SRC_DIR:-/usr/src/app}
|
|
||||||
environment:
|
environment:
|
||||||
- http_proxy
|
- http_proxy
|
||||||
- https_proxy
|
- https_proxy
|
||||||
- no_proxy
|
- no_proxy
|
||||||
- MRAA_SRC_DIR=/usr/src/app
|
- BUILDDOC=${BUILDDOC:-OFF}
|
||||||
|
- BUILDSWIG=${BUILDSWIG:-OFF}
|
||||||
|
- BUILDSWIGPYTHON=${BUILDSWIGPYTHON:-OFF}
|
||||||
|
- BUILDTESTS=${BUILDTESTS:-ON}
|
||||||
|
- USEPYTHON3TESTS=${USEPYTHON3TESTS:-OFF}
|
||||||
|
- BUILDSWIGJAVA=${BUILDSWIGJAVA:-OFF}
|
||||||
|
- BUILDSWIGNODE=${BUILDSWIGNODE:-OFF}
|
||||||
|
- USBPLAT=${USBPLAT:-OFF}
|
||||||
|
- FIRMATA=${FIRMATA:-OFF}
|
||||||
|
- ONEWIRE=${ONEWIRE:-ON}
|
||||||
|
- JSONPLAT=${JSONPLAT:-OFF}
|
||||||
|
- IMRAA=${IMRAA:-OFF}
|
||||||
|
- FTDI4222=${FTDI4222:-OFF}
|
||||||
|
- IPK=${IPK:-OFF}
|
||||||
|
- RPM=${RPM:-OFF}
|
||||||
|
- ENABLEEXAMPLES=${ENABLEEXAMPLES:-ON}
|
||||||
|
- INSTALLGPIOTOOL=${INSTALLGPIOTOOL:-OFF}
|
||||||
|
- INSTALLTOOLS=${INSTALLTOOLS:-ON}
|
||||||
|
- CC=${CC:-clang-3.8}
|
||||||
|
- CXX=${CXX:-clang++-3.8}
|
||||||
|
- BUILDARCH=${BUILDARCH}
|
||||||
|
volumes:
|
||||||
|
- .:${MRAA_SRC_DIR:-/usr/src/app}
|
||||||
|
|
||||||
|
doc:
|
||||||
|
extends: base
|
||||||
|
environment:
|
||||||
|
- BUILDDOC=ON
|
||||||
|
command: bash -c "./scripts/run-cmake.sh && make -Cbuild doc"
|
||||||
|
|
||||||
|
sonar-scan:
|
||||||
|
extends: base
|
||||||
|
image: mraa-sonar
|
||||||
|
build:
|
||||||
|
dockerfile: docker/Dockerfile.sonar
|
||||||
|
args:
|
||||||
|
- NODE_VERSION=v5.12.0
|
||||||
|
environment:
|
||||||
|
- BUILDSWIG=ON
|
||||||
|
- BUILDSWIGPYTHON=ON
|
||||||
|
- BUILDSWIGNODE=ON
|
||||||
|
- BUILDSWIGJAVA=ON
|
||||||
|
- ONEWIRE=ON
|
||||||
|
- JSONPLAT=ON
|
||||||
- SONAR_TOKEN
|
- SONAR_TOKEN
|
||||||
- SONAR_ORG
|
- SONAR_ORG
|
||||||
- SONAR_PROJ_KEY
|
- SONAR_PROJ_KEY
|
||||||
@@ -45,62 +67,58 @@ services:
|
|||||||
- TRAVIS_REPO_SLUG
|
- TRAVIS_REPO_SLUG
|
||||||
- TRAVIS_PULL_REQUEST_SLUG
|
- TRAVIS_PULL_REQUEST_SLUG
|
||||||
- GITHUB_TOKEN
|
- GITHUB_TOKEN
|
||||||
|
command: bash -c "./scripts/run-cmake.sh && cd build && ./../scripts/sonar-scan.sh"
|
||||||
doc:
|
|
||||||
extends: main
|
|
||||||
build:
|
|
||||||
args:
|
|
||||||
- BUILDDOC=ON
|
|
||||||
command: bash -c "make doc"
|
|
||||||
|
|
||||||
python2:
|
python2:
|
||||||
extends: main
|
extends: base
|
||||||
|
image: mraa-python
|
||||||
build:
|
build:
|
||||||
args:
|
dockerfile: docker/Dockerfile.python
|
||||||
- BUILDSWIG=ON
|
environment:
|
||||||
- BUILDSWIGPYTHON=ON
|
- BUILDSWIG=ON
|
||||||
command: bash -c "make _python2-mraa && ctest --output-on-failure"
|
- BUILDSWIGPYTHON=ON
|
||||||
|
command: bash -c "./scripts/run-cmake.sh && cd build && make _python2-mraa && ctest --output-on-failure"
|
||||||
|
|
||||||
python3:
|
python3:
|
||||||
extends: python2
|
extends: python2
|
||||||
build:
|
environment:
|
||||||
args:
|
- USEPYTHON3TESTS=ON
|
||||||
- USEPYTHON3TESTS=ON
|
command: bash -c "./scripts/run-cmake.sh && cd build && make _python3-mraa && ctest --output-on-failure"
|
||||||
command: bash -c "make _python3-mraa && ctest --output-on-failure"
|
|
||||||
|
|
||||||
java:
|
java:
|
||||||
extends: main
|
extends: base
|
||||||
|
image: mraa-java
|
||||||
build:
|
build:
|
||||||
args:
|
dockerfile: docker/Dockerfile.java
|
||||||
- BUILDSWIG=ON
|
environment:
|
||||||
- BUILDSWIGJAVA=ON
|
- BUILDSWIG=ON
|
||||||
- CC=gcc-4.8
|
- BUILDSWIGJAVA=ON
|
||||||
- CXX=g++-4.8
|
command: bash -c "./scripts/run-cmake.sh && cd build && make mraajava && ctest --output-on-failure"
|
||||||
command: bash -c "make mraajava && ctest --output-on-failure"
|
|
||||||
|
android:
|
||||||
|
extends: java
|
||||||
|
image: mraa-android
|
||||||
|
build:
|
||||||
|
dockerfile: docker/Dockerfile.android
|
||||||
|
environment:
|
||||||
|
- BUILDARCH=PERIPHERALMAN
|
||||||
|
command: bash -c "./scripts/build-android.sh"
|
||||||
|
|
||||||
node4:
|
node4:
|
||||||
extends: main
|
extends: base
|
||||||
|
image: mraa-node4
|
||||||
build:
|
build:
|
||||||
|
dockerfile: docker/Dockerfile.node
|
||||||
args:
|
args:
|
||||||
- BUILDSWIG=ON
|
- NODE_VERSION=v4.4.7
|
||||||
- BUILDSWIGNODE=ON
|
environment:
|
||||||
- NODE_VERSION=v4.4.7
|
- BUILDSWIG=ON
|
||||||
command: bash -c "source /root/.nvm/nvm.sh && make npmpkg && cd .. && node-gyp configure && node-gyp build && npm test"
|
- BUILDSWIGNODE=ON
|
||||||
|
command: bash -c "./scripts/run-cmake.sh && make -Cbuild npmpkg && node-gyp configure && node-gyp build && npm test"
|
||||||
|
|
||||||
node5:
|
node5:
|
||||||
extends: node4
|
extends: node4
|
||||||
|
image: mraa-node5
|
||||||
build:
|
build:
|
||||||
args:
|
args:
|
||||||
- NODE_VERSION=v5.12.0
|
- NODE_VERSION=v5.12.0
|
||||||
|
|
||||||
sonar-scan:
|
|
||||||
extends: main
|
|
||||||
build:
|
|
||||||
args:
|
|
||||||
- BUILDSWIG=ON
|
|
||||||
- BUILDSWIGPYTHON=ON
|
|
||||||
- BUILDSWIGNODE=ON
|
|
||||||
- BUILDSWIGJAVA=ON
|
|
||||||
- ONEWIRE=ON
|
|
||||||
- JSONPLAT=ON
|
|
||||||
command: bash -c "$${MRAA_SRC_DIR}/sonar-scan.sh"
|
|
||||||
|
|||||||
29
docker/Dockerfile.android
Normal file
29
docker/Dockerfile.android
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
FROM mraa-java
|
||||||
|
|
||||||
|
WORKDIR /opt
|
||||||
|
|
||||||
|
# Install CMake 3.6.2
|
||||||
|
RUN wget -q https://cmake.org/files/v3.6/cmake-3.6.2-Linux-x86_64.sh && \
|
||||||
|
mkdir /opt/cmake && \
|
||||||
|
sh /opt/cmake-3.6.2-Linux-x86_64.sh --prefix=/opt/cmake --skip-license && \
|
||||||
|
ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake && \
|
||||||
|
cmake --version && \
|
||||||
|
rm -fr /opt/cmake-3.6.2-Linux-x86_64.sh
|
||||||
|
|
||||||
|
# Android NDK build Dependencies
|
||||||
|
RUN wget -q https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip && \
|
||||||
|
unzip -qq android-ndk-r14b-linux-x86_64.zip && \
|
||||||
|
rm -fr android-ndk-r14b-linux-x86_64.zip
|
||||||
|
ENV NDK_HOME /opt/android-ndk-r14b
|
||||||
|
ENV NDK_MODULE_PATH /opt/android-ndk-r14b
|
||||||
|
|
||||||
|
# Android Things library
|
||||||
|
RUN wget -q https://github.com/androidthings/native-libandroidthings/archive/0.4.1-devpreview.tar.gz && \
|
||||||
|
tar xf 0.4.1-devpreview.tar.gz && \
|
||||||
|
rm -fr /opt/0.4.1-devpreview.tar.gz
|
||||||
|
ENV ANDROIDTHINGS_NATIVE_LIB /opt/native-libandroidthings-0.4.1-devpreview
|
||||||
|
|
||||||
|
# Set Workdir
|
||||||
|
WORKDIR $MRAA_SRC_DIR
|
||||||
|
|
||||||
|
CMD bash
|
||||||
43
docker/Dockerfile.base
Normal file
43
docker/Dockerfile.base
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
FROM ubuntu:16.04
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
# Update apt-get
|
||||||
|
RUN 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 wget ca-certificates libpcre3 libpcre3-dev python unzip \
|
||||||
|
# Docs Build Dependencies
|
||||||
|
python-sphinx doxygen graphviz \
|
||||||
|
# Json Platform Build Dependencies
|
||||||
|
pkg-config libjson0 libjson0-dev \
|
||||||
|
# Imraa Platform Build Dependencies
|
||||||
|
libudev-dev \
|
||||||
|
# Doc Build Dependencies
|
||||||
|
python-sphinx doxygen graphviz
|
||||||
|
|
||||||
|
# Set library download folder to /opt
|
||||||
|
WORKDIR /opt
|
||||||
|
|
||||||
|
# Swig Build Dependencies
|
||||||
|
ARG SWIG_VERSION=3.0.10
|
||||||
|
RUN wget -q http://iotdk.intel.com/misc/tr/swig-$SWIG_VERSION.tar.gz && \
|
||||||
|
tar xf swig-$SWIG_VERSION.tar.gz && cd swig-$SWIG_VERSION && \
|
||||||
|
./configure --prefix=/usr/ && make -j8 && make -j8 install && cd .. && \
|
||||||
|
rm -fr /opt/swig-$SWIG_VERSION.tar.gz
|
||||||
|
|
||||||
|
# FTDI4222 Build Dependencies
|
||||||
|
ARG FTDI4222_VERSION=linux-1.3.1.117
|
||||||
|
RUN mkdir libft4222-$FTDI4222_VERSION && cd libft4222-$FTDI4222_VERSION && \
|
||||||
|
wget -q http://www.ftdichip.com/Support/SoftwareExamples/libft4222-$FTDI4222_VERSION.tgz && \
|
||||||
|
tar xf libft4222-$FTDI4222_VERSION.tgz && ./install4222.sh && \
|
||||||
|
rm -fr libft4222-$FTDI4222_VERSION.tgz
|
||||||
|
|
||||||
|
# Set Workdir
|
||||||
|
ARG MRAA_SRC_DIR=/usr/src/app
|
||||||
|
ENV MRAA_SRC_DIR $MRAA_SRC_DIR
|
||||||
|
WORKDIR $MRAA_SRC_DIR
|
||||||
|
|
||||||
|
CMD bash
|
||||||
14
docker/Dockerfile.java
Normal file
14
docker/Dockerfile.java
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
FROM mraa-base
|
||||||
|
|
||||||
|
# Update apt-get
|
||||||
|
RUN apt-get -y update && \
|
||||||
|
# Java Build Dependencies
|
||||||
|
apt-get -y --no-install-recommends install default-jre default-jdk
|
||||||
|
|
||||||
|
# Set JAVA_HOME
|
||||||
|
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
|
||||||
|
|
||||||
|
# Set Workdir
|
||||||
|
WORKDIR $MRAA_SRC_DIR
|
||||||
|
|
||||||
|
CMD bash
|
||||||
16
docker/Dockerfile.node
Normal file
16
docker/Dockerfile.node
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
FROM mraa-base
|
||||||
|
|
||||||
|
WORKDIR /opt
|
||||||
|
|
||||||
|
# Node.js Build Dependencies
|
||||||
|
RUN wget -q -O - https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
|
||||||
|
ENV NVM_DIR /root/.nvm
|
||||||
|
ARG NODE_VERSION
|
||||||
|
RUN . $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm use $NODE_VERSION && \
|
||||||
|
npm install -g node-gyp && node-gyp install
|
||||||
|
ENV PATH $NVM_DIR/versions/node/$NODE_VERSION/bin:$PATH
|
||||||
|
|
||||||
|
# Set Workdir
|
||||||
|
WORKDIR $MRAA_SRC_DIR
|
||||||
|
|
||||||
|
CMD bash
|
||||||
13
docker/Dockerfile.python
Normal file
13
docker/Dockerfile.python
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
FROM mraa-base
|
||||||
|
|
||||||
|
# Update apt-get
|
||||||
|
RUN apt-get -y update && \
|
||||||
|
# Python 2 Build Dependencies
|
||||||
|
apt-get -y --no-install-recommends install python python-dev \
|
||||||
|
# Python 3 Build Dependencies
|
||||||
|
python3 python3-dev
|
||||||
|
|
||||||
|
# Set Workdir
|
||||||
|
WORKDIR $MRAA_SRC_DIR
|
||||||
|
|
||||||
|
CMD bash
|
||||||
39
docker/Dockerfile.sonar
Normal file
39
docker/Dockerfile.sonar
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
FROM mraa-base
|
||||||
|
|
||||||
|
# Update apt-get
|
||||||
|
RUN apt-get -y update && \
|
||||||
|
# Python 2 Build Dependencies
|
||||||
|
apt-get -y --no-install-recommends install python python-dev \
|
||||||
|
# Python 3 Build Dependencies
|
||||||
|
python3 python3-dev \
|
||||||
|
# Java Build Dependencies
|
||||||
|
default-jre default-jdk
|
||||||
|
|
||||||
|
# Set JAVA_HOME
|
||||||
|
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
|
||||||
|
|
||||||
|
WORKDIR /opt
|
||||||
|
|
||||||
|
# Node.js Build Dependencies
|
||||||
|
RUN wget -q -O - https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
|
||||||
|
ENV NVM_DIR /root/.nvm
|
||||||
|
ARG NODE_VERSION
|
||||||
|
RUN . $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm use $NODE_VERSION && \
|
||||||
|
npm install -g node-gyp && node-gyp install
|
||||||
|
ENV PATH $NVM_DIR/versions/node/$NODE_VERSION/bin:$PATH
|
||||||
|
|
||||||
|
# Static Code Analysis Scanner
|
||||||
|
ENV SONAR_DIR /opt/sonar
|
||||||
|
ENV SONAR_VER "3.0.3.778"
|
||||||
|
WORKDIR $SONAR_DIR
|
||||||
|
RUN wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_VER}-linux.zip && \
|
||||||
|
wget https://sonarqube.com/static/cpp/build-wrapper-linux-x86.zip && \
|
||||||
|
unzip sonar-scanner-cli-${SONAR_VER}-linux.zip && \
|
||||||
|
unzip build-wrapper-linux-x86.zip && \
|
||||||
|
rm sonar-scanner-cli-${SONAR_VER}-linux.zip build-wrapper-linux-x86.zip
|
||||||
|
ENV PATH $SONAR_DIR/sonar-scanner-${SONAR_VER}-linux/bin:$SONAR_DIR/build-wrapper-linux-x86:$PATH
|
||||||
|
|
||||||
|
# Set Workdir
|
||||||
|
WORKDIR $MRAA_SRC_DIR
|
||||||
|
|
||||||
|
CMD bash
|
||||||
139
scripts/build-android.sh
Executable file
139
scripts/build-android.sh
Executable file
@@ -0,0 +1,139 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
PKG_CONFIG_LIBDIR=$NDK_HOME/platforms/android-24/arch-x86/usr/lib
|
||||||
|
PKG_CONFIG_SYSROOT_DIR=""
|
||||||
|
|
||||||
|
# Run cmake
|
||||||
|
cmake \
|
||||||
|
-DANDROID_COMPILER_FLAGS_CXX='-std=c++11' \
|
||||||
|
-DANDROID_PIE=1 \
|
||||||
|
-DANDROID_PLATFORM=android-24 \
|
||||||
|
-DANDROID_STL_FORCE_FEATURES=on \
|
||||||
|
-DANDROID_STL=c++_shared \
|
||||||
|
-DANDROID_TOOLCHAIN_NAME=x86-i686 \
|
||||||
|
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
|
||||||
|
-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
|
||||||
|
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=BOTH \
|
||||||
|
-DCMAKE_FIND_ROOT_PATH=$NDK_HOME/platforms/android-24/arch-x86/ \
|
||||||
|
-DCMAKE_MODULE_PATH=$ANDROIDTHINGS_NATIVE_LIB \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE=$NDK_HOME/build/cmake/android.toolchain.cmake \
|
||||||
|
-DJAVA_AWT_INCLUDE_PATH=$JAVA_HOME/include \
|
||||||
|
-DJAVA_AWT_LIBRARY=$JAVA_HOME/jre/lib/amd64/libjawt.so \
|
||||||
|
-DJAVA_INCLUDE_PATH=$JAVA_HOME/include \
|
||||||
|
-DJAVA_INCLUDE_PATH2=$JAVA_HOME/include/linux \
|
||||||
|
-DJAVA_JVM_LIBRARY=$JAVA_HOME/jre/lib/amd64/server/libjvm.so \
|
||||||
|
-DBUILDARCH=$BUILDARCH \
|
||||||
|
-DBUILDDOC=$BUILDDOC \
|
||||||
|
-DBUILDSWIG=$BUILDSWIG \
|
||||||
|
-DBUILDSWIGPYTHON=$BUILDSWIGPYTHON \
|
||||||
|
-DBUILDSWIGNODE=$BUILDSWIGNODE \
|
||||||
|
-DBUILDSWIGJAVA=$BUILDSWIGJAVA \
|
||||||
|
-DUSBPLAT=$USBPLAT \
|
||||||
|
-DFIRMATA=$FIRMATA \
|
||||||
|
-DONEWIRE=$ONEWIRE \
|
||||||
|
-DJSONPLAT=$JSONPLAT \
|
||||||
|
-DIMRAA=$IMRAA \
|
||||||
|
-DFTDI4222=$FTDI4222 \
|
||||||
|
-DIPK=$IPK \
|
||||||
|
-DRPM=$RPM \
|
||||||
|
-DENABLEEXAMPLES=$ENABLEEXAMPLES \
|
||||||
|
-DINSTALLGPIOTOOL=$INSTALLGPIOTOOL \
|
||||||
|
-DINSTALLTOOLS=$INSTALLTOOLS \
|
||||||
|
-DBUILDTESTS=$BUILDTESTS \
|
||||||
|
-DUSEPYTHON3TESTS=$USEPYTHON3TESTS \
|
||||||
|
-H. \
|
||||||
|
-Bbuild
|
||||||
|
|
||||||
|
make -Cbuild
|
||||||
|
make -Cbuild install
|
||||||
|
|
||||||
|
# Anotate the .java src from doxygen
|
||||||
|
echo src/mraa.i > build/swig.i.list
|
||||||
|
# TODO: install doxy port tool
|
||||||
|
#doxyport \
|
||||||
|
# build/swig.i.list \
|
||||||
|
# -s api,api/mraa \
|
||||||
|
# -d build/src/java \
|
||||||
|
# --convert-protected-to-private \
|
||||||
|
# -o mraa-java-files.txt \
|
||||||
|
# -m examples/samples.mapping.txt
|
||||||
|
|
||||||
|
# Copy the STL implementation into the build/src directory
|
||||||
|
cp $NDK_HOME/sources/cxx-stl/llvm-libc++/libs/x86/libc++_shared.so build/src/
|
||||||
|
|
||||||
|
|
||||||
|
# Template for res/values/values.xml in aar
|
||||||
|
values_xml='<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">XXX_LIBRARY</string></resources>'
|
||||||
|
|
||||||
|
# Template for AndroidManifest.xml in aar
|
||||||
|
AndroidManifest_xml='<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="XXX_PACKAGE.XXX_LIBRARY"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="XXX_VERSION" >
|
||||||
|
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="25"/>
|
||||||
|
<application android:allowBackup="true" android:label="@string/app_name" android:supportsRtl="true" />
|
||||||
|
</manifest>'
|
||||||
|
|
||||||
|
# Package prefix
|
||||||
|
JAVA_PKG_PREFIX_DOT="io.mraa.at"
|
||||||
|
|
||||||
|
# Package prefix slash to dot
|
||||||
|
JAVA_PKG_PREFIX_SLASH="${JAVA_PKG_PREFIX_DOT//\./\/}/upm"
|
||||||
|
|
||||||
|
# Work in the MRAA build directory
|
||||||
|
cd build
|
||||||
|
|
||||||
|
# Get the MRAA version string from the .pom file
|
||||||
|
VERSION=`ls src/java/*.pom | sed 's/\([^-]\+\)\-\([0-9]\+\.[0-9]\+\.[0-9]\+\)\.pom/\2/'`
|
||||||
|
|
||||||
|
# Get the MRAA name string from the .pom file
|
||||||
|
LIB_NAME=`ls src/java/*.pom | sed 's/^.*\/\([^-]\+\)\-\([0-9]\+\.[0-9]\+\.[0-9]\+\)\.pom/\1/'`
|
||||||
|
|
||||||
|
# Get the MRAA description string from the .pom file
|
||||||
|
LIB_DESCRIPTION=$(grep -oPm1 "(?<=<description>)[^<]+" src/java/$LIB_NAME-$VERSION.pom)
|
||||||
|
|
||||||
|
# Bundle upload directory
|
||||||
|
PKG_BUNDLE_DIR=BUNDLE_DIR
|
||||||
|
mkdir -p ${PKG_BUNDLE_DIR}
|
||||||
|
|
||||||
|
# Create the aar directory structure
|
||||||
|
AAR_DIRECTORY="$LIB_NAME-$VERSION"
|
||||||
|
mkdir -p $AAR_DIRECTORY/jni/x86
|
||||||
|
mkdir -p $AAR_DIRECTORY/res/values
|
||||||
|
|
||||||
|
# Write out res/values/values.xml to the aar
|
||||||
|
echo "${values_xml/XXX_LIBRARY/$LIB_NAME}" > $AAR_DIRECTORY/res/values/values.xml
|
||||||
|
|
||||||
|
# Write out AndroidManifest.xml to the aar
|
||||||
|
_tmp_manifest=${AndroidManifest_xml/XXX_PACKAGE/$JAVA_PKG_PREFIX_DOT}
|
||||||
|
_tmp_manifest=${_tmp_manifest/XXX_LIBRARY/$LIB_NAME}
|
||||||
|
echo "${_tmp_manifest/XXX_VERSION/$VERSION}" > $AAR_DIRECTORY/AndroidManifest.xml
|
||||||
|
|
||||||
|
# Copy over the so's
|
||||||
|
cp src/*.so $AAR_DIRECTORY/jni/x86
|
||||||
|
cp src/java/*.so $AAR_DIRECTORY/jni/x86
|
||||||
|
|
||||||
|
# Create javadoc jar
|
||||||
|
javadoc src/java/*.java -d $LIB_NAME-javadoc
|
||||||
|
jar cf $PKG_BUNDLE_DIR/$LIB_NAME-$VERSION-javadoc.jar $LIB_NAME-javadoc/*
|
||||||
|
|
||||||
|
# Create sources jar file for upload
|
||||||
|
jar cf $PKG_BUNDLE_DIR/$LIB_NAME-$VERSION-sources.jar src/java/*.java
|
||||||
|
|
||||||
|
# HACK - mraa pom file groupId is io.mraa (AT is io.mraa.at)
|
||||||
|
perl -p -i -e 's/(groupId>)(.*?)(<\/groupId)/\1io.mraa.at\3/' src/java/$LIB_NAME-$VERSION.pom
|
||||||
|
|
||||||
|
# HACK - mraa pom file packaging is 'jar' (convert this to 'aar')
|
||||||
|
perl -p -i -e 's/(packaging>)(.*?)(<\/packaging)/\1aar\3/' src/java/$LIB_NAME-$VERSION.pom
|
||||||
|
|
||||||
|
# Copy pom file
|
||||||
|
cp src/java/$LIB_NAME-$VERSION.pom $PKG_BUNDLE_DIR
|
||||||
|
|
||||||
|
# Copy the java module jar to classes.jar
|
||||||
|
cp src/java/$LIB_NAME.jar $AAR_DIRECTORY/classes.jar
|
||||||
|
|
||||||
|
# Create the .aar
|
||||||
|
pushd $AAR_DIRECTORY
|
||||||
|
jar cf ../$PKG_BUNDLE_DIR/$LIB_NAME-$VERSION.aar *
|
||||||
|
popd
|
||||||
26
scripts/run-cmake.sh
Executable file
26
scripts/run-cmake.sh
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Run cmake
|
||||||
|
cmake \
|
||||||
|
-DBUILDARCH=$BUILDARCH \
|
||||||
|
-DBUILDDOC=$BUILDDOC \
|
||||||
|
-DBUILDSWIG=$BUILDSWIG \
|
||||||
|
-DBUILDSWIGPYTHON=$BUILDSWIGPYTHON \
|
||||||
|
-DBUILDSWIGNODE=$BUILDSWIGNODE \
|
||||||
|
-DBUILDSWIGJAVA=$BUILDSWIGJAVA \
|
||||||
|
-DUSBPLAT=$USBPLAT \
|
||||||
|
-DFIRMATA=$FIRMATA \
|
||||||
|
-DONEWIRE=$ONEWIRE \
|
||||||
|
-DJSONPLAT=$JSONPLAT \
|
||||||
|
-DIMRAA=$IMRAA \
|
||||||
|
-DFTDI4222=$FTDI4222 \
|
||||||
|
-DIPK=$IPK \
|
||||||
|
-DRPM=$RPM \
|
||||||
|
-DENABLEEXAMPLES=$ENABLEEXAMPLES \
|
||||||
|
-DINSTALLGPIOTOOL=$INSTALLGPIOTOOL \
|
||||||
|
-DINSTALLTOOLS=$INSTALLTOOLS \
|
||||||
|
-DBUILDTESTS=$BUILDTESTS \
|
||||||
|
-DUSEPYTHON3TESTS=$USEPYTHON3TESTS \
|
||||||
|
-H. \
|
||||||
|
-Bbuild
|
||||||
|
|
||||||
Reference in New Issue
Block a user