libelektra
libelektra copied to clipboard
Plugin/xfconf
Basics
- [ ] Short descriptions of your changes are in the release notes
(added as entry in
doc/news/_preparation_next_release.mdwhich contains_(my name)_) Please always add something to the release notes. - [ ] Details of what you changed are in commit messages
(first line should have
module: short statementsyntax) - [ ] References to issues, e.g.
close #X, are in the commit messages. - [ ] The buildservers are happy. If not, fix in this order:
- [ ] add a line in
doc/news/_preparation_next_release.md - [ ] reformat the code with
scripts/dev/reformat-all - [ ] make all unit tests pass
- [ ] fix all memleaks
- [ ] add a line in
- [x] The PR is rebased with current master.
Checklist
- [ ] I added unit tests for my code
- [ ] I fully described what my PR does in the documentation (not in the PR description)
- [ ] I fixed all affected documentation
- [x] I added code comments, logging, and assertions as appropriate (see Coding Guidelines)
- [ ] I updated all meta data (e.g. README.md of plugins and METADATA.ini)
- [ ] I mentioned every code not directly written by me in reuse syntax
Review
- [ ] Documentation is introductory, concise, good to read and describes everything what the PR does
- [ ] Examples are well chosen and understandable
- [ ] Code is conforming to our Coding Guidelines
- [ ] APIs are conforming to our Design Guidelines
- [ ] Code is consistent to our Design Decisions
Labels
- [x] Add the "work in progress" label if you do not want the PR to be reviewed yet.
- [ ] Add the "ready to merge" label if the basics are fulfilled and no further pushes are planned by you.
I ran into an issue regarding the macOS images: xfconf is only available for macOS through macports but not homebrew so I wonder what am I supposed to do. I see multiple options:
- I could install macports on the images and then install xfconf
- I could exclude the xfconf-plugin from the cirrus file in the macOS images
- I could build xfconf for the macOS images from scratch (maybe I could just curl the macports port for xfconf and build it manually if macports work the similar to the BSD ports)
Another problem I ran into is regarding the FreeBSD images: all of them refuse linking the xfconf-plugin and I am not able to recognize the exact problem here. I have installed xfconf on the FreeBSD images. Before doing that the images threw a compilation error which tells me that the FreeBSD images are able to find the xfconf library at least kind of in some cases. Here is the error log regarding the linking process:
[481/965] Linking C shared module lib/libelektra-xfconf.so
FAILED: lib/libelektra-xfconf.so
: && /usr/local/bin/clang12 -fPIC -std=c11 -Wno-deprecated-declarations -Wstrict-prototypes -Werror -Wno-long-long -Wpedantic -Wno-variadic-macros -Wall -Wextra -Wno-overlength-strings -Wsign-compare -Wfloat-equal -Wformat -Wformat-security -Wshadow -Wcomments -Wtrigraphs -Wundef -Wuninitialized -Winit-self -Wsign-compare -Wfloat-equal -O2 -g -DNDEBUG -Wl,--version-script=/tmp/cirrus-ci-build/src/plugins/plugin-symbols.map -shared -o lib/libelektra-xfconf.so src/plugins/xfconf/CMakeFiles/elektra-xfconf.dir/xfconf.c.o -Wl,-rpath,/tmp/cirrus-ci-build/build/lib: lib/libelektra-plugin.so.0.9.10 lib/libelektra-ease.so.0.9.10 -lxfconf-0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl lib/libelektra-core.so.0.9.10 && :
ld: error: unable to find library -lxfconf-0
ld: error: unable to find library -lgio-2.0
ld: error: unable to find library -lgobject-2.0
ld: error: unable to find library -lglib-2.0
ld: error: unable to find library -lintl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I would be glad about any suggestions.
I could exclude the xfconf-plugin from the cirrus file in the macOS images
Sounds sensible. Using XFCE under macOS is probably a rare thing. Without actually testing if the macports xfce even works it would be a waste of (CPU) time doing regression checks.
FreeBSD
Sounds like linker path is incomplete. Where are these files (xfconf-0*.so etc.)?
I could exclude the xfconf-plugin from the cirrus file in the macOS images
Sounds sensible. Using XFCE under macOS is probably a rare thing. Without actually testing if the macports xfce even works it would be a waste of (CPU) time doing regression checks.
That is right, so I will exclude it.
FreeBSD
Sounds like linker path is incomplete. Where are these files (xfconf-0*.so etc.)?
Using pkg on my local FreeBSD 13 machine they are located in the ports library directory
ls -l /usr/local/lib/*xfconf*
prints
lrwxr-xr-x 1 root wheel 20 Jul 3 11:01 /usr/local/lib/libxfconf-0.so -> libxfconf-0.so.3.0.0
lrwxr-xr-x 1 root wheel 20 Jul 3 11:01 /usr/local/lib/libxfconf-0.so.3 -> libxfconf-0.so.3.0.0
-rwxr-xr-x 1 root wheel 107256 Jul 3 11:01 /usr/local/lib/libxfconf-0.so.3.0.0
Weird, /usr/local/lib is in the linker path and ldconfig was executed?
What does pkg-config --cflags libxfconf-0 say on that system?
Is something in the CMake error logs?
Weird, /usr/local/lib is in the linker path and ldconfig was executed?
grep ldconfig cmake-build/CMakeFiles/CMakeOutput.log prints nothing, so I guess it is not the case?
As ldconfig -r | grep xfconf prints 172:-lxfconf-0.3 => /usr/local/lib/libxfconf-0.so.3 I assume the missing execution of ldconfig is the reason but how can I change that?
What does
pkg-config --cflags libxfconf-0say on that system?
-I/usr/local/include/xfce4/xfconf-0 -I/usr/local/include -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -pthread
Is something in the CMake error logs?
Nothing useful for this issue. Unfortunately, I am unable to build it on my local FreeBSD machine too because of:
[2/146] Linking C executable bin/testmod_iconv
FAILED: bin/testmod_iconv
: && /usr/bin/cc -std=gnu99 -Wno-deprecated-declarations -Wstrict-prototypes -Wno-long-long -Wpedantic -Wno-variadic-macros -Wall -Wextra -Wno-overlength-strings -Wsign-compare -Wfloat-equal -Wformat -Wformat-security -Wshadow -Wcomments -Wtrigraphs -Wundef -Wuninitialized -Winit-self -Wsign-compare -Wfloat-equal -O2 -g -DNDEBUG tests/cframework/CMakeFiles/cframework.dir/tests.c.o src/plugins/iconv/CMakeFiles/elektra-iconv-objects.dir/iconv.c.o src/plugins_tests/CMakeFiles/testmod_iconv.dir/iconv/testmod_iconv.c.o -o bin/testmod_iconv -Wl,-rpath,/home/richi/libelektra/cmake-build/lib: lib/libelektra-kdb.so.0.9.10 lib/libelektra-plugin.so.0.9.10 -lc lib/libelektra-core.so.0.9.10 && :
ld: error: undefined symbol: libiconv_open
>>> referenced by iconv.c:0 (/home/richi/libelektra/src/plugins/iconv/iconv.c:0)
>>> src/plugins/iconv/CMakeFiles/elektra-iconv-objects.dir/iconv.c.o:(kdbbUTF8Engine)
ld: error: undefined symbol: libiconv
>>> referenced by iconv.c:123 (/home/richi/libelektra/src/plugins/iconv/iconv.c:123)
>>> src/plugins/iconv/CMakeFiles/elektra-iconv-objects.dir/iconv.c.o:(kdbbUTF8Engine)
ld: error: undefined symbol: libiconv_close
>>> referenced by iconv.c:0 (/home/richi/libelektra/src/plugins/iconv/iconv.c:0)
>>> src/plugins/iconv/CMakeFiles/elektra-iconv-objects.dir/iconv.c.o:(kdbbUTF8Engine)
cc: error: linker command failed with exit code 1 (use -v to see invocation)
[4/146] Linking C executable bin/testmod_filecheck
FAILED: bin/testmod_filecheck
: && /usr/bin/cc -std=gnu99 -Wno-deprecated-declarations -Wstrict-prototypes -Wno-long-long -Wpedantic -Wno-variadic-macros -Wall -Wextra -Wno-overlength-strings -Wsign-compare -Wfloat-equal -Wformat -Wformat-security -Wshadow -Wcomments -Wtrigraphs -Wundef -Wuninitialized -Winit-self -Wsign-compare -Wfloat-equal -O2 -g -DNDEBUG tests/cframework/CMakeFiles/cframework.dir/tests.c.o src/plugins/filecheck/CMakeFiles/elektra-filecheck-objects.dir/filecheck.c.o src/plugins_tests/CMakeFiles/testmod_filecheck.dir/filecheck/testmod_filecheck.c.o -o bin/testmod_filecheck -Wl,-rpath,/home/richi/libelektra/cmake-build/lib: lib/libelektra-kdb.so.0.9.10 lib/libelektra-plugin.so.0.9.10 -lc lib/libelektra-core.so.0.9.10 && :
ld: error: undefined symbol: libiconv_open
>>> referenced by filecheck.c:0 (/home/richi/libelektra/src/plugins/filecheck/filecheck.c:0)
>>> src/plugins/filecheck/CMakeFiles/elektra-filecheck-objects.dir/filecheck.c.o:(checkFile)
ld: error: undefined symbol: libiconv
>>> referenced by filecheck.c:188 (/home/richi/libelektra/src/plugins/filecheck/filecheck.c:188)
>>> src/plugins/filecheck/CMakeFiles/elektra-filecheck-objects.dir/filecheck.c.o:(checkFile)
ld: error: undefined symbol: libiconv_close
>>> referenced by filecheck.c:301 (/home/richi/libelektra/src/plugins/filecheck/filecheck.c:301)
>>> src/plugins/filecheck/CMakeFiles/elektra-filecheck-objects.dir/filecheck.c.o:(checkFile)
cc: error: linker command failed with exit code 1 (use -v to see invocation)
[7/146] Linking C executable bin/testmod_ni
ninja: build stopped: subcommand failed.
despite iconv-2.0_5 and libiconv-1.16 being installed on that system.
I managed to reproduce the same error on my local FreeBSD machine. I let clang output the ld invocation which was:
"/usr/local/llvm12/bin/ld" --eh-frame-hdr -Bshareable --hash-style=both --enable-new-dtags -o lib/libelektra-xfconf.so /usr/lib/crti.o /usr/lib/crtbeginS.o -L/usr/lib --version-script=/home/richi/libelektra/src/plugins/plugin-symbols.map src/plugins/xfconf/CMakeFiles/elektra-xfconf.dir/xfconf.c.o -rpath /home/richi/libelektra/cmake-build/lib: lib/libelektra-plugin.so.0.9.10 lib/libelektra-ease.so.0.9.10 -lxfconf-0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl lib/libelektra-core.so.0.9.10 -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/crtendS.o /usr/lib/crtn.o. However, I wondered why -L/usr/local/lib was not included as a parameter which is quite important for FreeBSD - when I invoke the linker manually and add this parameter, ld does not fail anymore. Do you have any suggestions how to add /usr/local/lib to the linker path (globally)? I am wondering how it was possible for other plugins to pass the FreeBSD stages whose libraries are located at /usr/local/lib such as yajl or yaml.
Please disable your plugin/binding if PkgConfig is not found (see e.g. src/bindings/gsettings/CMakeLists.txt). As you probably want to reuse the xfconf detection code, it also makes sense to create a xfconf module in scripts/cmake/Modules/. First check if something like this was already written by someone else, this might actually solve the whole problem we face, as this module might work perfectly with FreeBSD.
If it does not help: There is probably some FreeBSD-specific solution I do not know. In two modules (scripts/cmake/Modules/FindLibJWT.cmake and FindMySqlCppConn.cmake ) we have /usr/local/lib in PATHS of find_library (this would be an alternative way not using pkgconfig). But as many other modules also seem to work for you, this might not be needed. I also would need a local FreeBSD setup to find out the differences of why also other modules link correctly (if they do?).
Please disable your plugin/binding if PkgConfig is not found (see e.g. src/bindings/gsettings/CMakeLists.txt). As you probably want to reuse the xfconf detection code, it also makes sense to create a xfconf module in scripts/cmake/Modules/. First check if something like this was already written by someone else, this might actually solve the whole problem we face, as this module might work perfectly with FreeBSD.
Thank you for the tip. I created a cmake module for xfconf based on scripts/cmake/Modules/FindLibJWT.cmake.
It now works and pkgconfig is no longer required. The FreeBSD stages are still failing but at least they are now able to build the project.
Now, the FreeBSD machines throw /usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found during the run_all target. I can find
- examples/codegen/tree/src/application.c
- examples/codegen/econf/src/application.c
- examples/codegen/menu/src/application.c
- examples/external/pkgconfig/application.c
- examples/external/cmake/application.c
- examples/highlevel/pkgconfig/application.c
- examples/highlevel/cmake/application.c
within the project, but after building, I cannot find the
applicationbinary anywhere on my local machine. It seems to me that it does not get compiled. Do you know something about that?
We probably need build logs to find anything out about it. Imho it is a bug, it should be possible to build test cases which cannot be run afterwards.
@kodebach Do you have an idea?
Looks like the codegen-based examples cannot be built. The build logs also show
/bin/sh: gcc: not found
So I guess that's the issue. No idea why it would've worked before, but not now.
Looks like gcc is hardcoded somewhere where actually the compiler detected by cmake should be used.
detected by cmake
This was in one of the pkgconfig examples that should run without CMake. But maybe replacing gcc with just cc works.
In doc/TESTING.md we actually require gcc to be installed. This is probably only because of pythongen, which should be removed anyway.
The proper C compiler is "CMAKE_C_COMPILER" (or CMAKE_CXX_COMPILER for C++), not cc, which we do not require to exist (see doc/TESTING.md).
I still have this issue with freebsd and I compared the output from the ci log of this PR with the current master (this PR is ahead of master). The first difference I can find is:
ELEKTRA CHECK EXTERNAL EXAMPLE
/usr/local/bin/pkg-config
Check if script tests the correct version
Testing build with cmake
realpath: /usr/local/lib/elektra/tool_exec/../../scripts/cmake/Elektra: No such file or directory
CMake Warning (dev) in CMakeLists.txt:
No project() command is present. The top-level CMakeLists.txt file must
contain a literal, direct call to the project() command. Add a line of
code such as
project(ProjectName)
near the top of the file, but after cmake_minimum_required().
CMake is pretending there is a "project(Project)" command on the first
line.
This warning is for project developers. Use -Wno-dev to suppress it.
May this be the root cause of the problem? If yes, does anybody know how to generate /usr/local/lib/elektra/tool_exec/../../scripts/cmake/Elektra?
I still have this issue with freebsd and I compared the output from the ci log of this PR with the current master (this PR is ahead of master). The first difference I can find is:
I think this is a different problem. I wonder why this test is even executed in the installed Elektra?
https://github.com/ElektraInitiative/libelektra/blob/2a203b457821dcb36defbc16d5cdee1643c810d3/tests/shell/external/example.sh#L55
But your approach sounds promising: which other differences are there?
I think this is related #2523. The test in question is one of the ones in tests/shell/external. Those tests only work with an installed version of Elektra.
But your approach sounds promising: which other differences are there?
This is the complete output what this branch produces but not the master.
Click to expand
ELEKTRA CHECK EXTERNAL EXAMPLE
/usr/local/bin/pkg-config
Check if script tests the correct version
Testing build with cmake
realpath: /usr/local/lib/elektra/tool_exec/../../scripts/cmake/Elektra: No such file or directory
CMake Warning (dev) in CMakeLists.txt:
No project() command is present. The top-level CMakeLists.txt file must
contain a literal, direct call to the project() command. Add a line of
code such as
project(ProjectName)
near the top of the file, but after cmake_minimum_required().
CMake is pretending there is a "project(Project)" command on the first
line.
This warning is for project developers. Use -Wno-dev to suppress it.
-- The C compiler identification is Clang 13.0.0
-- The CXX compiler identification is Clang 13.0.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Elektra 0.9.11 found
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/cirrus-ci-build/examples/external/build
[ 50%] Building C object CMakeFiles/application.dir/application.c.o
[100%] Linking C executable application
[100%] Built target application
Did not find the key
Did not find the key
Create a new key system:/test/myapp/key with string "Hello World"
Hello World
Hello World
Create a new key user:/test/myapp/key with string "More world"
More world
More world
Did not find the key
Did not find the key
Create a new key system:/test/myapp/key with string "Hello World"
Hello World
Hello World
Create a new key user:/test/myapp/key with string "More world"
More world
More world
Testing build with pkgconfig
gcc application.c `pkg-config --cflags --libs elektra` -o application -Wl,-rpath `pkg-config --variable=libdir elektra`
/bin/sh: gcc: not found
*** Error code 127
Stop.
make: stopped in /tmp/cirrus-ci-build/examples/external/pkgconfig
error: could not build pkgconfig project
Did not find the key
Did not find the key
Create a new key system:/test/myapp/key with string "Hello World"
/usr/local/lib/elektra/tool_exec/check_external_example: ./application: not found
/usr/local/lib/elektra/tool_exec/check_external_example: ./application: not found
error: application did not output Hello World
Create a new key user:/test/myapp/key with string "More world"
/usr/local/lib/elektra/tool_exec/check_external_example: ./application: not found
/usr/local/lib/elektra/tool_exec/check_external_example: ./application: not found
error: application did not prefer user:/test/myapp/key with More world
Did not find the key
Did not find the key
Create a new key system:/test/myapp/key with string "Hello World"
/usr/local/lib/elektra/tool_exec/check_external_example: ./application: not found
/usr/local/lib/elektra/tool_exec/check_external_example: ./application: not found
error: application did not output Hello World
Create a new key user:/test/myapp/key with string "More world"
/usr/local/lib/elektra/tool_exec/check_external_example: ./application: not found
/usr/local/lib/elektra/tool_exec/check_external_example: ./application: not found
error: application did not prefer user:/test/myapp/key with More world
rm: application: No such file or directory
check_external_example RESULTS: 21 test(s) done 5 error(s).
error: check_external_example
Running check_external_example_codegen_econf
ELEKTRA CHECK EXTERNAL CODEGEN ECONF
/usr/local/bin/pkg-config
Check if script tests the correct version
Testing build with cmake
CMake Warning (dev) in CMakeLists.txt:
No project() command is present. The top-level CMakeLists.txt file must
contain a literal, direct call to the project() command. Add a line of
code such as
project(ProjectName)
near the top of the file, but after cmake_minimum_required().
CMake is pretending there is a "project(Project)" command on the first
line.
This warning is for project developers. Use -Wno-dev to suppress it.
-- The C compiler identification is Clang 13.0.0
-- The CXX compiler identification is Clang 13.0.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Elektra 0.9.11 found
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/cirrus-ci-build/examples/codegen/econf/build
[ 25%] Generating genelektra.c, genelektra.h, genelektra.mount.sh
[ 50%] Building C object CMakeFiles/application.dir/tmp/cirrus-ci-build/examples/codegen/econf/src/application.c.o
[ 75%] Building C object CMakeFiles/application.dir/genelektra.c.o
[100%] Linking C executable application
[100%] Built target application
Mountpoint spec:/sw/example/econf/#0/current does not exist
Mountpoint user:/sw/example/econf/#0/current does not exist
root = false
Create a new key user:/sw/example/econf/#0/current/root with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#0/pattern with string "*.txt"
Create a new key user:/sw/example/econf/#0/current/format/#0/indent/style with string "tab"
Create a new key user:/sw/example/econf/#0/current/format/#0/indent/size with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#0/tabwidth with string "4"
Create a new key user:/sw/example/econf/#0/current/format/#0/eol with string "native"
Create a new key user:/sw/example/econf/#0/current/format/#0/charset with string "utf-8"
Create a new key user:/sw/example/econf/#0/current/format/#0/trim with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#0/eofnewline with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#0/linelength with string "120"
Create a new key user:/sw/example/econf/#0/current/format/#1/pattern with string "*.c"
Create a new key user:/sw/example/econf/#0/current/format/#1/indent/style with string "space"
Create a new key user:/sw/example/econf/#0/current/format/#1/indent/size with string "8"
Create a new key user:/sw/example/econf/#0/current/format/#1/tabwidth with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#1/eol with string "lf"
Create a new key user:/sw/example/econf/#0/current/format/#1/charset with string "utf-8"
Create a new key user:/sw/example/econf/#0/current/format/#1/trim with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#1/eofnewline with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#1/linelength with string "120"
Create a new key user:/sw/example/econf/#0/current/format/#2/pattern with string "*.cpp"
Create a new key user:/sw/example/econf/#0/current/format/#2/indent/style with string "tab"
Create a new key user:/sw/example/econf/#0/current/format/#2/indent/size with string "8"
Create a new key user:/sw/example/econf/#0/current/format/#2/tabwidth with string "4"
Create a new key user:/sw/example/econf/#0/current/format/#2/eol with string "crlf"
Create a new key user:/sw/example/econf/#0/current/format/#2/charset with string "utf-16le"
Create a new key user:/sw/example/econf/#0/current/format/#2/trim with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#2/eofnewline with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#2/linelength with string "80"
root = true
[*.txt]
indent_style = tab
indent_size = tab
tab_width = 4
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = true
max_line_length = 120
[*.c]
indent_style = space
indent_size = 8
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 120
[*.cpp]
indent_style = tab
indent_size = 8
tab_width = 4
end_of_line = crlf
charset = utf-16le
trim_trailing_whitespace = true
insert_final_newline = false
max_line_length = 80
Mountpoint user:/sw/example/econf/#0/current does not exist
Mountpoint spec:/sw/example/econf/#0/current does not exist
Mountpoint user:/sw/example/econf/#0/current does not exist
root = false
Create a new key user:/sw/example/econf/#0/current/root with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#0/pattern with string "*.txt"
Create a new key user:/sw/example/econf/#0/current/format/#0/indent/style with string "tab"
Create a new key user:/sw/example/econf/#0/current/format/#0/indent/size with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#0/tabwidth with string "4"
Create a new key user:/sw/example/econf/#0/current/format/#0/eol with string "native"
Create a new key user:/sw/example/econf/#0/current/format/#0/charset with string "utf-8"
Create a new key user:/sw/example/econf/#0/current/format/#0/trim with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#0/eofnewline with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#0/linelength with string "120"
Create a new key user:/sw/example/econf/#0/current/format/#1/pattern with string "*.c"
Create a new key user:/sw/example/econf/#0/current/format/#1/indent/style with string "space"
Create a new key user:/sw/example/econf/#0/current/format/#1/indent/size with string "8"
Create a new key user:/sw/example/econf/#0/current/format/#1/tabwidth with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#1/eol with string "lf"
Create a new key user:/sw/example/econf/#0/current/format/#1/charset with string "utf-8"
Create a new key user:/sw/example/econf/#0/current/format/#1/trim with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#1/eofnewline with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#1/linelength with string "120"
Create a new key user:/sw/example/econf/#0/current/format/#2/pattern with string "*.cpp"
Create a new key user:/sw/example/econf/#0/current/format/#2/indent/style with string "tab"
Create a new key user:/sw/example/econf/#0/current/format/#2/indent/size with string "8"
Create a new key user:/sw/example/econf/#0/current/format/#2/tabwidth with string "4"
Create a new key user:/sw/example/econf/#0/current/format/#2/eol with string "crlf"
Create a new key user:/sw/example/econf/#0/current/format/#2/charset with string "utf-16le"
Create a new key user:/sw/example/econf/#0/current/format/#2/trim with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#2/eofnewline with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#2/linelength with string "80"
root = true
[*.txt]
indent_style = tab
indent_size = tab
tab_width = 4
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = true
max_line_length = 120
[*.c]
indent_style = space
indent_size = 8
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 120
[*.cpp]
indent_style = tab
indent_size = 8
tab_width = 4
end_of_line = crlf
charset = utf-16le
trim_trailing_whitespace = true
insert_final_newline = false
max_line_length = 80
Mountpoint user:/sw/example/econf/#0/current does not exist
Testing build with pkgconfig
/usr/local/bin/kdb gen -F ni=../spec.ini highlevel spec:/sw/example/econf/#0/current genelektra
gcc ../src/application.c genelektra.c -std=c99 `pkg-config --cflags --libs elektra-codegen` -I. -o application -Wl,-rpath `pkg-config --variable=libdir elektra-codegen`
/bin/sh: gcc: not found
*** Error code 127
Stop.
make: stopped in /tmp/cirrus-ci-build/examples/codegen/econf/pkgconfig
error: could not build pkgconfig project
Mountpoint spec:/sw/example/econf/#0/current does not exist
Mountpoint user:/sw/example/econf/#0/current does not exist
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_econf: ./application: not found
error: application could not read default config (spec)
Create a new key user:/sw/example/econf/#0/current/root with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#0/pattern with string "*.txt"
Create a new key user:/sw/example/econf/#0/current/format/#0/indent/style with string "tab"
Create a new key user:/sw/example/econf/#0/current/format/#0/indent/size with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#0/tabwidth with string "4"
Create a new key user:/sw/example/econf/#0/current/format/#0/eol with string "native"
Create a new key user:/sw/example/econf/#0/current/format/#0/charset with string "utf-8"
Create a new key user:/sw/example/econf/#0/current/format/#0/trim with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#0/eofnewline with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#0/linelength with string "120"
Create a new key user:/sw/example/econf/#0/current/format/#1/pattern with string "*.c"
Create a new key user:/sw/example/econf/#0/current/format/#1/indent/style with string "space"
Create a new key user:/sw/example/econf/#0/current/format/#1/indent/size with string "8"
Create a new key user:/sw/example/econf/#0/current/format/#1/tabwidth with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#1/eol with string "lf"
Create a new key user:/sw/example/econf/#0/current/format/#1/charset with string "utf-8"
Create a new key user:/sw/example/econf/#0/current/format/#1/trim with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#1/eofnewline with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#1/linelength with string "120"
Create a new key user:/sw/example/econf/#0/current/format/#2/pattern with string "*.cpp"
Create a new key user:/sw/example/econf/#0/current/format/#2/indent/style with string "tab"
Create a new key user:/sw/example/econf/#0/current/format/#2/indent/size with string "8"
Create a new key user:/sw/example/econf/#0/current/format/#2/tabwidth with string "4"
Create a new key user:/sw/example/econf/#0/current/format/#2/eol with string "crlf"
Create a new key user:/sw/example/econf/#0/current/format/#2/charset with string "utf-16le"
Create a new key user:/sw/example/econf/#0/current/format/#2/trim with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#2/eofnewline with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#2/linelength with string "80"
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_econf: ./application: not found
error: application could not read test tree
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_econf: ./application: not found
error: application did not read test config correctly
Mountpoint user:/sw/example/econf/#0/current does not exist
Mountpoint spec:/sw/example/econf/#0/current does not exist
Mountpoint user:/sw/example/econf/#0/current does not exist
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_econf: ./application: not found
error: application could not read default config (spec)
Create a new key user:/sw/example/econf/#0/current/root with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#0/pattern with string "*.txt"
Create a new key user:/sw/example/econf/#0/current/format/#0/indent/style with string "tab"
Create a new key user:/sw/example/econf/#0/current/format/#0/indent/size with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#0/tabwidth with string "4"
Create a new key user:/sw/example/econf/#0/current/format/#0/eol with string "native"
Create a new key user:/sw/example/econf/#0/current/format/#0/charset with string "utf-8"
Create a new key user:/sw/example/econf/#0/current/format/#0/trim with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#0/eofnewline with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#0/linelength with string "120"
Create a new key user:/sw/example/econf/#0/current/format/#1/pattern with string "*.c"
Create a new key user:/sw/example/econf/#0/current/format/#1/indent/style with string "space"
Create a new key user:/sw/example/econf/#0/current/format/#1/indent/size with string "8"
Create a new key user:/sw/example/econf/#0/current/format/#1/tabwidth with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#1/eol with string "lf"
Create a new key user:/sw/example/econf/#0/current/format/#1/charset with string "utf-8"
Create a new key user:/sw/example/econf/#0/current/format/#1/trim with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#1/eofnewline with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#1/linelength with string "120"
Create a new key user:/sw/example/econf/#0/current/format/#2/pattern with string "*.cpp"
Create a new key user:/sw/example/econf/#0/current/format/#2/indent/style with string "tab"
Create a new key user:/sw/example/econf/#0/current/format/#2/indent/size with string "8"
Create a new key user:/sw/example/econf/#0/current/format/#2/tabwidth with string "4"
Create a new key user:/sw/example/econf/#0/current/format/#2/eol with string "crlf"
Create a new key user:/sw/example/econf/#0/current/format/#2/charset with string "utf-16le"
Create a new key user:/sw/example/econf/#0/current/format/#2/trim with string "1"
Create a new key user:/sw/example/econf/#0/current/format/#2/eofnewline with string "0"
Create a new key user:/sw/example/econf/#0/current/format/#2/linelength with string "80"
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_econf: ./application: not found
error: application could not read test tree
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_econf: ./application: not found
error: application did not read test config correctly
Mountpoint user:/sw/example/econf/#0/current does not exist
rm -f genelektra.c
rm -f genelektra.h
rm -f genelektra.mount.sh
rm -f application
check_external_example_codegen_econf RESULTS: 17 test(s) done 7 error(s).
error: check_external_example_codegen_econf
Running check_external_example_codegen_menu
ELEKTRA CHECK EXTERNAL
/usr/local/bin/pkg-config
Check if script tests the correct version
Testing build with cmake
CMake Warning (dev) in CMakeLists.txt:
No project() command is present. The top-level CMakeLists.txt file must
contain a literal, direct call to the project() command. Add a line of
code such as
project(ProjectName)
near the top of the file, but after cmake_minimum_required().
CMake is pretending there is a "project(Project)" command on the first
line.
This warning is for project developers. Use -Wno-dev to suppress it.
-- The C compiler identification is Clang 13.0.0
-- The CXX compiler identification is Clang 13.0.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Elektra 0.9.11 found
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/cirrus-ci-build/examples/codegen/menu/build
[ 25%] Generating genelektra.c, genelektra.h, genelektra.mount.sh
[ 50%] Building C object CMakeFiles/application.dir/tmp/cirrus-ci-build/examples/codegen/menu/src/application.c.o
[ 75%] Building C object CMakeFiles/application.dir/genelektra.c.o
[100%] Linking C executable application
[100%] Built target application
Mountpoint spec:/sw/example/menu/#0/current does not exist
Mountpoint /sw/example/menu/#0/current does not exist
Did not find any key
Did not find any key
no menu found
Create a new key user:/sw/example/menu/#0/current/menu/#0/name with string "Main Menu"
Create a new key user:/sw/example/menu/#0/current/menu/#1/name with string "Menu 1"
Create a new key user:/sw/example/menu/#0/current/menu/#2/name with string "Menu 2"
Create a new key user:/sw/example/menu/#0/current/menu/#3/name with string "Menu 2.1"
Create a new key user:/sw/example/menu/#0/current/menu/#4/name with string "Menu 2.2"
Create a new key user:/sw/example/menu/#0/current/menu/#1/command with string "echo "Hello from Menu 1""
Create a new key user:/sw/example/menu/#0/current/menu/#2/command with string "echo "Hello from Menu 2""
Create a new key user:/sw/example/menu/#0/current/menu/#3/command with string "echo "Hello from Menu 2.1""
Create a new key user:/sw/example/menu/#0/current/menu/#4/command with string "echo "Hello from Menu 2.2""
Create a new key user:/sw/example/menu/#0/current/menu/#0/children/#0 with string "@/menu/#1"
Create a new key user:/sw/example/menu/#0/current/menu/#0/children/#1 with string "@/menu/#2"
Create a new key user:/sw/example/menu/#0/current/menu/#2/children/#0 with string "@/menu/#3"
Create a new key user:/sw/example/menu/#0/current/menu/#2/children/#1 with string "@/menu/#4"
Create a new key user:/sw/example/menu/#0/current/main with string "@/menu/#0"
Main Menu:
[1] Menu 1
[2] Menu 2
Please select what to do (Ctrl-D = quit):
Mountpoint spec:/sw/example/menu/#0/current does not exist
Mountpoint /sw/example/menu/#0/current does not exist
Did not find any key
Did not find any key
no menu found
Create a new key user:/sw/example/menu/#0/current/menu/#0/name with string "Main Menu"
Create a new key user:/sw/example/menu/#0/current/menu/#1/name with string "Menu 1"
Create a new key user:/sw/example/menu/#0/current/menu/#2/name with string "Menu 2"
Create a new key user:/sw/example/menu/#0/current/menu/#3/name with string "Menu 2.1"
Create a new key user:/sw/example/menu/#0/current/menu/#4/name with string "Menu 2.2"
Create a new key user:/sw/example/menu/#0/current/menu/#1/command with string "echo "Hello from Menu 1""
Create a new key user:/sw/example/menu/#0/current/menu/#2/command with string "echo "Hello from Menu 2""
Create a new key user:/sw/example/menu/#0/current/menu/#3/command with string "echo "Hello from Menu 2.1""
Create a new key user:/sw/example/menu/#0/current/menu/#4/command with string "echo "Hello from Menu 2.2""
Create a new key user:/sw/example/menu/#0/current/menu/#0/children/#0 with string "@/menu/#1"
Create a new key user:/sw/example/menu/#0/current/menu/#0/children/#1 with string "@/menu/#2"
Create a new key user:/sw/example/menu/#0/current/menu/#2/children/#0 with string "@/menu/#3"
Create a new key user:/sw/example/menu/#0/current/menu/#2/children/#1 with string "@/menu/#4"
Create a new key user:/sw/example/menu/#0/current/main with string "@/menu/#0"
Main Menu:
[1] Menu 1
[2] Menu 2
Please select what to do (Ctrl-D = quit):
Testing build with pkgconfig
/usr/local/bin/kdb gen -F ni=../spec.ini highlevel spec:/sw/example/menu/#0/current genelektra
gcc ../src/application.c genelektra.c -std=c99 `pkg-config --cflags --libs elektra-codegen` -I. -o application -Wl,-rpath `pkg-config --variable=libdir elektra-codegen`
/bin/sh: gcc: not found
*** Error code 127
Stop.
make: stopped in /tmp/cirrus-ci-build/examples/codegen/menu/pkgconfig
error: could not build pkgconfig project
Mountpoint spec:/sw/example/menu/#0/current does not exist
Mountpoint /sw/example/menu/#0/current does not exist
Did not find any key
Did not find any key
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_menu: ./application: not found
error: application could not read default config (spec)
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_menu: ./application: not found
error: application didn't read empty menu correctly
Create a new key user:/sw/example/menu/#0/current/menu/#0/name with string "Main Menu"
Create a new key user:/sw/example/menu/#0/current/menu/#1/name with string "Menu 1"
Create a new key user:/sw/example/menu/#0/current/menu/#2/name with string "Menu 2"
Create a new key user:/sw/example/menu/#0/current/menu/#3/name with string "Menu 2.1"
Create a new key user:/sw/example/menu/#0/current/menu/#4/name with string "Menu 2.2"
Create a new key user:/sw/example/menu/#0/current/menu/#1/command with string "echo "Hello from Menu 1""
Create a new key user:/sw/example/menu/#0/current/menu/#2/command with string "echo "Hello from Menu 2""
Create a new key user:/sw/example/menu/#0/current/menu/#3/command with string "echo "Hello from Menu 2.1""
Create a new key user:/sw/example/menu/#0/current/menu/#4/command with string "echo "Hello from Menu 2.2""
Create a new key user:/sw/example/menu/#0/current/menu/#0/children/#0 with string "@/menu/#1"
Create a new key user:/sw/example/menu/#0/current/menu/#0/children/#1 with string "@/menu/#2"
Create a new key user:/sw/example/menu/#0/current/menu/#2/children/#0 with string "@/menu/#3"
Create a new key user:/sw/example/menu/#0/current/menu/#2/children/#1 with string "@/menu/#4"
Create a new key user:/sw/example/menu/#0/current/main with string "@/menu/#0"
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_menu: ./application: not found
error: application could not read test menu
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_menu: ./application: not found
--- /tmp/tmp.41tjdJLD 2022-10-12 21:04:29.139997000 +0000
+++ /tmp/tmp.GswOOl0A 2022-10-12 21:04:29.295504000 +0000
@@ -1,7 +0,0 @@
-Main Menu:
-
- [1] Menu 1
- [2] Menu 2
-
-Please select what to do (Ctrl-D = quit):
-
error: application did not read test menu correctly
Mountpoint spec:/sw/example/menu/#0/current does not exist
Mountpoint /sw/example/menu/#0/current does not exist
Did not find any key
Did not find any key
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_menu: ./application: not found
error: application could not read default config (spec)
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_menu: ./application: not found
error: application didn't read empty menu correctly
Create a new key user:/sw/example/menu/#0/current/menu/#0/name with string "Main Menu"
Create a new key user:/sw/example/menu/#0/current/menu/#1/name with string "Menu 1"
Create a new key user:/sw/example/menu/#0/current/menu/#2/name with string "Menu 2"
Create a new key user:/sw/example/menu/#0/current/menu/#3/name with string "Menu 2.1"
Create a new key user:/sw/example/menu/#0/current/menu/#4/name with string "Menu 2.2"
Create a new key user:/sw/example/menu/#0/current/menu/#1/command with string "echo "Hello from Menu 1""
Create a new key user:/sw/example/menu/#0/current/menu/#2/command with string "echo "Hello from Menu 2""
Create a new key user:/sw/example/menu/#0/current/menu/#3/command with string "echo "Hello from Menu 2.1""
Create a new key user:/sw/example/menu/#0/current/menu/#4/command with string "echo "Hello from Menu 2.2""
Create a new key user:/sw/example/menu/#0/current/menu/#0/children/#0 with string "@/menu/#1"
Create a new key user:/sw/example/menu/#0/current/menu/#0/children/#1 with string "@/menu/#2"
Create a new key user:/sw/example/menu/#0/current/menu/#2/children/#0 with string "@/menu/#3"
Create a new key user:/sw/example/menu/#0/current/menu/#2/children/#1 with string "@/menu/#4"
Create a new key user:/sw/example/menu/#0/current/main with string "@/menu/#0"
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_menu: ./application: not found
error: application could not read test menu
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_menu: ./application: not found
--- /tmp/tmp.g02YJu1K 2022-10-12 21:04:29.399863000 +0000
+++ /tmp/tmp.rCM8xDR8 2022-10-12 21:04:29.540818000 +0000
@@ -1,7 +0,0 @@
-Main Menu:
-
- [1] Menu 1
- [2] Menu 2
-
-Please select what to do (Ctrl-D = quit):
-
error: application did not read test menu correctly
rm -f genelektra.c
rm -f genelektra.h
rm -f genelektra.mount.sh
rm -f application
check_external_example_codegen_menu RESULTS: 21 test(s) done 9 error(s).
error: check_external_example_codegen_menu
Running check_external_example_codegen_tree
ELEKTRA CHECK EXTERNAL CODEGEN TREE
/usr/local/bin/pkg-config
Check if script tests the correct version
Testing build with cmake
CMake Warning (dev) in CMakeLists.txt:
No project() command is present. The top-level CMakeLists.txt file must
contain a literal, direct call to the project() command. Add a line of
code such as
project(ProjectName)
near the top of the file, but after cmake_minimum_required().
CMake is pretending there is a "project(Project)" command on the first
line.
This warning is for project developers. Use -Wno-dev to suppress it.
-- The C compiler identification is Clang 13.0.0
-- The CXX compiler identification is Clang 13.0.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Elektra 0.9.11 found
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/cirrus-ci-build/examples/codegen/tree/build
[ 25%] Generating genelektra.c, genelektra.h, genelektra.mount.sh
[ 50%] Building C object CMakeFiles/application.dir/tmp/cirrus-ci-build/examples/codegen/tree/src/application.c.o
[ 75%] Building C object CMakeFiles/application.dir/genelektra.c.o
[100%] Linking C executable application
[100%] Built target application
Mountpoint spec:/sw/example/tree/#0/current does not exist
Mountpoint /sw/example/tree/#0/current does not exist
Did not find any key
Did not find any key
(empty)
Create a new key user:/sw/example/tree/#0/current/tree/root with string ""
Create a new key user:/sw/example/tree/#0/current/tree/root/text with string "root"
Create a new key user:/sw/example/tree/#0/current/tree/child1 with string ""
Create a new key user:/sw/example/tree/#0/current/tree/child1/text with string "child1"
Create a new key user:/sw/example/tree/#0/current/tree/child2 with string ""
Create a new key user:/sw/example/tree/#0/current/tree/child2/text with string "child2"
Create a new key user:/sw/example/tree/#0/current/tree/child4 with string ""
Create a new key user:/sw/example/tree/#0/current/tree/child4/text with string "child4"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildA with string ""
Create a new key user:/sw/example/tree/#0/current/tree/grandchildA/text with string "grandchildA"
Create a new key user:/sw/example/tree/#0/current/tree/leafA with string ""
Create a new key user:/sw/example/tree/#0/current/tree/leafA/text with string "leafA"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildB with string ""
Create a new key user:/sw/example/tree/#0/current/tree/grandchildB/text with string "grandchildB"
Create a new key user:/sw/example/tree/#0/current/tree/leafB with string ""
Create a new key user:/sw/example/tree/#0/current/tree/leafB/text with string "leafB"
Create a new key user:/sw/example/tree/#0/current/tree/root/children/#0 with string "../../../child1"
Create a new key user:/sw/example/tree/#0/current/tree/root/children/#1 with string "../../../child2"
Create a new key user:/sw/example/tree/#0/current/tree/root/children/#3 with string "../../../child4"
Create a new key user:/sw/example/tree/#0/current/tree/child4/children/#0 with string "../../../grandchildA"
Create a new key user:/sw/example/tree/#0/current/tree/child4/children/#1 with string "../../../grandchildB"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildA/children/#0 with string "../../../leafA"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildB/children/#0 with string "../../../leafB"
Create a new key user:/sw/example/tree/#0/current/root with string "../tree/root"
root
child1
child2
(empty)
child4
grandchildA
leafA
grandchildB
leafB
Mountpoint spec:/sw/example/tree/#0/current does not exist
Mountpoint /sw/example/tree/#0/current does not exist
Did not find any key
Did not find any key
(empty)
Create a new key user:/sw/example/tree/#0/current/tree/root with string ""
Create a new key user:/sw/example/tree/#0/current/tree/root/text with string "root"
Create a new key user:/sw/example/tree/#0/current/tree/child1 with string ""
Create a new key user:/sw/example/tree/#0/current/tree/child1/text with string "child1"
Create a new key user:/sw/example/tree/#0/current/tree/child2 with string ""
Create a new key user:/sw/example/tree/#0/current/tree/child2/text with string "child2"
Create a new key user:/sw/example/tree/#0/current/tree/child4 with string ""
Create a new key user:/sw/example/tree/#0/current/tree/child4/text with string "child4"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildA with string ""
Create a new key user:/sw/example/tree/#0/current/tree/grandchildA/text with string "grandchildA"
Create a new key user:/sw/example/tree/#0/current/tree/leafA with string ""
Create a new key user:/sw/example/tree/#0/current/tree/leafA/text with string "leafA"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildB with string ""
Create a new key user:/sw/example/tree/#0/current/tree/grandchildB/text with string "grandchildB"
Create a new key user:/sw/example/tree/#0/current/tree/leafB with string ""
Create a new key user:/sw/example/tree/#0/current/tree/leafB/text with string "leafB"
Create a new key user:/sw/example/tree/#0/current/tree/root/children/#0 with string "../../../child1"
Create a new key user:/sw/example/tree/#0/current/tree/root/children/#1 with string "../../../child2"
Create a new key user:/sw/example/tree/#0/current/tree/root/children/#3 with string "../../../child4"
Create a new key user:/sw/example/tree/#0/current/tree/child4/children/#0 with string "../../../grandchildA"
Create a new key user:/sw/example/tree/#0/current/tree/child4/children/#1 with string "../../../grandchildB"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildA/children/#0 with string "../../../leafA"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildB/children/#0 with string "../../../leafB"
Create a new key user:/sw/example/tree/#0/current/root with string "../tree/root"
root
child1
child2
(empty)
child4
grandchildA
leafA
grandchildB
leafB
Testing build with pkgconfig
/usr/local/bin/kdb gen -F ni=../spec.ini highlevel spec:/sw/example/tree/#0/current genelektra
gcc ../src/application.c genelektra.c -std=c99 `pkg-config --cflags --libs elektra-codegen` -I. -o application -Wl,-rpath `pkg-config --variable=libdir elektra-codegen`
/bin/sh: gcc: not found
*** Error code 127
Stop.
make: stopped in /tmp/cirrus-ci-build/examples/codegen/tree/pkgconfig
error: could not build pkgconfig project
Mountpoint spec:/sw/example/tree/#0/current does not exist
Mountpoint /sw/example/tree/#0/current does not exist
Did not find any key
Did not find any key
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_tree: ./application: not found
error: application could not read default config (spec)
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_tree: ./application: not found
error: application didn't read empty tree correctly
Create a new key user:/sw/example/tree/#0/current/tree/root with string ""
Create a new key user:/sw/example/tree/#0/current/tree/root/text with string "root"
Create a new key user:/sw/example/tree/#0/current/tree/child1 with string ""
Create a new key user:/sw/example/tree/#0/current/tree/child1/text with string "child1"
Create a new key user:/sw/example/tree/#0/current/tree/child2 with string ""
Create a new key user:/sw/example/tree/#0/current/tree/child2/text with string "child2"
Create a new key user:/sw/example/tree/#0/current/tree/child4 with string ""
Create a new key user:/sw/example/tree/#0/current/tree/child4/text with string "child4"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildA with string ""
Create a new key user:/sw/example/tree/#0/current/tree/grandchildA/text with string "grandchildA"
Create a new key user:/sw/example/tree/#0/current/tree/leafA with string ""
Create a new key user:/sw/example/tree/#0/current/tree/leafA/text with string "leafA"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildB with string ""
Create a new key user:/sw/example/tree/#0/current/tree/grandchildB/text with string "grandchildB"
Create a new key user:/sw/example/tree/#0/current/tree/leafB with string ""
Create a new key user:/sw/example/tree/#0/current/tree/leafB/text with string "leafB"
Create a new key user:/sw/example/tree/#0/current/tree/root/children/#0 with string "../../../child1"
Create a new key user:/sw/example/tree/#0/current/tree/root/children/#1 with string "../../../child2"
Create a new key user:/sw/example/tree/#0/current/tree/root/children/#3 with string "../../../child4"
Create a new key user:/sw/example/tree/#0/current/tree/child4/children/#0 with string "../../../grandchildA"
Create a new key user:/sw/example/tree/#0/current/tree/child4/children/#1 with string "../../../grandchildB"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildA/children/#0 with string "../../../leafA"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildB/children/#0 with string "../../../leafB"
Create a new key user:/sw/example/tree/#0/current/root with string "../tree/root"
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_tree: ./application: not found
error: application could not read test tree
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_tree: ./application: not found
error: application did not read test tree correctly
Mountpoint spec:/sw/example/tree/#0/current does not exist
Mountpoint /sw/example/tree/#0/current does not exist
Did not find any key
Did not find any key
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_tree: ./application: not found
error: application could not read default config (spec)
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_tree: ./application: not found
error: application didn't read empty tree correctly
Create a new key user:/sw/example/tree/#0/current/tree/root with string ""
Create a new key user:/sw/example/tree/#0/current/tree/root/text with string "root"
Create a new key user:/sw/example/tree/#0/current/tree/child1 with string ""
Create a new key user:/sw/example/tree/#0/current/tree/child1/text with string "child1"
Create a new key user:/sw/example/tree/#0/current/tree/child2 with string ""
Create a new key user:/sw/example/tree/#0/current/tree/child2/text with string "child2"
Create a new key user:/sw/example/tree/#0/current/tree/child4 with string ""
Create a new key user:/sw/example/tree/#0/current/tree/child4/text with string "child4"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildA with string ""
Create a new key user:/sw/example/tree/#0/current/tree/grandchildA/text with string "grandchildA"
Create a new key user:/sw/example/tree/#0/current/tree/leafA with string ""
Create a new key user:/sw/example/tree/#0/current/tree/leafA/text with string "leafA"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildB with string ""
Create a new key user:/sw/example/tree/#0/current/tree/grandchildB/text with string "grandchildB"
Create a new key user:/sw/example/tree/#0/current/tree/leafB with string ""
Create a new key user:/sw/example/tree/#0/current/tree/leafB/text with string "leafB"
Create a new key user:/sw/example/tree/#0/current/tree/root/children/#0 with string "../../../child1"
Create a new key user:/sw/example/tree/#0/current/tree/root/children/#1 with string "../../../child2"
Create a new key user:/sw/example/tree/#0/current/tree/root/children/#3 with string "../../../child4"
Create a new key user:/sw/example/tree/#0/current/tree/child4/children/#0 with string "../../../grandchildA"
Create a new key user:/sw/example/tree/#0/current/tree/child4/children/#1 with string "../../../grandchildB"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildA/children/#0 with string "../../../leafA"
Create a new key user:/sw/example/tree/#0/current/tree/grandchildB/children/#0 with string "../../../leafB"
Create a new key user:/sw/example/tree/#0/current/root with string "../tree/root"
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_tree: ./application: not found
error: application could not read test tree
/usr/local/lib/elektra/tool_exec/check_external_example_codegen_tree: ./application: not found
error: application did not read test tree correctly
rm -f genelektra.c
rm -f genelektra.h
rm -f genelektra.mount.sh
rm -f application
check_external_example_codegen_tree RESULTS: 21 test(s) done 9 error(s).
error: check_external_example_codegen_tree
Running check_external_example_highlevel
ELEKTRA CHECK EXTERNAL HIGHLEVEL
/usr/local/bin/pkg-config
Check if script tests the correct version
Testing build with cmake
CMake Warning (dev) in CMakeLists.txt:
No project() command is present. The top-level CMakeLists.txt file must
contain a literal, direct call to the project() command. Add a line of
code such as
project(ProjectName)
near the top of the file, but after cmake_minimum_required().
CMake is pretending there is a "project(Project)" command on the first
line.
This warning is for project developers. Use -Wno-dev to suppress it.
-- The C compiler identification is Clang 13.0.0
-- The CXX compiler identification is Clang 13.0.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Elektra 0.9.11 found
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/cirrus-ci-build/examples/highlevel/build
[ 50%] Building C object CMakeFiles/application.dir/application.c.o
[100%] Linking C executable application
[100%] Built target application
Mountpoint spec:/sw/example/highlevel/#0/current does not exist
Mountpoint /sw/example/highlevel/#0/current does not exist
Did not find any key
Did not find any key
successfully read configuration
Create a new key user:/sw/example/highlevel/#0/current/mystring with string "Hello World"
Create a new key user:/sw/example/highlevel/#0/current/myint with string "29"
Create a new key user:/sw/example/highlevel/#0/current/mydouble with string "4.4242"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#0 with string "3.14"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#1 with string "15"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#2 with string "9265.359"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#3 with string "2.718282"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#4 with string "1.4142"
successfully read configuration
Create a new key user:/sw/example/highlevel/#0/current/print with string "1"
successfully read configuration
mystring: Hello World
myint: 29
mydouble: 4.424200
sizeof(myfloatarray): 5
myfloatarray[0]: 3.140000
myfloatarray[1]: 15.000000
myfloatarray[2]: 9265.359375
myfloatarray[3]: 2.718282
myfloatarray[4]: 1.414200
mystring: Hello World
myint: 29
mydouble: 4.424200
sizeof(myfloatarray): 5
myfloatarray[0]: 3.140000
myfloatarray[1]: 15.000000
myfloatarray[2]: 9265.359375
myfloatarray[3]: 2.718282
myfloatarray[4]: 1.414200
Mountpoint spec:/sw/example/highlevel/#0/current does not exist
Mountpoint /sw/example/highlevel/#0/current does not exist
Did not find any key
Did not find any key
successfully read configuration
Create a new key user:/sw/example/highlevel/#0/current/mystring with string "Hello World"
Create a new key user:/sw/example/highlevel/#0/current/myint with string "29"
Create a new key user:/sw/example/highlevel/#0/current/mydouble with string "4.4242"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#0 with string "3.14"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#1 with string "15"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#2 with string "9265.359"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#3 with string "2.718282"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#4 with string "1.4142"
successfully read configuration
Create a new key user:/sw/example/highlevel/#0/current/print with string "1"
successfully read configuration
mystring: Hello World
myint: 29
mydouble: 4.424200
sizeof(myfloatarray): 5
myfloatarray[0]: 3.140000
myfloatarray[1]: 15.000000
myfloatarray[2]: 9265.359375
myfloatarray[3]: 2.718282
myfloatarray[4]: 1.414200
mystring: Hello World
myint: 29
mydouble: 4.424200
sizeof(myfloatarray): 5
myfloatarray[0]: 3.140000
myfloatarray[1]: 15.000000
myfloatarray[2]: 9265.359375
myfloatarray[3]: 2.718282
myfloatarray[4]: 1.414200
Testing build with pkgconfig
gcc application.c `pkg-config --cflags --libs elektra-highlevel` -o application -Wl,-rpath `pkg-config --variable=libdir elektra-highlevel`
/bin/sh: gcc: not found
*** Error code 127
Stop.
make: stopped in /tmp/cirrus-ci-build/examples/highlevel/pkgconfig
error: could not build pkgconfig project
Mountpoint spec:/sw/example/highlevel/#0/current does not exist
Mountpoint /sw/example/highlevel/#0/current does not exist
Did not find any key
Did not find any key
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application could not read default config (spec)
Create a new key user:/sw/example/highlevel/#0/current/mystring with string "Hello World"
Create a new key user:/sw/example/highlevel/#0/current/myint with string "29"
Create a new key user:/sw/example/highlevel/#0/current/mydouble with string "4.4242"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#0 with string "3.14"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#1 with string "15"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#2 with string "9265.359"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#3 with string "2.718282"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#4 with string "1.4142"
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application could not read changed config
Create a new key user:/sw/example/highlevel/#0/current/print with string "1"
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application could not read changed config
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print mystring
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print myint
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print mydouble
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print size of myfloatarray
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print myfloatarray[0]
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print myfloatarray[1]
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print myfloatarray[2]
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print myfloatarray[3]
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print myfloatarray[4]
Mountpoint spec:/sw/example/highlevel/#0/current does not exist
Mountpoint /sw/example/highlevel/#0/current does not exist
Did not find any key
Did not find any key
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application could not read default config (spec)
Create a new key user:/sw/example/highlevel/#0/current/mystring with string "Hello World"
Create a new key user:/sw/example/highlevel/#0/current/myint with string "29"
Create a new key user:/sw/example/highlevel/#0/current/mydouble with string "4.4242"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#0 with string "3.14"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#1 with string "15"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#2 with string "9265.359"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#3 with string "2.718282"
Create a new key user:/sw/example/highlevel/#0/current/myfloatarray/#4 with string "1.4142"
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application could not read changed config
Create a new key user:/sw/example/highlevel/#0/current/print with string "1"
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application could not read changed config
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print mystring
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print myint
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print mydouble
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print size of myfloatarray
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print myfloatarray[0]
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print myfloatarray[1]
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print myfloatarray[2]
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print myfloatarray[3]
/usr/local/lib/elektra/tool_exec/check_external_example_highlevel: ./application: not found
error: application did not print myfloatarray[4]
rm: application: No such file or directory
check_external_example_highlevel RESULTS: 53 test(s) done 25 error(s).
error: check_external_example_highlevel
and
Following test cases failed:
check_external_example
check_external_example_codegen_econf
check_external_example_codegen_menu
check_external_example_codegen_tree
check_external_example_highlevel
But I am not able why this problem only exist on this branch and not on the master. I cannot see anything related to the xfconf plugin. The only problem seems to be the missing gcc command.
I don't think this really can be related to xfconf. If you look at the logs of the "main" step for the failing "FreeBSD 13" job on Cirrus you can see that the xfconf plugin isn't even included:
-- Could NOT find Xfconf (missing: XFCONF_INCLUDE_DIR)
-- Exclude plugin xfconf because libxfconf not found
This doesn't answer why the job fails, but I'm pretty sure it is not related to xfconf. Interestingly, AFAICT gcc is not installed as part of the install_script in the Cirrus config
https://github.com/ElektraInitiative/libelektra/blob/cf4b6f303432dbfdcb9cc222c84f41045962b211/.cirrus.yml#L49-L62
Maybe just adding it will fix this. It doesn't explain why it works on master, but if it works it doesn't really matter.
Even better would be to use the same compiler in the tests that we use to actually compile Elektra (so clang in this case). You should be able to use the CMAKE_C_COMPILER from CMake to find the compiler that is used. The test testscr_check_gen already uses this (via
e.g. tests/shell/gen/highlevel/simple.check.sh).
An easy way to keep the scripts also working as an example would be using $(CC) in the Makefiles and setting the CC env-var from the test scripts to the value of CMAKE_C_COMPILER.
This doesn't answer why the job fails, but I'm pretty sure it is not related to xfconf. Interestingly, AFAICT
gccis not installed as part of theinstall_scriptin the Cirrus confighttps://github.com/ElektraInitiative/libelektra/blob/cf4b6f303432dbfdcb9cc222c84f41045962b211/.cirrus.yml#L49-L62
Maybe just adding it will fix this. It doesn't explain why it works on
master, but if it works it doesn't really matter.
Sadly, this does not work because FreeBSD installs the gcc binary as gcc12 but the gcc binary is required in the path. So, I have to get your second option to work. I already tinkered around with that but I was not able to get it to work. Just adding -DCMAKE_C_COMPILER="@CMAKE_C_COMPILER@ to the cmake commands in
tests/shell/external/example.shtests/shell/external/example_codegen_econf.shtests/shell/external/example_codegen_econf.shtests/shell/external/example_codegen_menu.shtests/shell/external/example_codegen_tree.shtests/shell/external/example_highlevel.sh
does not make FreeBSD to use clang instead of gcc.
I looked at this again, and I think we just need to replace gcc with $(CC) in these palces:
https://github.com/ElektraInitiative/libelektra/blob/2c8a630bb0ad6cb51342d1d1795f762bd4bfff5c/examples/external/pkgconfig/Makefile#L2
https://github.com/ElektraInitiative/libelektra/blob/2c8a630bb0ad6cb51342d1d1795f762bd4bfff5c/examples/highlevel/pkgconfig/Makefile#L2
https://github.com/ElektraInitiative/libelektra/blob/2c8a630bb0ad6cb51342d1d1795f762bd4bfff5c/examples/codegen/econf/pkgconfig/Makefile#L4
https://github.com/ElektraInitiative/libelektra/blob/2c8a630bb0ad6cb51342d1d1795f762bd4bfff5c/examples/codegen/tree/pkgconfig/Makefile#L4
https://github.com/ElektraInitiative/libelektra/blob/2c8a630bb0ad6cb51342d1d1795f762bd4bfff5c/examples/codegen/menu/pkgconfig/Makefile#L4
I looked at this again, and I think we just need to replace
gccwith$(CC)in these palces:https://github.com/ElektraInitiative/libelektra/blob/2c8a630bb0ad6cb51342d1d1795f762bd4bfff5c/examples/external/pkgconfig/Makefile#L2
https://github.com/ElektraInitiative/libelektra/blob/2c8a630bb0ad6cb51342d1d1795f762bd4bfff5c/examples/highlevel/pkgconfig/Makefile#L2
https://github.com/ElektraInitiative/libelektra/blob/2c8a630bb0ad6cb51342d1d1795f762bd4bfff5c/examples/codegen/econf/pkgconfig/Makefile#L4
https://github.com/ElektraInitiative/libelektra/blob/2c8a630bb0ad6cb51342d1d1795f762bd4bfff5c/examples/codegen/tree/pkgconfig/Makefile#L4
https://github.com/ElektraInitiative/libelektra/blob/2c8a630bb0ad6cb51342d1d1795f762bd4bfff5c/examples/codegen/menu/pkgconfig/Makefile#L4
Replacing the gcc in these files works. Thank you very much!
I am now able to build this plugin on FreeBSD systems too. Unfortunately, I am not able to pass tests related to the plugin, the CI still fails on all FreeBSD machines. However, I am able to reproduce the problem on my local FreeBSD machine:
If I run ./bin/testmod_xfconf within the build directory, the output of the FreeBSD machine is:
XFCONF TESTS
==================
test basics
There are 10 warnings
#0/configfile:
#0/description: Plugin Misbehavior
#0/file: /home/richi/libelektra/src/libs/elektra/plugin.c
#0/line: 103
#0/module: kdb
#0/mountpoint: /
#0/number: C01330
#0/reason: Open of plugin returned unsuccessfully: xfconf. Reason contains plugin, see other warnings for details
/home/richi/libelektra/src/plugins/xfconf/testmod_xfconf.c:23: error in test_basics: warnings in kdbOpen for plugin xfconf
/home/richi/libelektra/src/plugins/xfconf/testmod_xfconf.c:23: fatal in test_basics: could not open xfconf plugin
where the mentioned line 23 says: succeed_if (plugin->kdbOpen (plugin, parentKey) == ELEKTRA_PLUGIN_STATUS_SUCCESS, "call to kdbOpen was not successful"); .
Which tells me there happens something strange during the kdbOpen but what can that be?
However, this does not happen on linux machines, they just print:
XFCONF TESTS
==================
test basics
testmod_xfconf Results: 11 Tests done — 0 errors.
I have checked if any library is missing but ldd ./bin/testmod_xfconf is able to locate everything.
Do you have a clue or a tip, how I can debug this?
Do you have a clue or a tip, how I can debug this?
There is only one path in through which elektraXfconfOpen can fail. That is, if xfconf_init returns zero/false. Could easily be that the behaviour of this function is different on Linux and FreeBSD.
Thank you, I added this call. Now I know that it is a dbus related problem: Cannot spawn a message bus without a machine-id: Unable to load /var/lib/dbus/machine-id or /etc/machine-id: Failed to open file “/var/lib/dbus/machine-id”: No such file or directory. I will investiagate on this.
The error message in this line says:
application.c `pkg-config --cflags --libs elektra` -o application -Wl,-rpath `pkg-config --variable=libdir elektra`
/bin/sh: application.c: command not found
make: *** [application] Error 127
So I would assume that the CC environment variable is not set and $(CC) application.c becomes just application.c.
Try setting it in the CI config file to the same value that is used for CMAKE_C_COMPILER.
The error message in this line says:
application.c `pkg-config --cflags --libs elektra` -o application -Wl,-rpath `pkg-config --variable=libdir elektra` /bin/sh: application.c: command not found make: *** [application] Error 127So I would assume that the
CCenvironment variable is not set and$(CC) application.cbecomes justapplication.c.Try setting it in the CI config file to the same value that is used for
CMAKE_C_COMPILER.
Thank you, I already figured it out. It was due to the missing realpath command. It works now.
jenkins build libelektra please
jenkins build libelektra please
jenkins build libelektra please