This Ada library contains various utility packages for building Ada applications. This includes:
- A logging framework close to Java log4j framework,
- Support for INI and property files,
- A serialization/deserialization framework for XML, JSON, CSV, Forms
- Ada beans framework,
- Encoding/decoding framework (Base16, Base32, Base64, SHA, HMAC-SHA, AES-256),
- A composing stream framework (raw, files, buffers, pipes, sockets, encryption, decryption, LZMA compression, LZMA decompression),
- Several concurrency tools (reference counters, counters, pools, fifos, arrays),
- Process creation and pipes,
- Support for loading shared libraries (on Windows or Unix),
- HTTP client library on top of CURL or AWS.
Ada Util also provides a small test utility library on top of Ahven or AUnit to help in writing unit tests. Ahven is the default testing framework as it provides better reports.
- New package Util.Files.Walk to iterate over directory trees and honor .gitignore
- Feature #48: Change the log time from UTC to Local Time (configurable)
- Fix #49: Perf report generates incorrect XML title attributes
- Fix #50: 128Bit AES-CTR Encoding doesn't work (thanks Adam Jasinski)
- New encoder/decoder for Base32
- Feature #32: Custom log appender
- Feature #36: Add HOTP algorithm
- Feature #38: Allow to read stdout and stderr as separate streams when spawning a process
- Feature #40: Input stream reader to read parts from another stream
- Feature #41: Support to ignore line breaks when decoding Base64 streams
- Feature #42: Improvement of test framework to launch and verify external program execution and output
- Fix #37: Support to build with -gnatW8
- Fix #35: utilada_curl crate uses wrong curl dependency
alr with utilada
alr with utilada_aws
alr with utilada_curl
alr with utilada_lzma
alr with utilada_unit
alr with utilada_xml
For a detailed description on how you can configure, build and install the library refer to the Installation guide. Otherwise, you can easily configure and build the library with the steps described below.
To use Ahven testing framework, configure and build as follows:
./configure
make
To use AUnit, build with the following commands:
./configure --enable-aunit
make
The unit tests are built and executed with:
make test
And unit tests are executed with (256 success, 0 failed):
bin/util_harness
For the installation, use the following command:
make install
Since the integration with Alire, you can build without running configure.
However, there are a number of checks and dependencies which are not verified
and you must run several commands manually, choosing the correct values for
UTIL_ASM_TYPE
and UTIL_OS
build variables. The trick is to give gprbuild
the Alire configuration project in .alire/utilada_conf.gpr
.
For a simple Linux 64-bit build, use:
gprbuild -aP.alire -Putilada_core -p
gprbuild -aP.alire -Putilada_base -p
gprbuild -aP.alire -Putilada_sys -p
gprbuild -aP.alire -Putilada_aws -p
gprbuild -aP.alire -Putilada_curl -p
gprbuild -aP.alire -Putilada_xml -p
For a Linux 32-bit build, use
gprbuild -aP.alire -Putilada_sys -p -XUTIL_OS=linux32
For Windows-64 try:
gprbuild -aP.alire -Putilada_sys -p -XUTIL_OS=win64
Checkout the file .alire/utilada_conf.gpr
for other alternatives.
You can then use gprinstall
for the installation:
gprinstall -aP.alire -Putilada_core -p
gprinstall -aP.alire -Putilada_base -p
gprinstall -aP.alire -Putilada_sys -p
gprinstall -aP.alire -Putilada_aws -p
gprinstall -aP.alire -Putilada_curl -p
gprinstall -aP.alire -Putilada_xml -p
I've never tried to build on Windows without msys2. I don't know if it works. I suspect there will be problems.
The samples can be built using:
gprbuild -Psamples