From 25a06d5d8d15a9913b715fa5b8e02c4f91f980c4 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 27 May 2026 09:47:54 -0600 Subject: [PATCH 1/7] fix: update boost::filesystem API for updated boost compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update deprecated boost::filesystem v2 API calls to work with updated boost: - path.leaf() → path.filename().string() - fs::basename(path) → path.stem().string() - fs::extension(path) → path.extension().string() - fs::is_regular(status) → fs::is_regular_file(status) - Fix vexing parse warnings by using assignment syntax instead of function declaration The boost::filesystem v3 API moved from free functions to member functions and requires explicit .string() conversion for path objects. --- wxInclude.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/wxInclude.cpp b/wxInclude.cpp index 04b8d1b..ccbca6f 100644 --- a/wxInclude.cpp +++ b/wxInclude.cpp @@ -240,10 +240,10 @@ int main(int argc, char* argv[]) throw std::runtime_error( "Failed to create output file!" ); if ( !opt.count( "quiet" ) ) /* Show status */ - std::cout << "Build : file '" << outputpath.leaf() << "'..." << std::endl; + std::cout << "Build : file '" << outputpath.filename().string() << "'..." << std::endl; /* Get base name of file */ - headername = fs::basename( outputpath ); + headername = outputpath.stem().string(); /* Data string stream */ std::ostringstream data; @@ -270,7 +270,7 @@ int main(int argc, char* argv[]) BOOST_FOREACH( std::string& file, files ) { fs::path inputpath( file ); - std::string fileext( fs::extension( inputpath ) ); + std::string fileext = inputpath.extension().string(); fs::ifstream input( inputpath, std::ios::in | std::ios::binary | std::ios::ate ); input.rdbuf()->pubsetbuf( inbuffer, BUFFER_SIZE ); @@ -321,10 +321,10 @@ int main(int argc, char* argv[]) BOOST_FOREACH( std::string& type, types ) { /* Normal file? */ - if ( fs::is_regular( dir_itr->status() ) ) + if ( fs::is_regular_file( dir_itr->status() ) ) { /* Wanted type? */ - std::string fileext( fs::extension( dir_itr->path() )); + std::string fileext = dir_itr->path().extension().string(); bool equals = false; @@ -338,7 +338,7 @@ int main(int argc, char* argv[]) fs::ifstream input( dir_itr->path(), std::ios::in | std::ios::binary | std::ios::ate ); input.rdbuf()->pubsetbuf( inbuffer, BUFFER_SIZE ); - std::string file( dir_itr->path().leaf().string() ); + std::string file = dir_itr->path().filename().string(); if ( input.is_open() ) { From 5d32a13a2d1c4c97034fea797fc097421a8d67b5 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 27 May 2026 10:02:47 -0600 Subject: [PATCH 2/7] cmakeup: CMake updates, remove XP_NAMESPACE - Update minimum CMake version from 3.31 to 4.3 - Remove XP_NAMESPACE and xproinc.cmake inclusion (now part of CMakePresets) - Package name and Target Namespace now match - Make xpExternPackage conditional 'if(COMMAND' - Add FIND_XPRO_CMAKE to force cmake script mode instead of CPS for this package - share/cps/wxInclude.cps: component "wxInclude::wxInclude" has unknown type "executable" and was not imported - Auto-infer dependencies (Boost) - add CMAKE_EXPERIMENTAL_GENERATE_SBOM in presets --- CMakeLists.txt | 22 ++++++++++------------ CMakePresetsBase.json | 2 +- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cb48a9b..ce918ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,27 +1,25 @@ -cmake_minimum_required(VERSION 3.31) -set(CMAKE_PROJECT_TOP_LEVEL_INCLUDES .devcontainer/cmake/xproinc.cmake) +cmake_minimum_required(VERSION 4.3) project(wxInclude) -xpFindPkg(PKGS boost) -add_executable(${CMAKE_PROJECT_NAME} wxInclude.cpp) -target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE Boost::filesystem Boost::program_options Boost::timer) +find_package(Boost) +add_executable(${PROJECT_NAME} wxInclude.cpp) +target_link_libraries(${PROJECT_NAME} PRIVATE Boost::filesystem Boost::program_options Boost::timer) set(targetsFile ${PROJECT_NAME}-targets) -if(DEFINED XP_NAMESPACE) - xpExternPackage(NAMESPACE ${XP_NAMESPACE} - TARGETS_FILE ${targetsFile} EXE ${CMAKE_PROJECT_NAME} - BASE v1.0 XPDIFF "intro" PVT_DEPS boost +if(COMMAND xpExternPackage) + xpExternPackage(TARGETS_FILE ${targetsFile} + EXE ${PROJECT_NAME} FIND_XPRO_CMAKE + BASE v1.0 XPDIFF "intro" WEB "http://wiki.wxwidgets.org/Embedding_PNG_Images" DESC "embed resources into cross-platform code" LICENSE "[wxWindows](http://wiki.wxwidgets.org/Embedding_PNG_Images 'assumed wxWindows license, since source can be downloaded from wxWiki')" ) - set(nameSpace NAMESPACE ${XP_NAMESPACE}::) elseif(NOT DEFINED CMAKE_INSTALL_CMAKEDIR) set(CMAKE_INSTALL_CMAKEDIR ${CMAKE_INSTALL_DATADIR}/cmake) endif() -install(TARGETS ${CMAKE_PROJECT_NAME} EXPORT ${targetsFile} +install(TARGETS ${PROJECT_NAME} EXPORT ${targetsFile} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) -install(EXPORT ${targetsFile} DESTINATION ${CMAKE_INSTALL_CMAKEDIR} ${nameSpace}) +install(EXPORT ${targetsFile} DESTINATION ${CMAKE_INSTALL_CMAKEDIR} NAMESPACE ${PROJECT_NAME}::) add_executable(decompressor decompress.cpp) target_link_libraries(decompressor PRIVATE Boost::filesystem Boost::iostreams) diff --git a/CMakePresetsBase.json b/CMakePresetsBase.json index 4489d79..c54ade9 100644 --- a/CMakePresetsBase.json +++ b/CMakePresetsBase.json @@ -6,7 +6,7 @@ "hidden": true, "binaryDir": "${sourceDir}/_bld-${presetName}", "cacheVariables": { - "XP_NAMESPACE": "xpro" + "CMAKE_EXPERIMENTAL_GENERATE_SBOM": "ca494ed3-b261-4205-a01f-603c95e4cae0" } } ], From 7f4c152d76f0f90dbdf0aae1d612ee99bd42e382 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 27 May 2026 16:08:10 +0000 Subject: [PATCH 3/7] externpro 26.01.1-45-g37c6f25 --- .devcontainer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer b/.devcontainer index e8abe40..37c6f25 160000 --- a/.devcontainer +++ b/.devcontainer @@ -1 +1 @@ -Subproject commit e8abe40160130701a4f60f08e60ee3c035b274c7 +Subproject commit 37c6f25041606bc49737abe4228d316daccd386e From 4a0faf6133a6c9e4cf13d6e5573459ac854b96c0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 27 May 2026 16:08:10 +0000 Subject: [PATCH 4/7] dependency updates --- xprodeps.md | 8 ++++---- xprodeps.svg | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/xprodeps.md b/xprodeps.md index 37d096b..0e03332 100644 --- a/xprodeps.md +++ b/xprodeps.md @@ -2,10 +2,10 @@ |project|license [^_l]|description [dependencies]|version|source|diff [^_d]| |-------|-------------|--------------------------|-------|------|----------| -|[wxinclude](http://wiki.wxwidgets.org/Embedding_PNG_Images)|[wxWindows](http://wiki.wxwidgets.org/Embedding_PNG_Images 'assumed wxWindows license, since source can be downloaded from wxWiki')|embed resources into cross-platform code [pvt deps: _boost_]| | | [intro]| -|[boost](http://www.boost.org/ 'Boost website')|[BSL-1.0](http://www.boost.org/users/license.html 'Boost Software License')|libraries that give C++ a boost [deps: _bzip2, zlib_]|[xpv1.76.0.5](https://github.com/externpro/boost/releases/tag/xpv1.76.0.5 'release')|[repo](https://github.com/externpro/boost 'github.com/externpro/boost') [upstream](https://github.com/boostorg/boost 'github.com/boostorg/boost')|[diff](https://github.com/externpro/boost/compare/boost-1.76.0...xpv1.76.0.5 'github.com/externpro/boost/compare/boost-1.76.0...xpv1.76.0.5') [native]| -|[bzip2](https://sourceware.org/bzip2/)|[bzip2-1.0.6](https://spdx.org/licenses/bzip2-1.0.6.html 'BSD-like, modified zlib license')|lossless block-sorting data compression library|[xpv1.0.8.4](https://github.com/externpro/bzip2/releases/tag/xpv1.0.8.4 'release')|[repo](https://github.com/externpro/bzip2 'github.com/externpro/bzip2') [upstream](https://github.com/opencor/bzip2 'github.com/opencor/bzip2')|[diff](https://github.com/externpro/bzip2/compare/bzip2-1.0.8...xpv1.0.8.4 'github.com/externpro/bzip2/compare/bzip2-1.0.8...xpv1.0.8.4') [intro]| -|[zlib](https://zlib.net 'zlib website')|[permissive](https://zlib.net/zlib_license.html 'zlib/libpng license, see https://en.wikipedia.org/wiki/Zlib_License')|compression library|[xpv1.3.1.4](https://github.com/externpro/zlib/releases/tag/xpv1.3.1.4 'release')|[repo](https://github.com/externpro/zlib 'github.com/externpro/zlib') [upstream](https://github.com/madler/zlib 'github.com/madler/zlib')|[diff](https://github.com/externpro/zlib/compare/v1.3.1...xpv1.3.1.4 'github.com/externpro/zlib/compare/v1.3.1...xpv1.3.1.4') [patch]| +|[wxInclude](http://wiki.wxwidgets.org/Embedding_PNG_Images)|[wxWindows](http://wiki.wxwidgets.org/Embedding_PNG_Images 'assumed wxWindows license, since source can be downloaded from wxWiki')|embed resources into cross-platform code [pvt deps: _boost_]| | | [intro]| +|[boost](http://www.boost.org/ 'Boost website')|[BSL-1.0](http://www.boost.org/users/license.html 'Boost Software License')|libraries that give C++ a boost [deps: _bzip2, zlib_]|[xpv1.91.0.1](https://github.com/externpro/boost/releases/tag/xpv1.91.0.1 'release')|[repo](https://github.com/externpro/boost 'github.com/externpro/boost') [upstream](https://github.com/boostorg/boost 'github.com/boostorg/boost')|[diff](https://github.com/externpro/boost/compare/boost-1.91.0...xpv1.91.0.1 'github.com/externpro/boost/compare/boost-1.91.0...xpv1.91.0.1') [native]| +|[bzip2](https://sourceware.org/bzip2/)|[bzip2-1.0.6](https://spdx.org/licenses/bzip2-1.0.6.html 'BSD-like, modified zlib license')|lossless block-sorting data compression library|[xpv1.0.8.5](https://github.com/externpro/bzip2/releases/tag/xpv1.0.8.5 'release')|[repo](https://github.com/externpro/bzip2 'github.com/externpro/bzip2') [upstream](https://github.com/opencor/bzip2 'github.com/opencor/bzip2')|[diff](https://github.com/externpro/bzip2/compare/bzip2-1.0.8...xpv1.0.8.5 'github.com/externpro/bzip2/compare/bzip2-1.0.8...xpv1.0.8.5') [intro]| +|[zlib](https://zlib.net/ 'zlib website')|[Zlib](https://zlib.net/zlib_license.html 'zlib/libpng license, see https://en.wikipedia.org/wiki/Zlib_License')|a general-purpose lossless data-compression library|[xpv1.3.2.1](https://github.com/externpro/zlib/releases/tag/xpv1.3.2.1 'release')|[repo](https://github.com/externpro/zlib 'github.com/externpro/zlib') [upstream](https://github.com/madler/zlib 'github.com/madler/zlib')|[diff](https://github.com/externpro/zlib/compare/v1.3.2...xpv1.3.2.1 'github.com/externpro/zlib/compare/v1.3.2...xpv1.3.2.1') [patch]| ![deps](xprodeps.svg 'dependencies') diff --git a/xprodeps.svg b/xprodeps.svg index 9e5a390..96d3c3a 100644 --- a/xprodeps.svg +++ b/xprodeps.svg @@ -8,11 +8,11 @@ viewBox="0.00 0.00 134.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> GG - + -wxinclude +wxInclude -wxinclude +wxInclude @@ -20,9 +20,9 @@ boost - + -wxinclude->boost +wxInclude->boost From 3a058c0a7172bf33c2b591128c013793220c2947 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 27 May 2026 16:08:10 +0000 Subject: [PATCH 5/7] update .github/release-tag.json --- .github/release-tag.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .github/release-tag.json diff --git a/.github/release-tag.json b/.github/release-tag.json new file mode 100644 index 0000000..421062e --- /dev/null +++ b/.github/release-tag.json @@ -0,0 +1,4 @@ +{ + "message": "xpro version 1.2.4 tag", + "tag": "xpv1.2.4" +} From 50d61c65a29dd40426b34d97f0823df5ee109dae Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 27 May 2026 16:08:10 +0000 Subject: [PATCH 6/7] externpro 26.01.1-45-g37c6f25 updates --- .github/release-tag.yml | 2 -- .github/workflows/xpbuild.yml | 12 ++++++++---- .github/workflows/xpinit.yml | 12 ++++++++++++ .github/workflows/xprelease.yml | 2 +- .github/workflows/xptag.yml | 4 ++-- CMakePresets.json | 3 ++- 6 files changed, 25 insertions(+), 10 deletions(-) delete mode 100644 .github/release-tag.yml create mode 100644 .github/workflows/xpinit.yml diff --git a/.github/release-tag.yml b/.github/release-tag.yml deleted file mode 100644 index e376104..0000000 --- a/.github/release-tag.yml +++ /dev/null @@ -1,2 +0,0 @@ -tag: xpv1.2.3 -message: "xpro version 1.2.3 tag" diff --git a/.github/workflows/xpbuild.yml b/.github/workflows/xpbuild.yml index 76b2701..846ffc1 100644 --- a/.github/workflows/xpbuild.yml +++ b/.github/workflows/xpbuild.yml @@ -14,11 +14,15 @@ jobs: contents: read pull-requests: write packages: write - uses: externpro/externpro/.github/workflows/build-linux.yml@25.07.6 - secrets: inherit + uses: externpro/externpro/.github/workflows/build-linux.yml@26.01.1 + secrets: + automation_token: ${{ secrets.GHCR_TOKEN }} + with: {} macos: - uses: externpro/externpro/.github/workflows/build-macos.yml@25.07.6 + uses: externpro/externpro/.github/workflows/build-macos.yml@26.01.1 secrets: inherit + with: {} windows: - uses: externpro/externpro/.github/workflows/build-windows.yml@25.07.6 + uses: externpro/externpro/.github/workflows/build-windows.yml@26.01.1 secrets: inherit + with: {} diff --git a/.github/workflows/xpinit.yml b/.github/workflows/xpinit.yml new file mode 100644 index 0000000..4893a2b --- /dev/null +++ b/.github/workflows/xpinit.yml @@ -0,0 +1,12 @@ +name: xpInit externpro +permissions: + contents: write + pull-requests: write + packages: write +on: + workflow_dispatch: +jobs: + init: + uses: externpro/externpro/.github/workflows/init-externpro.yml@main + secrets: + automation_token: ${{ secrets.XPRO_TOKEN }} diff --git a/.github/workflows/xprelease.yml b/.github/workflows/xprelease.yml index a2eb282..ec3022d 100644 --- a/.github/workflows/xprelease.yml +++ b/.github/workflows/xprelease.yml @@ -34,7 +34,7 @@ jobs: # Upload build artifacts as release assets release-from-build: if: github.event_name == 'workflow_dispatch' - uses: externpro/externpro/.github/workflows/release-from-build.yml@25.07.6 + uses: externpro/externpro/.github/workflows/release-from-build.yml@26.01.1 with: workflow_run_url: ${{ github.event.inputs.workflow_run_url }} permissions: diff --git a/.github/workflows/xptag.yml b/.github/workflows/xptag.yml index b5ce950..2946213 100644 --- a/.github/workflows/xptag.yml +++ b/.github/workflows/xptag.yml @@ -8,9 +8,9 @@ on: jobs: tag: if: ${{ github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'xpro' && contains(github.event.pull_request.labels.*.name, 'release:tag') }} - uses: externpro/externpro/.github/workflows/tag-release.yml@25.07.6 + uses: externpro/externpro/.github/workflows/tag-release.yml@26.01.1 with: merge_sha: ${{ github.event.pull_request.merge_commit_sha }} pr_number: ${{ github.event.pull_request.number }} secrets: - workflow_write_token: ${{ secrets.XPUPDATE_TOKEN }} + automation_token: ${{ secrets.XPRO_TOKEN }} diff --git a/CMakePresets.json b/CMakePresets.json index f82cfdd..28efa39 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -3,6 +3,7 @@ "include": [ ".devcontainer/cmake/presets/xpLinuxNinja.json", ".devcontainer/cmake/presets/xpDarwinNinja.json", - ".devcontainer/cmake/presets/xpWindowsVs2022.json" + ".devcontainer/cmake/presets/xpMswVs2022.json", + ".devcontainer/cmake/presets/xpMswVs2026.json" ] } From b48084b26f34ba26c176a8d923443ffb3ba17e26 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Wed, 27 May 2026 10:48:47 -0600 Subject: [PATCH 7/7] fix: add explicit Boost::chrono dependency to resolve Windows linker error Add Boost::chrono to target_link_libraries to fix LNK1104 error on Windows CI: 'cannot open file libboost_chrono-vc145-mt-sgd-x64-1_91.lib' Boost::timer internally depends on Boost::chrono, but this dependency isn't automatically expressed in Boost's CMake configuration on Windows. Explicitly linking Boost::chrono resolves the missing library error. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ce918ca..42eb8c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 4.3) project(wxInclude) find_package(Boost) add_executable(${PROJECT_NAME} wxInclude.cpp) -target_link_libraries(${PROJECT_NAME} PRIVATE Boost::filesystem Boost::program_options Boost::timer) +target_link_libraries(${PROJECT_NAME} PRIVATE Boost::chrono Boost::filesystem Boost::program_options Boost::timer) set(targetsFile ${PROJECT_NAME}-targets) if(COMMAND xpExternPackage) xpExternPackage(TARGETS_FILE ${targetsFile}