Merge develop into feature/vnext-delta — bug fixes, ARM32, V2 downloader#864
Merged
Nox-MSFT merged 14 commits intofeature/vnext-deltafrom Apr 24, 2026
Merged
Conversation
* Fix ARM32 segfault in extension registration: use %ld for long instead of %lld The %lld format specifier consumes 8 bytes but long is 4 bytes on ARM32, causing subsequent varargs (hash pointer) to be misread and segfaulting in strlen(). Regression introduced in PR #633 when %d was changed to %lld without updating the variable type from long to long long. * Add Debian 11 ARM32 build job using QEMU emulation Adds arm32-container-job that builds on ubuntu-latest with QEMU ARM emulation via docker/setup-qemu-action. Runs the full build pipeline (install-deps, build, test) inside a debian:11 arm/v7 Docker container. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Prioritize dpkg for detecting userspace architecture Update determine_machine_architecture function to prefer dpkg for userspace architecture detection. * Replace CMake 3.20+ commands with CMake 3.5-compatible alternatives Replace cmake_path() and file(COPY_FILE) calls with get_filename_component() and configure_file(COPYONLY) respectively, to match the project's cmake_minimum_required(VERSION 3.5). Also add out*/ to .gitignore to cover build output directories with suffixes (e.g. out-debian11-arm32/). * support armhf * arm64 * remove arm32 buid --------- Co-authored-by: nox-msft <wewilair@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Nox-MSFT <55153324+Nox-MSFT@users.noreply.github.com>
* fix group memberships * make choice * make choice multiline * back to defaults * default curl * content downloader message
* fix: Make DO a suggestion when built with DO support * don't break * doc * exclued cmakefiles fom coverage * fix another bug * undo coverage changes
…test integration (#849)
…861) * Properly initialize curl content handler logging * Pass logLevel to contentDownloader. * Fix do-client logging initialization. * Remove comment. * Update header file. * Call Cleanup when the lib is being Unloaded. * feat: Add backward-compatible V2 content downloader contract Enhance PR #828's logging initialization for content downloaders with proper backward compatibility via a V2 contract model: - Add V2 contract version (2.0) constants and ADUC_ContractUtils_IsV2Contract() - Add InitializeV1Proc typedef for V1 ABI (1 arg) alongside V2's InitializeProc (2 args) - Branch InitializeContentDownloader on contract version: V1 calls with 1 arg, V2 with 2 args - Remove Cleanup from required symbols array so V1 extensions still load - Only call Cleanup on the content downloader lib (not all libs) and only for V2 - Update Download() to accept both V1 and V2 contract versions - Update curl and DO downloaders to report V2 contract - Add unit tests for V1/V2/unsupported contract version routing Addresses ABI compatibility concerns raised in #828. * docs: Document V2 content downloader contract Update extension-contract-versions.md with V1 vs V2 content downloader contract details (Initialize signature change, Cleanup export). Update device-update-agent-extensibility-points.md custom content downloader section with V1/V2 guidance. * test: Fix unit tests after develop merge and V2 contract adoption - extension_manager_ut.cpp: pass ADUC_LOG_DEBUG to InitializeContentDownloader callsites (build break after logLevel param was added) - extension_manager_ut.cpp, extension_manager_download_test_case.cpp: use {3,0} instead of {2,0} for the 'unsupported contract version' scenarios, since {2,0} is now a supported V2 contract - curl_content_downloader_ut.cpp: update GetContractInfo test to expect V2, matching curl downloader's reported contract version All 744 unit tests pass. --------- Co-authored-by: Andre Ricardo <andre.ricardo@zoetis.com>
Brings 12 develop commits into vnext-delta, including: - Fix #855 bug when hash check fails - Fix double-free in logging library - Fix segmentation fault - Fix Curl downloader default - Enhance content downloader with V2 contract and logging - ARM 32 compatibility fixes - Make DO recommended when built with DO support - Build/CI cleanup (CMake paths, coverage, rootkey workflow) Conflict resolutions: - CMakeLists.txt: kept vnext-delta Extension Configurations block - packages/CMakeLists.txt: kept vnext-delta UNSPECIFIED_PACKAGE naming (component-based packaging for delta handler) - src/logging/zlog/src/init.c: combined vnext-delta atomic_fetch_sub with develop double-uninit guard Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The extension result code generator embedded a timestamp in the header comment, producing different content on every run and defeating the smart-write comparison. This caused 164+ files to recompile on every cmake reconfigure even when no source files changed. Changes: - Remove timestamp from generated header (extension_result_code_generator.py) - Expand cmake hash cache to include extension JSON files and generator scripts so cache invalidation is accurate - Improve status messages to distinguish 'up-to-date' from 'Generated'
chgennar
approved these changes
Apr 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Brings feature/vnext-delta up to date with develop, incorporating all bug fixes, ARM32 compatibility, and the V2 content downloader work.
Included from develop
Additional fix
Merge conflicts resolved
3 conflicts were manually resolved:
Validation