From 33f0c2ab737a6ddc04b438104009ef1ca51c10f2 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 16 Dec 2025 15:40:12 -0700 Subject: [PATCH 1/8] git submodule add https://github.com/externpro/externpro .devcontainer --- .devcontainer | 1 + .gitmodules | 3 +++ 2 files changed, 4 insertions(+) create mode 160000 .devcontainer create mode 100644 .gitmodules diff --git a/.devcontainer b/.devcontainer new file mode 160000 index 0000000..92bdede --- /dev/null +++ b/.devcontainer @@ -0,0 +1 @@ +Subproject commit 92bdede51d8073f85b4cb83da24a01f267ce0059 diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..18932ab --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule ".devcontainer"] + path = .devcontainer + url = https://github.com/externpro/externpro From 38aee3530630ae7d978cf3f5725b8f7cd6dc1bed Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 16 Dec 2025 15:42:09 -0700 Subject: [PATCH 2/8] docker-compose links --- docker-compose.sh | 1 + docker-compose.yml | 1 + 2 files changed, 2 insertions(+) create mode 120000 docker-compose.sh create mode 120000 docker-compose.yml diff --git a/docker-compose.sh b/docker-compose.sh new file mode 120000 index 0000000..85f182f --- /dev/null +++ b/docker-compose.sh @@ -0,0 +1 @@ +.devcontainer/compose.pro.sh \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 120000 index 0000000..46c1f89 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1 @@ +.devcontainer/compose.bld.yml \ No newline at end of file From 258f27045deeae5570a0aefbb832428e63e86727 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 16 Dec 2025 15:42:45 -0700 Subject: [PATCH 3/8] add CMakePresets cp .devcontainer/cmake/presets/CMakePresets* . --- CMakePresets.json | 8 ++++++++ CMakePresetsBase.json | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 CMakePresets.json create mode 100644 CMakePresetsBase.json diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000..f82cfdd --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,8 @@ +{ + "version": 8, + "include": [ + ".devcontainer/cmake/presets/xpLinuxNinja.json", + ".devcontainer/cmake/presets/xpDarwinNinja.json", + ".devcontainer/cmake/presets/xpWindowsVs2022.json" + ] +} diff --git a/CMakePresetsBase.json b/CMakePresetsBase.json new file mode 100644 index 0000000..085cdc3 --- /dev/null +++ b/CMakePresetsBase.json @@ -0,0 +1,16 @@ +{ + "version": 8, + "configurePresets": [ + { + "name": "config-base", + "hidden": true, + "binaryDir": "${sourceDir}/_bld-${presetName}" + } + ], + "buildPresets": [ + { + "name": "build-base", + "hidden": true + } + ] +} From 22612e080c6f5eae3df9337201cd011f94ab2257 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 16 Dec 2025 15:43:48 -0700 Subject: [PATCH 4/8] gitignore: externpro ignores --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4ec8e4d --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# externpro +.env +_bld*/ +docker-compose.override.yml From e30f7f51cdcc1fef8d8e6cb8774dc8ef5262edd8 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 16 Dec 2025 15:47:08 -0700 Subject: [PATCH 5/8] workflows: externpro @25.06.3 cp .devcontainer/.github/wf-templates/xp*.yml .github/workflows --- .github/workflows/xpbuild.yml | 30 ++++++++++++++++++++++++++++++ .github/workflows/xprelease.yml | 20 ++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 .github/workflows/xpbuild.yml create mode 100644 .github/workflows/xprelease.yml diff --git a/.github/workflows/xpbuild.yml b/.github/workflows/xpbuild.yml new file mode 100644 index 0000000..8fded48 --- /dev/null +++ b/.github/workflows/xpbuild.yml @@ -0,0 +1,30 @@ +name: Build +permissions: + contents: read + pull-requests: write +on: + push: + branches: [ "dev" ] + pull_request: + branches: [ "dev" ] + workflow_dispatch: +jobs: + linux: + permissions: + contents: read + pull-requests: write + packages: write + uses: externpro/externpro/.github/workflows/build-linux.yml@25.06.3 + with: + cmake-workflow-preset: Linux + secrets: inherit + macos: + uses: externpro/externpro/.github/workflows/build-macos.yml@25.06.3 + with: + cmake-workflow-preset: Darwin + secrets: inherit + windows: + uses: externpro/externpro/.github/workflows/build-windows.yml@25.06.3 + with: + cmake-workflow-preset: Windows + secrets: inherit diff --git a/.github/workflows/xprelease.yml b/.github/workflows/xprelease.yml new file mode 100644 index 0000000..12c1a44 --- /dev/null +++ b/.github/workflows/xprelease.yml @@ -0,0 +1,20 @@ +name: Release +on: + workflow_dispatch: + inputs: + workflow_run_url: + description: 'URL of the workflow run containing artifacts to upload (e.g., https://github.com/owner/repo/actions/runs/123456789)' + required: true + type: string +jobs: + # Upload build artifacts as release assets + release-from-build: + uses: externpro/externpro/.github/workflows/release-from-build.yml@25.06.3 + with: + workflow_run_url: ${{ github.event.inputs.workflow_run_url }} + artifact_pattern: "*.tar.xz" + permissions: + contents: write + id-token: write + attestations: write + secrets: inherit From 5b32b0b9d940c58fd9c340f5e2e765b01d328923 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 16 Dec 2025 16:33:50 -0700 Subject: [PATCH 6/8] CMakePresets: Linux only (xpLinuxNinja) --- CMakePresets.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index f82cfdd..621cce6 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -1,8 +1,6 @@ { "version": 8, "include": [ - ".devcontainer/cmake/presets/xpLinuxNinja.json", - ".devcontainer/cmake/presets/xpDarwinNinja.json", - ".devcontainer/cmake/presets/xpWindowsVs2022.json" + ".devcontainer/cmake/presets/xpLinuxNinja.json" ] } From 1e3eeaa6c6e45e5fae406cb8b3e784b808becdd3 Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 16 Dec 2025 16:35:35 -0700 Subject: [PATCH 7/8] workflows: Linux only .rpm artifact * artifact-pattern: .rpm * cmake-workflow-preset: LinuxRelease * buildpro-images: rocky9-gcc13 * only need to build one configuration (Release), platform (rocky9-gcc13) to repackage .tar.gz as an .rpm --- .github/workflows/xpbuild.yml | 17 +++-------------- .github/workflows/xprelease.yml | 2 +- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/.github/workflows/xpbuild.yml b/.github/workflows/xpbuild.yml index 8fded48..0a88aa8 100644 --- a/.github/workflows/xpbuild.yml +++ b/.github/workflows/xpbuild.yml @@ -1,7 +1,4 @@ name: Build -permissions: - contents: read - pull-requests: write on: push: branches: [ "dev" ] @@ -16,15 +13,7 @@ jobs: packages: write uses: externpro/externpro/.github/workflows/build-linux.yml@25.06.3 with: - cmake-workflow-preset: Linux - secrets: inherit - macos: - uses: externpro/externpro/.github/workflows/build-macos.yml@25.06.3 - with: - cmake-workflow-preset: Darwin - secrets: inherit - windows: - uses: externpro/externpro/.github/workflows/build-windows.yml@25.06.3 - with: - cmake-workflow-preset: Windows + artifact-pattern: "${{ github.event.repository.name }}-*.rpm" + cmake-workflow-preset: LinuxRelease + buildpro-images: '["rocky9-gcc13"]' secrets: inherit diff --git a/.github/workflows/xprelease.yml b/.github/workflows/xprelease.yml index 12c1a44..3fa36f6 100644 --- a/.github/workflows/xprelease.yml +++ b/.github/workflows/xprelease.yml @@ -12,7 +12,7 @@ jobs: uses: externpro/externpro/.github/workflows/release-from-build.yml@25.06.3 with: workflow_run_url: ${{ github.event.inputs.workflow_run_url }} - artifact_pattern: "*.tar.xz" + artifact_pattern: "*.rpm" permissions: contents: write id-token: write From fc2a86e4f9dfa2473b17bd7e4234c212b75b6a2c Mon Sep 17 00:00:00 2001 From: Scott M Anderson Date: Tue, 16 Dec 2025 16:38:36 -0700 Subject: [PATCH 8/8] cmake 3.31.6 repackage .tar.gz as .rpm --- CMakeLists.txt | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..0b0ea6e --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,30 @@ +cmake_minimum_required(VERSION 3.31) +set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build configuration") +set(CMAKE_PROJECT_TOP_LEVEL_INCLUDES .devcontainer/cmake/xproinc.cmake) +project(cmake-pkg VERSION 3.31.6 LANGUAGES CXX) +# https://github.com/Kitware/CMake/releases/tag/v3.31.6 +# https://github.com/Kitware/CMake/releases/download/v3.31.6/cmake-3.31.6-linux-x86_64.tar.gz +# https://github.com/Kitware/CMake/releases/download/v3.31.6/cmake-3.31.6-linux-aarch64.tar.gz +set(sha_aarch64 b4cc788d63112b2749b40627e719eb5d3b8ed8f00c36d77189f4019cfe64bc9e) +set(sha_x86_64 5a1133ff103c71eb5120e2cc3de922733e7d8a26a98ae716397e8676adb367bf) +set(REPO https://github.com/Kitware/CMake) +string(TOLOWER ${CMAKE_SYSTEM_NAME} os) +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|amd64|AMD64)$") + set(arch "x86_64") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64|ARM64)$") + set(arch "aarch64") +endif() +set(url ${REPO}/releases/download/v${PROJECT_VERSION}/cmake-${PROJECT_VERSION}-${os}-${arch}.tar.gz) +set(opt DOWNLOAD_EXTRACT_TIMESTAMP true) +include(FetchContent) +FetchContent_Declare(cmake ${opt} URL ${url} URL_HASH SHA256=${sha_${arch}}) +FetchContent_MakeAvailable(cmake) +install(DIRECTORY ${cmake_SOURCE_DIR}/ DESTINATION . USE_SOURCE_PERMISSIONS) +set(CPACK_GENERATOR RPM) +set(CPACK_RPM_PACKAGE_ARCHITECTURE ${arch}) +# https://github.com/externpro/externpro/issues/53 +set(CPACK_RPM_SPEC_MORE_DEFINE "%define _build_id_links none") +set(CPACK_PACKAGING_INSTALL_PREFIX "/usr/local") +set(CPACK_PACKAGE_VERSION v${PROJECT_VERSION}) +set(CPACK_SYSTEM_NAME ${os}-${arch}) +include(CPack)