Skip to content

3.18

Latest

Choose a tag to compare

@AnarManafov AnarManafov released this 18 Mar 11:22

Release Notes

[3.18.0] - 2026-03-18

� Bug Fixes

Undefined Variable in dds-user-defaults

  • add_library(ALIAS) used ${target_lib} instead of ${target}: The alias target name expanded to dds-user-defaults:: (empty suffix) because target_lib was never defined. Fixed to use the correct variable ${target}dds-user-defaults::dds_user_defaults_lib.

Malformed Generator Expressions in All 5 Submit Plugins

  • ${PROJECT_BINARY_DIR/src}${PROJECT_BINARY_DIR}/src: The /src was inside the CMake variable braces, causing the expression to evaluate to an empty string. Affected: dds-submit-ssh, dds-submit-localhost, dds-submit-slurm, dds-submit-pbs, dds-submit-lsf.

Duplicate Link Libraries

  • dds_misc_lib listed twice in dds-commander, dds-submit-ssh, and dds-submit-localhost — removed the duplicates.

CMake Library Symlink Path Matching

  • Fixed regex pattern from /lib to /lib$: The original pattern incorrectly matched paths ending with /lib64 or similar, preventing the symlink creation. The exact match anchor ensures the symlink is only created when the lib directory is truly outside the standard location.

ARM Platform Architecture Detection

  • macOS ARM64 vs Linux aarch64: Added platform-specific architecture strings for ARM builds. macOS uses arm64 while Linux uses aarch64 for the same architecture family. This ensures precompiled worker binaries are correctly identified and deployed on both platforms.

🔧 Build Infrastructure

Boost.Process v1 Is Header-Only — No Library Component Needed

  • Removed process from Boost component search: Boost.Process v1 is a header-only library, so it must not be listed as a compiled component in find_package(Boost ... COMPONENTS ...). The previous configuration caused CMake to search for a libboost_process binary that does not exist, along with a fallback alias workaround.
  • Cleaned up dds-misc-lib link libraries: Boost::process removed from target_link_libraries in dds-misc-lib. Include paths are already provided through the Boost::boost header-only interface target, so Boost.Process v1 headers remain fully accessible without any explicit link target.

Dev Container Enhancements

  • Locale generation: Added en_US.UTF-8 locale generation to the dev container. This is required by Boost.Process and std::locale for proper string and process handling in the containerized environment.
  • Git configuration: Added postStartCommand to mark the workspace as a safe directory for git operations, resolving ownership mismatches between the mounted workspace (owned by root) and the container user (dds).
  • Dependency cleanup: Replaced openssh-client with libxml2-utils in the Dockerfile, and removed extensive SSH-agent forwarding documentation from devcontainer.json as it's no longer needed.

Dead Code Cleanup

  • Removed MiscCommon_LOCATION: Variable pointed to a non-existent directory and was never referenced by any CMakeLists.txt.
  • Removed IS_SET_DDS_INSTALL_PREFIX: Cache variable was set but never read anywhere in the project.
  • Consolidated CMAKE_MODULE_PATH: Merged two separate set() calls (where the second silently overwrote the first) into a single assignment including all three search directories.

[3.17.0] - 2026-03-16

🐛 Bug Fixes

Build Warning Fixes

  • Self-assignment warning in Process.h: Replaced the no-op self-assignment _filterForRealUserID = _filterForRealUserID with (void)_filterForRealUserID to silence the unused-argument warning cleanly (-Wself-assign)
  • Deprecated boost::asio::deadline_timer: Replaced all uses of the deprecated deadline_timer / boost::posix_time API with boost::asio::system_timer / std::chrono in Process.h and BaseChannelImpl.h (-Wdeprecated-declarations)
  • [[nodiscard]] warnings in Protobuf calls: Cast the return values of UnpackTo() (dds-commander) and PackFrom() (dds-submit-slurm) to void to suppress -Wunused-result

Linker Error Fix — Boost.Process v2 Static Initializers

  • dds_tools_lib-session-tests link failure: Removed a redundant #include <boost/process.hpp> from TestSession.cpp. On Boost 1.90 the top-level header pulls in boost/process/v2/error.hpp and boost/process/v2/shell.hpp, which contain static initializers that require the compiled libboost_process (v2) library — a library that is not linked in this project. The bp namespace alias was already provided by Process.h via boost/process/v1.hpp.

🔧 Build Infrastructure

Dev Container Support

  • New .devcontainer/ configuration: Added a reproducible VS Code Dev Container based on debian:bookworm-slim with a multi-stage Dockerfile
    • Stage 1 (builder): Compiles Boost 1.90.0, abseil-cpp 20240722.1, and Protobuf v34.0 from source
    • Stage 2 (dev): Ships only the pre-built artifacts alongside Clang/LLVM 21 (compiler, clangd, clang-format, lld), CMake 4.2.3, ccache, git and make
    • Supports linux/amd64 and linux/arm64 via TARGETARCH
    • ccache persisted in a named Docker volume (dds-ccache) for fast incremental rebuilds
    • postCreateCommand automatically runs CMake configure (with ccache launchers) on first container open
    • VS Code extensions: vscode-clangd (replaces the C/C++ IntelliSense engine) and cmake-tools pre-installed