Private
Public Access
2
0

Travis CI and Documentation Generation improvements

* Use docker images from docker hub instead of building them on Travis
* Fix doxygen warnings for C/C++ Documentation
* Fix examples inclusion in documentation
* Modify Travis build matrix to include stages and additional jobs
* Update doxygen2jsdoc submodule
* Add doxyport submodule
* Generate documentation for each language in Travis
* Add sonar.java.binaries to sonar-scan.sh

Signed-off-by: Nicolas Oliver <dario.n.oliver@intel.com>
This commit is contained in:
Nicolas Oliver
2017-07-28 10:48:48 -03:00
parent 14bf91af44
commit e0a1862ce3
51 changed files with 486 additions and 434 deletions

View File

@@ -4,7 +4,7 @@ libmraa uses cmake in order to make compilation relatively painless. CMake runs
build out of tree so the recommended way is to clone from git and make a `build/`
directory inside the clone directory.
For building imraa check [building imraa](./imraa.md)
For building imraa check @ref buildingimraa page.
## Build dependencies
Not all these are required but if you're unsure of what you're doing this is
what you'll need:
@@ -95,8 +95,10 @@ Building doc, this will require [SPHINX](http://sphinx-doc.org) &
`-DBUILDDOC=ON`
You will also require clone git submodules from your existing checkout:
`git submodule update --init --recursive`
The from doxygen2jsdoc dir:
`npm install mkdirp commander lodash bluebird pegjs`
Then from doxygen2jsdoc dir:
`npm install`
Then from doxyport dir:
`make setup`
Override build architecture (this is useful because on x86 ARM code is not
compiled so use this flag to force the target arch)
@@ -166,7 +168,7 @@ To run, make sure `libmraajava.so` is in `LD_LIBRARY_PATH`
jave -cp $DIR_WHERE_YOU_INSTALLED_MRAA/mraa.jar:. Example
~~~~~~~~~~~~~
If you want to add or improve Java bindings for mraa, please follow the [Creating Java Bindings Guide](https://github.com/intel-iot-devkit/upm/blob/master/docs/creating_java_bindings.md).
If you want to add or improve Java bindings for mraa, please follow the <a href="https://github.com/intel-iot-devkit/upm/blob/master/docs/creating_java_bindings.md">Creating Java Bindings Guide</a>.
## Building an IPK/RPM package using `cpack`
@@ -195,7 +197,8 @@ The [Things Native Library](https://github.com/androidthings/native-libandroidth
[FindAndroidThings.cmake](https://github.com/androidthings/native-libandroidthings/blob/master/FindAndroidThings.cmake). Make sure the directory containing this module is
added to the CMAKE_MODULE_PATH.
#### NDK r14b
### NDK r14b
~~~~~~~~~~~~~{.sh}
cmake -DBUILDSWIG=OFF -DBUILDARCH=PERIPHERALMAN -DANDROID_TOOLCHAIN_NAME=x86-i686 -DCMAKE_TOOLCHAIN_FILE=/path/to/android-ndk-r14b/build/cmake/android.toolchain.cmake -DCMAKE_MODULE_PATH=/path/to/native-libandroidthings ..
~~~~~~~~~~~~~
@@ -212,61 +215,6 @@ Requirements:
**NOTE:** docker-compose is an optional requirement. It actually make running complex
docker build and run command easier. But you can just use docker to build and run.
### Docker Images Hierarchy
To improve build times and images sizes, mraa use a build hierarchy to incrementally
create a build environment. Find below a brief description of them:
1. **mraa-base:** Provides the basic infrastructure and tools to compile C/C++ code and documentation.
2. **mraa-python:** Provides the python2/python3 build tools. Depends on `mraa-base`.
3. **mraa-java:** Provides the Java build tools. Depends on `mraa-base`.
4. **mraa-android:** Provides the Android Things build tools. Depends on `mraa-java`.
5. **mraa-node4:** Provides the Node.js v4.4.7 build tools. Depends on `mraa-base`.
6. **mraa-node5:** Same as `mraa-node4`, but using Node.js v5.12.0.
7. **mraa-sonar:** Provides the tools for running [Sonar Qube](https://www.sonarqube.org/) Scans. Depends on `mraa-base`.
**NOTE:** If you want to know which tools are installed for each of the mraa targets,
just take a look at the `docker/` folder. All the related Dockerfiles are stored there!
### Building Docker Images
**tl;dr:** Just use this commands to build the hierarchy:
```sh
# Build the base image
$ docker-compose build base
# Build python image
$ docker-compose build python
# Build java image
$ docker-compose build java
# Build node4 image
$ docker-compose build node4
# Build node5 image
$ docker-compose build node5
# Build android things image
$ docker-compose build android
# Build sonar image
$ docker-compose build sonar-scan
```
**docker-compose** will take a look at the `docker-compose.yaml` file in the repository
root directory, and build the requested target for you. At the end, docker-compose will
tag the image built with an `mraa-` prefix. You can check them by running `docker images`.
If you don't want to use docker-compose, you can also use `docker build` to generate every image.
For example, to create the base image, you can do:
```sh
# From the repository root folder
$ docker build -d docker/Dockerfile.base -t mraa-base .
```
Now, you don't actually need to build every image to start working. Let's say you
are a Python developer, and has no idea what Node.js is, just build the base and
python image!
**NOTE:** If you work on Android Things, you will need the base, java, and android image.
### Using Docker Images to build Mraa
**tl;dr:** Just use this commands to build mraa:
@@ -284,6 +232,8 @@ $ docker-compose run java
$ docker-compose run node4
# Build mraa node5 package
$ docker-compose run node5
# Build mraa node6 package
$ docker-compose run node6
# Build mraa for android things package
$ docker-compose run android
# Run Sonar Qube Scans for mraa
@@ -291,7 +241,8 @@ $ docker-compose run sonar-scan
```
**docker-compose** will take a look at the `docker-compose.yaml` file in the repository
root directory, and run an specific command to build mraa for the requested target.
root directory, pull the required docker image, and run an specific command to build
mraa for the requested target.
Once the build is completed, you will have a `build/` folder in the repository root with all
the compiled code. This `build/` folder is created by using a docker volume. The `build\`
folder contents is reused each time you execute `docker-compose run [TARGET]`.
@@ -318,7 +269,7 @@ $ docker run \
--env BUILDSWIGPYTHON=ON \
--env BUILDSWIGJAVA=OFF \
--env BUILDSWIGNODE=OFF \
mraa-python \
dnoliver/mraa-python \
bash -c "./scripts/run-cmake.sh && make -Cbuild _python2-mraa"
```
@@ -332,25 +283,6 @@ to proxy settings:
Visit [this link](https://docs.docker.com/engine/admin/systemd/#httphttps-proxy)
to configure docker daemon behind a proxy.
**docker build fails to fetch packages from internet**
docker-compose will automatically take `http_proxy`, `https_proxy`, and `no_proxy`
environment variables and use it as build arguments. Be sure to properly configure
this variables before building.
docker, unlinke docker-compose, do not take the proxy settings from the environment
automatically. You need to send them as build arguments:
```sh
# From the repository root folder
$ docker build \
-d docker/Dockerfile.base \
--build-arg http_proxy=$http_proxy \
--build-arg https_proxy=$https_proxy \
--build-arg no_proxy=$no_proxy \
-t mraa-base .
```
**docker run fails to access the internet**
docker-compose will automatically take `http_proxy`, `https_proxy`, and `no_proxy`
@@ -371,6 +303,6 @@ $ docker run \
--env http_proxy=$http_proxy \
--env https_proxy=$https_proxy \
--env no_proxy=$no_proxy \
mraa-python \
dnoliver/mraa-python \
bash -c "./scripts/run-cmake.sh && make -Cbuild _python2-mraa"
```