CompilingSource

From ago control wiki
Jump to: navigation, search

Contents

Debian Wheezy

Dependencies

You can use the dev packages for knx and z-wave from our mirror or compile them from source (please be aware that the bcusdk source needs tweaking for some platforms like armhf)

apt-get install quilt devscripts libudev-dev libqpidclient2-dev uuid-dev libqpidcommon2-dev libqpidmessaging2-dev \
git libqpidtypes1-dev g++-4.6 libtinyxml2-dev libjsoncpp-dev libyaml-cpp-dev libsqlite3-dev \
libopenzwave1.0-dev libi2c-dev libeibclient-dev intltool libboost-dev libboost-date-time-dev realpath libhdate-dev libcurl4-openssl-dev liblua5.2-dev \
ola-dev cmake libboost-system-dev libboost-filesystem-dev libboost-regex-dev libboost-thread-dev libboost-program-options-dev libaugeas-dev librrd-dev \
libprocps0-dev libcppdb-dev

Get the source

git clone http://git.agocontrol.com/agocontrol/agocontrol.git

Select the proper branch

Stable releases are tagged on master. Development happens on the "develop" branch. More details are here: Git

cd agocontrol
git checkout develop

Manual Compilation

For an out of tree build, do this:

mkdir build
cd build
cmake ..
make

If you want to specify build options, run cmake with the "-i" parameter.

If you want to compile with debug info (-g option) run "cmake -DCMAKE_BUILD_TYPE=Debug .." instead of "cmake .."

Building debian packages

Change into the git dir and run:

dpkg-buildpackage -b -uc -us

Cleaning built stuff

To clean everything execute:

dpkg-buildpackage -tc

Debian Jessie

Dependencies

You can use the dev packages for knx and z-wave from our mirror or compile them from source (please be aware that the bcusdk source needs tweaking for some platforms like armhf)

apt-get install quilt devscripts libudev-dev libqpidclient2-dev uuid-dev libqpidcommon2-dev libqpidmessaging2-dev \
git libqpidtypes1-dev g++ libtinyxml2-dev libjsoncpp-dev libyaml-cpp0.3-dev libsqlite3-dev \
libopenzwave1.0-dev libi2c-dev libeibclient-dev intltool libboost-dev libboost-date-time-dev realpath libhdate-dev libcurl4-openssl-dev liblua5.2-dev \
libola-dev cmake libboost-system-dev libboost-filesystem-dev libboost-regex-dev libboost-thread-dev libboost-program-options-dev libaugeas-dev librrd-dev \
libprocps-dev libcppdb-dev

Debian Testing

This tutorial seems to works only under AMD64.

PLEASE NOTE - This information was written before the release of jessie. It is currently untested.

Dependencies

Because libqpid is not available in testing debian repository (at least at the end of 2014), you have to add unstable packages adding this line to /etc/apt/sources.list:

deb http://ftp.fr.debian.org/debian/ unstable main non-free contrib

Then to allow installing only unstable packages manually, you need to create /etc/apt/preferences file and add these lines inside:

Package: *
Pin: release a=testing
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

Install manually qpid packages under aptitude:

libqpidclient2-dev libqpidcommon2-dev libqpidmessaging2-dev libqpidtypes1-dev libqpidclient2 libqpidcommon2 libqpidmessaging2 libqpidtypes1

And install other packages:

apt-get install quilt devscripts libudev-dev uuid-dev git g++-4.6 libtinyxml2-dev libjsoncpp-dev libyaml-cpp-dev libsqlite3-dev \
libopenzwave1.0-dev libi2c-dev libeibclient-dev intltool libboost-dev libboost-date-time-dev realpath libhdate-dev libcurl4-openssl-dev liblua5.2-dev \
ola-dev cmake libboost-system-dev libboost-filesystem-dev libboost-regex-dev libboost-thread-dev libboost-program-options-dev libaugeas-dev librrd-dev

Get the source

git clone http://git.agocontrol.com/agocontrol/agocontrol.git

Select the proper branch

Stable releases are tagged on master. Development happens on the "develop" branch. More details are here: Git

git checkout develop

Manual Compilation

Before compiling, you need to update some files: In debian/control

  • Replace all 1.49 by 1.55 (currently installed libboost version)
  • Replace libyaml-cpp-dev by libyaml-cpp0.3-dev (currently installed libyaml version)
  • Replace libprocps0-dev by libprocps3-dev

Alternatively you can remove unnecessary packages to avoid their compilations:

  • debian/control
  • devices/CMakeLists.txt

For an out of tree build, do this:

mkdir build
cd build
cmake ..
make

If you want to specify build options, run cmake with the "-i" parameter.

Building debian packages

Change into the git dir and run:

dpkg-buildpackage -b -uc -us

Cleaning built stuff

To clean everything execute:

dpkg-buildpackage -tc

Helper script

This script can be helpful to automatize compilation and packages build process

rm *.deb *.changes
mv agocontrol/debian/control agocontrol/debian/control.bak
cp control agoco herentrol/debian/control
mv agocontrol/devices/CMakeLists.txt agocontrol/devices/CMakeLists.txt.bak
cp CMakeLists.txt agocontrol/devices/CMakeLists.txt
cd agocontrol/build
cmake ..
make
cd ..
dpkg-buildpackage -b -uc -us
dpkg-buildpackage -tc
cd ..
mv agocontrol/debian/control.bak agocontrol/debian/control
mv agocontrol/devices/CMakeLists.txt.bak agocontrol/devices/CMakeLists.txt

Install it and copy your debian/control and devices/CMakeLists.txt files just before agocontrol root directory (where packages are built). Then execute this script.

Debian Jessie as Docker container

You can create a build environment using a Docker container, as described here

Personal tools