Skip to content

DLPX-98654 [linux-pkg] Add syft/cyclonedx-cli packages - #414

Draft
justsanjeev wants to merge 5 commits into
developfrom
dlpx/pr/justsanjeev/6f069b99-6732-4b07-be3b-2babb40c9467
Draft

DLPX-98654 [linux-pkg] Add syft/cyclonedx-cli packages#414
justsanjeev wants to merge 5 commits into
developfrom
dlpx/pr/justsanjeev/6f069b99-6732-4b07-be3b-2babb40c9467

Conversation

@justsanjeev

@justsanjeev justsanjeev commented Aug 14, 2026

Copy link
Copy Markdown

Background

Companion to DLPX-98637 (delphix/syft) and DLPX-98638 (delphix/cyclonedx-cli) under the
CP-13455 CycloneDX SBOM epic. appliance-build PR #892 (CP-13464) provisioned Syft and
cyclonedx-cli by downloading pinned releases directly from github.com at build time;
review feedback flagged that as against convention. Design doc: DLPX-98618
(appliance-build/docs/specs/2026-08-13-syft-cyclonedx-cli-provisioning-design.md).

Problem

Syft and cyclonedx-cli need to be installed onto the appliance-build host (never inside the
shipped image) to generate and validate a CycloneDX SBOM for each built appliance. Neither
had a first-party linux-pkg package, so linux-pkg had no way to provision them -- they
were fetched directly from github.com at appliance-build build time instead, which is
inconsistent with how every other third-party build-host tool is provisioned in this org.

Solution

Add syft and cyclonedx-cli to main.pkgs, each with a packages/<name>/config.sh
pointing DEFAULT_PACKAGE_GIT_URL at the new first-party packaging repos
(delphix/syft, delphix/cyclonedx-cli) and calling dpkg_buildpackage_default, following
the exact delphix-go/host-jdks pattern. Both are listed only in main.pkgs -- never in
any appliance-build chroot package list -- so they stay build-host-only and are never
shipped inside the appliance image (see the comments added next to each in main.pkgs).

Each config.sh also sets PACKAGE_VERSION from that repo's own single-source-of-truth
version file (SYFT_VERSION / CYCLONEDX_VERSION), following the delphix-rust/
RUSTC_VERSION pattern, instead of letting linux-pkg default it to 1.0.0. Without this,
the built .deb's own version would never reflect the pinned upstream release -- notably bad
provenance for tools whose entire purpose is provenance.

Testing Done

  • packages/syft/config.sh / packages/cyclonedx-cli/config.sh follow the same shape as the
    existing delphix-go/host-jdks config files, which already build successfully through
    this same linux-pkg path.
  • Real pre-push build-package Jenkins runs, both green, producing correctly-versioned
    .debs (previously would have defaulted to 1.0.0 regardless of pinned version):
    • syft: pre-push #3
      -> delphix-syft_1.46.0-1delphix.2026.08.25.12.54_amd64.deb
    • cyclonedx-cli: pre-push #3
      -> delphix-cyclonedx-cli_0.32.0-1delphix.2026.08.25.12.54_amd64.deb
  • Downstream consumption validated in appliance-build PR #892: appliance-build-stage0
    pre-push Build multiple versions of the delphix-platform package #4 built using these packages, and the resulting CycloneDX SBOMs were reconciled
    against the existing BOM CSV across all 3 image variants with zero version mismatches (see
    that PR's Testing Done for the full comparison).

Related PRs:

@justsanjeev
justsanjeev force-pushed the dlpx/pr/justsanjeev/6f069b99-6732-4b07-be3b-2babb40c9467 branch from 29ac079 to 958ddb5 Compare August 14, 2026 12:15

@prakashsurya prakashsurya left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks reasonable to me.. I presume, these repos follow the product's branch conventions (e.g. develop, release, etc.)?

Comment thread package-lists/build/main.pkgs Outdated
@justsanjeev justsanjeev changed the title Add syft/cyclonedx-cli as linux-pkg packages DLPX-98654 [linux-pkg] Add syft/cyclonedx-cli packages Aug 24, 2026
…ERSION

Without this, set_changelog() has no PACKAGE_VERSION to read and
defaults the built package to 1.0.0 regardless of which Syft version
is actually pinned in the syft repo's debian/rules -- notably poor
provenance for an SBOM tool specifically.

syft's debian/rules now exposes the pinned version via a SYFT_VERSION
file (single source of truth, delphix-rust/RUSTC_VERSION pattern).
Read that same file here to set PACKAGE_VERSION before
dpkg_buildpackage_default runs, so "dpkg -l delphix-syft" on a build
host can tell you which Syft produced a given CycloneDX SBOM.
…om CYCLONEDX_VERSION

Same fix as the syft package: without this, set_changelog() has no
PACKAGE_VERSION to read and defaults the built package to 1.0.0
regardless of which cyclonedx-cli version is actually pinned in the
cyclonedx-cli repo's debian/rules.

cyclonedx-cli's debian/rules now exposes the pinned version via a
CYCLONEDX_VERSION file (single source of truth, delphix-rust/
RUSTC_VERSION pattern). Read that same file here to set PACKAGE_VERSION
before dpkg_buildpackage_default runs, so "apt-cache policy
delphix-cyclonedx-cli" on a build host can tell you which cyclonedx-cli
validated a given CycloneDX SBOM.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants