From 214de3c136469dce388e135ec312adebb13a2b58 Mon Sep 17 00:00:00 2001 From: Jonathan Glanz Date: Mon, 13 Jul 2026 10:01:36 -0400 Subject: [PATCH 1/2] Build as a wire-sysio component: relative install destinations, no standalone Boost lookup or CI - install(): use relative GNUInstallDirs destinations so the superproject's packaging stages against its packaging prefix; absolute FULL_* paths baked the configure-time prefix into wire-sysio's dev packages, which the packaging verification correctly rejects - drop the stale standalone-only find_package(Boost 1.83 EXACT): appbase consumes the Boost targets already defined by wire-sysio's vcpkg toolchain (statically linked, currently Boost 1.89); a clear FATAL_ERROR guard remains for out-of-tree configures - remove the standalone build workflow: a distro-boost CI leg is neither representative of the real build nor satisfiable; appbase is compiled and tested by wire-sysio CI on every run --- .github/workflows/build.yaml | 28 ---------------------------- CMakeLists.txt | 16 ++++++++-------- 2 files changed, 8 insertions(+), 36 deletions(-) delete mode 100644 .github/workflows/build.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml deleted file mode 100644 index 37c8913..0000000 --- a/.github/workflows/build.yaml +++ /dev/null @@ -1,28 +0,0 @@ -name: "Build & Test" - -on: - push: - branches: - - main - pull_request: - workflow_dispatch: - -jobs: - build-test: - name: Build & Test - runs-on: ubuntu-22.04 - strategy: - matrix: - os: ["debian:buster", "ubuntu:jammy"] - container: ${{matrix.os}} - steps: - - name: Install deps - run: | - apt-get update && apt-get upgrade -y - apt-get install -y build-essential cmake libboost-dev libboost-program-options-dev libboost-system-dev - - uses: actions/checkout@v3 - - name: Build & Test - run: | - cmake -S . -B build -DCMAKE_BUILD_TYPE=Release - cmake --build build -- -j $(nproc) - cd build && ctest --output-on-failure -j $(nproc) diff --git a/CMakeLists.txt b/CMakeLists.txt index 432713e..af37f7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,11 +21,11 @@ set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE) find_package(Threads) +# appbase is built as a wire-sysio component; the superproject's vcpkg +# toolchain defines the Boost targets (statically linked) before this +# directory is added. There is intentionally no standalone Boost lookup. if(NOT TARGET Boost::program_options) - find_package(Boost 1.83 EXACT REQUIRED COMPONENTS program_options system) - if(NOT TARGET Boost::program_options) - message(FATAL_ERROR "Boost::program_options not found") - endif() + message(FATAL_ERROR "Boost::program_options target not defined; appbase is built as part of wire-sysio, whose toolchain provides the Boost targets.") endif() if( APPLE ) @@ -90,10 +90,10 @@ endif() install( TARGETS appbase - RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} ${INSTALL_COMPONENT_ARGS} - LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} ${INSTALL_COMPONENT_ARGS} - ARCHIVE DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} ${INSTALL_COMPONENT_ARGS} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/appbase ${INSTALL_COMPONENT_ARGS} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ${INSTALL_COMPONENT_ARGS} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ${INSTALL_COMPONENT_ARGS} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ${INSTALL_COMPONENT_ARGS} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/appbase ${INSTALL_COMPONENT_ARGS} ) add_subdirectory( examples ) From 8f0263916835f203abd17f68ac2bd5a48f2ea39f Mon Sep 17 00:00:00 2001 From: Jonathan Glanz Date: Mon, 13 Jul 2026 10:06:27 -0400 Subject: [PATCH 2/2] docs: reflect the wire-sysio component build in the README appbase builds as a wire-sysio component: Boost targets come statically from the superproject's vcpkg toolchain (no standalone lookup), install rules use relative GNUInstallDirs destinations for the superproject's packaging, and there is no standalone CI workflow. --- README.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index da279de..8c08fa9 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ plugins are configured, initialized, started, and shutdown in the proper order. - Automatically Load Dependent Plugins in Order - Plugins can specify commandline arguments and configuration file options - Program gracefully exits from SIGINT, SIGTERM, and SIGPIPE -- Minimal Dependencies (Boost 1.60, c++14) +- Minimal dependencies (Boost, provided by the superproject's toolchain) ## Defining a Plugin @@ -113,14 +113,18 @@ all asynchronous operations posted to the io_context should be run in the same t To trigger a graceful exit call `appbase::app().quit()` or send SIGTERM, SIGINT, or SIGPIPE to the process. -## Dependencies +## Building -1. c++14 or newer (clang or g++) -2. Boost 1.60 or newer compiled with C++14 support +appbase is built as a component of +[wire-sysio](https://github.com/Wire-Network/wire-sysio), which vendors this +repository as a submodule. The superproject's vcpkg toolchain defines the +Boost targets (statically linked into the portable wire-sysio binaries, +currently Boost 1.89) before this directory is configured, so there is +intentionally **no standalone Boost lookup** here — configuring appbase out +of tree stops with a clear `FATAL_ERROR`. Install rules use relative +GNUInstallDirs destinations so the superproject's packaging can stage them +against its packaging prefix. -To compile boost with c++14 use: - -``` -./b2 ... cxxflags="-std=c++0x -stdlib=libc++" linkflags="-stdlib=libc++" ... -``` +There is likewise no standalone CI workflow: appbase is compiled and tested +by wire-sysio CI on every run.