tag | 9574ba61f078c29247cbd3d7c056d534651bd9ff | |
---|---|---|
tagger | Clebert Suconic <clebertsuconic@apache.org> | Mon Oct 21 10:44:08 2019 -0400 |
object | 737b83588262d59a43911adf3dc1438e5ab7d569 |
[maven-release-plugin] copy for tag 1.0.1
commit | 737b83588262d59a43911adf3dc1438e5ab7d569 | [log] [tgz] |
---|---|---|
author | Clebert Suconic <clebertsuconic@apache.org> | Mon Oct 21 10:43:58 2019 -0400 |
committer | Clebert Suconic <clebertsuconic@apache.org> | Mon Oct 21 10:43:58 2019 -0400 |
tree | d383659e064f8b5d842a6acaef7d3ccb5ac55e4d | |
parent | c435b2e30e40e6226fcc7e6db122467df29d2792 [diff] |
[maven-release-plugin] prepare release 1.0.1
This is a simple tutorial about building and packaging the libartemis-native library. The libartemis-native is a thin layer library that interface with Linux' lib AIO library as part of the journaling feature of the broker when operating with AIO journal.
The lib AIO is a Linux-specific dependency, therefore having a relatively modern Linux operating system is assumed for the purpose of this documentation.
There are two ways to build the native libraries:
The only requirement needed for this compilation option is Docker.
The required image will be downloaded by Docker when you build it.
You can use the script ./scripts/compile-using-docker.sh and the correct image and script should be called.
$ ./scripts/compile-using-docker.sh
Or you could also using the -Pdocker profile on maven:
$ mvn install -Pdocker
In order to build the package, make sure you install these packages:
For example, on Fedora Linux, compilation of the library requires the following specific packages:
Using a 64-bit Linux OS, it is possible to cross-compile the 32-bit version of the library. For this, the 32-bits version of the GNU C Library and lib AIO should be installed.
Once again using Fedora Linux as an example, it would mean that the following packages need to be installed:
You can use the ./scripts/compile-native.sh script. This script is using cross compilation towards 64 bits and 32 bits from a Linux environment.
$ ./scripts/compile-native.sh
Or you can use the bare-metal profile
$ mvn install -Pbare-metal
The Lib AIO is the Linux' Kernel Asynchronous I/O Support Library. It is part of the kernel project. The library makes system calls on the kernel layer.
This is the project information:
Git Repository: git://git.kernel.org/pub/scm/libs/libaio/libaio.git Mailing List: linux-aio@kvack.org
From the project base directory, run:
docker build -f src/main/docker/Dockerfile-centos -t artemis-native-builder . && docker run -v $PWD/target/lib:/work/target/lib artemis-native-builder && sudo chown -Rv $USER:$GID target/lib
Example:
export JAVA_HOME=/usr/share/jdk1.8
if you are missing any dependencies, autoconf would tell you what you're missing.
The generated jar will include the ./lib/
Passing additional options to the compiler: cmake -DCMAKE_USER_C_FLAGS="-fomit-frame-pointer" -DCMAKE_VERBOSE_MAKEFILE=On .
Compiling with debug options: cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_VERBOSE_MAKEFILE=On .
Cross-compilation: cmake -DCMAKE_VERBOSE_MAKEFILE=On -DCMAKE_USER_C_FLAGS="-m32" -DARTEMIS_CROSS_COMPILE=On -DARTEMIS_CROSS_COMPILE_ROOT_PATH=/usr/lib .
Cross-compilation with debugging symbols: cmake -DCMAKE_VERBOSE_MAKEFILE=On -DCMAKE_USER_C_FLAGS="-m32" -DARTEMIS_CROSS_COMPILE=On -DARTEMIS_CROSS_COMPILE_ROOT_PATH=/usr/lib .
The User Manual, chapter 38 (Libaio Native Libraries) will provide more details about our native libraries on libaio.