|
Elektra
0.8.24
|
This release did not happen yet.
We are proud to release Elektra 0.8.24.
Number commits: 1734 1 Author: Mihael Pranjic mpranj@limun.org 1 Author: Peter Nirschl petermax2@users.noreply.github.com 2 Author: Michael Zronek Michael.Zronek@gmail.com 2 Author: Thomas Waser thomas.waser@libelektra.org 4 Author: René Schwaiger sanssecours@me.com 5 Author: Michael Zronek michael.zronek@gmail.com 12 Author: Kurt Micheli e1026558@student.tuwien.ac.at 16 Author: Peter Nirschl peter.nirschl@gmail.com 21 Author: Klemens Böswirth k.boeswirth+git@gmail.com 22 Author: winlu derwinlu+git@gmail.com 96 Author: Markus Raab elektra@markus-raab.org 101 Author: markus2330 markus2330@users.noreply.github.com 102 Author: Thomas Wahringer thomas.wahringer@libelektra.org 117 Author: Daniel Bugl me@omnidan.net 243 Author: derwinlu derwinlu+git@gmail.com 249 Author: e1528532 e1528532@student.tuwien.ac.at 740 Author: René Schwaiger sanssecours@me.com 792 files changed, 27677 insertions(+), 39176 deletions(-)
Elektra serves as a universal and secure framework to access configuration settings in a global, hierarchical key database. For more information, visit https://libelektra.org.
For a small demo see here:
You can also read the news on our website
Elektra supports specifying the semantics of keys via metakeys in the spec namespace. An example is the metakey check/range which can be used to specify that a key only holds numbers in a given range. Another metakey is check/enum which only allows specific keywords to be the content of a key. Up to now these semantics are being checked at runtime. Therefore a type system was developed to be able to check configuration specifications statically. As an example, it would detect when one accidentally adds both a range and an enum check if their possible contents are not compatible with each other.
The type system is available as a plugin that gets mounted along with a configuration specification into the spec namespace. Furthermore we include a set of type definitions for commonly used metakeys such as check/range, check/enum, check/validation, fallback or override.
For more details see the typechecker readme
Thanks to Armin Wurzinger.
Next to the Puppet Resource Type we now also prepared a Chef Cookbook which allows us to use Elektra from within chef.
For example, to set mount a configuration file, you can use:
And to add an hosts entry, you can use:
Note that currently
kdbis invoked and Elektra needs to be installed for managed systems.
Thanks to Michael Zronek and Vanessa Kos.
The new release of Elektra Web features many UX improvements from the usability test!
Try it out now on: http://webdemo.libelektra.org/
1.5 changelog:
elektra/web1.6 changelog:
Thanks to Daniel Bugl.
Elektra's notification feature which allows applications to keep persistent configuration settings in sync with the key database and other applications was greatly improved with this release:
More details can be found in this news. Check out the updated notification tutorial and notification examples (polling, async and reload.
, where pluginname specifies the name of your new plugin. *(René Schwaiger)*
crypto plugin now uses Elektra's libinvoke and the base64 plugin in order to encode and decode Base64 strings. This improvement reduces code duplication between the two plugins. *(Peter Nirschl)*fcrypt plugin will consider the environment variable TMPDIR in order to detect its temporary directory. See [#1973] *(Peter Nirschl)*fstab plugin now passes tests on musl builds. *(Lukas Winkler)*BUILD_STATIC or BUILD_FULL are enabled, since otherwise the plugin breaks the kdb tool. *(René Schwaiger)*testscr_check_kdb_internal_check) for the plugin, since it always fails. *(René Schwaiger)*list plugin now allows us to pass common configuration for all plugins by using keys below the "config/" setting. The updated plugin documentation contains more information and an example. *(Thomas Wahringer)*list plugin which is responsible for global mounting had a bug which prevented globally mounted plugins from being configurable. *(Thomas Wahringer)*ccode instead of the “provider” code. *(René Schwaiger)*check/range, check/enum and default are supported. *(Armin Wurzinger)*tcl plugin does not fail anymore, if its configuration file does not exist and you try to retrieve the plugin contract. *(René Schwaiger)*printf statements. *(René Schwaiger)*. *(René Schwaiger)*
YAML CPP now requires at least yaml-cpp 0.6, since the current https://master.libelektra.org/src/plugins/yamlcpp/README.md "MSR test for the plugin" triggers two bugs:
in earlier versions of the yaml-cpp library. *(René Schwaiger)*
array meta data for arrays containing arrays. *(René Schwaiger)*KeySet data structure to a textual representation in the YAML serialization format. The plugin is currently in a very early stage of development. Please be advised, that it is quite likely that the plugin will produce incorrect or even invalid YAML data, especially if your KeySet contains special characters.KeySet data structure. If you want to write data in the YAML format please take a look at the YAML Smith plugin. *(René Schwaiger)*ZMQ_PUB and ZMQ_SUB sockets to send and receive notifications. The plugins can be used instead or along with the "dbus" and "dbusrecv" transport plugins. Check out the plugin documentation for more information. *(Thomas Wahringer)*simpleini silently on non-glibc systems but output a message like for other plugins *(Markus Raab)*We updated the infos/status clause of the following plugins:
boolean,constants,csvstorage,hexnumber,internalnotification,ruby,simpleini,uname, andxerces. *(René Schwaiger)*
key.delBaseName(). *(René Schwaiger)*elektraArrayGetNextKey now uses NULL instead of the empty string as init value for the returned key. *(René Schwaiger)*pluginprocess that is used to execute plugins run inside own processes has been improved. This is useful as some plugins like haskell-based plugins or python can only be started once inside a single process, while libelektra may call a plugin several times. The library now uses an improved communication protocol that separates between pluginprocess-related data and keysets passed to plugins. This avoids any possible name clashes between keys used by a plugin and keys used by pluginprocess. The documentation of the plugin has been improved as well, some mistakes were corrected and it should be more clear how to store plugin data besides pluginprocess's data structure. Tests have been added to the library to ensure its correct functionality. *(Armin Wurzinger)*int, unsigned int, long, unsigned long, long long, unsinged long long, float and double. It also supports all of Elektra's kdb_*_t types defined in kdbtypes.h. Also contexts for callbacks were added and elektraNotificationRegisterCallbackSameOrBelow() allows for notifications for the registered key or below. *(Thomas Wahringer)*kdb find lists keys of the database matching a certain regular expression. *(Markus Raab)*5.11. *(René Schwaiger)*check_formatting.sh now also checks the formatting of CMake code if you installed sponge and cmake-format. *(René Schwaiger)*check_formatting.sh now no longer writes to stdout if clang-format5.0 can not be found. *(Lukas Winkler)*check_bashisms.sh should now work correctly again, if the system uses the GNU version find. *(René Schwaiger)*reformat-cmake now checks if cmake-format works before it reformats CMake files. Thank you to Klemens Böswirth for the detailed description of the problem. *(René Schwaiger)*scripts/run_icheck now no longer leaves the base directory of the project when checking if the ABI changed. *(Lukas Winkler)*info/ meta attributes of the file plugin. *(René Schwaiger)*copy-template is now location independent. It will always create a new plugin in src/plugins. *(René Schwaiger)*-p to create a new plugin based on cpptemplate.kdb change-resolver-symlink and kdb change-storage-symlink referenced the wrong command. *(Lukas Winkler, René Schwaiger)*kdb and kdb set now mentions the -- argument that stops processing of command line switches. This is useful for setting negative values among other things. *(Klemens Böswirth)*/tests (see issue #1887). *(René Schwaiger)*kdb set commands to ensure we only add tests that store data below /tests. *(René Schwaiger)*stdout if you add the check #>. *(René Schwaiger)*- in checks as option character any more. *(René Schwaiger)*add_plugin helper now respects ENABLE_KDB_TESTING when adding Markdown Shell Recorder tests. *(Lukas Winkler)*bash compatible shell anymore. *(René Schwaiger)*SHARED_ONLY no longer get tested in the script check_kdb_internal_check.sh if executed with kdb-full or kdb-static. *(Armin Wurzinger)*compare_regex_to_line_files which allows to compare a file made of regex patterns to be compared with a text file line by line. *(Lukas Winkler)*fcrypt and crypto unit tests if the gpg binary is not available. *(Peter Nirschl)*gpg tests as the gpg-agents that were spawned did not get cleaned up afterwards. *(Lukas Winkler)*testkdb_allplugins) for the semlock plugin, since the test reported memory leaks on the latest version of Debian Unstable. *(René Schwaiger)*compare_keyset now supports the comparison of two empty key sets. *(René Schwaiger)*exit_if_fail now really exits the test progamm if the test fails. *(René Schwaiger)*compare_keyset that checks if two key sets are equal. *(René Schwaiger)*Debian Wheezy is not supported anymore. As written in the previous release notes: Jessie (oldstable) with gcc 4.8.4 is now the oldest supported platform.
BUILD_SHARED builds, but to be excluded from any BUILD_FULL or BUILD_STATIC builds using the new optional argument ONLY_SHARED for our cmake macro add_plugin. This way BUILD_SHARED can be combined with the other options without excluding such plugins. The cmake messages about plugin inclusion have been updated to indicate this behavior. This behavior has been applied for the Haskell plugins- and bindings as they currently don't support full or static builds. *(Armin Wurzinger)*GTEST_ROOT to the path of you local copy of the Google Test framework. *(René Schwaiger)*GTEST_ROOT now respects the environment variable GTEST_ROOT if it is set. *(Lukas Winkler)*testlib_notification on ASAN enabled builds, since Clang reports that the test leaks memory. *(René Schwaiger)*validation.md for ASAN builds. It leaks memory and thus fails the test during spec mount. *(Lukas Winkler)*BUILD_FULL or BUILD_STATIC as this is currently unsupported. Another issue when building Haskell plugins with a cached sandbox is fixed as well. *(Armin Wurzinger)*BUILD_TESTING=OFF when spec or list plugins are not selected.PROJECT_SOURCE_DIR, resulting in easier readable coverage reports. *(Lukas Winkler)*add_plugintest and add_plugin now also support adding a C++ test instead of a C test. *(René Schwaiger)*add_plugintest now also supports setting environment variables for C/C++ based tests. *(René Schwaiger)*ftw.h, if the current build use the compiler switch -Werror. *(René Schwaiger)*We now ignore warnings about
caused by code generated via SWIG in the Ruby binding and plugin. *(René Schwaiger)*
clang-5.0 is now used for clang tests by the build system *(Lukas Winkler)*withDockerEnv Jenkinsfile helper now no longer provides stages automatically. *(Lukas Winkler)*STATIC and FULL linked builds. *(Lukas Winkler)*clang tests have been ported to the new build system *(Lukas Winkler et al)*icheck build server job has been ported to our new build system. *(Lukas Winkler)*elektra-gcc-configure-debian-optimizations to new build system. *(Lukas Winkler)*elektra-gcc-configure-mingw-w64 to new build system. *(Lukas Winkler)*debian-multiconfig-gcc-stable to new build system. *(Lukas Winkler)*elektra-ini-mergerequests to new build system. *(Lukas Winkler)*elektra-gcc-configure-debian-nokdbtest to new build system. *(Lukas Winkler)*elektra-gcc-configure-xdgto new build system. *(Lukas Winkler)*elektra-gcc-i386 to new build system. *(Lukas Winkler)*elektra-gcc-configure-debian-musl to new build system. *(Lukas Winkler)*elektra-gcc-configure-debian-nokdbtest test. Instead we are now removing write permissions of Elektra's paths to detect if we write to the filesystem even though tests are not tagged as such. *(Lukas Winkler)*elektra-gcc-configure-debian-withspace test. We now test for compatibility of spaced build paths during normal tests. *(Lukas Winkler)*PLUGINS=NODEP config. They did not provide any additional coverage. Instead we added a new test checking if PLUGINS=NODEP builds in an minimal Docker image. *(Lukas Winkler)*master fails *(Lukas Winkler)*cmake-format . *(René Schwaiger)*We now specify custom binding, plugin and tool configuration for jobs via the environment variables:
BINDINGS,PLUGINS, andTOOLS. We also added environment variables for the build configuration options BUILD_FULL, COMMON_FLAGS, ENABLE_ASAN and the command used to test the build (TEST_COMMAND). *(René Schwaiger)*
🍏 Clang ASAN and 🐧 GCC ASAN now only build the kdb tool and the cpp binding. This update ensures, that we do not hit the job timeout for public repositories that often. *(René Schwaiger)*2.5.1) to build and test the Ruby binding/plugin. *(René Schwaiger)*As always, the ABI and API of kdb.h is fully 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 programs without errors (API).
Following changes were made:
delBaseName(). This does not affect ABI compatibility, also C++ programs compiled against 0.8.24 and using delBaseName() will work with Elektra 0.8.23 or older.kdbtypes.h now comes with support for C99 typeskdbnotificationinternal.h, kdbioplugin.h. *(Thomas Wahringer)*kdbio. For example, instead of including elektra/kdbio_ev.h users of the binding now include elektra/kdbio/ev.h. *(Thomas Wahringer)*New plugins:
New tool: kdb-find
The website is generated from the repository, so all information about plugins, bindings and tools are always up to date. Furthermore, we changed:
We are currently working on following topics:
ksLookup (...) is now in preparation. The preparation includes a new KeySet flag KS_FLAG_NAME_CHANGE, this flag will be used by the hybrid search. The hybrid search combines the best properties of the binary search and the OPMPHM. The hybrid search uses a modified branch predictor to predicts KeySet changes and decides if binary search or OPMPHM would be faster. *(Kurt Micheli)*You can download the release from here or GitHub
The hashsums are:
<<scripts/generate-hashsums>>
The release tarball is also available signed by me using GnuPG from here or GitHub
Already built API-Docu can be found online or GitHub.
Subscribe to the RSS feed to always get the release notifications.
For any questions and comments, please contact the issue tracker on GitHub or Markus Raab by email using elektra@markus-raab.org.
For more information, see https://libelektra.org
Best regards, Elektra Initiative
1.8.13