Uploaded image for project: 'AI Platform Core Components'
  1. AI Platform Core Components
  2. AIPCC-11001

Onboard nvidia-riva-client into the AIPCC Builder

      Package 'nvidia-riva-client' does not build as-is via the AIPCC self-service pipeline and requires builder repository onboarding.

      Build Failure Summary

      Now I have all the information needed to provide the analysis.

      Root Cause Analysis: `nvidia-riva-client` Build Failure

      What Happened

      The build failed at the dependency resolution stage before any compilation was attempted. The critical error is:

      19:57:13 ERROR nvidia-riva-client: Unable to resolve requirement specifier nvidia-riva-client
      with constraint None using PyPI resolver (searching at https://pypi.org/simple): found no match
      for nvidia-riva-client using PyPI resolver (searching at https://pypi.org/simple), searching for
      sdists, ignoring pre-release versions
      

      Root Cause

      `nvidia-riva-client` publishes only wheels to PyPI — no source distributions (sdists) exist for any version. The build system (fromager) is running in sdist-only mode (`sdist-only (fast mode), getting metadata from sdists`), which means it exclusively searches for `.tar.gz` source distributions to build packages from source. Since NVIDIA has never published an sdist for this package (across all versions from `0.0.3` through `2.24.0`), the resolver finds zero candidates and fails immediately.

      Why Source-Based Building Is Still Possible

      The package's source code is available on GitHub at *https://github.com/nvidia-riva/python-clients*. This is a pure-Python gRPC client library (not a compiled native extension), so building from source should be straightforward.

      Potential Fixes

      • Configure fromager with a source override pointing to the GitHub repository (`nvidia-riva/python-clients`) so it can fetch and build the sdist from source rather than relying on PyPI's sdist index. This is the standard approach when a package only ships wheels on PyPI but has publicly available source code.
      • Generate an sdist from the source repository and host it in the internal package server before running the bootstrap. Cloning the repo at the desired tag and running `python -m build --sdist` would produce the missing artifact.
      • As a last resort, some versions on PyPI use non-PEP 440 version strings (e.g., `2.9.0-1`, `2.18.0-1`) which may also be filtered out as pre-release. Ensure the version targeted uses a clean PEP 440 version like `2.24.0`.

      Packaging Analysis Summary

      Executive Summary: nvidia-riva-client Packaging Analysis

      nvidia-riva-client is a pure-Python gRPC client library for NVIDIA's Riva Speech AI platform, required as a hard dependency of Garak. The package produces a noarch wheel (

      py3-none-any

      ) with no native compilation required. However, the build process has a moderate complexity step: it compiles Protocol Buffer (

      .proto

      ) definitions from a git submodule (

      nvidia-riva/common

      ) into Python code using

      grpc_tools.protoc

      . A source build from the GitHub repository at tag

      r2.16.0

      has been verified successful, producing a wheel that matches the PyPI-distributed artifact. The package is licensed under MIT, fully compatible with Red Hat redistribution.

      CRITICAL BLOCKER: The JIRA ticket AIPCC-10994 references version 0.16.0, which does not exist on PyPI. The correct version is 2.16.0, as confirmed by Garak's

      pyproject.toml

      which pins

      nvidia-riva-client==2.16.0

      . This version discrepancy must be corrected before proceeding. Additionally, no sdist is published to PyPI for any version — the source must come from the GitHub repository at

      https://github.com/nvidia-riva/python-clients

      (tag

      r2.16.0

      ).

      Version 2.16.0 is advantageous for RPM packaging because its runtime dependencies (

      setuptools>=65

      ,

      grpcio-tools

      ) use relaxed version constraints, unlike later versions (2.17.0+) which aggressively pin exact versions and introduce ecosystem conflicts. The build requires

      grpcio-tools

      as a build dependency and

      git

      to initialize the

      common

      submodule containing the

      .proto

      files. For RPM packaging, the submodule content should be bundled into the source tarball to avoid network access during build.

      Key Actions

      • Immediate: Update JIRA ticket AIPCC-10994 to reference version 2.16.0 instead of 0.16.0
      • Source: Use
        https://github.com/nvidia-riva/python-clients/archive/refs/tags/r2.16.0.tar.gz

        as Source0, and bundle the

        common

        submodule content as Source1

      • BuildRequires:
        python3-grpcio-tools

        ,

        python3-setuptools
      • Requires:
        python3-setuptools >= 65

        ,

        python3-grpcio-tools
      • Architecture:
        noarch

        — no platform-specific build steps needed despite the ticket specifying x86_64

              lbarto Lance Barto
              aipcc-jira-bot@redhat.com AIPCC JIRABOT
              Frank's Team
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: