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

Onboard base2048 into the AIPCC Builder

    • Icon: Story Story
    • Resolution: Done
    • Icon: Undefined Undefined
    • None
    • None
    • None

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

      Build Failure Summary

      Root Cause Analysis: `base2048` Build Failure

      Problem

      The build of `base2048==0.1.3` failed due to a conflicting `maturin` version requirement.

      The key error from the log:

      ERROR base2048: could not handle toplevel dependency base2048 (0.1.3) because
      Unable to resolve requirement specifier maturin<0.14,>=0.13 with constraint
      maturin>=1.8.4
      

      What Happened

      `base2048` is a Rust-based Python extension that uses maturin as its build backend. Two incompatible version constraints collided:

      • `base2048==0.1.3` declares `maturin>=0.13,<0.14` as a build-system dependency (i.e., it requires maturin 0.13.x)
      • The build environment's `computed-constraints.txt` requires `maturin>=1.8.4`

      These two ranges have zero overlap (`0.14 < 1.8.4`), so the resolver correctly reports no valid maturin version can satisfy both.

      How to Fix

      1. Upgrade `base2048` to a newer version that declares compatibility with modern maturin (>=1.x). Check if a newer release exists on PyPI that has updated its `pyproject.toml` build-system requirements.

      2. If no newer version exists, apply a build-system override (via fromager's `overrides/settings.yaml` or a patch) to update the `base2048` package's `[build-system] requires` from `maturin>=0.13,<0.14` to a maturin version that satisfies the `>=1.8.4` constraint (e.g., `maturin>=1.8.4,<2`). This is viable if the package's Rust/Python interface is compatible with modern maturin — maturin 1.x is generally backward-compatible with projects originally built on 0.13.x, though testing is needed.

      3. If the global constraint `maturin>=1.8.4` is too restrictive, evaluate whether it can be relaxed — though this is unlikely to help since `base2048` caps maturin at `<0.14` regardless.

      Packaging Analysis Summary

      Here is the executive summary formatted as a JIRA comment in JIRA wiki markup:

      Executive Summary: base2048 Package Analysis

      base2048 is a Rust-based Python extension (using PyO3 bindings and the maturin build system) rated as Moderate complexity (6/10). The package provides base-2048 encoding/decoding with a minimal API surface (two functions: encode and decode), zero Python runtime dependencies, and is licensed under MIT – fully compatible with Red Hat distribution policies. All transitive Rust dependencies (pyo3, lazy_static, hashbrown) are dual-licensed Apache-2.0/MIT with no licensing blockers.

      The primary build consideration is the Rust toolchain requirement for source compilation. The package uses the PyO3 abi3-py37 stable ABI feature, meaning a single compiled artifact works across all CPython versions >= 3.7 (confirmed working on Python 3.14.2). A source build requires only Rust stable (edition 2021, rustc 1.56+) and maturin>=0.13,<0.14 – no C/C++ compiler or external system libraries beyond standard glibc (>= 2.17) are needed. Pre-built manylinux_2_17_x86_64 wheels are available on PyPI as a validated fallback. There are no critical blockers; the only open issue (#16) requests ARM64 wheels, which does not affect the x86_64 target architecture.

      Recommended approach for AIPCC-10993: Given the 2026-02-25 delivery target, the fast path is to use the existing pre-built manylinux wheel from PyPI for initial delivery, while establishing a containerized source build pipeline (UBI8/UBI9 with rust-toolset and python3-devel) for subsequent releases. The JIRA ticket's "override" context likely refers to special Rust toolchain provisioning not included in standard Python build automation.

      Key Technical Details

      • Build command (source):
        # Using system Rust toolchain (e.g., rust-toolset on RHEL)
        pip wheel --no-binary base2048 base2048==0.1.3
        # Or: clone repo + maturin build --release
        
      • Fallback (pre-built wheel): base2048-0.1.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB), verified working
      • Runtime dependencies: None (Python) / glibc >= 2.17 (system)
      • License: MIT – no redistribution restrictions
      • Security risk: Low – no network/filesystem access, no runtime dependencies, minimal codebase (~170 lines Rust)
      • Repository: https://github.com/ionite34/base2048 – stable but low activity since late 2022 (acceptable for a mature encoding library)

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

                Created:
                Updated:
                Resolved: