I’m trying to create a yocto recipe for Redis Time Series but i’m struggling. The build system used by RedisTSDB is weird to say the least.
So far i have tried this:
SUMMARY = "Time Series data structure for Redis"
DESCRIPTION = "RedisTimeSeries is a time-series database (TSDB) module for Redis, by Redis."
HOMEPAGE = "https://github.com/RedisTimeSeries/RedisTimeSeries"
LICENSE = "CLOSED"
SRC_URI = "gitsm://github.com/RedisTimeSeries/RedisTimeSeries;branch=1.8;rev=v1.8.10"
S = "${WORKDIR}/git"
DEPENDS[pkgvarcheck] += "pypi python3 openssl"
RDEPENDS:${PN} = "redis"
do_compile() {
make
}
And i get an error
NOTE: recipe redis-timeseries-0.1-r0: task do_compile: Started
ERROR: redis-timeseries-0.1-r0 do_compile: ExecutionError('/home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/temp/run.do_compile.2624263', 2, None, None)
ERROR: Logfile of failure stored in: /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/temp/log.do_compile.2624263
Log data follows:
| DEBUG: Executing shell function do_compile
| /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/hosttools/bash: whoami: command not found
| Building /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/bin/linux-x64-release/hiredis/libhiredis.a ...
| /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/hosttools/bash: whoami: command not found
| Compiling /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/deps/LibMR/deps/hiredis/alloc.c...
| Compiling /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/deps/LibMR/deps/hiredis/async.c...
| Compiling /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/deps/LibMR/deps/hiredis/dict.c...
| Compiling /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/deps/LibMR/deps/hiredis/hiredis.c...
| Compiling /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/deps/LibMR/deps/hiredis/net.c...
| Compiling /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/deps/LibMR/deps/hiredis/read.c...
| Compiling /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/deps/LibMR/deps/hiredis/sds.c...
| Compiling /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/deps/LibMR/deps/hiredis/sockcompat.c...
| Compiling /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/deps/LibMR/deps/hiredis/ssl.c...
| /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/deps/LibMR/deps/hiredis/ssl.c:45:10: fatal error: openssl/ssl.h: No such file or directory
| 45 | #include <openssl/ssl.h>
| | ^~~~~~~~~~~~~~~
| compilation terminated.
| make[1]: *** [Makefile:63: /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/bin/linux-x64-release/hiredis/ssl.o] Error 1
| make: *** [Makefile:264: /home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/git/bin/linux-x64-release/hiredis/libhiredis.a] Error 2
| WARNING: exit code 2 from a shell command.
| ERROR: ExecutionError('/home/jenkins/workspace/workspace/EMS_Linux/poky/build/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/redis-timeseries/0.1-r0/temp/run.do_compile.2624263', 2, None, None)
NOTE: recipe redis-timeseries-0.1-r0: task do_compile: Failed
ERROR: Task (/home/jenkins/workspace/workspace/EMS_Linux/poky/../p2107_xem_ems01_bsp/meta-xemex-distro/recipes-core/redis-timeseries/redis-timeseries_0.1.bb:do_compile) failed with exit code '1'
NOTE: Tasks Summary: Attempted 4017 tasks of which 3899 didn't need to be rerun and 1 failed.
NOTE: Writing buildhistory
NOTE: Writing buildhistory took: 1 seconds
Note that I do not wat python in my image but it is required to build redis I think.
I’m not sure how to procceed.
2
Answers
I created a CMakeLists.txt that builds the
redistimeseries.so
shared library:Then I created a patch to add this in my yocto layer.
Updated
.bb
file:The error you’re encountering indicates that the build system is unable to find the openssl/ssl.h header file. This is likely because the necessary development package for OpenSSL is missing in your Yocto build environment.
To resolve this issue, you need to ensure that the OpenSSL development package is included as a dependency in your Yocto recipe. You can do this by adding the package name to the DEPENDS variable in your recipe. In this case, the package is likely named openssl-dev or libssl or openssl-devel . Be sure which of them is used in yocto. You can try them in order.