From 6cef1a68c9ff5c968e00015b81f8aca60dc16f39 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Fri, 9 Jan 2026 10:59:46 -0700 Subject: [PATCH 1/6] externpro 25.07.2-5-g042238d --- .devcontainer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer b/.devcontainer index 1a635a9c2..042238da4 160000 --- a/.devcontainer +++ b/.devcontainer @@ -1 +1 @@ -Subproject commit 1a635a9c290fa0a634cae3bb0784609f873932f2 +Subproject commit 042238da4a6e82162848388c30b55c707ac2c1e5 From 6aa4349c36be090b1e51c358b46756fc0b5091e7 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Fri, 9 Jan 2026 11:00:56 -0700 Subject: [PATCH 2/6] workflows: externpro@25.07.2 cp .devcontainer/.github/wf-templates/xp*.yml .github/workflows --- .github/workflows/xpbuild.yml | 26 ++++++++++---------------- .github/workflows/xprelease.yml | 3 +-- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/.github/workflows/xpbuild.yml b/.github/workflows/xpbuild.yml index 169ff5269..625b2f932 100644 --- a/.github/workflows/xpbuild.yml +++ b/.github/workflows/xpbuild.yml @@ -1,4 +1,7 @@ name: Build +permissions: + contents: read + pull-requests: write on: push: branches: [ "dev" ] @@ -7,24 +10,15 @@ on: workflow_dispatch: jobs: linux: - uses: externpro/externpro/.github/workflows/build-linux.yml@25.06 - with: - cmake-workflow-preset: Linux - runon: ubuntu-latest - secrets: inherit - linux-arm64: - uses: externpro/externpro/.github/workflows/build-linux.yml@25.06 - with: - cmake-workflow-preset: Linux - runon: ubuntu-24.04-arm + permissions: + contents: read + pull-requests: write + packages: write + uses: externpro/externpro/.github/workflows/build-linux.yml@25.07.2 secrets: inherit macos: - uses: externpro/externpro/.github/workflows/build-macos.yml@25.06 - with: - cmake-workflow-preset: Darwin + uses: externpro/externpro/.github/workflows/build-macos.yml@25.07.2 secrets: inherit windows: - uses: externpro/externpro/.github/workflows/build-windows.yml@25.06 - with: - cmake-workflow-preset: Windows + uses: externpro/externpro/.github/workflows/build-windows.yml@25.07.2 secrets: inherit diff --git a/.github/workflows/xprelease.yml b/.github/workflows/xprelease.yml index 146191466..fe4c52cd7 100644 --- a/.github/workflows/xprelease.yml +++ b/.github/workflows/xprelease.yml @@ -9,10 +9,9 @@ on: jobs: # Upload build artifacts as release assets release-from-build: - uses: externpro/externpro/.github/workflows/release-from-build.yml@25.06 + uses: externpro/externpro/.github/workflows/release-from-build.yml@25.07.2 with: workflow_run_url: ${{ github.event.inputs.workflow_run_url }} - artifact_pattern: "*.tar.xz" permissions: contents: write id-token: write From d94be8ebba2e12bfb9eb1a7d4646e2db4138578b Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Fri, 9 Jan 2026 11:04:20 -0700 Subject: [PATCH 3/6] cmake: xproinc (externpro dependency provider) enhancements --- CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c85093a09..ba4097c2d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,4 @@ cmake_minimum_required(VERSION 3.31) set(CMAKE_PROJECT_TOP_LEVEL_INCLUDES .devcontainer/cmake/xproinc.cmake) project(activemq-cpp) -include(GNUInstallDirs) -include(xpflags) add_subdirectory(activemq-cpp) From 44b221832bde94200d8dcea0e7f424418cefa85d Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Fri, 9 Jan 2026 11:27:59 -0700 Subject: [PATCH 4/6] cmake: determine AMQ_VER from configure.ac --- activemq-cpp/CMakeLists.txt | 8 ++++++++ activemq-cpp/configure.cmake | 14 +++----------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/activemq-cpp/CMakeLists.txt b/activemq-cpp/CMakeLists.txt index 4022d4b72..652759d71 100644 --- a/activemq-cpp/CMakeLists.txt +++ b/activemq-cpp/CMakeLists.txt @@ -1,5 +1,13 @@ find_package(apr REQUIRED) find_package(openssl REQUIRED) +# determine version from configure.ac +file(STRINGS configure.ac MAJOR REGEX "^ACTIVEMQ_MAJOR_VERSION=([0-9]+)") +file(STRINGS configure.ac MINOR REGEX "^ACTIVEMQ_MINOR_VERSION=([0-9]+)") +file(STRINGS configure.ac PATCH REGEX "^ACTIVEMQ_PATCH_VERSION=([0-9]+)") +string(REGEX MATCH "([0-9]+)" MAJOR ${MAJOR}) +string(REGEX MATCH "([0-9]+)" MINOR ${MINOR}) +string(REGEX MATCH "([0-9]+)" PATCH ${PATCH}) +set(AMQ_VER ${MAJOR}.${MINOR}.${PATCH}) if(UNIX) include(configure.cmake) endif() diff --git a/activemq-cpp/configure.cmake b/activemq-cpp/configure.cmake index d6c7512fe..74d250cd1 100644 --- a/activemq-cpp/configure.cmake +++ b/activemq-cpp/configure.cmake @@ -106,14 +106,6 @@ if(HAVE_VISIBILITY_OPTIONS) endif() xpcfgLtObjdir(LT_OBJDIR) #################### -# determine version from configure.ac -file(STRINGS configure.ac MAJOR REGEX "^ACTIVEMQ_MAJOR_VERSION=([0-9]+)") -file(STRINGS configure.ac MINOR REGEX "^ACTIVEMQ_MINOR_VERSION=([0-9]+)") -file(STRINGS configure.ac PATCH REGEX "^ACTIVEMQ_PATCH_VERSION=([0-9]+)") -string(REGEX MATCH "([0-9]+)" MAJOR ${MAJOR}) -string(REGEX MATCH "([0-9]+)" MINOR ${MINOR}) -string(REGEX MATCH "([0-9]+)" PATCH ${PATCH}) -set(ver ${MAJOR}.${MINOR}.${PATCH}) # Name of package set(PACKAGE "\"${PROJECT_NAME}\"") # Define to the address where bug reports for this package should be sent. @@ -121,15 +113,15 @@ set(PACKAGE_BUGREPORT "\"dev@activemq.apache.org\"") # Define to the full name of this package. set(PACKAGE_NAME "\"${PROJECT_NAME}\"") # Define to the full name and version of this package. -set(PACKAGE_STRING "\"${PROJECT_NAME} ${ver}\"") +set(PACKAGE_STRING "\"${PROJECT_NAME} ${AMQ_VER}\"") # Define to the one symbol short name of this package. set(PACKAGE_TARNAME "\"${PROJECT_NAME}\"") # Define to the home page for this package. set(PACKAGE_URL "\"http://activemq.apache.org/cms/\"") # Define to the version of this package. -set(PACKAGE_VERSION "\"${ver}\"") +set(PACKAGE_VERSION "\"${AMQ_VER}\"") # Version number of package -set(VERSION "\"${ver}\"") +set(VERSION "\"${AMQ_VER}\"") #################### xpcfgCheckPthreadAttrArgs( PTHREAD_ATTR_GETDETACHSTATE_TAKES_ONE_ARG From 67de7da47d61857215acfcee75915027a697b2ae Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Fri, 9 Jan 2026 11:28:49 -0700 Subject: [PATCH 5/6] cmake: xpExternPackage() replaces xpPackageDevel() --- activemq-cpp/CMakeLists.txt | 15 +++++++-------- activemq-cpp/src/main/CMakeLists.txt | 3 +++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/activemq-cpp/CMakeLists.txt b/activemq-cpp/CMakeLists.txt index 652759d71..affaa2446 100644 --- a/activemq-cpp/CMakeLists.txt +++ b/activemq-cpp/CMakeLists.txt @@ -18,13 +18,12 @@ if(has_noDeprecatedDeclarations) endif() set(lib activemqcpp) set(targetsFile ${lib}-targets) -if(DEFINED XP_NAMESPACE) - set(nameSpace NAMESPACE ${XP_NAMESPACE}::) - string(PREPEND lib "${XP_NAMESPACE}::") -endif() -if(NOT DEFINED XP_INSTALL_CMAKEDIR) - set(XP_INSTALL_CMAKEDIR ${CMAKE_INSTALL_DATADIR}/cmake) -endif() -xpPackageDevel(TARGETS_FILE ${targetsFile} DEPS apr openssl LIBRARIES ${lib}) +xpExternPackage(NAMESPACE ${XP_NAMESPACE} + TARGETS_FILE ${targetsFile} LIBRARIES activemqcpp + BASE ${CMAKE_PROJECT_NAME}-${AMQ_VER} XPDIFF "auto" DEPS apr openssl + WEB "http://activemq.apache.org/cms/" UPSTREAM "github.com/apache/activemq-cpp" + DESC "ActiveMQ C++ Messaging Service (CMS) client library" + LICENSE "[Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0.html 'Apache License, Version 2.0')" + ) add_subdirectory(src/main) add_subdirectory(src/examples) diff --git a/activemq-cpp/src/main/CMakeLists.txt b/activemq-cpp/src/main/CMakeLists.txt index 510e92f1d..d82edfdb9 100644 --- a/activemq-cpp/src/main/CMakeLists.txt +++ b/activemq-cpp/src/main/CMakeLists.txt @@ -1679,4 +1679,7 @@ install(TARGETS ${lib_name} EXPORT ${targetsFile} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) +if(DEFINED XP_NAMESPACE) + set(nameSpace NAMESPACE ${XP_NAMESPACE}::) +endif() install(EXPORT ${targetsFile} DESTINATION ${XP_INSTALL_CMAKEDIR} ${nameSpace}) From 0bd960ae456597fd22c0cce78a23c3ea05ceaac1 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Fri, 9 Jan 2026 12:32:42 -0700 Subject: [PATCH 6/6] Fix C++17 build: remove dynamic exception spec from ActiveMQMapMessage::clearBody Newer gcc releases reject dynamic exception specifications in C++17 mode. Drop the legacy `throw(cms::CMSException)` from ActiveMQMapMessage::clearBody declaration/definition while preserving behavior (exceptions still propagate). --- activemq-cpp/src/main/activemq/commands/ActiveMQMapMessage.cpp | 2 +- activemq-cpp/src/main/activemq/commands/ActiveMQMapMessage.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/activemq-cpp/src/main/activemq/commands/ActiveMQMapMessage.cpp b/activemq-cpp/src/main/activemq/commands/ActiveMQMapMessage.cpp index 71156937f..8997a6155 100644 --- a/activemq-cpp/src/main/activemq/commands/ActiveMQMapMessage.cpp +++ b/activemq-cpp/src/main/activemq/commands/ActiveMQMapMessage.cpp @@ -96,7 +96,7 @@ bool ActiveMQMapMessage::equals(const DataStructure* value) const { } //////////////////////////////////////////////////////////////////////////////// -void ActiveMQMapMessage::clearBody() throw (cms::CMSException) { +void ActiveMQMapMessage::clearBody() { ActiveMQMessageTemplate::clearBody(); this->getMap().clear(); } diff --git a/activemq-cpp/src/main/activemq/commands/ActiveMQMapMessage.h b/activemq-cpp/src/main/activemq/commands/ActiveMQMapMessage.h index 706434258..d0e78e2fb 100644 --- a/activemq-cpp/src/main/activemq/commands/ActiveMQMapMessage.h +++ b/activemq-cpp/src/main/activemq/commands/ActiveMQMapMessage.h @@ -67,7 +67,7 @@ namespace commands { virtual bool equals(const DataStructure* value) const; - virtual void clearBody() throw (cms::CMSException); + virtual void clearBody(); public: // CMS Message