- guid: e6153a39-c4bd-41c3-bc86-785d451eb6c5
- author: Markus Raab
- pubDate: Tue, 14 Jun 2016 08:32:44 +0200
- shortDesc: adds several improvements & survey about configuration
First off: We created a survey questionnaire to gather more knowledge about the relevance of configuration systems. If you are involved in the development of free and open source software (FLOSS) you are the person we are looking for.
It would be a great help if you take this survey:
It will be available till 18.07.2016 (anywhere on earth).
For every thoroughly and not anonymously finished survey € 40 cent will be donated to one of the following organizations of your choice:
- LimeSurvey (LimeService, kindly hosts this survey)
- SPI (General Donation: 0 A.D., LibreOffice, Debian, ArchLinux, …)
- FSFE
- GNOME
- KDE
- Mozilla (Firefox)
- Wikimedia Foundation (Wikipedia)
The three main points relevant for most people are:
- Even though Elektra provides a global keydatabase configuration files stay human read- and writable which allows us to integrate unmodified software.
- Flexible adoption on how the configuration is accessed
via plugins: you can run arbitrary code, e.g. do a
git commit
or log/notify when configuration files are changed. - Elektra allows you to specify configuration values:
- use the value of other configuration values (symbolic links)
- calculate the values based on other configuration values
- validation configuration files
- generate code based on it
- and much more
Read more about Why using Elektra, which also contains since this release unique features, further reasons and limitations.
For a small demo see here
- Qt-Gui reworked mounting and native icons
- Full macOS Support, Build Server improvements and new beginner friendly tasks
- allows us to mount csv, json and xml (and other common provider names) without needing to know plugin names
- colored output for kdb tools
- Experimental GSettings support
In this release starting developing Elektra gets easier:
ELEKTRA_DEBUG
adds run-time checks and makes stack traces as if Elektra would not use pluginsCMakeLists.txt
for plugins got simplified, in most cases it should be not more than calling a single function, even if unit tests and test data are present- We prepared beginner friendly tasks for you.
For details about ELEKTRA_DEBUG
and cmake, see individual points below.
There is now a fine collection of external scripts which can
executed by kdb + <script>
. The new script kdb find-tools
provides full text search over the meta data as provided by
the scripts.
kdb find-tools -b BRIEF
to search for a short text.kdb find-tools -a AUTHOR
to search for a author.kdb find-tools -d DATE
to search for a creation date.kdb find-tools -e EXECUTE
to search for a type.
Developers should now add MetaData for their scripts..
Thanks to Kurt Micheli!
Because of its POSIX support one might think it would be trivial to support macOS. Unfortunately there were many small issues, especially in the regular expression handling and the filesystem.
Nevertheless we finally fully support macOS and the newly added travis build server makes sure it will stay this way.
A huge thanks to Manuel Mausz and Mihael Pranjić for fixing the issues and setting up travis:
- jni plugin now can load Elektra (avoids using
.so
) thanks to Mihael Pranjić - initial creation of travis.yml thanks to Manuel Mausz
- Add all 3 different XCode setups and some macOS fixes thanks to Mihael Pranjić
Now (nearly) every build job can be triggered from Pull Requests. For example:
- jenkins build git-buildpackage-jessie please
- jenkins build git-buildpackage-wheezy please
- jenkins build icc please
- jenkins build local-installation please
For a full list see here.
Thanks to Mihael Pranjić for the setup!
- fix inconsistency with one excluded compilation variant, thanks to Harald Geyer for reporting #698
- fix dynamic searching of installed plugins, needed so that kdb list-tools works correctly thanks to Harald Geyer for reporting
- kdbtimer,
include <vector>
as needed by some compilers, a big thanks to Andreas Bombe for the non-maintainer upload in Debian to fix it for upcoming Debian release - also find yajl header files if installed in non-standard include directories, thanks to Mihael Pranjić
- glib: make sure we use all definitions returned by pkg-config #719, fixes build on FreeBSD now glib bindings need cmake 2.8.12 thanks to Mihael Pranjić for reporting/testing and Manuel Mausz for fixing
- fix INI for macOS (did require some non-portable sorting
properties of
qsort
.) - INI makes INI-specific meta-data private by prefixing
ini
. kdb export
also works under MinGW, thanks to Gabriel Rauter
- prefer to link shared
- add plugin tests when using link shared
- make ADD_TEST simpler (without calling add_plugintest)
- make installation of test data simpler + honor INSTALL_TESTING option
- fix installation of test_data (do not install whole dir)
- introduce cache so that it is enough to pass parameters to add_plugin* once
- avoid PLUGIN_DIRECTORY_NAME and change CMAKE_CURRENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR instead
- add_plugin: remove unused option SHARED_SOURCES
- implement a 3rd phase to add test cases: correctly handles dependencies of testcases to bindings
- fix testmod_jni
for maintainers:
- The cmake variables KDB_DB_SYSTEM and KDB_DB_HOME are now STRING and not PATH.
- BUILD_FULL and BUILD_STATIC are now OFF by default
- building with BUILD_SHARED is now preferred (for all examples, test cases,...)
- ELEKTRA_DEBUG_BUILD and ELEKTRA_VERBOSE_BUILD is not used anymore.
- ENABLE_DEBUG was added: it does not add debug symbols but run-time assertions.
- More cmake variables are marked as advanced.
for developers:
- BUILD_STATIC and BUILD_FULL is now OFF by default (nearly) all unit tests now also work with BUILD_SHARED
- to support shared unit tests, a third phase was added when adding plugins inconsistent adding (across phases) of plugins and unit tests is reported
- in
add_plugin
remove SHARED_SOURCES, and addADD_TEST
andINSTALL_TEST_DATA
.
and fixes:
- adding plugin tests is now much simpler, simply use
ADD_TEST
inadd_plugin
. - KDB_DB_SYSTEM and KDB_DB_HOME are now STRING and not PATH because
of incorrect resolving of
~
. - lua bindings tests: make sure lua executable matches with the lua libraries version thanks to Mihael Pranjić
- lua bindings: do not use hard-coded
lua
executable. - Fix cmake configure when BUILD_DOCUMENTATION is set to OFF thanks to Kurt Micheli
See more about changes to plugin adding in cmake in the plugin decision.
As part of the ongoing work of the bachelor thesis
Integration of Elektra into the GNOME desktop environment
we now have experimental support for Elektra as a GSettings backend on Linux
(We will look into getting macOS support on a later date).
When installed, applications using GSettings default backend will write to Elektra
below the /sw
key. The GSettings bindings are intended as a preview version so
please do not use them in a production system.
To build the GSettings backend you have to explicitly add the binding even if ALL
is given.
e.g. -DBINDINGS=gsettings
-DBINDINGS="ALL;gsettings"
All needed core functionality of a GSettings backend is already implemented.
This includes notification support if you have your /sw
mounted with the dbus plugin.
Please report any bugs you encounter.
For further information regarding the status of the implementations please refer to the corresponding README and ticket.
Mounting now supports to mount commonly known names even if the name is not a plugin.
If more than one plugin is available automatically the best one is selected.
The selection process works by annotating different qualities of the plugins,
see infos/status
in the README.md of individual plugins.
E.g. to mount a file using a json plugin (called yajl because of the library's name it build upon)
kdb mount file.json json
stores filtered keys internally so that they do not get accidentally lost and can be written to the storage again without the user having to remember including them in the writeout
The longer term goal is to add such global plugins per default, so that the usage of the API is easier.
For now you can simply add it using:
kdb global-mount cachefilter
Thanks to Marvin Mall.
The Qt GUI receives new features and a better gnome integration. Its version number was updated to 0.0.12 (beta). Major features:
- use native icons (Qt GUI xdg icon theme support rework) thanks to Gabriel Rauter
- update desktop entry org.libelektra.elektra-qt-editor.desktop with new symbolic icon of Elektra’s logo so that qt-gui can nicely started from within Gnome thanks to Gabriel Rauter
- Add new layout elements to backend wizard and integrate new BackendBuilder functionality (See Common Provider Names) to qt-gui thanks to Raffael Pancheri
Bug fixes:
- Reset to defaults now reverts back to build-in defaults.
- Make clicks on search icon focus on search textfield.
- save settings when settings dialog is closed.
- fix crash of qt-gui when crypto plugin was enabled (and added /shutdown option to enable previous behaviour) thanks to Peter Nirschl
- fix qt-gui fails to synchronize because of readonly plugins thanks to Raffael Pancheri
- Rename desktop file: correct reverse url from org.elektra to org.libelektra.
- Rename elektra-qt to elektra-qt-editor.
- Rename ChooseColorWindow: The ChooseColorWindows will be replaced by a AppearanceSettingsWindow, all references to ChooseColor, choose color have been replaced by AppearanceSettings or choose appearance.
Other improvements:
- Install
elektra-qt-editor
binary so both the desktop files TryExec works and people not starting the gui troughkdb qt-gui
have a speaking name in their process list. - Replace occurences of
Elektra Editor
withElektra Qt Editor
so that we use the same name in all places apart from the tools binary. - Introduce Appearance Settings Window: Appearance Settings Window
contains both color settings as well as a switch to disable or enable
the system icon theme. For this to work we had to introduce the setting
in
guisettings
. We also added a private function inguisettings
to get and set settings with a boolean value. - Tree reload on Settings close: We now synch and refresh the tree view on closing of the settings window if any settings have been changed, so changes can be seen imediatly in the tree.
- Add qt5 svg module as dependency: the qt5 svg module is needed so we can display icon themes that provide svg as icon format.
- Add and install symbolic icon with the installation of the Elektra Qt Editor.
Thanks to Gabriel Rauter and Raffael Pancheri for the engagement in improving qt-gui.
A big thanks to Gabriel Rauter for improving the user experience with the kdb tool.
On errors and in kdb info
it was often quite hard to find the relevant text.
Now important parts are highlighted by bold or colorful text. This helps to spot the important information immediately without sacrificing information that would be important for a detailed analysis.
Every tool now has the option --color
and -C
which is set to auto
per default.
By writing to:
kdb set user/sw/elektra/kdb/#0/color off
one can go back to previous behavior.
- improve documentation about how to pop a key
- document how to avoid running test cases as root in TESTING.md.
- document guarantees of
elektraPluginGetData
, thanks to Marvin Mall - doc mentions that -1 should be returned always when an error is set
- many more spelling mistakes were fixed and useless whitespace was removed, thanks to René Schwaiger
- describe preferences when plugins are included/excluded
- improvements in
ksCopy
,ksPop
,kdbGet
andkdbSet
API description - added WHY document
- updated plugin decision to include 3rd phase
ENABLE_DEBUG now enables a debug build for Elektra. It has nothing to do with debug symbols, but:
- it enables assertions
- it enables undefinied behavior sanitizer for clang
- plugins will not be closed so that stack traces are more useful
(using
RTLD_NODELETE
)
ENABLE_DEBUG
is recommended for every developer, even if you are not
modifying Elektra itself. The assertions will give you hints on API misusage.
For example, keyNew
was known to be error-prone. ENABLE_DEBUG
now will report
wrong parameters by an assertion.
The old options ELEKTRA_DEBUG
and ELEKTRA_VERBOSE
are not available anymore.
Thanks to:
- Thomas Waser for pointing to
RTLD_NODELETE
- Gabriel Rauter for fixing qt-gui with
-DENABLE_DEBUG=ON
The constants plugin was updated to provide cmake/ENABLE_LOGGER
cmake/ENABLE_DEBUG
and will no longer provide cmake/ELEKTRA_DEBUG_BUILD
cmake/ELEKTRA_VERBOSE_BUILD
- Gabriel Rauter is now listed in AUTHORS.md
- constants plugin: configure_file now uses current binary directory, not cluttering the main build directory.
- fix ssize_t for VS2015, thanks to Gabriel Rauter
- gtest: fix linking when using arch systemd-nspawn, thanks to Marvin Mall
LD_LIBRARY_PATH
is added to lua and python bindings needed for macOS, thanks to Mihael Pranjić- Fix external unit test for Ubuntu 15.04 by putting files before the flags, thanks to Marvin Mall
- symbols in Ni_ namespace are now in elektraNi_
- add more ipv4 and ipv6 test cases for IP adress validation checker
- crypto-plugin avoid usage of hardcoded error numbers, thanks to Peter Nirschl
- do not use number for resolver position
- to fix a compiler warning in macOS, we made the printf format specifier of time_t more portable, thanks to René Schwaiger
- many preparations for global plugins and mmap
- in the constants plugin
cmake/BUILTIN_PLUGIN_FOLDER
,BUILTIN_DATA_FOLDER
andBUILTIN_EXEC_FOLDER
were added. - doxygen is only run once during build, thanks to René Schwaiger
- add script configure-home to build Elektra that it will resolve all pathes to home-directories
- add script metaini-to-c that converts METADATA.ini to C-code, thanks to Thomas Waser
- add note that default values must be present for code generation, thanks to Martin Schleiss
- avoid
seq
as it is not available in some*BSD
, thanks to Mihael Pranjić - make jni testmod check consistent to others
As always, the ABI and API is fully forward- and backward-compatible, i.e. programs compiled against an older 0.8 version of Elektra will continue to work (ABI) and you will be able to recompile every program without errors (API). This time you can even compile programs against 0.8.17 and run with 0.8.16.
For the qt-gui the svg module is added as dependency.
New and missing files in the installation:
elektra-qt-editor
is installed in the path (needed for TryExec in Desktop file)libelektrasettings.so
will be installed ifgsettings
binding is enabledlibelektra-cachefilter.so
is the new cachefilter plugintool_exec/testmod_cachefilter
is its unit testtool_exec/find-tools
is a new python script to find other toolsappdata/org.libelektra.elektra-qt-editor.appdata.xml
icons/hicolor/scalable/apps/elektra-symbolic.svg
share/man/man1/kdb-find-tools.1
Renamed files:
applications/org.elektra.elektra-qt.desktop
got renamed toapplications/org.libelektra.elektra-qt-editor.desktop
.
Removed files:
- Some of the installed "test data" actually was source code from
Elektra. Test data from the following plugins is affected:
hosts
,ini
,lineendings
,
Temporarily removed files:
testmod_lua
,testmod_python
andtestmod_python2
do not work in a shared build and are temporarily disabled ifBUILD_SHARED
is enabled. Also their test data is affected.
You can download the release from here and also here on github
- name: elektra-0.8.17.tar.gz
- size: 2459542
- md5sum: e53efdb9a5e0852c58b21280b1e6c07d
- sha1: a1abcd4ac5aabfc60c34da98a02c4636e4634b5c
- sha256: a6a41afb0160feef84f7d1e0d199da26022ff8cb52ed455a0d306b589838d8f5
This release tarball now is also available signed by me using gpg
already built API-Docu can be found here
Subscribe to the RSS feed to always get the release notifications.
For any questions and comments, please contact the Mailing List the issue tracker on github or by email [email protected].
For more information, see https://libelektra.org
Best regards, Markus