Repository navigation
Description
Background
The QNX SDP installation archive is architecture-agnostic on the package level: one SDP download (e.g., SDP 8.0.0 / 8.0.4) contains the host tools, headers, and libraries for all supported target architectures (x86_64 and aarch64).
Despite this, the current repository layout and VERSION_MATRIX treat the SDP as a per-target-architecture package:
packages/qnx/aarch64/sdp/8.0.0/sdp.BUILDpackages/qnx/x86_64/sdp/8.0.0/sdp.BUILD
Both VERSION_MATRIX entries (aarch64-qnx-sdp_* and x86_64-qnx-sdp_*) point to the same URL and sha256, and the two sdp.BUILD files are nearly identical — they only differ in the target-triple-prefixed tool names (ar, strip, gcov) and the compiler builtin include directory.
This has two drawbacks:
- Duplicate downloads/extractions — the same multi-GB SDP archive is fetched and extracted once per target architecture, wasting bandwidth, disk space, and cache.
- Duplicate maintenance — every SDP version bump requires updating two near-identical
BUILDfiles and two matrix entries that must stay in sync.
Since the SDP holds multiple architectures, we decided not to have one QNX SDP per target platform. Instead, a single SDP package will be shared by all QNX target platforms.
Requirements
- Consolidate the per-architecture
sdp.BUILDfiles into a singlesdp.BUILDthat exposes targets for bothx86_64andaarch64, e.g. architecture-suffixed filegroups:ar_aarch64/ar_x86_64strip_aarch64/strip_x86_64gcov_aarch64/gcov_x86_64cxx_builtin_include_directories_aarch64/cxx_builtin_include_directories_x86_64- Architecture-independent targets (
cc,cxx,mkifs,host_dir,target_dir,sysroot_dir,all_files, …) remain single, shared targets.
- Restructure the package path to be architecture-independent (e.g.,
packages/qnx/sdp/<version>/sdp.BUILDinstead ofpackages/qnx/{aarch64,x86_64}/sdp/<version>/sdp.BUILD). - Collapse the duplicated
VERSION_MATRIXentries so that a given SDP version is described by one entry (one URL/sha256/build_file), regardless of target architecture. - Update the
gccmodule extension / repository rules (extensions/gcc.bzl,rules/gcc.bzl) so that:- the SDP repository is created once per SDP version and linked by all QNX toolchains (both architectures),
- the generated toolchain config selects the correct architecture-specific targets from the shared SDP package.
- Keep the existing SDP version remapping behavior (e.g., 8.0.4 → 8.0.0 build-file reuse) working.
- Update the documentation (
docs/qnx_integration.md,docs/repository_layout.md,docs/maintenance.md) to reflect the new single-package layout. - The change must be transparent for consumers: existing QNX toolchain registration via the module extension must keep working without user-side changes (or, if a breaking change is unavoidable, document the migration in
docs/migration_guide.md).
Acceptance Criteria
- A single
sdp.BUILDper SDP version exists under an architecture-independent path and contains targets for bothx86_64andaarch64. - The per-architecture directories
packages/qnx/aarch64/sdp/andpackages/qnx/x86_64/sdp/are removed. -
VERSION_MATRIXcontains one entry per QNX SDP version (no per-architecture duplication of URL/sha256). - Building QNX toolchains for both
aarch64andx86_64in the same workspace triggers only one download/extraction of the SDP archive per version. - Both QNX toolchains (aarch64 + x86_64) resolve their tools (
qcc,q++,ar,strip,gcov,mkifs) and sysroot from the shared package and compile/link successfully. -
sysroot_dircontinues to expose the extracted package directory (srcs = ["."]). - Existing test suites under
tests/(feature verification, QNX DDK, guardrails) pass for both QNX target architectures. - Documentation is updated to describe the shared SDP package layout.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsNo status
Activity
[-]QNX SDP merge[/-][+][QNX] Use a single shared QNX SDP package for all target architectures[/+]