From 9bbec84fe1debdae0c74fc8d0d61a1574efa3a92 Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Sat, 31 Jan 2026 16:55:00 -0700 Subject: [PATCH 01/13] Update vcpkg baseline to latest. --- vcpkg.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vcpkg.json b/vcpkg.json index 1108693f..2f8f32c2 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -40,7 +40,7 @@ } ] }, - "server":{ + "server": { "description": "Provide the server binary", "dependencies": [ { @@ -63,7 +63,7 @@ "nlohmann-json" ] }, - "tests":{ + "tests": { "description": "Enable building the tests", "dependencies": [ "catch2", @@ -79,7 +79,7 @@ } ] }, - "tools":{ + "tools": { "description": "Enable building the tools", "dependencies": [ { @@ -99,5 +99,5 @@ "tests", "tools" ], - "builtin-baseline": "9224b3bbd8df24999d85720b1d005dd6f969ade0" -} \ No newline at end of file + "builtin-baseline": "6d7bf7ef2193e2d1c5798a5ff8811d533104c861" +} From 31bdd290fa36bfcfc5e319d9af3166fb09d13a9c Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Sat, 31 Jan 2026 16:57:58 -0700 Subject: [PATCH 02/13] Move vcpkg configuration to separate file. --- vcpkg | 2 +- vcpkg-configuration.json | 6 ++++++ vcpkg.json | 7 +------ 3 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 vcpkg-configuration.json diff --git a/vcpkg b/vcpkg index 9224b3bb..76a382b7 160000 --- a/vcpkg +++ b/vcpkg @@ -1 +1 @@ -Subproject commit 9224b3bbd8df24999d85720b1d005dd6f969ade0 +Subproject commit 76a382b7b8ce7ed30bbf976aa9aecae868594d5e diff --git a/vcpkg-configuration.json b/vcpkg-configuration.json new file mode 100644 index 00000000..3ecb54e8 --- /dev/null +++ b/vcpkg-configuration.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg-configuration.schema.json", + "overlay-ports": [ + "packaging/vcpkg/ports/abseil" + ] +} diff --git a/vcpkg.json b/vcpkg.json index 2f8f32c2..541b09c1 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -18,11 +18,6 @@ "version": "2.3.1" } ], - "vcpkg-configuration": { - "overlay-ports": [ - "packaging/vcpkg/ports/abseil" - ] - }, "features": { "api": { "description": "Provide the API protocol buffers + gRPC .proto source files" @@ -99,5 +94,5 @@ "tests", "tools" ], - "builtin-baseline": "6d7bf7ef2193e2d1c5798a5ff8811d533104c861" + "builtin-baseline": "76a382b7b8ce7ed30bbf976aa9aecae868594d5e" } From 4c95951351b8f25da21e1b2b4b8ac70c21352589 Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Sat, 31 Jan 2026 18:37:26 -0700 Subject: [PATCH 03/13] Force use of system binaries for vcpkg. --- .github/actions/build-with-host/action.yml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/actions/build-with-host/action.yml b/.github/actions/build-with-host/action.yml index aa3065bf..f42b7250 100644 --- a/.github/actions/build-with-host/action.yml +++ b/.github/actions/build-with-host/action.yml @@ -1,4 +1,4 @@ - + name: 'build-on-host' description: 'Build the repository on the runner host system' inputs: @@ -33,13 +33,14 @@ inputs: runs: using: 'composite' steps: - - name: Configure vcpkg to use Github Actions Cache + - name: Configure vcpkg to use Github Actions Cache uses: actions/github-script@v7 with: script: | core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite'); + core.exportVariable('VCPKG_FORCE_SYSTEM_BINARIES', '1'); - name: Install Linux build dependencies if: ${{ inputs.os == 'linux' }} @@ -48,7 +49,7 @@ runs: sudo -E apt-get update sudo -E apt-get upgrade # Install core build dependencies - sudo -E apt-get install -qq --no-install-recommends autoconf automake autopoint build-essential ca-certificates cmake curl git gnupg libltdl-dev libmount-dev libtool linux-libc-dev libstdc++-14-dev ninja-build pkg-config python3-jinja2 tar unzip zip + sudo -E apt-get install -qq --no-install-recommends autoconf automake autopoint build-essential ca-certificates cmake curl git gnupg libltdl-dev libmount-dev libtool linux-libc-dev libstdc++-14-dev ninja-build pkg-config python3-jinja2 tar unzip zip # Install LLVM 18 toolchain sudo -E apt-get install -qq --no-install-recommends libllvm-18-ocaml-dev libllvm18 llvm-18 llvm-18-dev llvm-18-doc llvm-18-examples llvm-18-runtime clang-18 clang-tools-18 clang-18-doc libclang-common-18-dev libclang-18-dev libclang1-18 clang-format-18 python3-clang-18 clangd-18 clang-tidy-18 libclang-rt-18-dev libpolly-18-dev libfuzzer-18-dev lldb-18 libc++-18-dev libc++abi-18-dev libomp-18-dev libclc-18-dev libunwind-18-dev libmlir-18-dev mlir-18-tools libbolt-18-dev bolt-18 flang-18 libclang-rt-18-dev-wasm32 libclang-rt-18-dev-wasm64 libc++-18-dev-wasm32 libc++abi-18-dev-wasm32 libclang-rt-18-dev-wasm32 libclang-rt-18-dev-wasm64 libllvmlibc-18-dev # Install hostapd dependencies @@ -60,6 +61,16 @@ runs: run: cmake --preset ${{ inputs.preset-name }}-${{ inputs.os }} --fresh -DCMAKE_BUILD_TYPE=${{ inputs.build-type }} shell: pwsh + - name: Upload vcpkg logs on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: vcpkg-logs-${{ runner.os }}-${{ inputs.build-type }} + path: | + ${{ github.workspace }}-cmake/build/${{ inputs.preset-name }}-${{ inputs.os }}/vcpkg-manifest-install.log + ${{ github.workspace }}/vcpkg/buildtrees/**/*.log + if-no-files-found: ignore + - name: CMake Configure Cross-Compile ${{ inputs.arch }} if: ${{ inputs.arch }} run: cmake --preset ${{ inputs.preset-name }}-${{ inputs.os }} --fresh -DCMAKE_BUILD_TYPE=${{ inputs.build-type }} -DNETREMOTE_EXCLUDE_TESTS=TRUE -A ${{ inputs.arch }} From 53c3a675470c52283803354b9b46ebfbfea9f448 Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Mon, 2 Feb 2026 10:39:44 -0700 Subject: [PATCH 04/13] Re-jig to use old vcpkg baseline. --- vcpkg | 2 +- vcpkg.json | 54 +++++++++++++++++++++++++++--------------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/vcpkg b/vcpkg index 76a382b7..9224b3bb 160000 --- a/vcpkg +++ b/vcpkg @@ -1 +1 @@ -Subproject commit 76a382b7b8ce7ed30bbf976aa9aecae868594d5e +Subproject commit 9224b3bbd8df24999d85720b1d005dd6f969ade0 diff --git a/vcpkg.json b/vcpkg.json index 541b09c1..7f0c306a 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -2,6 +2,7 @@ "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", "name": "netremote", "version-string": "0.5.2", + "builtin-baseline": "9224b3bbd8df24999d85720b1d005dd6f969ade0", "dependencies": [ { "name": "vcpkg-cmake", @@ -12,11 +13,12 @@ "host": true } ], - "overrides": [ - { - "name": "cli11", - "version": "2.3.1" - } + "default-features": [ + "api", + "api-bindings", + "server", + "tests", + "tools" ], "features": { "api": { @@ -26,36 +28,36 @@ "description": "Provide the API protocol buffers + gRPC library bindings", "dependencies": [ "grpc", - "protobuf", { "name": "netremote", "features": [ "api" ] - } + }, + "protobuf" ] }, "server": { "description": "Provide the server binary", "dependencies": [ + "cli11", + { + "name": "libsystemd", + "platform": "linux" + }, + "magic-enum", { "name": "netremote", "features": [ "api-bindings" ] }, + "nlohmann-json", + "plog", { "name": "sdbus-cpp", "platform": "linux" - }, - { - "name": "libsystemd", - "platform": "linux" - }, - "cli11", - "magic-enum", - "plog", - "nlohmann-json" + } ] }, "tests": { @@ -63,15 +65,15 @@ "dependencies": [ "catch2", "magic-enum", - "nlohmann-json", - "plog", { "name": "netremote", "features": [ "api-bindings", "server" ] - } + }, + "nlohmann-json", + "plog" ] }, "tools": { @@ -87,12 +89,10 @@ ] } }, - "default-features": [ - "api", - "api-bindings", - "server", - "tests", - "tools" - ], - "builtin-baseline": "76a382b7b8ce7ed30bbf976aa9aecae868594d5e" + "overrides": [ + { + "name": "cli11", + "version": "2.3.1" + } + ] } From 38dc1c2f57a54803258706bd7b9ab27282f6fdce Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Mon, 2 Feb 2026 10:48:48 -0700 Subject: [PATCH 05/13] Remove self-referential dependencies from vcpkg manifest. --- vcpkg | 2 +- vcpkg.json | 51 ++++++++++++++++++++++++++------------------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/vcpkg b/vcpkg index 9224b3bb..58831996 160000 --- a/vcpkg +++ b/vcpkg @@ -1 +1 @@ -Subproject commit 9224b3bbd8df24999d85720b1d005dd6f969ade0 +Subproject commit 588319964489874699b378e3a94b4285126e112e diff --git a/vcpkg.json b/vcpkg.json index 7f0c306a..5a2b8216 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -2,7 +2,7 @@ "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", "name": "netremote", "version-string": "0.5.2", - "builtin-baseline": "9224b3bbd8df24999d85720b1d005dd6f969ade0", + "builtin-baseline": "588319964489874699b378e3a94b4285126e112e", "dependencies": [ { "name": "vcpkg-cmake", @@ -28,12 +28,6 @@ "description": "Provide the API protocol buffers + gRPC library bindings", "dependencies": [ "grpc", - { - "name": "netremote", - "features": [ - "api" - ] - }, "protobuf" ] }, @@ -41,19 +35,15 @@ "description": "Provide the server binary", "dependencies": [ "cli11", + "grpc", { "name": "libsystemd", "platform": "linux" }, "magic-enum", - { - "name": "netremote", - "features": [ - "api-bindings" - ] - }, "nlohmann-json", "plog", + "protobuf", { "name": "sdbus-cpp", "platform": "linux" @@ -64,27 +54,38 @@ "description": "Enable building the tests", "dependencies": [ "catch2", - "magic-enum", + "cli11", + "grpc", { - "name": "netremote", - "features": [ - "api-bindings", - "server" - ] + "name": "libsystemd", + "platform": "linux" }, + "magic-enum", "nlohmann-json", - "plog" + "plog", + "protobuf", + { + "name": "sdbus-cpp", + "platform": "linux" + } ] }, "tools": { "description": "Enable building the tools", "dependencies": [ + "cli11", + "grpc", { - "name": "netremote", - "features": [ - "api-bindings", - "server" - ] + "name": "libsystemd", + "platform": "linux" + }, + "magic-enum", + "nlohmann-json", + "plog", + "protobuf", + { + "name": "sdbus-cpp", + "platform": "linux" } ] } From 269d94cce7670204defb6e21c7b6fd4e62d77c71 Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Mon, 2 Feb 2026 10:59:57 -0700 Subject: [PATCH 06/13] Remove abseil overlay port and vcpkg-configuration.json file (no longer needed). --- ...-absl_cc_library-target-as-test-only.patch | 24 -------- packaging/vcpkg/ports/abseil/portfile.cmake | 60 ------------------- packaging/vcpkg/ports/abseil/vcpkg.json | 27 --------- vcpkg-configuration.json | 6 -- 4 files changed, 117 deletions(-) delete mode 100644 packaging/vcpkg/ports/abseil/0001-Mark-absl_cc_library-target-as-test-only.patch delete mode 100644 packaging/vcpkg/ports/abseil/portfile.cmake delete mode 100644 packaging/vcpkg/ports/abseil/vcpkg.json delete mode 100644 vcpkg-configuration.json diff --git a/packaging/vcpkg/ports/abseil/0001-Mark-absl_cc_library-target-as-test-only.patch b/packaging/vcpkg/ports/abseil/0001-Mark-absl_cc_library-target-as-test-only.patch deleted file mode 100644 index 23e3e4dc..00000000 --- a/packaging/vcpkg/ports/abseil/0001-Mark-absl_cc_library-target-as-test-only.patch +++ /dev/null @@ -1,24 +0,0 @@ -From ccb2f752f6ba4f90eda8931de78c9d8535286602 Mon Sep 17 00:00:00 2001 -From: Andrew Beltrano -Date: Tue, 16 Jul 2024 13:36:58 -0600 -Subject: [PATCH 1/1] Mark absl_cc_library target as test-only. - ---- - absl/container/CMakeLists.txt | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/absl/container/CMakeLists.txt b/absl/container/CMakeLists.txt -index 128cc0e9..11d65d55 100644 ---- a/absl/container/CMakeLists.txt -+++ b/absl/container/CMakeLists.txt -@@ -213,6 +213,7 @@ absl_cc_library( - DEPS - absl::config - GTest::gmock -+ TESTONLY - ) - - absl_cc_test( --- -2.43.0 - diff --git a/packaging/vcpkg/ports/abseil/portfile.cmake b/packaging/vcpkg/ports/abseil/portfile.cmake deleted file mode 100644 index cd5c007e..00000000 --- a/packaging/vcpkg/ports/abseil/portfile.cmake +++ /dev/null @@ -1,60 +0,0 @@ -if (NOT VCPKG_TARGET_IS_WINDOWS) - vcpkg_check_linkage(ONLY_STATIC_LIBRARY) -endif() - -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO abseil/abseil-cpp - REF "${VERSION}" - SHA512 41504899ac4fd4a6eaa0a5fdf27a7765ec81962fb99b6a07982ceed32c5289e9eb12206c83a70fd44c5c3e1b96c2bfa160eb12f1dbbb45f1109d632c7690de90 - HEAD_REF master - PATCHES - 0001-Mark-absl_cc_library-target-as-test-only.patch -) - -vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS - FEATURES - cxx17 ABSL_USE_CXX17 -) - -# With ABSL_PROPAGATE_CXX_STD=ON abseil automatically detect if it is being -# compiled with C++14 or C++17, and modifies the installed `absl/base/options.h` -# header accordingly. This works even if CMAKE_CXX_STANDARD is not set. Abseil -# uses the compiler default behavior to update `absl/base/options.h` as needed. -if (ABSL_USE_CXX17) - set(ABSL_USE_CXX17_OPTION "-DCMAKE_CXX_STANDARD=17") -endif () - -vcpkg_cmake_configure( - SOURCE_PATH "${SOURCE_PATH}" - DISABLE_PARALLEL_CONFIGURE - OPTIONS - -DABSL_PROPAGATE_CXX_STD=ON - ${ABSL_USE_CXX17_OPTION} -) - -vcpkg_cmake_install() -vcpkg_cmake_config_fixup(PACKAGE_NAME absl CONFIG_PATH lib/cmake/absl) -vcpkg_fixup_pkgconfig() - -vcpkg_copy_pdbs() -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share" - "${CURRENT_PACKAGES_DIR}/debug/include" - "${CURRENT_PACKAGES_DIR}/include/absl/copts" - "${CURRENT_PACKAGES_DIR}/include/absl/strings/testdata" - "${CURRENT_PACKAGES_DIR}/include/absl/time/internal/cctz/testdata" -) - -if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") - file(GLOB_RECURSE headers "${CURRENT_PACKAGES_DIR}/include/absl/*.h") - foreach(header IN LISTS ${headers}) - vcpkg_replace_string("${header}" - "!defined(ABSL_CONSUME_DLL)" "0" - ) - vcpkg_replace_string("${header}" - "defined(ABSL_CONSUME_DLL)" "1" - ) - endforeach() -endif() - -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/packaging/vcpkg/ports/abseil/vcpkg.json b/packaging/vcpkg/ports/abseil/vcpkg.json deleted file mode 100644 index 2749d4f1..00000000 --- a/packaging/vcpkg/ports/abseil/vcpkg.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "abseil", - "version": "20240116.1", - "port-version": 1, - "description": [ - "Abseil is an open-source collection of C++ library code designed to augment the C++ standard library. The Abseil library code is collected from Google's own C++ code base, has been extensively tested and used in production, and is the same code we depend on in our daily coding lives.", - "In some cases, Abseil provides pieces missing from the C++ standard; in others, Abseil provides alternatives to the standard for special needs we've found through usage in the Google code base. We denote those cases clearly within the library code we provide you.", - "Abseil is not meant to be a competitor to the standard library; we've just found that many of these utilities serve a purpose within our code base, and we now want to provide those resources to the C++ community as a whole." - ], - "homepage": "https://github.com/abseil/abseil-cpp", - "license": "Apache-2.0", - "dependencies": [ - { - "name": "vcpkg-cmake", - "host": true - }, - { - "name": "vcpkg-cmake-config", - "host": true - } - ], - "features": { - "cxx17": { - "description": "Enable compiler C++17." - } - } -} diff --git a/vcpkg-configuration.json b/vcpkg-configuration.json deleted file mode 100644 index 3ecb54e8..00000000 --- a/vcpkg-configuration.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg-configuration.schema.json", - "overlay-ports": [ - "packaging/vcpkg/ports/abseil" - ] -} From c560e3c57ee946a5899dae92adc0df6fd908b505 Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Mon, 2 Feb 2026 11:00:41 -0700 Subject: [PATCH 07/13] Remove earlier vcpkg debugging settings. --- .github/actions/build-with-host/action.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/actions/build-with-host/action.yml b/.github/actions/build-with-host/action.yml index f42b7250..0ae4e4f0 100644 --- a/.github/actions/build-with-host/action.yml +++ b/.github/actions/build-with-host/action.yml @@ -40,7 +40,6 @@ runs: core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite'); - core.exportVariable('VCPKG_FORCE_SYSTEM_BINARIES', '1'); - name: Install Linux build dependencies if: ${{ inputs.os == 'linux' }} From 93435d4fb111a280b8859ebdcf9c8277eb3c46bc Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Mon, 2 Feb 2026 12:28:16 -0700 Subject: [PATCH 08/13] Replace deprecated x-gha vcpkg config with nuget (github pkgs). --- .github/actions/build-with-host/action.yml | 50 +++++++++++++++++----- .github/workflows/build.yml | 5 ++- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/.github/actions/build-with-host/action.yml b/.github/actions/build-with-host/action.yml index 0ae4e4f0..fa9c74bb 100644 --- a/.github/actions/build-with-host/action.yml +++ b/.github/actions/build-with-host/action.yml @@ -29,32 +29,62 @@ inputs: required: false default: 'dev' description: 'The name of the preset to use for all CMake operations (configure, build, test, install, package)' + github-token: + required: true + description: 'GitHub token for NuGet package authentication (use secrets.GITHUB_TOKEN)' runs: using: 'composite' steps: - - name: Configure vcpkg to use Github Actions Cache - uses: actions/github-script@v7 - with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite'); - - name: Install Linux build dependencies if: ${{ inputs.os == 'linux' }} run: | export DEBIAN_FRONTEND=noninteractive sudo -E apt-get update sudo -E apt-get upgrade - # Install core build dependencies - sudo -E apt-get install -qq --no-install-recommends autoconf automake autopoint build-essential ca-certificates cmake curl git gnupg libltdl-dev libmount-dev libtool linux-libc-dev libstdc++-14-dev ninja-build pkg-config python3-jinja2 tar unzip zip + # Install core build dependencies (including mono for NuGet) + sudo -E apt-get install -qq --no-install-recommends autoconf automake autopoint build-essential ca-certificates cmake curl git gnupg libltdl-dev libmount-dev libtool linux-libc-dev libstdc++-14-dev mono-complete ninja-build pkg-config python3-jinja2 tar unzip zip # Install LLVM 18 toolchain sudo -E apt-get install -qq --no-install-recommends libllvm-18-ocaml-dev libllvm18 llvm-18 llvm-18-dev llvm-18-doc llvm-18-examples llvm-18-runtime clang-18 clang-tools-18 clang-18-doc libclang-common-18-dev libclang-18-dev libclang1-18 clang-format-18 python3-clang-18 clangd-18 clang-tidy-18 libclang-rt-18-dev libpolly-18-dev libfuzzer-18-dev lldb-18 libc++-18-dev libc++abi-18-dev libomp-18-dev libclc-18-dev libunwind-18-dev libmlir-18-dev mlir-18-tools libbolt-18-dev bolt-18 flang-18 libclang-rt-18-dev-wasm32 libclang-rt-18-dev-wasm64 libc++-18-dev-wasm32 libc++abi-18-dev-wasm32 libclang-rt-18-dev-wasm32 libclang-rt-18-dev-wasm64 libllvmlibc-18-dev # Install hostapd dependencies sudo -E apt-get install -qq --no-install-recommends libnl-3-200-dbg libnl-3-dev libssl-dev libnl-genl-3-dev libdbus-c++-dev libnl-route-3-dev shell: bash + - name: Bootstrap vcpkg + shell: pwsh + run: | + if ($IsWindows) { + & "${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat" -disableMetrics + } else { + & "${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh" -disableMetrics + } + + - name: Configure vcpkg binary caching with GitHub Packages (Windows) + if: runner.os == 'Windows' + shell: pwsh + env: + GITHUB_TOKEN: ${{ inputs.github-token }} + run: | + $nuget = & "${{ github.workspace }}/vcpkg/vcpkg" fetch nuget | Select-Object -Last 1 + & $nuget sources add -Source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" -StorePasswordInClearText -Name "GitHubPackages" -UserName "${{ github.repository_owner }}" -Password "$env:GITHUB_TOKEN" -NonInteractive 2>$null + & $nuget setapikey "$env:GITHUB_TOKEN" -Source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" -NonInteractive + + - name: Configure vcpkg binary caching with GitHub Packages (Linux/macOS) + if: runner.os != 'Windows' + shell: bash + env: + GITHUB_TOKEN: ${{ inputs.github-token }} + run: | + nuget=$("${{ github.workspace }}/vcpkg/vcpkg" fetch nuget | tail -n 1) + mono "$nuget" sources add -Source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" -StorePasswordInClearText -Name "GitHubPackages" -UserName "${{ github.repository_owner }}" -Password "$GITHUB_TOKEN" -NonInteractive 2>/dev/null || true + mono "$nuget" setapikey "$GITHUB_TOKEN" -Source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" -NonInteractive + + - name: Set vcpkg environment variables + uses: actions/github-script@v7 + with: + script: | + core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;nuget,https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json,readwrite'); + - name: CMake Configure if: ${{ ! inputs.arch }} run: cmake --preset ${{ inputs.preset-name }}-${{ inputs.os }} --fresh -DCMAKE_BUILD_TYPE=${{ inputs.build-type }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c9cdca48..5158b14d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -96,6 +96,7 @@ jobs: contents: read actions: read security-events: write + packages: write strategy: fail-fast: false matrix: @@ -105,7 +106,7 @@ jobs: - { os: ubuntu-24.04, os-name: 'linux' } build-type: ${{ fromJson(inputs.build-types) }} runs-on: ${{ matrix.config.os }} - + steps: - name: Checkout repository uses: actions/checkout@v4 @@ -127,6 +128,7 @@ jobs: package: ${{ inputs.package }} publish-artifacts: ${{ inputs.publish-artifacts }} preset-name: ${{ inputs.preset-name }} + github-token: ${{ secrets.GITHUB_TOKEN }} - name: 'Build Linux 🐧' if: ${{ contains(matrix.config.os-name, 'linux') }} @@ -139,6 +141,7 @@ jobs: package: ${{ inputs.package }} publish-artifacts: ${{ inputs.publish-artifacts }} preset-name: ${{ inputs.preset-name }} + github-token: ${{ secrets.GITHUB_TOKEN }} - name: Perform CodeQL Analysis if: inputs.analyze-codeql == true From 1302b57567840563d88fde22bbf3aabed7b02306 Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Mon, 2 Feb 2026 12:30:11 -0700 Subject: [PATCH 09/13] Use dotnet tool directly instead of nuget.exe. --- .github/actions/build-with-host/action.yml | 25 +++++++--------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/.github/actions/build-with-host/action.yml b/.github/actions/build-with-host/action.yml index fa9c74bb..899193d8 100644 --- a/.github/actions/build-with-host/action.yml +++ b/.github/actions/build-with-host/action.yml @@ -42,8 +42,8 @@ runs: export DEBIAN_FRONTEND=noninteractive sudo -E apt-get update sudo -E apt-get upgrade - # Install core build dependencies (including mono for NuGet) - sudo -E apt-get install -qq --no-install-recommends autoconf automake autopoint build-essential ca-certificates cmake curl git gnupg libltdl-dev libmount-dev libtool linux-libc-dev libstdc++-14-dev mono-complete ninja-build pkg-config python3-jinja2 tar unzip zip + # Install core build dependencies + sudo -E apt-get install -qq --no-install-recommends autoconf automake autopoint build-essential ca-certificates cmake curl git gnupg libltdl-dev libmount-dev libtool linux-libc-dev libstdc++-14-dev ninja-build pkg-config python3-jinja2 tar unzip zip # Install LLVM 18 toolchain sudo -E apt-get install -qq --no-install-recommends libllvm-18-ocaml-dev libllvm18 llvm-18 llvm-18-dev llvm-18-doc llvm-18-examples llvm-18-runtime clang-18 clang-tools-18 clang-18-doc libclang-common-18-dev libclang-18-dev libclang1-18 clang-format-18 python3-clang-18 clangd-18 clang-tidy-18 libclang-rt-18-dev libpolly-18-dev libfuzzer-18-dev lldb-18 libc++-18-dev libc++abi-18-dev libomp-18-dev libclc-18-dev libunwind-18-dev libmlir-18-dev mlir-18-tools libbolt-18-dev bolt-18 flang-18 libclang-rt-18-dev-wasm32 libclang-rt-18-dev-wasm64 libc++-18-dev-wasm32 libc++abi-18-dev-wasm32 libclang-rt-18-dev-wasm32 libclang-rt-18-dev-wasm64 libllvmlibc-18-dev # Install hostapd dependencies @@ -59,25 +59,16 @@ runs: & "${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh" -disableMetrics } - - name: Configure vcpkg binary caching with GitHub Packages (Windows) - if: runner.os == 'Windows' + - name: Configure vcpkg binary caching with GitHub Packages shell: pwsh env: GITHUB_TOKEN: ${{ inputs.github-token }} run: | - $nuget = & "${{ github.workspace }}/vcpkg/vcpkg" fetch nuget | Select-Object -Last 1 - & $nuget sources add -Source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" -StorePasswordInClearText -Name "GitHubPackages" -UserName "${{ github.repository_owner }}" -Password "$env:GITHUB_TOKEN" -NonInteractive 2>$null - & $nuget setapikey "$env:GITHUB_TOKEN" -Source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" -NonInteractive - - - name: Configure vcpkg binary caching with GitHub Packages (Linux/macOS) - if: runner.os != 'Windows' - shell: bash - env: - GITHUB_TOKEN: ${{ inputs.github-token }} - run: | - nuget=$("${{ github.workspace }}/vcpkg/vcpkg" fetch nuget | tail -n 1) - mono "$nuget" sources add -Source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" -StorePasswordInClearText -Name "GitHubPackages" -UserName "${{ github.repository_owner }}" -Password "$GITHUB_TOKEN" -NonInteractive 2>/dev/null || true - mono "$nuget" setapikey "$GITHUB_TOKEN" -Source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" -NonInteractive + dotnet nuget add source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" --name "GitHubPackages" --username "${{ github.repository_owner }}" --password "$env:GITHUB_TOKEN" --store-password-in-clear-text 2>$null + if ($LASTEXITCODE -ne 0) { + # Source may already exist, try updating instead + dotnet nuget update source "GitHubPackages" --source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" --username "${{ github.repository_owner }}" --password "$env:GITHUB_TOKEN" --store-password-in-clear-text + } - name: Set vcpkg environment variables uses: actions/github-script@v7 From 9dd9a52db80deee58cc5bc137ac6116b60232eb9 Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Mon, 2 Feb 2026 12:35:44 -0700 Subject: [PATCH 10/13] Add package write permissions to top-level ci/cd action. --- .github/workflows/cicd.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 546c0431..54f70dcf 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -25,6 +25,7 @@ jobs: contents: read actions: read security-events: write + packages: write concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true From 060cdca67edb22d2b729dce775d37211446144ec Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Mon, 2 Feb 2026 15:56:02 -0700 Subject: [PATCH 11/13] Add autoconf-archice to runner. --- .github/actions/build-with-host/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/build-with-host/action.yml b/.github/actions/build-with-host/action.yml index 899193d8..195d28d3 100644 --- a/.github/actions/build-with-host/action.yml +++ b/.github/actions/build-with-host/action.yml @@ -41,9 +41,9 @@ runs: run: | export DEBIAN_FRONTEND=noninteractive sudo -E apt-get update - sudo -E apt-get upgrade + sudo -E apt-get upgrade -y # Install core build dependencies - sudo -E apt-get install -qq --no-install-recommends autoconf automake autopoint build-essential ca-certificates cmake curl git gnupg libltdl-dev libmount-dev libtool linux-libc-dev libstdc++-14-dev ninja-build pkg-config python3-jinja2 tar unzip zip + sudo -E apt-get install -qq --no-install-recommends autoconf autoconf-archive automake autopoint build-essential ca-certificates cmake curl git gnupg libltdl-dev libmount-dev libtool linux-libc-dev libstdc++-14-dev ninja-build pkg-config python3-jinja2 tar unzip zip # Install LLVM 18 toolchain sudo -E apt-get install -qq --no-install-recommends libllvm-18-ocaml-dev libllvm18 llvm-18 llvm-18-dev llvm-18-doc llvm-18-examples llvm-18-runtime clang-18 clang-tools-18 clang-18-doc libclang-common-18-dev libclang-18-dev libclang1-18 clang-format-18 python3-clang-18 clangd-18 clang-tidy-18 libclang-rt-18-dev libpolly-18-dev libfuzzer-18-dev lldb-18 libc++-18-dev libc++abi-18-dev libomp-18-dev libclc-18-dev libunwind-18-dev libmlir-18-dev mlir-18-tools libbolt-18-dev bolt-18 flang-18 libclang-rt-18-dev-wasm32 libclang-rt-18-dev-wasm64 libc++-18-dev-wasm32 libc++abi-18-dev-wasm32 libclang-rt-18-dev-wasm32 libclang-rt-18-dev-wasm64 libllvmlibc-18-dev # Install hostapd dependencies From 639a94bba80d6903a37bc22186bb20d49a019be8 Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Mon, 2 Feb 2026 16:11:59 -0700 Subject: [PATCH 12/13] Fix vcpkg bootstrap: add submodules checkout and autoconf-archive - Add 'submodules: recursive' to checkout action in build.yml so the vcpkg submodule is properly initialized before bootstrap - Add autoconf-archive to apt-get install for libxcrypt build - Remove apt-get upgrade to avoid container package conflicts - Add .actrc and .secrets.example for local act testing --- .actrc | 12 ++++++++++++ .github/actions/build-with-host/action.yml | 1 - .github/workflows/build.yml | 2 ++ .gitignore | 4 ++++ .secrets.example | 6 ++++++ 5 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 .actrc create mode 100644 .secrets.example diff --git a/.actrc b/.actrc new file mode 100644 index 00000000..f19fc11b --- /dev/null +++ b/.actrc @@ -0,0 +1,12 @@ +# Act configuration for netremote +# Use full Ubuntu image (includes PowerShell, .NET, and other tools) +# Note: This image is large (~15GB) but matches GitHub runners more closely +-P ubuntu-latest=catthehacker/ubuntu:full-latest +-P ubuntu-24.04=catthehacker/ubuntu:full-24.04 +-P ubuntu-22.04=catthehacker/ubuntu:full-22.04 + +# Reuse containers between runs for faster iteration +--reuse + +# Set artifact server path +--artifact-server-path /tmp/act-artifacts diff --git a/.github/actions/build-with-host/action.yml b/.github/actions/build-with-host/action.yml index 195d28d3..10d268c3 100644 --- a/.github/actions/build-with-host/action.yml +++ b/.github/actions/build-with-host/action.yml @@ -41,7 +41,6 @@ runs: run: | export DEBIAN_FRONTEND=noninteractive sudo -E apt-get update - sudo -E apt-get upgrade -y # Install core build dependencies sudo -E apt-get install -qq --no-install-recommends autoconf autoconf-archive automake autopoint build-essential ca-certificates cmake curl git gnupg libltdl-dev libmount-dev libtool linux-libc-dev libstdc++-14-dev ninja-build pkg-config python3-jinja2 tar unzip zip # Install LLVM 18 toolchain diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5158b14d..d901fcf4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -110,6 +110,8 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + with: + submodules: recursive - name: Initialize CodeQL if: inputs.analyze-codeql == true diff --git a/.gitignore b/.gitignore index e1e20235..04653d8d 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,7 @@ vcpkg_installed*/ # Debug logs. *-LogNetRemote*.txt + +# Act (local GitHub Actions testing) +.secrets +.github/workflows/act-test.yml diff --git a/.secrets.example b/.secrets.example new file mode 100644 index 00000000..a9dafd43 --- /dev/null +++ b/.secrets.example @@ -0,0 +1,6 @@ +# Secrets for local act runs +# Copy this file to .secrets and fill in values +# NEVER commit the .secrets file! + +# GitHub token (create a PAT with packages:write for NuGet caching) +GITHUB_TOKEN=your_github_pat_here From 218abcf588d3a4524bc0a6a4f9c7b67820a12baa Mon Sep 17 00:00:00 2001 From: Andrew Beltrano Date: Mon, 2 Feb 2026 16:14:56 -0700 Subject: [PATCH 13/13] Remove Bootstrap vcpkg step - CMake handles submodule init The vcpkg.cmake script already initializes the vcpkg submodule during CMake configure via 'git submodule update --init --recursive'. The Bootstrap vcpkg step was failing because it ran before CMake had a chance to initialize the submodule. Also reverts the unnecessary 'submodules: recursive' checkout option. --- .github/actions/build-with-host/action.yml | 9 --------- .github/workflows/build.yml | 2 -- 2 files changed, 11 deletions(-) diff --git a/.github/actions/build-with-host/action.yml b/.github/actions/build-with-host/action.yml index 10d268c3..693363c8 100644 --- a/.github/actions/build-with-host/action.yml +++ b/.github/actions/build-with-host/action.yml @@ -49,15 +49,6 @@ runs: sudo -E apt-get install -qq --no-install-recommends libnl-3-200-dbg libnl-3-dev libssl-dev libnl-genl-3-dev libdbus-c++-dev libnl-route-3-dev shell: bash - - name: Bootstrap vcpkg - shell: pwsh - run: | - if ($IsWindows) { - & "${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat" -disableMetrics - } else { - & "${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh" -disableMetrics - } - - name: Configure vcpkg binary caching with GitHub Packages shell: pwsh env: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d901fcf4..5158b14d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -110,8 +110,6 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - with: - submodules: recursive - name: Initialize CodeQL if: inputs.analyze-codeql == true