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=node4
|
||||
- TARGET=node5
|
||||
- TARGET=python2 JSONPLAT=ON
|
||||
- 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=android
|
||||
- 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:
|
||||
exclude:
|
||||
- compiler: clang
|
||||
env: TARGET=java
|
||||
- compiler: clang
|
||||
env: TARGET=java JSONPLAT=ON
|
||||
env: JSONPLAT=ON TARGET=java
|
||||
- compiler: clang
|
||||
env: TARGET=java BUILDARCH=MOCK
|
||||
env: BUILDARCH=MOCK TARGET=java
|
||||
- compiler: gcc
|
||||
env: TARGET=android
|
||||
- compiler: clang
|
||||
env: TARGET=sonar-scan
|
||||
allow_failures:
|
||||
- compiler: gcc
|
||||
env: TARGET=node4 JSONPLAT=ON
|
||||
env: JSONPLAT=ON TARGET=node4
|
||||
- compiler: clang
|
||||
env: TARGET=node4 JSONPLAT=ON
|
||||
env: JSONPLAT=ON TARGET=node4
|
||||
- compiler: gcc
|
||||
env: TARGET=node5 JSONPLAT=ON
|
||||
env: JSONPLAT=ON TARGET=node5
|
||||
- compiler: clang
|
||||
env: TARGET=node5 JSONPLAT=ON
|
||||
env: JSONPLAT=ON TARGET=node5
|
||||
|
||||
services:
|
||||
- docker
|
||||
@@ -59,6 +62,8 @@ before_script:
|
||||
- if [ "$CXX" == "g++" ]; then export CXX=g++-4.8; fi
|
||||
- if [ "$CC" == "clang" ]; then export CC=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}
|
||||
|
||||
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:
|
||||
|
||||
main:
|
||||
base:
|
||||
image: mraa-base
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
dockerfile: docker/Dockerfile.base
|
||||
args:
|
||||
- http_proxy
|
||||
- https_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:
|
||||
- http_proxy
|
||||
- https_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_ORG
|
||||
- SONAR_PROJ_KEY
|
||||
@@ -45,62 +67,58 @@ services:
|
||||
- TRAVIS_REPO_SLUG
|
||||
- TRAVIS_PULL_REQUEST_SLUG
|
||||
- GITHUB_TOKEN
|
||||
|
||||
doc:
|
||||
extends: main
|
||||
build:
|
||||
args:
|
||||
- BUILDDOC=ON
|
||||
command: bash -c "make doc"
|
||||
command: bash -c "./scripts/run-cmake.sh && cd build && ./../scripts/sonar-scan.sh"
|
||||
|
||||
python2:
|
||||
extends: main
|
||||
extends: base
|
||||
image: mraa-python
|
||||
build:
|
||||
args:
|
||||
- BUILDSWIG=ON
|
||||
- BUILDSWIGPYTHON=ON
|
||||
command: bash -c "make _python2-mraa && ctest --output-on-failure"
|
||||
dockerfile: docker/Dockerfile.python
|
||||
environment:
|
||||
- BUILDSWIG=ON
|
||||
- BUILDSWIGPYTHON=ON
|
||||
command: bash -c "./scripts/run-cmake.sh && cd build && make _python2-mraa && ctest --output-on-failure"
|
||||
|
||||
python3:
|
||||
extends: python2
|
||||
build:
|
||||
args:
|
||||
- USEPYTHON3TESTS=ON
|
||||
command: bash -c "make _python3-mraa && ctest --output-on-failure"
|
||||
environment:
|
||||
- USEPYTHON3TESTS=ON
|
||||
command: bash -c "./scripts/run-cmake.sh && cd build && make _python3-mraa && ctest --output-on-failure"
|
||||
|
||||
java:
|
||||
extends: main
|
||||
extends: base
|
||||
image: mraa-java
|
||||
build:
|
||||
args:
|
||||
- BUILDSWIG=ON
|
||||
- BUILDSWIGJAVA=ON
|
||||
- CC=gcc-4.8
|
||||
- CXX=g++-4.8
|
||||
command: bash -c "make mraajava && ctest --output-on-failure"
|
||||
dockerfile: docker/Dockerfile.java
|
||||
environment:
|
||||
- BUILDSWIG=ON
|
||||
- BUILDSWIGJAVA=ON
|
||||
command: bash -c "./scripts/run-cmake.sh && cd build && 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:
|
||||
extends: main
|
||||
extends: base
|
||||
image: mraa-node4
|
||||
build:
|
||||
dockerfile: docker/Dockerfile.node
|
||||
args:
|
||||
- BUILDSWIG=ON
|
||||
- BUILDSWIGNODE=ON
|
||||
- NODE_VERSION=v4.4.7
|
||||
command: bash -c "source /root/.nvm/nvm.sh && make npmpkg && cd .. && node-gyp configure && node-gyp build && npm test"
|
||||
- NODE_VERSION=v4.4.7
|
||||
environment:
|
||||
- BUILDSWIG=ON
|
||||
- BUILDSWIGNODE=ON
|
||||
command: bash -c "./scripts/run-cmake.sh && make -Cbuild npmpkg && node-gyp configure && node-gyp build && npm test"
|
||||
|
||||
node5:
|
||||
extends: node4
|
||||
image: mraa-node5
|
||||
build:
|
||||
args:
|
||||
- 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