During bitbaking core-image-ros-world for v0.2-rc1 release testing,
compiling libpoco for the qemuarm64 machine failed with:
In file included from [...]/poco-poco-1.5.3-release/Foundation/src/diy-fp.h:31:0,
from [...]/poco-poco-1.5.3-release/Foundation/src/diy-fp.cc:29,
from [...]/poco-poco-1.5.3-release/Foundation/src/NumericString.cpp:23:
[...]/poco-poco-1.5.3-release/Foundation/src/utils.h:72:2: error: #error Target architecture was not detected as supported by Double-Conversion.
This issue has been already been reported in the libpoco github issue
tracker [1] and has been resolved with a simple patch [2] in the libpoco
repository and libpoco releases since 1.5.4. Hence, this commit simply
adds this patch to the current libpoco recipe.
To address the libpoco issue, I also considered to update libpoco to
version 1.6.0. However, this was not possible as version 1.6.0 requires
CMake >= 3.0.0 and this would require updating cmake in
OpenEmbedded-Core, which has major impact on all layers. Also, updating
libpoco to 1.5.4 lead to a problem with the OpenEmbedded-Core-provided
pcre 1.5.36 and the POCO_UNBUNDLED setting during compilation:
In file included from [...]/poco-poco-1.5.4-release/Foundation/src/RegularExpression.cpp:21:0:
[...]/usr/include/pcre.h:325:26: error: conflicting declaration 'typedef struct real_pcre pcre'
In file included from [...]/poco-poco-1.5.4-release/Foundation/src/RegularExpression.cpp:17:0:
[...]/poco-poco-1.5.4-release/Foundation/include/Poco/RegularExpression.h:37:34: note: previous declaration as 'typedef struct real_pcre8_or_16 pcre'
This issue is probably caused by the commit 'PCRE 8.35.0 Update' [3],
which defines types from pcre 8.35 that are incompatible to pcre 8.36.
[1] https://github.com/pocoproject/poco/issues/508
[2] 9258e482d7.patch
[3] 010f7a5370.patch
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
Backporting following libfreenect patch:
https://github.com/OpenKinect/libfreenect/commit/
0cbb86ec982d3e79ad5efa9d1b2b16724ae89bc5
Without this patch, libfreenect would override all compiler flags,
including any machine specific compile flags
(e.g. -mfloat-abi=hard to compile with hard floating point).
We are backporting this patch rather than upgrading to v0.4.1
where this is fixed, as v0.4.0 introduced changes that break
compatibility with the current freenect version (0.3.2).
See https://github.com/OpenKinect/libfreenect/releases/tag/v0.4.0
for the breaking changes.
See https://github.com/ros-drivers/freenect_stack/issues/12
for additional discussion.
This commit provides the autotools-brokensep class and uses it for
the wxwidgets recipe.
The autotools-brokensep indicates that this package currently cannot
handle out-of-source builds, and hence the in-source build must be
kept until this is resolved.
The autotools-brokensep class is a copy of the autotools-brokensep
class provided in the openembedded-core commit 006b8a78 [1].
To make this commit backwards compatible to even earlier versions
of openembedded-core, we provide this class in meta-ros ourselves.
[1] http://cgit.openembedded.org/openembedded-core/commit/?id=006b8a7808a58713af16c326dc37d07765334b12
Executing 'bitbake packagegroup-ros-world' shows the warning:
WARNING: QA Issue: collada-dom rdepends on libpcrecpp but its not a build dependency? [build-deps]
On a clean build, 'bitbake collada-dom' fails with:
| Linking CXX shared library libcollada-dom2.4-dp.so
...
| .../build/tmp-eglibc/sysroots/x86_64-linux/usr/libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/4.9.1/ld: external-libs/pcre-8.02/libpcre_local.a(pcre_compile.c.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
| external-libs/pcre-8.02/libpcre_local.a: error adding symbols: Bad value
| collect2: error: ld returned 1 exit status
| make[2]: *** [dom/libcollada-dom2.4-dp.so.2.4.0] Error 1
This commits adds libpcre as dependency, and resolves the issue.
Poco comes with bundled versions of SQLite3, zlib, expat, etc.
Adding the ``-DPOCO_UNBUNDLED=On`` option to CMake makes it use the ones provided by OE.
The qhull library is shipped under its own license. We add this
special license file in our layer in the directory licenses and
register this license directory in our layer configuration.
When compiling pcl-ros, bitbake aborts because for compiling the
Crypto library in libpoco, it needs the openssl headers.
The condensed error output is
** Compiling src/CipherKeyImpl.cpp (debug, shared)
arm-oe-linux-gnueabi-g++ -march=armv5te -marm -mthumb-interwork
-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
--sysroot=/home/lukas/oe-core/build/tmp-eglibc/sysroots/qemuarm
-I ... -DPOCO_BUILD_HOST=host -DPOCO_NO_WSTRING -DPOCO_UNBUNDLED
-D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_REENTRANT -D_THREAD_SAFE
-DPOCO_NO_FPENVIRONMENT -g -D_DEBUG -fPIC -c src/CipherKeyImpl.cpp
-o ...
In file included from include/Poco/Crypto/CipherKeyImpl.h:44:0,
from include/Poco/Crypto/CipherKey.h:44,
from src/CipherKey.cpp:37:
include/Poco/Crypto/OpenSSLInitializer.h:45:33: fatal error: openssl/opensslconf.h: No such file or directory
#include <openssl/opensslconf.h>
^
compilation terminated.
In file included from include/Poco/Crypto/CipherKeyImpl.h:44:0,
from src/CipherKeyImpl.cpp:37:
include/Poco/Crypto/OpenSSLInitializer.h:45:33: fatal error: openssl/opensslconf.h: No such file or directory
#include <openssl/opensslconf.h>
^
compilation terminated.
make[1]: *** [.../tmp-eglibc/work/armv5te-oe-linux-gnueabi/libpoco/1.4.6p1-r0/poco-1.4.6p1-all/Crypto/obj/Linux/armv5te/debug_shared/CipherKey.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make -C /home/lukas/oe-core/build/tmp-eglibc/work/armv5te-oe-linux-gnueabi/libpoco/1.4.6p1-r0/poco-1.4.6p1-all/Util
make[1]: *** [.../tmp-eglibc/work/armv5te-oe-linux-gnueabi/libpoco/1.4.6p1-r0/poco-1.4.6p1-all/Crypto/obj/Linux/armv5te/debug_shared/CipherKeyImpl.o] Error 1
make[1]: Entering directory `/home/lukas/oe-core/build/tmp-eglibc/work/armv5te-oe-linux-gnueabi/libpoco/1.4.6p1-r0/poco-1.4.6p1-all/Util'
This commit formats the libpoco recipe to follow the common
OpenEmbedded style more closely and removes a comment that points
to warnings that do not occur with the current recipe.