From d8eba0edc05cb955e77d6200ad83a0bd574f9008 Mon Sep 17 00:00:00 2001 From: Pepijn Noltes Date: Thu, 18 Dec 2025 21:08:57 +0100 Subject: [PATCH 1/2] Add initial AGENTS.md --- AGENTS.md | 70 +++++++++++++++++++++++++++++++++ documents/development/README.md | 5 +++ 2 files changed, 75 insertions(+) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..9ca81926e --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,70 @@ +# Project overview + +Apache Celix is an implementation of the OSGi specification adapted for C (C11) and C++ (C++14). +It enables a dynamic, modular software architecture using bundles, services, and components. + +Key Concepts + - Bundles: Deployment units (zip files) containing libraries and resources. + - Services: Function pointer structs (C) or abstract classes (C++) registered in a framework-wide registry. + - Components: Logic units managed by the Dependency Manager (DM) that handle service lifecycle (init, start, stop, deinit) declaratively. + - Containers: Executables created via add_celix_container that launch a framework instance with preconfigured bundles. + +## Building (Offline Priority) + +Assume no internet connection. Request confirmation before installing system packages. + +```bash + +# Initial configure build: +cmake \ + -DCMAKE_FETCHCONTENT_FULLY_DISCONNECTED=ON \ + -DENABLE_TESTING=ON \ + -DRSA_JSON_RPC=ON \ + -DRSA_REMOTE_SERVICE_ADMIN_SHM_V2=ON \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ + -G Ninja \ + -S . -B build + +# Initial configure build, if a download is needed: +cmake \ + -DENABLE_TESTING=ON \ + -DRSA_JSON_RPC=ON \ + -DRSA_REMOTE_SERVICE_ADMIN_SHM_V2=ON \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ + -G Ninja \ + -S . -B build + +# Compile: +cmake --build build --parallel +``` + +# Test Execution + +After building, run the tests for the components you changed. Run `ctest` from +the appropriate `build` subdirectory when possible. +For example, to test the shell bundles: + +Scoped: +```bash +ctest --output-on-failure --test-dir build/ +``` + +Full Suite: +```bash +ctest --output-on-failure --test-dir build +``` + +With exception of documentation changes, always build and run the test before submitting changes. + +# Quality Standards + +- Line Coverage: New code must aim for >95% line coverage. +- Error Injection: Use or extend the Apache Celix error_injector libraries to inject errors in unit tests to ensure high code coverage. + +# Coding Style + +- Refer to the [development guide](documents/development/README.md) for the project's coding conventions. +- New files should be formatted with the project's `.clang-format` configuration. + diff --git a/documents/development/README.md b/documents/development/README.md index d521acb34..5e9a8c56f 100644 --- a/documents/development/README.md +++ b/documents/development/README.md @@ -28,6 +28,11 @@ Note that not all existing code adheres to these conventions. New code should adhere to these conventions, and when possible, existing code should be updated to adhere to these conventions. +## Using Generative AI + +- You own any code you submit, including AI-assisted changes. GenAI suggestions do not transfer ownership or responsibility. +- Review AI-produced code critically for structure, threading behavior, resource handling, coding conventions, and test coverage. + ## Naming Conventions ### C/C++ Variables From 986eb9b72663bcd414447c88dc171d8cd774bb60 Mon Sep 17 00:00:00 2001 From: Pepijn Noltes Date: Thu, 18 Dec 2025 22:50:22 +0100 Subject: [PATCH 2/2] Add AL text to AGENTS.md --- AGENTS.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 9ca81926e..cdb663a86 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,3 +1,20 @@ + + # Project overview Apache Celix is an implementation of the OSGi specification adapted for C (C11) and C++ (C++14).