<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ouroboros/cmake, branch testing</title>
<subtitle>Ouroboros main repository</subtitle>
<id>http://www.ouroboros.rocks/cgit/ouroboros/atom?h=testing</id>
<link rel='self' href='http://www.ouroboros.rocks/cgit/ouroboros/atom?h=testing'/>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/'/>
<updated>2026-02-22T15:02:16+00:00</updated>
<entry>
<title>irmd: Allow direct rbuff between local processes</title>
<updated>2026-02-22T15:02:16+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-19T21:03:16+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=c3636005831064e71b03a5f8796a21e89b2a714f'/>
<id>urn:sha1:c3636005831064e71b03a5f8796a21e89b2a714f</id>
<content type='text'>
This allows bypassing the IPCP for local processes that share the same
packet pool, lowering latency between processes to comparable levels
as Unix sockets (RTT in the order of a microsecond).

For local processes, no IPCPs are needed:

 $ irm b prog oping n oping
 $ oping -l
 Ouroboros ping server started.
 New flow 64.
 Received 64 bytes on fd 64.

The direct IPC can be disabled with the DISABLE_DIRECT_IPC build
flag. Note that this is needed for rumba 'local' experiments to
emulate network topologies. Without this flag all processes will just
communicate directly.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Automatically parse version from tag</title>
<updated>2026-02-18T07:02:26+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-15T17:54:42+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=b6b0b754d99dc2298930cb5db42950bf7c08cc08'/>
<id>urn:sha1:b6b0b754d99dc2298930cb5db42950bf7c08cc08</id>
<content type='text'>
The build will now parse tags so the git tag is now the single source
of truth for a version. We do not need to manually maintain the
version header.

The VERSION file uses git's export-subst feature. When git archive
creates a snapshot (e.g. cgit), git substitutes the $Format:...$
placeholder with the output of git describe, embedding the version
string directly in the archive. This requires the export-subst
attribute to be set for the VERSION file in the repository's
.gitattributes.

The version is resolved in the following order:
 - git describe (inside a git repository with tags)
 - the VERSION file (archives/snapshots)
 - 0.0.0 (fallback)

The build system will warn when it can't set a correct version, such
as in a git repo without tags, or an archive without VERSION.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Add a version target</title>
<updated>2026-02-18T07:02:21+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-15T17:29:10+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=03b3f0c5345e4ddc4cdfad050e9b28e79ffa6721'/>
<id>urn:sha1:03b3f0c5345e4ddc4cdfad050e9b28e79ffa6721</id>
<content type='text'>
This adds a make version target, that will print the version from the
build directory without having to compile and run irmd --version.

[100%] Updating git hash in version.h
[100%] Built target version_header
Ouroboros 0.22.0-37-ga3a5da14-dirty
[100%] Built target version

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Add git hash to version string</title>
<updated>2026-02-18T07:02:16+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-15T16:54:30+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=079035dbf4890e667c5e931295a1c24f28d9c0df'/>
<id>urn:sha1:079035dbf4890e667c5e931295a1c24f28d9c0df</id>
<content type='text'>
Embed git commit hash into version.h and irmd --version output using
git describe. Regenerated at build time to stay current across
commits.

Ouroboros version MAJOR.MINOR.PATCH (TAG-COMMITS-GHASH-dirty)

Example for dirty work tree (uncommitted changes):

  $ irmd --version
  Ouroboros version 0.22.0 (0.22.0-36-g86dba544-dirty)

Example after commit:

  $ sudo irmd --version
  Ouroboros version 0.22.0-37-g55fa9445

Officical release (on tag):
  Ouroboros version 0.22.0

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Set FUSE_PREFIX in fuse.cmake</title>
<updated>2026-02-18T06:55:59+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-15T10:00:33+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=471700175766f5a7f0b2449e1fe320ee78e9e2af'/>
<id>urn:sha1:471700175766f5a7f0b2449e1fe320ee78e9e2af</id>
<content type='text'>
The FUSE_PREFIX was set in global.cmake, but before HAVE_FUSE was
defined. The FUSE_PREFIX should be set in fuse.cmake.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>lib: Add SLH-DSA tests and per-algorithm PQC gating</title>
<updated>2026-02-18T06:53:35+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-17T21:37:39+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=040bdfb18684d809cb5edacf9867d3378b7e093b'/>
<id>urn:sha1:040bdfb18684d809cb5edacf9867d3378b7e093b</id>
<content type='text'>
This replaces the single HAVE_OPENSSL_PQC/DISABLE_PQC with
per-algorithm CMake variables (ML-KEM, ML-DSA, SLH-DSA), gated by the
OpenSSL versions: ML-KEM and ML-DSA require &gt;= 3.4, SLH-DSA &gt;= 3.5.

SLH-DSA was already working, but now added explicit authentication
tests for it with a full certificate chain (root CA, intermediate CA,
server) to show full support.

Rename PQC test files and cert headers to use algorithm-specific names
(ml_kem, ml_dsa, slh_dsa) and move cert headers to
include/test/certs/.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Fix invisible IPCP_TARGET variables</title>
<updated>2026-02-13T08:22:29+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-07T12:01:42+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=ec473cb9a6817bc748c4496a6dba719e7b751368'/>
<id>urn:sha1:ec473cb9a6817bc748c4496a6dba719e7b751368</id>
<content type='text'>
The IPCP_*_TARGET variables (e.g., set(IPCP_LOCAL_TARGET ipcpd-local))
were defined locally in each IPCP's CMakeLists.txt (e.g.,
CMakeLists.txt), but the configure_file() that substitutes
@IPCP_LOCAL_TARGET@ into config.h.in runs in a sibling scope that is
processed before ipcpd. Since CMake variables don't propagate between
sibling directory scopes, all @IPCP_*_TARGET@ substituted to empty
strings, resulting in IPCP_LOCAL_EXEC "".

Moved the IPCP_*_TARGET definitions into the cmake/config/ipcp/*.cmake
files so they are known when generating config.h.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Fix clobbering of FUSE_PREFIX</title>
<updated>2026-02-13T08:22:29+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-07T11:44:40+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=70300bdd48ece3763cc812fee276968767e77b3c'/>
<id>urn:sha1:70300bdd48ece3763cc812fee276968767e77b3c</id>
<content type='text'>
pkg_check_modules(FUSE ...) in fuse.cmake tells CMake's pkg-config
module to use FUSE as the variable prefix. pkg-config then populates
FUSE_PREFIX with the install prefix of libfuse (i.e., usr). This
overwrote the FUSE_PREFIX cache variable set to /tmp/ouroboros in
global.cmake.

IRMd was calling mkdir("/usr", 0777) on startup and rmdir("/usr") on
shutdown. The rmdir only fails because usr isn't empty — if it ever
were (e.g., in a minimal container), it would deleted /usr.

The fix renames the pkg-config prefix from FUSE to FUSE_PKG, so
pkg-config populates FUSE_PKG_PREFIX (harmless) instead of clobbering
FUSE_PREFIX.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Fix assertion tests core dump state message</title>
<updated>2026-02-13T08:22:29+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-04T12:50:01+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=7ed1b82e13fd70f3e68c4d6ec320377e4c27174f'/>
<id>urn:sha1:7ed1b82e13fd70f3e68c4d6ec320377e4c27174f</id>
<content type='text'>
The message for enabled/disabled state of the assertion tests core
dumping was reversed.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Refactor CMake back to in-tree CMakeLists</title>
<updated>2026-02-13T08:22:29+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-02T21:50:17+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=3796f6b04b5fce183e5480b57725545cda033f99'/>
<id>urn:sha1:3796f6b04b5fce183e5480b57725545cda033f99</id>
<content type='text'>
This moves the build definitions back to src/ subdirectories
(CMakeLists.txt per component). Configuration and dependencies are
kept out of tree. Configuration options are bundled into cmake/config/
modules. Dependencies are grouped by component (system/, crypt/, eth/,
coverage/, etc.). It now consistently uses target-based commands
(target_include_directories, target_link_libraries) instead of global
include_directories(). Proper PRIVATE/PUBLIC visibility for executable
link libraries. CONFIG_OUROBOROS_DEBUG now properly set based on being
a valid debug config (not just checking the string name).

It also adds OuroborosTargets export for find_package() support and
CMake package config files (OuroborosConfig.cmake) for easier
integration with CMake projects.

The build logic now follows more idiomatic CMake practices with
configuration separated from target definitions.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
</feed>
