From 7dc9040172681c12b723c6b08647c094c9ce09d2 Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Wed, 19 Nov 2025 10:19:01 -0500 Subject: [PATCH 01/15] chore: update next builds to be hermetic Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .github/actions/docker-build/action.yaml | 88 +- .github/workflows/next-build-image.yaml | 21 +- .github/workflows/pr-build-image.yaml | 5 +- rpms.in.yaml | 3 + rpms.lock.yaml | 5206 +++++++++++++++++++++- 5 files changed, 5233 insertions(+), 90 deletions(-) diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index e798de413e..3cd77df520 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -15,17 +15,8 @@ name: Docker Build description: Docker Build inputs: - registry: - description: The registry to push to - required: true - password: - description: The password to use for the registry - required: false - username: - description: The username to use for the registry - required: false imageName: - description: The name of the image to build + description: The full image name including registry (e.g., quay.io/rhdh-community/rhdh) required: true imageTags: description: The tags to apply to the image @@ -33,17 +24,10 @@ inputs: imageLabels: description: The labels for the Docker image required: false - push: - description: Whether to push the image (automatically ignored and assumed to be false if enableHermeticBuild is true) - required: true platform: description: "Target given CPU platform architecture (default: linux/amd64)" required: false default: linux/amd64 - enableHermeticBuild: - description: Whether to enable hermetic builds using hermeto (currently only supported for linux/amd64) - required: false - default: 'false' componentDirectory: description: Path to the component directory for hermetic builds required: false @@ -52,11 +36,10 @@ inputs: description: Path to the Dockerfile to use required: false default: 'docker/Dockerfile' - -outputs: - digest: - description: The digest of the built Docker image - value: ${{ steps.build.outputs.digest }} + skipArtifactUpload: + description: Skip uploading the built image as a GitHub artifact + required: false + default: 'false' runs: using: composite @@ -72,29 +55,11 @@ runs: docker-images: false swap-storage: false - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - # - name: Install qemu dependency - # shell: bash - # run: | - # set -ex - # sudo apt-get update - # sudo apt-get install -y qemu-user-static - - - name: Login to Registry - if: ${{ inputs.push == 'true' && inputs.enableHermeticBuild != 'true' }} - uses: docker/login-action@v3 - with: - registry: ${{ inputs.registry }} - username: ${{ inputs.username }} - password: ${{ inputs.password }} - - name: Extract metadata (tags, labels, annotations) for Docker id: meta uses: docker/metadata-action@v5 with: - images: ${{ inputs.registry }}/${{ inputs.imageName }} + images: ${{ inputs.imageName }} tags: | ${{ inputs.imageTags }} labels: | @@ -102,7 +67,6 @@ runs: # Hermetic Build Steps - name: Set up hermetic build variables - if: ${{ inputs.enableHermeticBuild == 'true' }} shell: bash run: | echo "HERMETO_IMAGE=quay.io/konflux-ci/hermeto:latest" >> $GITHUB_ENV @@ -110,7 +74,6 @@ runs: echo "COMPONENT_ABS_DIR=${{ github.workspace }}/${{ inputs.componentDirectory }}" >> $GITHUB_ENV - name: Cache dependencies with hermeto - if: ${{ inputs.enableHermeticBuild == 'true' }} shell: bash run: | set -ex @@ -119,7 +82,7 @@ runs: mkdir -p ${{ env.LOCAL_CACHE_DIR }} || echo "Failed to create local cache directory" echo "=== Fetching dependencies with hermeto ===" - # Build hermeto cache for rpm, yarn, and pip (currently does not support ARM64 due to quay.io/konflux-ci/hermeto:latest not having an arm64 image) + # Build hermeto cache for rpm, yarn, and pip podman run --rm -v "$PWD:/source:z" -v "$LOCAL_CACHE_DIR:/cachi2:z" -w /source "$HERMETO_IMAGE" \ --log-level DEBUG \ fetch-deps --dev-package-managers \ @@ -156,7 +119,6 @@ runs: echo LOCAL_CACHE_DIR_REALPATH=$(realpath "${{ env.LOCAL_CACHE_DIR }}") >> $GITHUB_ENV - name: "Fix Cache Ownership for Non-Root Buildah" - if: ${{ inputs.enableHermeticBuild == 'true' }} shell: bash run: | set -ex @@ -168,7 +130,6 @@ runs: ls -l ${{ env.LOCAL_CACHE_DIR_REALPATH }} - name: Transform Containerfile for hermetic build - if: ${{ inputs.enableHermeticBuild == 'true' }} shell: bash run: | set -x @@ -181,31 +142,16 @@ runs: cp "$CONTAINERFILE_PATH" "$TRANSFORMED_CONTAINERFILE" # Transform the dockerfile to simulate Konflux build - # Configure dnf to use the cachi2 repo - sed -i '/RUN *\(dnf\|microdnf\) install/i RUN rm -r /etc/yum.repos.d/* && cp /cachi2/output/deps/rpm/x86_64/repos.d/hermeto.repo /etc/yum.repos.d/' "$TRANSFORMED_CONTAINERFILE" + # Configure dnf to use the cachi2 repo (supports both x86_64 and aarch64) + sed -i '/RUN *\(dnf\|microdnf\) install/i RUN rm -r /etc/yum.repos.d/* && cp /cachi2/output/deps/rpm/$(uname -m)/repos.d/hermeto.repo /etc/yum.repos.d/' "$TRANSFORMED_CONTAINERFILE" # Inject the cachi2 env variables to every RUN command sed -i 's/^\s*RUN /RUN . \/cachi2\/cachi2.env \&\& /' "$TRANSFORMED_CONTAINERFILE" echo "TRANSFORMED_CONTAINERFILE=$TRANSFORMED_CONTAINERFILE" >> $GITHUB_ENV - - name: Build and push Docker image (Standard) - if: ${{ inputs.enableHermeticBuild != 'true' }} - uses: docker/build-push-action@v6 + - name: "Build Docker Image" id: build - with: - context: . - file: ${{ inputs.dockerfilePath }} - push: ${{ inputs.push }} - provenance: false - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - annotations: ${{ steps.meta.outputs.annotations }} - platforms: ${{ inputs.platform }} - - - name: "Build Docker Image (Hermetic)" - id: hermetic-build - if: ${{ inputs.enableHermeticBuild == 'true' }} uses: redhat-actions/buildah-build@7a95fa7ee0f02d552a32753e7414641a04307056 # v2.13 with: containerfiles: ${{ inputs.dockerfilePath }}.hermeto @@ -217,14 +163,8 @@ runs: --network=none --volume ${{ env.LOCAL_CACHE_DIR_REALPATH }}:/cachi2:z - - name: Set build output for hermetic builds - if: ${{ inputs.enableHermeticBuild == 'true' }} - shell: bash - run: | - echo "digest=${{ steps.hermetic-build.outputs.digest || 'no-digest-available' }}" >> $GITHUB_OUTPUT - - - name: Save image as artifact (Hermetic) - if: ${{ inputs.enableHermeticBuild == 'true' }} + - name: Save image as artifact + if: ${{ inputs.skipArtifactUpload != 'true' }} shell: bash run: | mkdir -p ./rhdh-podman-artifacts @@ -242,10 +182,10 @@ runs: echo "$TAGS_LIST" > ./rhdh-podman-artifacts/tags.txt - name: Upload image artifact - if: ${{ inputs.enableHermeticBuild == 'true' }} + if: ${{ inputs.skipArtifactUpload != 'true' }} uses: actions/upload-artifact@v4 with: - name: podman-image-${{ github.event.number || 'main' }}-${{ env.SHORT_SHA }} + name: podman-image-${{ github.event.number || github.ref_name }}-${{ env.SHORT_SHA }}-${{ env.PLATFORM_ARCH }} path: ./rhdh-podman-artifacts/ retention-days: 1 if-no-files-found: error \ No newline at end of file diff --git a/.github/workflows/next-build-image.yaml b/.github/workflows/next-build-image.yaml index 1db79d0e52..2890ead82b 100644 --- a/.github/workflows/next-build-image.yaml +++ b/.github/workflows/next-build-image.yaml @@ -121,28 +121,35 @@ jobs: - name: Get the last commit short SHA uses: ./.github/actions/get-sha - - name: Build and Push with Buildx + - name: Build with Hermetic Build uses: ./.github/actions/docker-build id: build-image with: - registry: ${{ env.REGISTRY }} - username: ${{ secrets.QUAY_USERNAME }} - password: ${{ secrets.QUAY_TOKEN }} - imageName: ${{ env.REGISTRY_IMAGE }} + imageName: ${{ env.REGISTRY }}/${{ env.REGISTRY_IMAGE }} imageTags: | type=raw,value=${{ env.REF_NAME }}-${{ env.PLATFORM_ARCH }} type=raw,value=${{ env.REF_NAME }}-${{ env.SHORT_SHA }}-${{ env.PLATFORM_ARCH }} imageLabels: | quay.expires-after=${{ env.EXPIRES_AFTER }} org.opencontainers.image.expires=${{ env.EXPIRES_AFTER }} - push: true platform: ${{ env.PLATFORM }} + skipArtifactUpload: true + + - name: Push Image to Registry + id: push-image + uses: redhat-actions/push-to-registry@5ed88d269cf581ea9ef6dd6806d01562096bee9c # v2.8 + with: + tags: | + ${{ env.REGISTRY }}/${{ env.REGISTRY_IMAGE }}:${{ env.REF_NAME }}-${{ env.PLATFORM_ARCH }} + ${{ env.REGISTRY }}/${{ env.REGISTRY_IMAGE }}:${{ env.REF_NAME }}-${{ env.SHORT_SHA }}-${{ env.PLATFORM_ARCH }} + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_TOKEN }} - name: Export digest id: export-digest run: | mkdir -p /tmp/digests - digest="${{ steps.build-image.outputs.digest }}" + digest="${{ steps.push-image.outputs.digest }}" touch "/tmp/digests/${digest#sha256:}" - name: Upload digest diff --git a/.github/workflows/pr-build-image.yaml b/.github/workflows/pr-build-image.yaml index 7e8c7edcd9..406a65f7a8 100644 --- a/.github/workflows/pr-build-image.yaml +++ b/.github/workflows/pr-build-image.yaml @@ -73,13 +73,10 @@ jobs: if: ${{ steps.check-image.outputs.is_skipped != 'true' }} uses: ./.github/actions/docker-build with: - registry: ${{ env.REGISTRY }} - imageName: ${{ env.IMAGE_NAME }} + imageName: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} imageTags: | pr-${{ github.event.number }} pr-${{ github.event.number }}-${{ env.SHORT_SHA }} - enableHermeticBuild: true imageLabels: quay.expires-after=14d - push: false platform: linux/amd64 dockerfilePath: .rhdh/docker/Dockerfile diff --git a/rpms.in.yaml b/rpms.in.yaml index 9cdd5a9fb7..b34dbe17d0 100644 --- a/rpms.in.yaml +++ b/rpms.in.yaml @@ -3,6 +3,9 @@ # to regen rpms.lock.yaml # Note that the repoid values are special, and must be from here: # https://github.com/release-engineering/rhtap-ec-policy/blob/main/data/known_rpm_repositories.yml +arches: + - x86_64 + - aarch64 allowerasing: true contentOrigin: repos: diff --git a/rpms.lock.yaml b/rpms.lock.yaml index 1c9c370729..3294a533cb 100644 --- a/rpms.lock.yaml +++ b/rpms.lock.yaml @@ -2,6 +2,5202 @@ lockfileVersion: 1 lockfileVendor: redhat arches: +- arch: aarch64 + packages: + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/a/alsa-lib-1.2.14-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 527905 + checksum: sha256:28aca327e9b62883a94a86d1b562ef49f1a11def88b34a5a188f8b4f46caf085 + name: alsa-lib + evr: 1.2.14-1.el9 + sourcerpm: alsa-lib-1.2.14-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/a/annobin-12.98-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 1117109 + checksum: sha256:9c64856a3b3e04136ab8b62b94fca93b6de87449ce1712c8f26c0af3ab69a9d4 + name: annobin + evr: 12.98-1.el9 + sourcerpm: annobin-12.98-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/a/at-spi2-atk-2.38.0-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 92091 + checksum: sha256:add16cad8009a56199ca675b90cc3f26dc74ac30e36ffc928bae2228e2c62878 + name: at-spi2-atk + evr: 2.38.0-4.el9 + sourcerpm: at-spi2-atk-2.38.0-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/a/at-spi2-core-2.40.3-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 201674 + checksum: sha256:8f9f25fd282b295560b23b1b2567efe21585668f44707fa20b4076f478148a6d + name: at-spi2-core + evr: 2.40.3-1.el9 + sourcerpm: at-spi2-core-2.40.3-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/a/atk-2.36.0-5.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 301299 + checksum: sha256:4cfa8d5bc4d8b7987fa1d726269f8506a700f4cfc31460b5cfa95c466b8dd925 + name: atk + evr: 2.36.0-5.el9 + sourcerpm: atk-2.36.0-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/b/brotli-1.0.9-7.el9_5.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 318978 + checksum: sha256:6c6890d7a0bcacbf89f2ac39dadd42d505b375130a56cae6401a31e4b33b23e3 + name: brotli + evr: 1.0.9-7.el9_5 + sourcerpm: brotli-1.0.9-7.el9_5.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/b/brotli-devel-1.0.9-7.el9_5.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 35163 + checksum: sha256:4fa52d3d27404f7c08c9ad1d8b3cf7e758888f28ebae2a06634b859be486d229 + name: brotli-devel + evr: 1.0.9-7.el9_5 + sourcerpm: brotli-1.0.9-7.el9_5.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/b/bsdtar-3.5.3-6.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 61996 + checksum: sha256:02713837f71c26cde8ef6ea88934271abdfcdaa4312bf49c3f9b8a04e42bdfef + name: bsdtar + evr: 3.5.3-6.el9_6 + sourcerpm: libarchive-3.5.3-6.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/c/cairo-1.17.4-7.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 664919 + checksum: sha256:61fd5cb8506a27090331ef33fd2d14cdbbe530f42ab9179e4288d9797c09e398 + name: cairo + evr: 1.17.4-7.el9 + sourcerpm: cairo-1.17.4-7.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/c/cmake-3.26.5-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 7432689 + checksum: sha256:6ac0e5e9a4fd761f8688678ac83580c7eebeacf6c241bd8089d72c4a477b22c3 + name: cmake + evr: 3.26.5-2.el9 + sourcerpm: cmake-3.26.5-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/c/cmake-data-3.26.5-2.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 2488227 + checksum: sha256:84da65a7b8921f031d15903d91c5967022620f9e96b7493c8ab8024014755ee7 + name: cmake-data + evr: 3.26.5-2.el9 + sourcerpm: cmake-3.26.5-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/c/cmake-filesystem-3.26.5-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 23401 + checksum: sha256:c76e4d4a355a4f6599bee009c9b4408e6b82c31265f2db824efdeb278d596024 + name: cmake-filesystem + evr: 3.26.5-2.el9 + sourcerpm: cmake-3.26.5-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/c/cmake-rpm-macros-3.26.5-2.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 12250 + checksum: sha256:1c74969c8a4f21851f5b89f25ac55c689b75bed1318d0435fc3a14a49c39d0e3 + name: cmake-rpm-macros + evr: 3.26.5-2.el9 + sourcerpm: cmake-3.26.5-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/c/container-selinux-2.240.0-3.el9_7.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 61087 + checksum: sha256:31fcb6999f1cf55dff4e292bf587c9c5930b87e223b9927e77a07b70a82c0d69 + name: container-selinux + evr: 4:2.240.0-3.el9_7 + sourcerpm: container-selinux-2.240.0-3.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/c/containers-common-1-135.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 156886 + checksum: sha256:f7ebf9e54af8b362289523ee34b9528f8f33d483e0e35e11339d0de884162f8c + name: containers-common + evr: 4:1-135.el9_7 + sourcerpm: containers-common-1-135.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/c/cpp-11.5.0-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 10797009 + checksum: sha256:eab64632a86902a074d60f7f32d444e1911fcc53b9a8b0de60082eea20bea808 + name: cpp + evr: 11.5.0-11.el9 + sourcerpm: gcc-11.5.0-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/c/criu-3.19-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 555523 + checksum: sha256:376aca78a8d78a052503fc4406ee84e4d0607c047e8486190b06ed3acd19a6c7 + name: criu + evr: 3.19-3.el9 + sourcerpm: criu-3.19-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/c/criu-libs-3.19-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 31064 + checksum: sha256:34b7c037743e730a07117d9627725517d60ed356f945c9f42880573f552b7c4f + name: criu-libs + evr: 3.19-3.el9 + sourcerpm: criu-3.19-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/c/crun-1.23.1-2.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 234324 + checksum: sha256:662139a1c439d3b89c60de59cef5ca1d11b0a9e31f4abbb2981ddf91bb77e88f + name: crun + evr: 1.23.1-2.el9_7 + sourcerpm: crun-1.23.1-2.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/d/dwz-0.16-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 136759 + checksum: sha256:9f019b3e973a6fd234206e48f811f26e7f2790d1c52600b771482a8a051cce01 + name: dwz + evr: 0.16-1.el9 + sourcerpm: dwz-0.16-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/e/efi-srpm-macros-6-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 21527 + checksum: sha256:4cf4841f5c7145f3dce72175e09d39b02c7fbb44be552d9d407431a7a81ef9ef + name: efi-srpm-macros + evr: 6-4.el9 + sourcerpm: efi-rpm-macros-6-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/e/emacs-filesystem-27.2-18.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 9495 + checksum: sha256:49d7b88a05a72c15b78191a987e6def04fda8e2e4ff75711f715d0c0ecadc60f + name: emacs-filesystem + evr: 1:27.2-18.el9 + sourcerpm: emacs-27.2-18.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/f/fontconfig-2.14.0-2.el9_1.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 310419 + checksum: sha256:b80def85208fe166b46b74a89c10892190d6b9b1cb33e1d794249909aa76c353 + name: fontconfig + evr: 2.14.0-2.el9_1 + sourcerpm: fontconfig-2.14.0-2.el9_1.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/f/fonts-srpm-macros-2.0.5-7.el9.1.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 30140 + checksum: sha256:f8c6aaa6af574698f6d1a7eb8e7f6ed725e4366dc14553bc816f5aa305675367 + name: fonts-srpm-macros + evr: 1:2.0.5-7.el9.1 + sourcerpm: fonts-rpm-macros-2.0.5-7.el9.1.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/f/fribidi-1.0.10-6.el9.2.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 89934 + checksum: sha256:9fdd10bfede3d23dcc962cb037f95da9e003cdf191b202f0a787a2ce142bbf3a + name: fribidi + evr: 1.0.10-6.el9.2 + sourcerpm: fribidi-1.0.10-6.el9.2.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/f/fuse-overlayfs-1.15-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 64506 + checksum: sha256:ca71ef4c89e10d75a46257c190e7274e2354092d18dbceba95a701e3f3df7c61 + name: fuse-overlayfs + evr: 1.15-1.el9 + sourcerpm: fuse-overlayfs-1.15-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/f/fuse3-3.10.2-9.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 58189 + checksum: sha256:2b911ff36ca332c9a5d0f2b2f088b51e9417d2085ec9c44967102f845825ad0f + name: fuse3 + evr: 3.10.2-9.el9 + sourcerpm: fuse3-3.10.2-9.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/f/fuse3-libs-3.10.2-9.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 92984 + checksum: sha256:5996291bc8dbb3d32f5d0ac693a4570dba5fe45631d4ca0552696285ff905370 + name: fuse3-libs + evr: 3.10.2-9.el9 + sourcerpm: fuse3-3.10.2-9.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/g/gcc-11.5.0-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 31296441 + checksum: sha256:6831e31f3fecd845b4058d68c3c3a9cc1fae525f81dda36368ddc550f28bbc5e + name: gcc + evr: 11.5.0-11.el9 + sourcerpm: gcc-11.5.0-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/g/gcc-c++-11.5.0-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 12993829 + checksum: sha256:fd36bff0abdc82a3b4b870a58060e46f6a39b7f15da4d9209bcdd6c1b75cebea + name: gcc-c++ + evr: 11.5.0-11.el9 + sourcerpm: gcc-11.5.0-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/g/gcc-plugin-annobin-11.5.0-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 37106 + checksum: sha256:a96f113859d6bf4d60cb15f39926493bdd1c81413cc04b742061074cc9c3bfb3 + name: gcc-plugin-annobin + evr: 11.5.0-11.el9 + sourcerpm: gcc-11.5.0-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/g/gdb-gdbserver-16.3-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 331640 + checksum: sha256:b14812b5c7f4cfeea8d243ff35f7decf119aaf8835541cc5acfdd6d9a948a6cb + name: gdb-gdbserver + evr: 16.3-2.el9 + sourcerpm: gdb-16.3-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/g/ghc-srpm-macros-1.5.0-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 9252 + checksum: sha256:80fb1c39b5d8c23352b8928332fa0794e679e054ffa3f04a34c2b18bb7e28c93 + name: ghc-srpm-macros + evr: 1.5.0-6.el9 + sourcerpm: ghc-srpm-macros-1.5.0-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/g/git-2.47.3-1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 51846 + checksum: sha256:6d80ba0961c5ddebd612a86790023e8086e5c0ed10bc282b088362b98df2c0a9 + name: git + evr: 2.47.3-1.el9_6 + sourcerpm: git-2.47.3-1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/g/git-core-2.47.3-1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 5036453 + checksum: sha256:8f5f3f6fa402ecf4215c36807284dd447c990ff747b1a1150e7d638c37bfbf1e + name: git-core + evr: 2.47.3-1.el9_6 + sourcerpm: git-2.47.3-1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/g/git-core-doc-2.47.3-1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 3195826 + checksum: sha256:0008ecada894ff2a51c43f868b7727baae3836911b541a613769d2e93d501442 + name: git-core-doc + evr: 2.47.3-1.el9_6 + sourcerpm: git-2.47.3-1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/g/glibc-devel-2.34-231.el9_7.2.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 568363 + checksum: sha256:5e3bbdb64dad55fdb07540756c333e0a73afe4ab493de199277a82138c224352 + name: glibc-devel + evr: 2.34-231.el9_7.2 + sourcerpm: glibc-2.34-231.el9_7.2.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/g/glibc-locale-source-2.34-231.el9_7.2.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 4362702 + checksum: sha256:cfaa45566e86cf4778da5c61d87db6a03d0256a7862bc5fbe408e77bf0a8223f + name: glibc-locale-source + evr: 2.34-231.el9_7.2 + sourcerpm: glibc-2.34-231.el9_7.2.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/g/go-srpm-macros-3.6.0-11.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 28497 + checksum: sha256:4c9082f7d04e1741c88ff305a10be5df9c795d1d0646adff609529b1f26fbac5 + name: go-srpm-macros + evr: 3.6.0-11.el9 + sourcerpm: go-rpm-macros-3.6.0-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/k/kernel-headers-5.14.0-611.8.1.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 2946465 + checksum: sha256:f4e0d9a17702ddcdc3a9e5c3a1c1ae2932e74fca0e560dc889965bc4ab835c89 + name: kernel-headers + evr: 5.14.0-611.8.1.el9_7 + sourcerpm: kernel-5.14.0-611.8.1.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/k/kernel-srpm-macros-1.0-14.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14098 + checksum: sha256:54edccc470e78f835a572f809b11413bb62bc5ca765e523eaf17ca23cdde08d3 + name: kernel-srpm-macros + evr: 1.0-14.el9 + sourcerpm: kernel-srpm-macros-1.0-14.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libX11-1.7.0-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 653150 + checksum: sha256:e2b2dfffeb8fb95eadd6f947247a2d9097c5526f38e426ee2fe58a08313174d7 + name: libX11 + evr: 1.7.0-11.el9 + sourcerpm: libX11-1.7.0-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libX11-common-1.7.0-11.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 214201 + checksum: sha256:6c71dcb5ecbf19b1d7cd72a48a399d0208942bf07afd529effe3ed426499512b + name: libX11-common + evr: 1.7.0-11.el9 + sourcerpm: libX11-1.7.0-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libX11-xcb-1.7.0-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 12720 + checksum: sha256:2f751586d0616719879cecd7f43b3e4e97e9e355c0bd501faa2f0df9678eb0e0 + name: libX11-xcb + evr: 1.7.0-11.el9 + sourcerpm: libX11-1.7.0-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libXau-1.0.9-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 34407 + checksum: sha256:e9e34ac759a87357a5fa3d4155985a17b56967b3e036c7a438cc4314c0c23456 + name: libXau + evr: 1.0.9-8.el9 + sourcerpm: libXau-1.0.9-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libXcomposite-0.4.5-7.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 26886 + checksum: sha256:4ec79c9f9f57f15de2ff76ee25b51c6cc316120c239cf377556332c287b6eb6c + name: libXcomposite + evr: 0.4.5-7.el9 + sourcerpm: libXcomposite-0.4.5-7.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libXdamage-1.1.5-7.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25595 + checksum: sha256:d54cde0bf015abe90715e6b7c3743b812023f2c239ae4c51bda3c8d5263e742c + name: libXdamage + evr: 1.1.5-7.el9 + sourcerpm: libXdamage-1.1.5-7.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libXext-1.3.4-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 41839 + checksum: sha256:f72c5e42c9fac94f410cb0f58fcf6ce718575b6703e4f8adf83b2a4860a706dc + name: libXext + evr: 1.3.4-8.el9 + sourcerpm: libXext-1.3.4-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libXfixes-5.0.3-16.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 22130 + checksum: sha256:0650d7bdd61c99c4fefaf21d8232ab8423516db3303e3c04aa6feaf630c4129b + name: libXfixes + evr: 5.0.3-16.el9 + sourcerpm: libXfixes-5.0.3-16.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libXft-2.3.3-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 64960 + checksum: sha256:166611bddbd3efbe531785560adc240c446739fa14f1b644b5dd67bd1730633b + name: libXft + evr: 2.3.3-8.el9 + sourcerpm: libXft-2.3.3-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libXi-1.7.10-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 40848 + checksum: sha256:a815f53febda8b646f988e797739397214fedf1d96e47c58e1000dd5ea7cb75a + name: libXi + evr: 1.7.10-8.el9 + sourcerpm: libXi-1.7.10-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libXrandr-1.5.2-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 29996 + checksum: sha256:230027b55967fee03892e064aef8b6bebf6867bfe55ab8af2219b88cc8f2cfbe + name: libXrandr + evr: 1.5.2-8.el9 + sourcerpm: libXrandr-1.5.2-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libXrender-0.9.10-16.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 29483 + checksum: sha256:06920454ec27e62fd482834d72ef6a6d3b3454ef111e5e7843355ed3d0ae20b5 + name: libXrender + evr: 0.9.10-16.el9 + sourcerpm: libXrender-0.9.10-16.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libXtst-1.2.3-16.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 23456 + checksum: sha256:024df36ca4dd80bd96d8dfa188b77ef1c075d6264f9ea7fa7c71ee49e65da2f3 + name: libXtst + evr: 1.2.3-16.el9 + sourcerpm: libXtst-1.2.3-16.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libasan-11.5.0-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 408716 + checksum: sha256:247090a8241441529d2c4dc5932ddc1c1075418ba9618d4b8b5e65d1e2aef7b7 + name: libasan + evr: 11.5.0-11.el9 + sourcerpm: gcc-11.5.0-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libdatrie-0.2.13-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 34835 + checksum: sha256:f804d5f2fd27858d39f1a1c4e76864702b1d24e8d49df77737a547d80d1ee61f + name: libdatrie + evr: 0.2.13-4.el9 + sourcerpm: libdatrie-0.2.13-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libdrm-2.4.123-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 141361 + checksum: sha256:fb270eab17ee096ac1d72ba39f2e5abbc60749fbfc33400c62507c6c6580e484 + name: libdrm + evr: 2.4.123-2.el9 + sourcerpm: libdrm-2.4.123-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libmpc-1.2.1-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 67120 + checksum: sha256:3763354a5f45d886f9976eec20eb34f8afc2144c69ffba07de546f2820893c70 + name: libmpc + evr: 1.2.1-4.el9 + sourcerpm: libmpc-1.2.1-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libnet-1.2-7.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 62963 + checksum: sha256:543b0664c576f91ae8f5563f04c2cb3de65ff514d5ed658ac825aa4d98e860dd + name: libnet + evr: 1.2-7.el9 + sourcerpm: libnet-1.2-7.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libnsl2-2.0.0-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 32849 + checksum: sha256:5b38c8b55dbfc549271617e132d2d98ceaa9ca30711f73edd8b39a6af689de27 + name: libnsl2 + evr: 2.0.0-1.el9 + sourcerpm: libnsl2-2.0.0-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libslirp-4.4.0-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 70971 + checksum: sha256:12fa772c2e3905244fd6cc9971e2592c12a547ac3e4df66f5f0c6ef1e670067d + name: libslirp + evr: 4.4.0-8.el9 + sourcerpm: libslirp-4.4.0-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libstdc++-devel-11.5.0-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 2519490 + checksum: sha256:5b1e4364e2eb59e9443e5014369e2f40f0ab25289ecf8b6243dfb617ea842787 + name: libstdc++-devel + evr: 11.5.0-11.el9 + sourcerpm: gcc-11.5.0-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libthai-0.1.28-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 215793 + checksum: sha256:211edfbccb7c4cf828a1e078a9b4802f60b783f8e881696efb6cbf018b81cf30 + name: libthai + evr: 0.1.28-8.el9 + sourcerpm: libthai-0.1.28-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libubsan-11.5.0-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 178723 + checksum: sha256:03aa0392d5d7a442ee81963eb659b011446e6fcd5904c7b4c2850acdb81e22dc + name: libubsan + evr: 11.5.0-11.el9 + sourcerpm: gcc-11.5.0-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libuv-1.42.0-2.el9_4.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 150129 + checksum: sha256:4dc8a40da74e0f9823356460ee11f183c70f382953700fffef0c448198a677cc + name: libuv + evr: 1:1.42.0-2.el9_4 + sourcerpm: libuv-1.42.0-2.el9_4.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libwayland-server-1.21.0-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 43440 + checksum: sha256:92b77ddf83bcb150fc5f5aa2245b684975e47926b7ce83f15fa71c69fe2675b0 + name: libwayland-server + evr: 1.21.0-1.el9 + sourcerpm: wayland-1.21.0-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libxcb-1.13.1-9.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 252623 + checksum: sha256:d98d6099494f737daa25cea2987a784f1bd2ba54293c5259dbcb326f64e7bbce + name: libxcb + evr: 1.13.1-9.el9 + sourcerpm: libxcb-1.13.1-9.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libxcrypt-compat-4.4.18-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 98179 + checksum: sha256:5df14ea698ed4052291e47e344684515aa04080ec101f370d89f05a01b287867 + name: libxcrypt-compat + evr: 4.4.18-3.el9 + sourcerpm: libxcrypt-4.4.18-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libxcrypt-devel-4.4.18-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 33051 + checksum: sha256:9d621f33df35b9c274b8d65457d6c67fc1522b6c62cf7b2341a4a99f39a93507 + name: libxcrypt-devel + evr: 4.4.18-3.el9 + sourcerpm: libxcrypt-4.4.18-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libxkbcommon-1.0.3-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 136851 + checksum: sha256:af93eeb846af52361aaf47cfff75b61534d81e63b41ed9cc595c43ed4406446a + name: libxkbcommon + evr: 1.0.3-4.el9 + sourcerpm: libxkbcommon-1.0.3-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/libxshmfence-1.3-10.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14163 + checksum: sha256:6c4437d831a2fad7d13ff64b8fb978031d19b8ad15da3dd479e864fea745a7b5 + name: libxshmfence + evr: 1.3-10.el9 + sourcerpm: libxshmfence-1.3-10.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/llvm-filesystem-20.1.8-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 9320 + checksum: sha256:e92a53ac2ca3dfad1c286f67b86fd80c1ded3e7714a745c7222d8012575a7180 + name: llvm-filesystem + evr: 20.1.8-3.el9 + sourcerpm: llvm-20.1.8-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/llvm-libs-20.1.8-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 29379083 + checksum: sha256:ab5ca15a0edd98c358879337c4983f33b433bb7ca39f3252ec69d1523e56065d + name: llvm-libs + evr: 20.1.8-3.el9 + sourcerpm: llvm-20.1.8-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/l/lua-srpm-macros-1-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 10476 + checksum: sha256:64946edfd54f7d4668f7fdcb7be961ceaca8cff7d0bef438bef4e2498ccf3cd6 + name: lua-srpm-macros + evr: 1-6.el9 + sourcerpm: lua-rpm-macros-1-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/m/mesa-dri-drivers-25.0.7-3.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 8598798 + checksum: sha256:02f6181e419d509f1a01862ba9cb5fd5dda0b2fa75f5003b67dc1da98e1d28bd + name: mesa-dri-drivers + evr: 25.0.7-3.el9_7 + sourcerpm: mesa-25.0.7-3.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/m/mesa-filesystem-25.0.7-3.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 11015 + checksum: sha256:ade97d481533e7b58a02517018e0fc86f858c393697ea571c961e2dd77e8cf68 + name: mesa-filesystem + evr: 25.0.7-3.el9_7 + sourcerpm: mesa-25.0.7-3.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/m/mesa-libgbm-25.0.7-3.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 16935 + checksum: sha256:71f955328b5a79d5e94513d47928d5cecb235907682b61b364dffeda236b74ff + name: mesa-libgbm + evr: 25.0.7-3.el9_7 + sourcerpm: mesa-25.0.7-3.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/m/mpdecimal-2.5.1-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 92062 + checksum: sha256:6bdb76d4bb510b0e435698a46a09d0849fb07b2f53c00239e8989d8f141d1d14 + name: mpdecimal + evr: 2.5.1-3.el9 + sourcerpm: mpdecimal-2.5.1-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/n/nspr-4.36.0-4.el9_4.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 132948 + checksum: sha256:17124daa5425a70b9573ff2ac479043d42174f9197f656c549307d31843c75c1 + name: nspr + evr: 4.36.0-4.el9_4 + sourcerpm: nss-3.112.0-4.el9_4.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/n/nss-3.112.0-4.el9_4.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 716093 + checksum: sha256:b604959ea1defcc76f55b2fd7a2299300dec998108b0c1cb80be0efa845e8572 + name: nss + evr: 3.112.0-4.el9_4 + sourcerpm: nss-3.112.0-4.el9_4.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/n/nss-softokn-3.112.0-4.el9_4.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 399692 + checksum: sha256:35197e3cac43476bf14b17b89c95be12209af7fa193ae3807ec73ed88a0f4d5a + name: nss-softokn + evr: 3.112.0-4.el9_4 + sourcerpm: nss-3.112.0-4.el9_4.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/n/nss-softokn-freebl-3.112.0-4.el9_4.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 424604 + checksum: sha256:131a636b10bdb8f94f7918e461ec18d37d81e7f5bf97b307c60c482db4d31034 + name: nss-softokn-freebl + evr: 3.112.0-4.el9_4 + sourcerpm: nss-3.112.0-4.el9_4.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/n/nss-sysinit-3.112.0-4.el9_4.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 18002 + checksum: sha256:89d455cb36e1b3b059eabc502f94c21161219f0570668068efba70d5df2c0719 + name: nss-sysinit + evr: 3.112.0-4.el9_4 + sourcerpm: nss-3.112.0-4.el9_4.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/n/nss-util-3.112.0-4.el9_4.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 88331 + checksum: sha256:f15db365cf300f60b6ae9e0730c01015bd70d217ea656161daa63f1a75d4ea1e + name: nss-util + evr: 3.112.0-4.el9_4 + sourcerpm: nss-3.112.0-4.el9_4.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/n/nss_wrapper-libs-1.1.13-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 42262 + checksum: sha256:e6b606e3adb3c3bfc1b1855616a0826a61e64b66e948011dedd77031e265c02e + name: nss_wrapper-libs + evr: 1.1.13-1.el9 + sourcerpm: nss_wrapper-1.1.13-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/o/ocaml-srpm-macros-6-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 9270 + checksum: sha256:783710ad3710e594275fb23d280f030a68279927ca82ce38787f4c93971eaa88 + name: ocaml-srpm-macros + evr: 6-6.el9 + sourcerpm: ocaml-srpm-macros-6-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/o/openblas-srpm-macros-2-11.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 8807 + checksum: sha256:091911db0712bfe9b03952046191438bdd9b1080558e0c1014611d39aa80571d + name: openblas-srpm-macros + evr: 2-11.el9 + sourcerpm: openblas-srpm-macros-2-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/o/openssl-devel-3.5.1-4.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 4996902 + checksum: sha256:a250fae31cced54a51c0c4aacdd44855044652eb39f4141e23fe197d2528ff0b + name: openssl-devel + evr: 1:3.5.1-4.el9_7 + sourcerpm: openssl-3.5.1-4.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/pango-1.48.7-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 307718 + checksum: sha256:761ca616ef262bf11bb478d94dec087292bf2397668ea19d31c2d42636525da2 + name: pango + evr: 1.48.7-3.el9 + sourcerpm: pango-1.48.7-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-5.32.1-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 8405 + checksum: sha256:334764f25cb0e1a7b4efcc8b6d74cbee0e815c9d45148556ec6359762b588037 + name: perl + evr: 4:5.32.1-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Algorithm-Diff-1.2010-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 52041 + checksum: sha256:3d252e247a41978a10faef66931ac5fb2525c7fa708d8caa537d368ef5ba62ce + name: perl-Algorithm-Diff + evr: 1.2010-4.el9 + sourcerpm: perl-Algorithm-Diff-1.2010-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Archive-Tar-2.38-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 77744 + checksum: sha256:5cf97230d350543cdf34f379dc04e1383f89591ad76768b5a2738b474cdec404 + name: perl-Archive-Tar + evr: 2.38-6.el9 + sourcerpm: perl-Archive-Tar-2.38-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Archive-Zip-1.68-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 118766 + checksum: sha256:2237a7cdfa30cda2ad475cb6ee5796f1e4cafa07e8760e08bca8d252cd6eb51d + name: perl-Archive-Zip + evr: 1.68-6.el9 + sourcerpm: perl-Archive-Zip-1.68-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Attribute-Handlers-1.01-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 27731 + checksum: sha256:95ee8b22f5c962b56b95dc3e74280ed1471c17bb2031995d3efd431478e40aac + name: perl-Attribute-Handlers + evr: 1.01-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-AutoLoader-5.74-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 21344 + checksum: sha256:b4557d853be8048aaefde5c4083c43fa34375e224731e93e584e4e3d5db46ac3 + name: perl-AutoLoader + evr: 5.74-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-AutoSplit-5.74-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 21714 + checksum: sha256:de53b7057da078864d27f4acddf37594d40ee4d5f710d129c40cfb5c6097ceb0 + name: perl-AutoSplit + evr: 5.74-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-B-1.80-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 184600 + checksum: sha256:f7f82b51c586f075eff5f7fb04b96827425974effee364199844dfdc9b3f5a9b + name: perl-B + evr: 1.80-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Benchmark-1.23-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 27055 + checksum: sha256:690cc6ca69fd267f025ddc18116d8f10dff6693645ff949820c83ed7776aa454 + name: perl-Benchmark + evr: 1.23-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-CPAN-2.29-5.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 589480 + checksum: sha256:a46e7bb747f0b5dc26d8eda788b98492576048f5df271d070c35118f8d980b9d + name: perl-CPAN + evr: 2.29-5.el9_6 + sourcerpm: perl-CPAN-2.29-5.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-CPAN-DistnameInfo-0.12-23.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 17060 + checksum: sha256:35687783ded44b01c37af59f66499b42e10df074c36608fc3f84bd4ae082c852 + name: perl-CPAN-DistnameInfo + evr: 0.12-23.el9 + sourcerpm: perl-CPAN-DistnameInfo-0.12-23.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-CPAN-Meta-2.150010-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 210745 + checksum: sha256:ec35026baabe720d7c880f896f84271f0c408c56d3fea6d7c5d22580ac175690 + name: perl-CPAN-Meta + evr: 2.150010-460.el9 + sourcerpm: perl-CPAN-Meta-2.150010-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-CPAN-Meta-Requirements-2.140-461.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 35205 + checksum: sha256:eca17976f76fd8d31eda995a9ced2d813c1c94b9efafa1a83454fb120be62784 + name: perl-CPAN-Meta-Requirements + evr: 2.140-461.el9 + sourcerpm: perl-CPAN-Meta-Requirements-2.140-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-CPAN-Meta-YAML-0.018-461.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 29542 + checksum: sha256:b21eb298e56bc6623257cae1434198789e80ab92b818af4e29514a7bbc6f5910 + name: perl-CPAN-Meta-YAML + evr: 0.018-461.el9 + sourcerpm: perl-CPAN-Meta-YAML-0.018-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Carp-1.50-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 32039 + checksum: sha256:c51470a55b1dce42f944bdea06a10469f5a42d55be898a33c2fed3a99843fbb2 + name: perl-Carp + evr: 1.50-460.el9 + sourcerpm: perl-Carp-1.50-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Class-Struct-0.66-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 22220 + checksum: sha256:d35ff343bd718fbd8531995a8aedb866c6d37fac6a688fcf9a458017781bf058 + name: perl-Class-Struct + evr: 0.66-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Compress-Bzip2-2.28-5.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 74691 + checksum: sha256:799c6cca489942f0c79b50d749d4b4b7aec7e8272b11ee9f7aa3e90d88e5a01b + name: perl-Compress-Bzip2 + evr: 2.28-5.el9 + sourcerpm: perl-Compress-Bzip2-2.28-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Compress-Raw-Bzip2-2.101-5.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 38610 + checksum: sha256:3b007ee0457d21868c77c8f003403e17eeabb668aadbc6d25575203f6e9087c8 + name: perl-Compress-Raw-Bzip2 + evr: 2.101-5.el9 + sourcerpm: perl-Compress-Raw-Bzip2-2.101-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Compress-Raw-Lzma-2.101-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 54793 + checksum: sha256:efe198290b085c6e4eb4cfb426704f1222a4bd1f3cbbecfb636a5fa252ec84b4 + name: perl-Compress-Raw-Lzma + evr: 2.101-3.el9 + sourcerpm: perl-Compress-Raw-Lzma-2.101-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Compress-Raw-Zlib-2.101-5.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 64690 + checksum: sha256:989520079f36b6281e982ed6de02c8024e5d5696df1fc838eae6b36e74f04805 + name: perl-Compress-Raw-Zlib + evr: 2.101-5.el9 + sourcerpm: perl-Compress-Raw-Zlib-2.101-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Config-Extensions-0.03-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 12128 + checksum: sha256:86695c36cd0bd3516cdb72d9f30ddec6aef47eb48432a76b71d15372e86549a6 + name: perl-Config-Extensions + evr: 0.03-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Config-Perl-V-0.33-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 24943 + checksum: sha256:7ec321ecb6f37b6be09ad182cb66fdeee9f12138f75fc48858bde2177c358d1d + name: perl-Config-Perl-V + evr: 0.33-4.el9 + sourcerpm: perl-Config-Perl-V-0.33-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-DBM_Filter-0.06-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 32009 + checksum: sha256:2ea4092322228a400fe8ad6c19302878e46771cbc1a2d623371c49732ad5e018 + name: perl-DBM_Filter + evr: 0.06-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-DB_File-1.855-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 85113 + checksum: sha256:2cbdfb8cfd2375744b39383311a5e6b590b0773c71eb5bb4f14b3cfcce70eb87 + name: perl-DB_File + evr: 1.855-4.el9 + sourcerpm: perl-DB_File-1.855-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Data-Dumper-2.174-462.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 58773 + checksum: sha256:0ac738aff66419ff8853d2e2b8d2fe231b90de129060ecc0390bca9c6c680e0d + name: perl-Data-Dumper + evr: 2.174-462.el9 + sourcerpm: perl-Data-Dumper-2.174-462.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Data-OptList-0.110-17.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 30694 + checksum: sha256:1455a3e90116f504008f8d27db57acb65c3389440dc6e2d605f54bf40b009a10 + name: perl-Data-OptList + evr: 0.110-17.el9 + sourcerpm: perl-Data-OptList-0.110-17.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Data-Section-0.200007-14.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 28030 + checksum: sha256:9fb57b4fbcfea93de114505082261abd97f576cf78e1a205c255d69d8eb6babf + name: perl-Data-Section + evr: 0.200007-14.el9 + sourcerpm: perl-Data-Section-0.200007-14.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Devel-PPPort-3.62-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 217292 + checksum: sha256:b9391222f4cef0811b4e99c73b03c22b19fdb99ea4959bbd412fdb2f6fd627d0 + name: perl-Devel-PPPort + evr: 3.62-4.el9 + sourcerpm: perl-Devel-PPPort-3.62-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Devel-Peek-1.28-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 31959 + checksum: sha256:93e9bb94fe8ce391149ce2f0fb6fb90851d6f16b9c2c0dd1f63c47cbb129b9d5 + name: perl-Devel-Peek + evr: 1.28-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Devel-SelfStubber-1.06-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14231 + checksum: sha256:703faaef6ca5a65ed4c3cbdb256da9612eed842bd77620a2d527ca8d0fa8a7d2 + name: perl-Devel-SelfStubber + evr: 1.06-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Devel-Size-0.83-10.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 34781 + checksum: sha256:736d3ec0babbdea08633d4bd4bd9121e906e916eb5ac5527d093814a9925c57d + name: perl-Devel-Size + evr: 0.83-10.el9 + sourcerpm: perl-Devel-Size-0.83-10.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Digest-1.19-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 29409 + checksum: sha256:e0b8633f818467f9e1bf46b9c0012af7bf8a309ac64e903a2a9faf3fae7705f9 + name: perl-Digest + evr: 1.19-4.el9 + sourcerpm: perl-Digest-1.19-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Digest-MD5-2.58-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 40515 + checksum: sha256:6eeb8e68cfbd7cca24d6132be8b947de99ab26cdb79d6021e9e6efeb36b67e0b + name: perl-Digest-MD5 + evr: 2.58-4.el9 + sourcerpm: perl-Digest-MD5-2.58-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Digest-SHA-6.02-461.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 67396 + checksum: sha256:ed614bb03e34d4bf5b87de4fc9051911bf2e6080921cdaece18e3f826e6b1319 + name: perl-Digest-SHA + evr: 1:6.02-461.el9 + sourcerpm: perl-Digest-SHA-6.02-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Digest-SHA1-2.13-34.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 57513 + checksum: sha256:59ecc753d4548f1530d4951475df7f4c703c12519e9488988d1e35b618e79db4 + name: perl-Digest-SHA1 + evr: 2.13-34.el9 + sourcerpm: perl-Digest-SHA1-2.13-34.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-DirHandle-1.05-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 12337 + checksum: sha256:2c79a7d1c783c4eb4305e7b15c885c7afc5e2612ab4b1245f4f9ef8dcff4804f + name: perl-DirHandle + evr: 1.05-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Dumpvalue-2.27-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 18343 + checksum: sha256:7659f1dab24e96da4be5624f90a3ac04b383071a96a32e185b196bc527377e1c + name: perl-Dumpvalue + evr: 2.27-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-DynaLoader-1.47-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25913 + checksum: sha256:cddb0b2e16a10b80b6b3ffd6409b210aeba404acc589a958f280cac24d12403f + name: perl-DynaLoader + evr: 1.47-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Encode-3.08-462.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 1825541 + checksum: sha256:72c92a12c67d05f9aa7f5670ccb1b743612d8fa946775feada28e199a31db0a9 + name: perl-Encode + evr: 4:3.08-462.el9 + sourcerpm: perl-Encode-3.08-462.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Encode-Locale-1.05-21.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 21500 + checksum: sha256:58afacf30f4a476f4ba6646a6419122d2a729bd59880611b631527502dcdc269 + name: perl-Encode-Locale + evr: 1.05-21.el9 + sourcerpm: perl-Encode-Locale-1.05-21.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Encode-devel-3.08-462.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 45137 + checksum: sha256:bc3e56fb27a8e5947e2fc4bb705c06b10f1dcab42f411cd300e2137ad8f07b35 + name: perl-Encode-devel + evr: 4:3.08-462.el9 + sourcerpm: perl-Encode-3.08-462.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-English-1.11-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 13497 + checksum: sha256:04a48f25493933a3ae04eac446efefa1d4c092e323db1561e7653e4f570987da + name: perl-English + evr: 1.11-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Env-1.04-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 22160 + checksum: sha256:92fb2287084a3c88a6b2d2bd300d1279251cec59156c1a9a3e0fa8fda6c546b2 + name: perl-Env + evr: 1.04-460.el9 + sourcerpm: perl-Env-1.04-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Errno-1.30-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14826 + checksum: sha256:be31dbcae3e58ea4094719bf3882aa3c35599a152341cb48d2aec1aba787d877 + name: perl-Errno + evr: 1.30-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Error-0.17029-7.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 47552 + checksum: sha256:17cecf9160050d4709f4817eceba32c637e10d8bc87487a754e8f1764b1e8b6a + name: perl-Error + evr: 1:0.17029-7.el9 + sourcerpm: perl-Error-0.17029-7.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Exporter-5.74-461.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 34509 + checksum: sha256:888e14ebd70c2b69150873236b0df7c3a29c9edd488fd8488527c179e798b409 + name: perl-Exporter + evr: 5.74-461.el9 + sourcerpm: perl-Exporter-5.74-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-ExtUtils-CBuilder-0.280236-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 54624 + checksum: sha256:1f03cdbebc6f7b1b877e170363ab4906d194aa5edbaee17df724ca7ffc972011 + name: perl-ExtUtils-CBuilder + evr: 1:0.280236-4.el9 + sourcerpm: perl-ExtUtils-CBuilder-0.280236-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-ExtUtils-Command-7.60-3.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 16489 + checksum: sha256:642338ff95d94e2c6e4b7de47cda7b772d1fbc204b2869925bd0326fcc4b0e26 + name: perl-ExtUtils-Command + evr: 2:7.60-3.el9 + sourcerpm: perl-ExtUtils-MakeMaker-7.60-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-ExtUtils-Constant-0.25-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 47285 + checksum: sha256:f10abe9f8d9f26c2ef2f278baf37a98e7a654cf192521d72bb797a3ef2131698 + name: perl-ExtUtils-Constant + evr: 0.25-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-ExtUtils-Embed-1.35-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 17684 + checksum: sha256:10fa80d9248c159ad12cce5222d3d1b82953ddfc7c4123ca0b14b5d5340e1421 + name: perl-ExtUtils-Embed + evr: 1.35-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-ExtUtils-Install-2.20-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 48441 + checksum: sha256:2533a1d97d45dc79c07cc51409c34f188c042757a2811b04dc16892ae2c7443e + name: perl-ExtUtils-Install + evr: 2.20-4.el9 + sourcerpm: perl-ExtUtils-Install-2.20-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-ExtUtils-MM-Utils-7.60-3.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14176 + checksum: sha256:51d7199c10886580e6cbff82546a34f26b2d5b894dcc338e28b1b55938f50ae3 + name: perl-ExtUtils-MM-Utils + evr: 2:7.60-3.el9 + sourcerpm: perl-ExtUtils-MakeMaker-7.60-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-ExtUtils-MakeMaker-7.60-3.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 311769 + checksum: sha256:2286e5004cb6436b7ac8dd436c91b4e1d36c18b9385d07a24fc167c930c9dee8 + name: perl-ExtUtils-MakeMaker + evr: 2:7.60-3.el9 + sourcerpm: perl-ExtUtils-MakeMaker-7.60-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-ExtUtils-Manifest-1.73-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 37829 + checksum: sha256:f7cf7fd259fb8a6c27537dc98e1ed4923b26c2d8d8fd6b789e166ac104cac5bc + name: perl-ExtUtils-Manifest + evr: 1:1.73-4.el9 + sourcerpm: perl-ExtUtils-Manifest-1.73-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-ExtUtils-Miniperl-1.09-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 15171 + checksum: sha256:6b00fb367aea4654a14495802d46daa87d2e51ee203a8b0e207edae507773edc + name: perl-ExtUtils-Miniperl + evr: 1.09-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-ExtUtils-ParseXS-3.40-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 194711 + checksum: sha256:bb7e4bcfe24371bbe202a9fa704360a7bbc5d9f4103ec36e6e571da6eb76a186 + name: perl-ExtUtils-ParseXS + evr: 1:3.40-460.el9 + sourcerpm: perl-ExtUtils-ParseXS-3.40-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Fcntl-1.13-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 20270 + checksum: sha256:2dcec56d48812e21c75b6e23a5ee613e7b68aa0d6136e5f9f37bc841592bae97 + name: perl-Fcntl + evr: 1.13-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-File-Basename-2.85-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 17211 + checksum: sha256:e39dcc13a24d3b5a7ba11288e63b22a055a8e1061743b8a409858d98ebd794e4 + name: perl-File-Basename + evr: 2.85-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-File-Compare-1.100.600-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 13166 + checksum: sha256:0dd800746b848a84fce73dcef035c4241e6aa90262c821a0ad295a7756ca1a4c + name: perl-File-Compare + evr: 1.100.600-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-File-Copy-2.34-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 20143 + checksum: sha256:165816db79e88e63c96bdafaf0c3bfee95b6feedb78e40da3a6dcc196a15a186 + name: perl-File-Copy + evr: 2.34-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-File-DosGlob-1.12-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 19467 + checksum: sha256:e5d1f8546e60d9b815667a44d9140bb3270cbf5d46d8fc9e8d3ca148e9af98db + name: perl-File-DosGlob + evr: 1.12-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-File-Fetch-1.00-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 33372 + checksum: sha256:8c46735b0f703cd53fbaf915423b63baf98701d81406b30b84e42e53a0efbb6e + name: perl-File-Fetch + evr: 1.00-4.el9 + sourcerpm: perl-File-Fetch-1.00-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-File-Find-1.37-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25551 + checksum: sha256:002ec6d107fff6949f1a88965fb31b0a4efe6ce663395ab47e0cb939e3920c08 + name: perl-File-Find + evr: 1.37-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-File-HomeDir-1.006-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 65857 + checksum: sha256:68f539b86abb7ab910286188ad3742f4338330f3246f6da07cb4ca5c83d8e80f + name: perl-File-HomeDir + evr: 1.006-4.el9 + sourcerpm: perl-File-HomeDir-1.006-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-File-Path-2.18-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 38466 + checksum: sha256:d1df5e509c10365eaa329a0b97e38bc2667874240d3942195eb6ce7a88985a41 + name: perl-File-Path + evr: 2.18-4.el9 + sourcerpm: perl-File-Path-2.18-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-File-Temp-0.231.100-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 64150 + checksum: sha256:0a81b062391ac6dac3ec28ff1e435001dd798cf1ff19fdb52cfe1e0720d5de03 + name: perl-File-Temp + evr: 1:0.231.100-4.el9 + sourcerpm: perl-File-Temp-0.231.100-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-File-Which-1.23-10.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 24163 + checksum: sha256:80a41f9f823312dca2c9fed97f6568a88957572277b75920fb76f20a60902e7f + name: perl-File-Which + evr: 1.23-10.el9 + sourcerpm: perl-File-Which-1.23-10.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-File-stat-1.09-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 17117 + checksum: sha256:b235134c1961e9b57f86bddc02e874607c17c155d2aa5ad78cc3ed9c8fd9c95b + name: perl-File-stat + evr: 1.09-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-FileCache-1.10-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14640 + checksum: sha256:0b0ab9a79395bb7a926ec674b66f42845580903f514c511da156ffd497205f42 + name: perl-FileCache + evr: 1.10-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-FileHandle-2.03-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 15452 + checksum: sha256:c2139abdb9b3335f592aa2835ef6d6fcde1e89232eb3d3c5a15f7cc1d0829f8d + name: perl-FileHandle + evr: 2.03-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Filter-1.60-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 97366 + checksum: sha256:723bcc532676617221a0720fb91feeea644bde3b413a38c16e287cc36ace166f + name: perl-Filter + evr: 2:1.60-4.el9 + sourcerpm: perl-Filter-1.60-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Filter-Simple-0.96-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 29899 + checksum: sha256:080a1c4c16acddca179c0e2ab8120fe01e374bb86d0a950923a610e50fabfc00 + name: perl-Filter-Simple + evr: 0.96-460.el9 + sourcerpm: perl-Filter-Simple-0.96-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-FindBin-1.51-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 13872 + checksum: sha256:44f9c97a57dafae68f8183d1ca2682a8308b68f1a399ab333a3dd52836bb6b17 + name: perl-FindBin + evr: 1.51-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-GDBM_File-1.18-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 22062 + checksum: sha256:790bdbbd82ee60e4da98866d6c584c7ec3f730c0dd6eb261e7fcd429f1435b32 + name: perl-GDBM_File + evr: 1.18-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Getopt-Long-2.52-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 65144 + checksum: sha256:055fe33d2a7a421c1de8902b86a2f246ef6457774239d04b604f2d0ec6a00a14 + name: perl-Getopt-Long + evr: 1:2.52-4.el9 + sourcerpm: perl-Getopt-Long-2.52-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Getopt-Std-1.12-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 15551 + checksum: sha256:49bd8381823d680d17c37f3bebfd97dd92bfbf59e8019f15c7606f41dca02a7d + name: perl-Getopt-Std + evr: 1.12-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Git-2.47.3-1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 38720 + checksum: sha256:d0b4a24233ba8a6eb0966b3b6d8d52dfc5c33577fc8033e693f9aa181f3e2330 + name: perl-Git + evr: 2.47.3-1.el9_6 + sourcerpm: git-2.47.3-1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-HTTP-Tiny-0.076-462.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 58720 + checksum: sha256:696f388a50f5be81596757d68251067449203e1c126ee8c23a7c5a0ad1ac5418 + name: perl-HTTP-Tiny + evr: 0.076-462.el9 + sourcerpm: perl-HTTP-Tiny-0.076-462.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Hash-Util-0.23-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 34401 + checksum: sha256:2654a95b9ab0669d739ebbf6ef1c7469dd6a1947af648e8c8d8c29aab92608e4 + name: perl-Hash-Util + evr: 0.23-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Hash-Util-FieldHash-1.20-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 38300 + checksum: sha256:1f797de78b5d8b994210126debb29a3aed4264f7fbbf763733772b988f751a3e + name: perl-Hash-Util-FieldHash + evr: 1.20-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-I18N-Collate-1.02-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14091 + checksum: sha256:82a82eb1e6765c7b4ec245a624f34e73d6a7b2c9c15a90007bcbb64113332793 + name: perl-I18N-Collate + evr: 1.02-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-I18N-LangTags-0.44-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 55212 + checksum: sha256:f0849fe10730cf503bebfbd82e3dfb39d64ef87667ee9a1a073df8fd231878d6 + name: perl-I18N-LangTags + evr: 0.44-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-I18N-Langinfo-0.19-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 22366 + checksum: sha256:9a2b8266d39fb9307edd88e26335fe39cd5526c7ae2c24ee291e539dafccceb0 + name: perl-I18N-Langinfo + evr: 0.19-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-IO-1.43-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 90373 + checksum: sha256:eb00f890b53bb5335be0d35994869e8855ad62668ef5199688ab951ffd8c76b6 + name: perl-IO + evr: 1.43-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-IO-Compress-2.102-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 280708 + checksum: sha256:ce8f2004395442fe663cb9efc56f9af2102c75d746f2ce393e40af8a26ac6871 + name: perl-IO-Compress + evr: 2.102-4.el9 + sourcerpm: perl-IO-Compress-2.102-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-IO-Compress-Lzma-2.101-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 84153 + checksum: sha256:bda4c005c09e886ce2273a3f418f0cd92521ed0b8fdcdaca7b9fc0026f2a6c7b + name: perl-IO-Compress-Lzma + evr: 2.101-4.el9 + sourcerpm: perl-IO-Compress-Lzma-2.101-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-IO-Socket-IP-0.41-5.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 46457 + checksum: sha256:4c80030ce256198584c4a58171b9dfe3adb4a8d7593110229e40ece76786a32f + name: perl-IO-Socket-IP + evr: 0.41-5.el9 + sourcerpm: perl-IO-Socket-IP-0.41-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-IO-Socket-SSL-2.073-2.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 226003 + checksum: sha256:b52d5b6a5081e3c142b2364b3f1ef58f569b39052df045f24363de9bb4f9cfd2 + name: perl-IO-Socket-SSL + evr: 2.073-2.el9 + sourcerpm: perl-IO-Socket-SSL-2.073-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-IO-Zlib-1.11-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 21809 + checksum: sha256:87d7b757a570fb53d72b2dd29558c2b4a8ff33196a80ad10f76999325acaec07 + name: perl-IO-Zlib + evr: 1:1.11-4.el9 + sourcerpm: perl-IO-Zlib-1.11-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-IPC-Cmd-1.04-461.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 42803 + checksum: sha256:353b04bed7229ce354a4d63ba213c4e18fe739c4732061957946b84853d5b3ce + name: perl-IPC-Cmd + evr: 2:1.04-461.el9 + sourcerpm: perl-IPC-Cmd-1.04-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-IPC-Open3-1.21-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 22968 + checksum: sha256:7ea36dcf28da3fc7250eb041ba19f99c87543c0870f5da67da614f5ca8d18b92 + name: perl-IPC-Open3 + evr: 1.21-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-IPC-SysV-2.09-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 48827 + checksum: sha256:4b33d8a7c5ae11c075ca84de9aa2ba5c74e5a021f9e69ddee1093e6b1970815c + name: perl-IPC-SysV + evr: 2.09-4.el9 + sourcerpm: perl-IPC-SysV-2.09-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-IPC-System-Simple-1.30-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 44255 + checksum: sha256:35792b1aa241cb17b881b1e44940bc295329a575a2a2d183757ef1d757062465 + name: perl-IPC-System-Simple + evr: 1.30-6.el9 + sourcerpm: perl-IPC-System-Simple-1.30-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Importer-0.026-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 42526 + checksum: sha256:1afb9008ad841ba4fc207af8ec814d06bd78e958cd2b03089c7b82c71a311060 + name: perl-Importer + evr: 0.026-4.el9 + sourcerpm: perl-Importer-0.026-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-JSON-PP-4.06-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 70596 + checksum: sha256:17f547d40976904eb59449f0cdec890e34632a28a083fc46157ac1c67e9e3494 + name: perl-JSON-PP + evr: 1:4.06-4.el9 + sourcerpm: perl-JSON-PP-4.06-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Locale-Maketext-1.29-461.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 101003 + checksum: sha256:97cfef112a414049f85495cbec570b8c63d7260410f72cb2e1480a67fc7e9e68 + name: perl-Locale-Maketext + evr: 1.29-461.el9 + sourcerpm: perl-Locale-Maketext-1.29-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Locale-Maketext-Simple-0.21-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 17604 + checksum: sha256:206fca125c5520e6e0723c6f8ee4c9b56d5bec95c7d71e4b54fdad36ddf20980 + name: perl-Locale-Maketext-Simple + evr: 1:0.21-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-MIME-Base64-3.16-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 35080 + checksum: sha256:8fd71ba1ada7ab6b0b83400716671139a7adbf01d9bfed881398497170ccb308 + name: perl-MIME-Base64 + evr: 3.16-4.el9 + sourcerpm: perl-MIME-Base64-3.16-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-MIME-Charset-1.012.2-15.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 54488 + checksum: sha256:cf481c2178bc2a55c5b455749f38f4f96ee71f32dcf458c34d4f1bbcb996feca + name: perl-MIME-Charset + evr: 1.012.2-15.el9 + sourcerpm: perl-MIME-Charset-1.012.2-15.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-MRO-Compat-0.13-15.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 22804 + checksum: sha256:7921d8fd6d4dacdfb4a286fe4355516f20d660681abb49af9983f7527429e351 + name: perl-MRO-Compat + evr: 0.13-15.el9 + sourcerpm: perl-MRO-Compat-0.13-15.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Math-BigInt-1.9998.18-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 198900 + checksum: sha256:b90555cc3da95e314e931de2348d7c89da7c16023fb9399cdfbbcf9f1aeade7d + name: perl-Math-BigInt + evr: 1:1.9998.18-460.el9 + sourcerpm: perl-Math-BigInt-1.9998.18-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Math-BigInt-FastCalc-0.500.900-460.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 32494 + checksum: sha256:20b48aa36f522ccc9047fa01cb665ef20ae6a48f1b3a289e37481c159655e5b6 + name: perl-Math-BigInt-FastCalc + evr: 0.500.900-460.el9 + sourcerpm: perl-Math-BigInt-FastCalc-0.500.900-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Math-BigRat-0.2614-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 42414 + checksum: sha256:c31888896769451095c352ea97a1c88e2bbbc27d5bdc1e018dc8bae680967fb0 + name: perl-Math-BigRat + evr: 0.2614-460.el9 + sourcerpm: perl-Math-BigRat-0.2614-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Math-Complex-1.59-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 47421 + checksum: sha256:754d5798c9a2bb21714671fdf0236e5937511bf59c473fdef8117c512410e8b5 + name: perl-Math-Complex + evr: 1.59-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Memoize-1.03-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 57798 + checksum: sha256:f668ee6ce94bab8e3a926587a1ab2f4ed3a4490d911c2e7fc1b2fe074a6cfdcc + name: perl-Memoize + evr: 1.03-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Module-Build-0.42.31-9.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 274094 + checksum: sha256:9e33e1a46048d262ebe06f98c6c7b1579cdf92db57b0bb4228d13883c232d82c + name: perl-Module-Build + evr: 2:0.42.31-9.el9 + sourcerpm: perl-Module-Build-0.42.31-9.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Module-CoreList-5.20240609-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 92615 + checksum: sha256:fe85ea513ac696ce4d4bd5565259d89edde346d5a049d0eed153eac988ef73fd + name: perl-Module-CoreList + evr: 1:5.20240609-1.el9 + sourcerpm: perl-Module-CoreList-5.20240609-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Module-CoreList-tools-5.20240609-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 18135 + checksum: sha256:2df9f5a5329e94c19bab88ba530149a86438756c7404787b03745f711adf3368 + name: perl-Module-CoreList-tools + evr: 1:5.20240609-1.el9 + sourcerpm: perl-Module-CoreList-5.20240609-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Module-Load-0.36-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 20052 + checksum: sha256:ada066ac44fd73ec87ea376a6d6715cf77b086354217fdc7a197c909da3bb099 + name: perl-Module-Load + evr: 1:0.36-4.el9 + sourcerpm: perl-Module-Load-0.36-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Module-Load-Conditional-0.74-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25464 + checksum: sha256:58a5364d77607678e4e628f5bdd3d33641e2f6083c2985c1bc5045401ae65a60 + name: perl-Module-Load-Conditional + evr: 0.74-4.el9 + sourcerpm: perl-Module-Load-Conditional-0.74-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Module-Loaded-0.08-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 13245 + checksum: sha256:5873834f46d56066cab07a5386daccf8b4db7ccf23344967dcdc31a893907778 + name: perl-Module-Loaded + evr: 1:0.08-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Module-Metadata-1.000037-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 39221 + checksum: sha256:f053b34c911e5f3daf16c0ffc5ff752f47a0d016e1cc1ac51d4425fbe2a1ac15 + name: perl-Module-Metadata + evr: 1.000037-460.el9 + sourcerpm: perl-Module-Metadata-1.000037-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Module-Signature-0.88-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 89282 + checksum: sha256:1a173631124cdb77ffa2cb11ceb8de813f6e4222e5bf9ae657947211480858e6 + name: perl-Module-Signature + evr: 0.88-1.el9 + sourcerpm: perl-Module-Signature-0.88-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Mozilla-CA-20200520-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14781 + checksum: sha256:99030bfb6a1a2ac41e0720841abaa8ba58c26e91640f4058cc6133e227e928a7 + name: perl-Mozilla-CA + evr: 20200520-6.el9 + sourcerpm: perl-Mozilla-CA-20200520-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-NDBM_File-1.15-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 21832 + checksum: sha256:6a03c4415b13ab8b960e9b1c5440058d006f159c113abdca1c7c4cbec4e2cd58 + name: perl-NDBM_File + evr: 1.15-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-NEXT-0.67-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 21043 + checksum: sha256:30c7f7f97f369fb9264c0c01f7f12fe1791c99e920aebdf149d71f945f814ec6 + name: perl-NEXT + evr: 0.67-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Net-1.02-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25539 + checksum: sha256:2bb0dceeec12a995caf29411056c2108a6f09b6bbe6d31090114fa4cbec53454 + name: perl-Net + evr: 1.02-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Net-Ping-2.74-5.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 53027 + checksum: sha256:fb74fb2651f62421538bb05992af5251887013a72c4412f5c2421992204c03bc + name: perl-Net-Ping + evr: 2.74-5.el9 + sourcerpm: perl-Net-Ping-2.74-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Net-SSLeay-1.94-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 424450 + checksum: sha256:d2781d36ecbfb5fbbb3d73a589dfef6fcaa694facee347d0a66d70b07ebe0ed8 + name: perl-Net-SSLeay + evr: 1.94-3.el9 + sourcerpm: perl-Net-SSLeay-1.94-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-ODBM_File-1.16-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 21824 + checksum: sha256:6c8c69acef6ae0a6f7ce1853061798cac6107ec6a459e102e6e0e23e09b51b4d + name: perl-ODBM_File + evr: 1.16-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Object-HashBase-0.009-7.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 28938 + checksum: sha256:2144d4c29ea4acfc0d872bf09cb4d9dce14a64e60a45633f1a31ed3a2b125ee8 + name: perl-Object-HashBase + evr: 0.009-7.el9 + sourcerpm: perl-Object-HashBase-0.009-7.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Opcode-1.48-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 36640 + checksum: sha256:ec91248e4ff688b0850651d3dc6dce6c7716fe00adc7ab71692703cbc425ca3b + name: perl-Opcode + evr: 1.48-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-POSIX-1.94-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 98493 + checksum: sha256:1afecd9468a279bcf9c4e2d7d37f09cc3779f7b869a26ba3d0dcef78f7b9c0af + name: perl-POSIX + evr: 1.94-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Package-Generator-1.106-23.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 26822 + checksum: sha256:2c9b4699185c30d1da293add16911555e93b7532d77e59aa07e2c9c8d8eafcf3 + name: perl-Package-Generator + evr: 1.106-23.el9 + sourcerpm: perl-Package-Generator-1.106-23.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Params-Check-0.38-461.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 24764 + checksum: sha256:a6cf1009e3f1dfe50e00421b11d43c413e7e4ee8c6931195256a3cb40e1baf7b + name: perl-Params-Check + evr: 1:0.38-461.el9 + sourcerpm: perl-Params-Check-0.38-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Params-Util-1.102-5.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 38447 + checksum: sha256:e8219eff046c4d85aeaf4581037b8e3aea3db9fd56bf648d84588fbd5b27123a + name: perl-Params-Util + evr: 1.102-5.el9 + sourcerpm: perl-Params-Util-1.102-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-PathTools-3.78-461.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 94325 + checksum: sha256:5cd800158be7a9ddaf8e9c5d193d10992e01a35c4f438ff072852d194e3a5311 + name: perl-PathTools + evr: 3.78-461.el9 + sourcerpm: perl-PathTools-3.78-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Perl-OSType-1.010-461.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 26284 + checksum: sha256:64f37a98e22fce4ee9520da6db13ab601e21e34ac9d3ae7f85fc7a63761c492b + name: perl-Perl-OSType + evr: 1.010-461.el9 + sourcerpm: perl-Perl-OSType-1.010-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-PerlIO-via-QuotedPrint-0.09-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25566 + checksum: sha256:31d1284cda8a84f78574ae2380474412788de756613bcb11a85d68c94af9ba0b + name: perl-PerlIO-via-QuotedPrint + evr: 0.09-4.el9 + sourcerpm: perl-PerlIO-via-QuotedPrint-0.09-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Pod-Checker-1.74-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 35171 + checksum: sha256:7410aed54bb1c0a18b7b0ec33b6067475383b557defdd295b48b3277229d31a1 + name: perl-Pod-Checker + evr: 4:1.74-4.el9 + sourcerpm: perl-Pod-Checker-1.74-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Pod-Escapes-1.07-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 22564 + checksum: sha256:42fa08cc02a405933395316610a56e2bff58f6f7be16e9a063ec634747199bc0 + name: perl-Pod-Escapes + evr: 1:1.07-460.el9 + sourcerpm: perl-Pod-Escapes-1.07-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Pod-Functions-1.13-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 13531 + checksum: sha256:8afc31372f05f71a11054c7d7318301d3d65547abc7eac3ed56d428843edae0c + name: perl-Pod-Functions + evr: 1.13-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Pod-Html-1.25-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 26780 + checksum: sha256:f692dea024e6ced870a5f792db9e76e06d810dfce9846bb59e5b4442b28820e6 + name: perl-Pod-Html + evr: 1.25-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Pod-Perldoc-3.28.01-461.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 93727 + checksum: sha256:db3285dbe77ddc822d6bb847f857ea7032786cf7996b26d6c01481903b6d26e0 + name: perl-Pod-Perldoc + evr: 3.28.01-461.el9 + sourcerpm: perl-Pod-Perldoc-3.28.01-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Pod-Simple-3.42-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 234403 + checksum: sha256:2752454ce47a46227c6b7b98a5d9a25dcf3a992f27109a726744a66cd93c7b9a + name: perl-Pod-Simple + evr: 1:3.42-4.el9 + sourcerpm: perl-Pod-Simple-3.42-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Pod-Usage-2.01-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 44477 + checksum: sha256:c170870a2d1ff32048d13497fa67c382fe5aaf3d8d21bae639356ac28003dba9 + name: perl-Pod-Usage + evr: 4:2.01-4.el9 + sourcerpm: perl-Pod-Usage-2.01-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Safe-2.41-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25188 + checksum: sha256:ca9095157a26e3ee611c9b9ef6c075086a2381571fccc1a45ade5f8f88c5a78e + name: perl-Safe + evr: 2.41-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Scalar-List-Utils-1.56-462.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 76001 + checksum: sha256:5e3592356c1610311f5bf8be4cbc9e35ad04d6b3ba089d70b700d8b70f534635 + name: perl-Scalar-List-Utils + evr: 4:1.56-462.el9 + sourcerpm: perl-Scalar-List-Utils-1.56-462.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Search-Dict-1.07-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 12900 + checksum: sha256:f57497238bbc4edb96b24f88084e5d21f4e3aebab5d33a6db5e79a2ea53ce70d + name: perl-Search-Dict + evr: 1.07-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-SelectSaver-1.02-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 11553 + checksum: sha256:8ec404df551d6cc4750efa34b9897d2288d07a26d49cd3d3d2315584976932b0 + name: perl-SelectSaver + evr: 1.02-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-SelfLoader-1.26-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 21729 + checksum: sha256:18a1b56a5a1097748cc998cb5305f5d77e253a05bae807b418694805fc413c8e + name: perl-SelfLoader + evr: 1.26-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Socket-2.031-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 59426 + checksum: sha256:f69c6cd2c48606efa7477ef73ef2cb03c07aa02d535f03824dbe966f6235cc88 + name: perl-Socket + evr: 4:2.031-4.el9 + sourcerpm: perl-Socket-2.031-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Software-License-0.103014-12.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 147494 + checksum: sha256:c225b78b513fc8b90a0b2b773fadcf65dd2defe2a147fca67c52971d2750f437 + name: perl-Software-License + evr: 0.103014-12.el9 + sourcerpm: perl-Software-License-0.103014-12.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Storable-3.21-460.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 98115 + checksum: sha256:61a7bc7d2a2e3b0c42289927a1ecc7b9f672ce3281be58a59b3b2875e4203457 + name: perl-Storable + evr: 1:3.21-460.el9 + sourcerpm: perl-Storable-3.21-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Sub-Exporter-0.987-27.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 78523 + checksum: sha256:4e2535cd4d456f91f346e6d690c9a22c4b2a01318f9a5b5f761e1170d815bed1 + name: perl-Sub-Exporter + evr: 0.987-27.el9 + sourcerpm: perl-Sub-Exporter-0.987-27.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Sub-Install-0.928-28.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25233 + checksum: sha256:4ce03d243d1331188c5a2b0e4103dad6b930ba36362cd353f0f3cd0998784e82 + name: perl-Sub-Install + evr: 0.928-28.el9 + sourcerpm: perl-Sub-Install-0.928-28.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Symbol-1.08-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14061 + checksum: sha256:aa9942be4c837c024c6a0a376b13f9563e16ee8b66631ad6c5ff35cd0124728d + name: perl-Symbol + evr: 1.08-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Sys-Hostname-1.23-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 16947 + checksum: sha256:92c9db4a5b34f6f57c858cf6265e62a7102b8fa8f3612a85a2f4226f349e775a + name: perl-Sys-Hostname + evr: 1.23-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Sys-Syslog-0.36-461.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 52646 + checksum: sha256:ec4ca7f72dff339eed3d7878ec86af177cf6d21402a002558142173eabf3c9ec + name: perl-Sys-Syslog + evr: 0.36-461.el9 + sourcerpm: perl-Sys-Syslog-0.36-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Term-ANSIColor-5.01-461.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 52228 + checksum: sha256:996148d460395369394e9d4721e9000c5b2fa34ee800390a4a9d885b6db95b23 + name: perl-Term-ANSIColor + evr: 5.01-461.el9 + sourcerpm: perl-Term-ANSIColor-5.01-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Term-Cap-1.17-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25043 + checksum: sha256:015a6d02b9c84bd353680d4bad61f3c8d297c53c3a43325e08e4ac4b48f97f17 + name: perl-Term-Cap + evr: 1.17-460.el9 + sourcerpm: perl-Term-Cap-1.17-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Term-Complete-1.403-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 12886 + checksum: sha256:fe5f8688a2a28327a35be1caa35a9d7b8718531120ddfdb10da6f80d6b577059 + name: perl-Term-Complete + evr: 1.403-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Term-ReadLine-1.17-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 19061 + checksum: sha256:506c2fb3304f36ce437696dea9fb8772424a08345c765b25ac7278e429df1dcf + name: perl-Term-ReadLine + evr: 1.17-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Term-Size-Any-0.002-35.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 16309 + checksum: sha256:e83c29bb60e3fdac1c7aa5d3cde8a6b237812a14fe8f711bf6e127ed96d929a4 + name: perl-Term-Size-Any + evr: 0.002-35.el9 + sourcerpm: perl-Term-Size-Any-0.002-35.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Term-Size-Perl-0.031-12.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25142 + checksum: sha256:0acd3a4bd0f98b24701f88a6853ba39f11c490fa816e44e7209690d23960cfbf + name: perl-Term-Size-Perl + evr: 0.031-12.el9 + sourcerpm: perl-Term-Size-Perl-0.031-12.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Term-Table-0.015-8.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 40852 + checksum: sha256:3e0c26e1b0e31d17cc133829ad8d6e22c86e532e9b6a3c26f48b7ec447bdfbb4 + name: perl-Term-Table + evr: 0.015-8.el9 + sourcerpm: perl-Term-Table-0.015-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-TermReadKey-2.38-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 40577 + checksum: sha256:bfe0d10d4c1028a7929ca213bfd3871f059ea0daeec4c48f3e85d54d77a5a2fc + name: perl-TermReadKey + evr: 2.38-11.el9 + sourcerpm: perl-TermReadKey-2.38-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Test-1.31-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 28830 + checksum: sha256:879484e27419a62c5eb942327570be90f246334000d9e3af1e052155b6e08661 + name: perl-Test + evr: 1.31-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Test-Harness-3.42-461.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 306138 + checksum: sha256:7980ae9e28aed0aadef4f169e8479812a2a6bacf05ee53001f63d021b065fe40 + name: perl-Test-Harness + evr: 1:3.42-461.el9 + sourcerpm: perl-Test-Harness-3.42-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Test-Simple-1.302183-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 645034 + checksum: sha256:04ae40e07d57934e5dc3946fa638023ee76305dac04bed7813ed338b0a4c2ef2 + name: perl-Test-Simple + evr: 3:1.302183-4.el9 + sourcerpm: perl-Test-Simple-1.302183-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Text-Abbrev-1.02-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 12026 + checksum: sha256:7671d9b159be320b1725a11b9ba5a9d15b809ec22ba13e0ae5cacf5ed09fdec1 + name: perl-Text-Abbrev + evr: 1.02-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Text-Balanced-2.04-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 51500 + checksum: sha256:67ff60f60b6dc900e840ed51ff3b1cabef9e43aa48cba81ad97ae9423bdca5af + name: perl-Text-Balanced + evr: 2.04-4.el9 + sourcerpm: perl-Text-Balanced-2.04-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Text-Diff-1.45-13.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 45523 + checksum: sha256:5141fc840dc2989b44df904df2cadfdc3b6b9d38a7e4dba2c2db3c14e3dbc060 + name: perl-Text-Diff + evr: 1.45-13.el9 + sourcerpm: perl-Text-Diff-1.45-13.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Text-Glob-0.11-15.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 15921 + checksum: sha256:079d5eb4a606a131eaeecfcbd7f7d39a21c9c49b97bd6b84f7d08986dd11dc59 + name: perl-Text-Glob + evr: 0.11-15.el9 + sourcerpm: perl-Text-Glob-0.11-15.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Text-ParseWords-3.30-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 18680 + checksum: sha256:4d47f3ba0ce454be5d781e968cfe15f01f393e68a47c415f35c0d88358ab4af9 + name: perl-Text-ParseWords + evr: 3.30-460.el9 + sourcerpm: perl-Text-ParseWords-3.30-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Text-Tabs+Wrap-2013.0523-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25935 + checksum: sha256:5ad6ef70bbb4ba8d5cfd6ee0b3dda0ddc8cf0103199959499944019a66f7edcd + name: perl-Text-Tabs+Wrap + evr: 2013.0523-460.el9 + sourcerpm: perl-Text-Tabs+Wrap-2013.0523-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Text-Template-1.59-5.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 64485 + checksum: sha256:3c7350777e9d26fe4c02d52e8c4d4e0643ee32f8abfb9e22fc28f5325702924e + name: perl-Text-Template + evr: 1.59-5.el9 + sourcerpm: perl-Text-Template-1.59-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Thread-3.05-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 18018 + checksum: sha256:0caef6e47205d0035b3f692010e9f7dcd710e7832da77a2a5abbe930440f7e48 + name: perl-Thread + evr: 3.05-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Thread-Queue-3.14-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 24804 + checksum: sha256:88d838d681ad683970eb8566e8936faabffc3495dd1b555f083a1cd00538291a + name: perl-Thread-Queue + evr: 3.14-460.el9 + sourcerpm: perl-Thread-Queue-3.14-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Thread-Semaphore-2.13-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 15604 + checksum: sha256:136b09ee2841a1b6655f0a29759fe353b7f4b12ea3e559bafd39d4c508644925 + name: perl-Thread-Semaphore + evr: 2.13-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Tie-4.6-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 31837 + checksum: sha256:7144466ebb0d8dc2b7af2deac1dddd8caa23b35bcc0d42829c9b242b18f39d6c + name: perl-Tie + evr: 4.6-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Tie-File-1.06-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 43818 + checksum: sha256:f99032921dc45c8a77f91909b5329a95fc4bade37815e2e866c70bf6f39a7c82 + name: perl-Tie-File + evr: 1.06-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Tie-Memoize-1.1-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14038 + checksum: sha256:1f3395cf1a045adfabf0e9b82bc4676f0dd1d76a985afedb3e069e6e9128c677 + name: perl-Tie-Memoize + evr: 1.1-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Tie-RefHash-1.40-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 26260 + checksum: sha256:5519a86c145d83a1633a127f7b0b6a371e6b2b8a647dabff45c2754388504a44 + name: perl-Tie-RefHash + evr: 1.40-4.el9 + sourcerpm: perl-Tie-RefHash-1.40-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Time-1.03-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 18651 + checksum: sha256:e23d1ba4c2e8d4283e757a7af563a24038b5829ed55c9bc90b4bae8c498ec5d7 + name: perl-Time + evr: 1.03-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Time-HiRes-1.9764-462.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 62449 + checksum: sha256:87390bc4f89cd00517fbed954004f851334dc081e9cbf679ed8f9cc75f02c531 + name: perl-Time-HiRes + evr: 4:1.9764-462.el9 + sourcerpm: perl-Time-HiRes-1.9764-462.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Time-Local-1.300-7.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 37469 + checksum: sha256:e8e1e692b6e52cdb69515b2ad44b84ca71917bea5f47908cb9ae89b2bbd145a1 + name: perl-Time-Local + evr: 2:1.300-7.el9 + sourcerpm: perl-Time-Local-1.300-7.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Time-Piece-1.3401-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 40806 + checksum: sha256:f2efe674294a89db9aabe8add3d6b55ec0b17771707f7e21e839a8c085540fa5 + name: perl-Time-Piece + evr: 1.3401-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-URI-5.09-3.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 128279 + checksum: sha256:1635b7d818e4f70445f7207f13e058c63c5d1f5aa081cfd2583912ae45f8e1bd + name: perl-URI + evr: 5.09-3.el9 + sourcerpm: perl-URI-5.09-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Unicode-Collate-1.29-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 761716 + checksum: sha256:c21e4ffbdb9e9bd3b3c297b059bedd421ab458a3ec7970b93e5e30914006f2d9 + name: perl-Unicode-Collate + evr: 1.29-4.el9 + sourcerpm: perl-Unicode-Collate-1.29-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Unicode-LineBreak-2019.001-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 132417 + checksum: sha256:7b0786e7b16f27ee07070c31e6ab17fd4474c327e5d94185c34849f1a57d432d + name: perl-Unicode-LineBreak + evr: 2019.001-11.el9 + sourcerpm: perl-Unicode-LineBreak-2019.001-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Unicode-Normalize-1.27-461.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 92474 + checksum: sha256:7ca97e263d79d5a0e5f2093c54bcb73399532562e5bd15b30f1762cf8b1c3359 + name: perl-Unicode-Normalize + evr: 1.27-461.el9 + sourcerpm: perl-Unicode-Normalize-1.27-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-Unicode-UCD-0.75-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 79927 + checksum: sha256:208f347f513df7c59ab77d90b54d3c9ed4cf67e733887783354a2c6ebeaf6409 + name: perl-Unicode-UCD + evr: 0.75-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-User-pwent-1.03-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 20597 + checksum: sha256:f131ac194a35b3b17f5ff6961e9bb9eb031fd5c7d0055e05a438c11b53931263 + name: perl-User-pwent + evr: 1.03-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-autodie-2.34-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 103286 + checksum: sha256:8c4a7c8fd5074801946cce0b0b2f47337036e7f64e4cb9c833d9cf1de1f14edc + name: perl-autodie + evr: 2.34-4.el9 + sourcerpm: perl-autodie-2.34-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-autouse-1.11-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 13668 + checksum: sha256:c2502f538edef3d9b9ad20cdc8c0f8e971ac651df6c07f8555aa315b602c085a + name: perl-autouse + evr: 1.11-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-base-2.27-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 16220 + checksum: sha256:0be44f055107893b011ed0e88f39ff202ba451db8a94351ad4472d350c780d0d + name: perl-base + evr: 2.27-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-bignum-0.51-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 48635 + checksum: sha256:a25963adbb78901e2581a041252bfc96f55e534403e4af513d8728c62f0b4800 + name: perl-bignum + evr: 0.51-460.el9 + sourcerpm: perl-bignum-0.51-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-blib-1.07-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 12267 + checksum: sha256:50560de5f252c718728c45cb7af3742252581416e0acb9cfacd686dad58c0028 + name: perl-blib + evr: 1.07-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-constant-1.33-461.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25865 + checksum: sha256:8ab94e13cab4e7eee081c7618ea7738b072d8093631d97b8b1f83bff893cf892 + name: perl-constant + evr: 1.33-461.el9 + sourcerpm: perl-constant-1.33-461.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-debugger-1.56-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 136515 + checksum: sha256:0b96f38c73512a61ce84171578bc9fcc5a957ff1fb267749f3af18bc7d1ce1bd + name: perl-debugger + evr: 1.56-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-deprecate-0.04-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14490 + checksum: sha256:033aae2f09a7f78be08ae590f95cbce8025e5d5574cdab2bc77b554ad6e81575 + name: perl-deprecate + evr: 0.04-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-devel-5.32.1-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 692078 + checksum: sha256:5dba8e84824236c205e420fc5aed86f3177c8e78937b08eed6b4bb7c06feaa8e + name: perl-devel + evr: 4:5.32.1-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-diagnostics-1.37-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 215534 + checksum: sha256:19c65175b0df9d6142bf08d6566b8f10c331735c8b95690adbc300b670a692c4 + name: perl-diagnostics + evr: 1.37-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-doc-5.32.1-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 4798228 + checksum: sha256:d9eb81a356338df906db80c853c092a1fb0de745726e82db44fb343d267b4091 + name: perl-doc + evr: 5.32.1-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-encoding-3.00-462.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 65958 + checksum: sha256:43b1c0c7e7f6029f5610355e2fdea3fb8c6fa1cc956331f53a8b7d4bb8bb65e4 + name: perl-encoding + evr: 4:3.00-462.el9 + sourcerpm: perl-Encode-3.08-462.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-encoding-warnings-0.13-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 16539 + checksum: sha256:897e244bb8f8800a3ed23d669df746b0bb3672cd6929b06e04e5da63b04a5aa3 + name: perl-encoding-warnings + evr: 0.13-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-experimental-0.022-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 24376 + checksum: sha256:ae48d202863aba2573c70d803a9931de4e3c4b0d3e4f2df561bcc1bf78dc7920 + name: perl-experimental + evr: 0.022-6.el9 + sourcerpm: perl-experimental-0.022-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-fields-2.27-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 16096 + checksum: sha256:c2f5157686257ca7b67e566b4d7e86116c6c8b9f590023adf84fde78d35d3ea9 + name: perl-fields + evr: 2.27-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-filetest-1.03-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14556 + checksum: sha256:4556ac1a93588b9b3e3722867ef73680028e53b3aae4af87165a1a70c79530b8 + name: perl-filetest + evr: 1.03-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-if-0.60.800-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 13876 + checksum: sha256:ae3ce80bee55e1057ed004ec03a0e826b0cdd90ace4c0784ab2f569a2d81d40c + name: perl-if + evr: 0.60.800-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-inc-latest-0.500-20.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 27665 + checksum: sha256:22c41d7117656dfff8d52bc8e557e6f8d11d2b5ed377173f56037a2ac8bc9139 + name: perl-inc-latest + evr: 2:0.500-20.el9 + sourcerpm: perl-inc-latest-0.500-20.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-interpreter-5.32.1-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 71956 + checksum: sha256:8f17e4683b342e5d0e97406a4c464f6ba7a9b9deaf6e39ff36b5b1459daea162 + name: perl-interpreter + evr: 4:5.32.1-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-less-0.03-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 13074 + checksum: sha256:8c69534a3a191e28647b5c201dce163f2fa30f0813d54ace2345bbab830d7a9b + name: perl-less + evr: 0.03-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-lib-0.65-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14815 + checksum: sha256:ac5fca3480c9429a1c86b7a781a0713776a75719b9337297f602cfb9cd2eeb12 + name: perl-lib + evr: 0.65-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-libnet-3.13-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 137289 + checksum: sha256:79156f91a2ee21fb96f10e331047c55ff913e36f9a13ff89d0a479f0fc4dcb98 + name: perl-libnet + evr: 3.13-4.el9 + sourcerpm: perl-libnet-3.13-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-libnetcfg-5.32.1-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 16266 + checksum: sha256:fcb262ee807d950b902ca12744cb2645c52de5aae0d9380a7ff4dd5574aec7fd + name: perl-libnetcfg + evr: 4:5.32.1-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-libs-5.32.1-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 2255446 + checksum: sha256:63434fb3f9efb3417bb263c8b9e1590384e7124a094855e82d64655161eaff21 + name: perl-libs + evr: 4:5.32.1-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-local-lib-2.000024-13.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 73510 + checksum: sha256:c8f58afb9e8eb07bc57f92c384753ee4f4fec10fa7ec7c091ad9f15110a10026 + name: perl-local-lib + evr: 2.000024-13.el9 + sourcerpm: perl-local-lib-2.000024-13.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-locale-1.09-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 13543 + checksum: sha256:6b81563677505210a973fd4416f5991bf729c03f3082ac139460290643daef33 + name: perl-locale + evr: 1.09-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-macros-5.32.1-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 10568 + checksum: sha256:e499fae237cea4dcec9480576b64c69afe91c09875a8dfcf9b4daebdbeb9f197 + name: perl-macros + evr: 4:5.32.1-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-meta-notation-5.32.1-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 9577 + checksum: sha256:0b7fb715954c7f67719f00bc7323d4a12453aab37acadba5106758f864c8535a + name: perl-meta-notation + evr: 5.32.1-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-mro-1.23-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 27780 + checksum: sha256:10e9c630c9628d189ff2d705f280498c83bc407a1fb03b11f4251973b7e46b51 + name: perl-mro + evr: 1.23-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-open-1.12-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 16407 + checksum: sha256:f3e192485674a0681320f38c4163460ce0bf4855b7e825f75c371f3b3a7c778f + name: perl-open + evr: 1.12-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-overload-1.31-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 46157 + checksum: sha256:f172df7417780cb61b879effe60ce6b7b4399773c46cb9896a5edf2bfba6dbda + name: perl-overload + evr: 1.31-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-overloading-0.02-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 12747 + checksum: sha256:4aae487e802df60e1e2d778b264592290ad492078877784771299561d45dfd47 + name: perl-overloading + evr: 0.02-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-parent-0.238-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 16286 + checksum: sha256:a9b2ccc25a5ed5cc024935ef573772e203ed363f67dd5acc0d2ad5907498c463 + name: perl-parent + evr: 1:0.238-460.el9 + sourcerpm: perl-parent-0.238-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-perlfaq-5.20210520-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 388755 + checksum: sha256:e5588c37edf2bb614ffb7526deb663bc406effb86492637b4c906c5fe06f0b98 + name: perl-perlfaq + evr: 5.20210520-1.el9 + sourcerpm: perl-perlfaq-5.20210520-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-ph-5.32.1-481.1.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 41462 + checksum: sha256:36d34c290cb0bf2ce127d5eeda3a2091c6e669bf47b5230f454879a241c00dc0 + name: perl-ph + evr: 5.32.1-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-podlators-4.14-460.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 121317 + checksum: sha256:0401f715522a14b53956bccb60954025ad18a73802f7144ab0160d8504951a98 + name: perl-podlators + evr: 1:4.14-460.el9 + sourcerpm: perl-podlators-4.14-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-sigtrap-1.09-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 15624 + checksum: sha256:5b7215d5421f381137e867678492848574c2ceb58e56d47d7833d182923e92c6 + name: perl-sigtrap + evr: 1.09-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-sort-2.04-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 13408 + checksum: sha256:554155e6ff38d091ea388b1f19fc0b0950522b4c4ffe87cfee3676c4f03c046d + name: perl-sort + evr: 2.04-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-srpm-macros-1-41.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 9639 + checksum: sha256:fa6a45cf7cb8b6f8a28ce85be31483eacc7b0b4c01d598123ec649867b67c8f4 + name: perl-srpm-macros + evr: 1-41.el9 + sourcerpm: perl-srpm-macros-1-41.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-subs-1.03-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 11525 + checksum: sha256:0a7ef4a9a174ab981949d27a4acdc8cec87fd3513e9e607f5869851dc1c74deb + name: perl-subs + evr: 1.03-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-threads-2.25-460.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 61254 + checksum: sha256:787a2ff27e96046c3b38e44a760e52660f6b63875661ef64addde79b63363eb1 + name: perl-threads + evr: 1:2.25-460.el9 + sourcerpm: perl-threads-2.25-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-threads-shared-1.61-460.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 47910 + checksum: sha256:073ef01a23d905b89b5688645c85fa654567876c19043378b9fd15e44229c558 + name: perl-threads-shared + evr: 1.61-460.el9 + sourcerpm: perl-threads-shared-1.61-460.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-utils-5.32.1-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 55943 + checksum: sha256:5c21992a23a63139c0c73ce0b9866cd9064ab2efc8d9414bb45edc6c72996162 + name: perl-utils + evr: 5.32.1-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-vars-1.05-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 12885 + checksum: sha256:5d3c58094c0158b6193d7f4ba7a4bb7ae06a78738393b31255da8b7aadb10e38 + name: perl-vars + evr: 1.05-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-version-0.99.28-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 67978 + checksum: sha256:9b7761fa17fd29d8e6f80cfbf12c659cd90a133f5dfc813881473195e0a2a4ce + name: perl-version + evr: 7:0.99.28-4.el9 + sourcerpm: perl-version-0.99.28-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/perl-vmsish-1.04-481.1.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14031 + checksum: sha256:af9db38df1c1843277ebd8c6bb8d766017be043eea28246252788b055f19764d + name: perl-vmsish + evr: 1.04-481.1.el9_6 + sourcerpm: perl-5.32.1-481.1.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/pixman-0.40.0-6.el9_3.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 173063 + checksum: sha256:148c080d133bc2d45dab5cd57c830145cd7a53810522e38110abfebbd0f06792 + name: pixman + evr: 0.40.0-6.el9_3 + sourcerpm: pixman-0.40.0-6.el9_3.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/pyproject-srpm-macros-1.16.2-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 14828 + checksum: sha256:1bec3715412a73295a9cd2cdbc147ebee0fe23b50f4146bddc08a5761ed3928d + name: pyproject-srpm-macros + evr: 1.16.2-1.el9 + sourcerpm: pyproject-rpm-macros-1.16.2-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python-srpm-macros-3.9-54.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 18705 + checksum: sha256:cc14196e07f9c6383f5bdf2c1171e7d41256326324c4a03c98d62d81413f3fb3 + name: python-srpm-macros + evr: 3.9-54.el9 + sourcerpm: python-rpm-macros-3.9-54.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python-unversioned-command-3.9.23-2.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 9209 + checksum: sha256:20ed4bbcb151aef651eb315825d3a02e0f6203ab1b858e94812258f5b41ce703 + name: python-unversioned-command + evr: 3.9.23-2.el9 + sourcerpm: python3.9-3.9.23-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3-pip-21.3.1-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 2133958 + checksum: sha256:2ff41d5bbfb5bf09378a499b56d9854e9389e3a8648897426d144f4b385f8730 + name: python3-pip + evr: 21.3.1-1.el9 + sourcerpm: python-pip-21.3.1-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-3.11.13-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 25284 + checksum: sha256:4c503f29f089c5a16f3d4143ec21ac9becadc389eb5b49dd6037dc0ff338a2ae + name: python3.11 + evr: 3.11.13-3.el9 + sourcerpm: python3.11-3.11.13-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-charset-normalizer-2.1.0-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 108311 + checksum: sha256:ef4b682449ac49a93d7d6c031fcb26e7d007b55912399c2eb7befed7381d1a50 + name: python3.11-charset-normalizer + evr: 2.1.0-1.el9 + sourcerpm: python3.11-charset-normalizer-2.1.0-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-devel-3.11.13-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 282663 + checksum: sha256:9c4488970783b9400e08d162aa1bb062e0f647ffd002777c78efc02095866652 + name: python3.11-devel + evr: 3.11.13-3.el9 + sourcerpm: python3.11-3.11.13-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-idna-3.4-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 115495 + checksum: sha256:9e6ca76b36ca3c0dedd3c10c1eb0c037e5d585d4ee546b7abeab8c59251a148c + name: python3.11-idna + evr: 3.4-1.el9 + sourcerpm: python3.11-idna-3.4-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-libs-3.11.13-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 10684993 + checksum: sha256:40e1afb61f53e9f48b89c978d56e59d45f8e1933478e170c6b32dc8cb148959f + name: python3.11-libs + evr: 3.11.13-3.el9 + sourcerpm: python3.11-3.11.13-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-pip-22.3.1-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 3351885 + checksum: sha256:b97bcd818cd890f514ccbe9deecc95ef33dabb86dea6071e9cafd86b76ebb0f0 + name: python3.11-pip + evr: 22.3.1-6.el9 + sourcerpm: python3.11-pip-22.3.1-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-pip-wheel-22.3.1-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 1488665 + checksum: sha256:0e7e797af157c892a9fce0b6bf9f7b77db57250a16f049ae631e9acae79b5156 + name: python3.11-pip-wheel + evr: 22.3.1-6.el9 + sourcerpm: python3.11-pip-22.3.1-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-pysocks-1.7.1-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 44030 + checksum: sha256:1d1500bdc2ff2aa52235e404054ebcbef8db53e09ba89715907fa814cf6d29a8 + name: python3.11-pysocks + evr: 1.7.1-1.el9 + sourcerpm: python3.11-pysocks-1.7.1-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-requests-2.28.1-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 163237 + checksum: sha256:d150df800a960a2f9a722a857a80bcab7f6345eed8d52514c99c4252c181010a + name: python3.11-requests + evr: 2.28.1-1.el9 + sourcerpm: python3.11-requests-2.28.1-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-setuptools-65.5.1-5.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 1785107 + checksum: sha256:ff5f366bed548c8def673579107e63adb4d33748f75aeb555312d615f1871327 + name: python3.11-setuptools + evr: 65.5.1-5.el9 + sourcerpm: python3.11-setuptools-65.5.1-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-setuptools-wheel-65.5.1-5.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 730338 + checksum: sha256:33ad44dff52114caa7b85f6e218ad5f9ccd88a538a3cf808377762ff01efb05f + name: python3.11-setuptools-wheel + evr: 65.5.1-5.el9 + sourcerpm: python3.11-setuptools-65.5.1-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-six-1.16.0-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 47945 + checksum: sha256:74127dc01665a183d17e62293b6b3b2f27d4edd86e2d9f47ea03ed4f9e196361 + name: python3.11-six + evr: 1.16.0-1.el9 + sourcerpm: python3.11-six-1.16.0-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/p/python3.11-urllib3-1.26.12-5.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 269978 + checksum: sha256:67ed166e90a19da81638118cad2b8801388105ca0831d8f206940c70aa1cfdc4 + name: python3.11-urllib3 + evr: 1.26.12-5.el9 + sourcerpm: python3.11-urllib3-1.26.12-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/q/qt5-srpm-macros-5.15.9-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 9344 + checksum: sha256:1dbb5db859d110aa275cbacd07e2576dcbe321ab0803f04d85dc3fa1a203ef10 + name: qt5-srpm-macros + evr: 5.15.9-1.el9 + sourcerpm: qt5-5.15.9-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/r/redhat-rpm-config-210-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 72050 + checksum: sha256:ad59b922bf8028d3021c74123d33ef770a500dc7b0dd16a34301b0fcc09c6af4 + name: redhat-rpm-config + evr: 210-1.el9 + sourcerpm: redhat-rpm-config-210-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/r/rpm-plugin-systemd-inhibit-4.16.1.3-39.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 15579 + checksum: sha256:170b96da84e4de4abf0b47bb3fadd1677d07efb5f33f322a4e0a47fb7c2f81f9 + name: rpm-plugin-systemd-inhibit + evr: 4.16.1.3-39.el9 + sourcerpm: rpm-4.16.1.3-39.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/r/rust-srpm-macros-17-4.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 11243 + checksum: sha256:8e91d6d5122b9effe0e3539ef0d55e57c4b3eff68544e46a413129cb961d5941 + name: rust-srpm-macros + evr: 17-4.el9 + sourcerpm: rust-srpm-macros-17-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/s/scl-utils-2.0.3-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 42050 + checksum: sha256:b7c093e050e3d127b98bd1002e46dee9cfbbc6279978aee17d7fad30b42a41ec + name: scl-utils + evr: 1:2.0.3-4.el9 + sourcerpm: scl-utils-2.0.3-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/s/skopeo-1.20.0-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 7711180 + checksum: sha256:4facc4154632de0be7d78bccd0339fa69b3a81fdf8172afee25a918819cfd8d1 + name: skopeo + evr: 2:1.20.0-1.el9 + sourcerpm: skopeo-1.20.0-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/s/slirp4netns-1.3.3-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 48428 + checksum: sha256:7955cb422fe44dc41ea42234fa2543668f39b8f036cde00b1ce0b2ebecf4ddf6 + name: slirp4netns + evr: 1.3.3-1.el9 + sourcerpm: slirp4netns-1.3.3-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/s/sombok-2.4.0-16.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 51650 + checksum: sha256:9ff787f7edde5ff05a3e86c55913cbb2ab0d2e38ba5c9a7e318ef621991b3b8b + name: sombok + evr: 2.4.0-16.el9 + sourcerpm: sombok-2.4.0-16.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/s/spirv-tools-libs-2025.2-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 1518072 + checksum: sha256:82c70ef2f72fea3ec2a4ea0df70dc1d886cab54a74b438e041c42da625f0a851 + name: spirv-tools-libs + evr: 2025.2-1.el9 + sourcerpm: spirv-tools-2025.2-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/s/systemtap-sdt-devel-5.3-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 70536 + checksum: sha256:550d9cbd224cf899e4699cdf4aa24e093b3a46e6a8291de8d2e7c966c7ecf714 + name: systemtap-sdt-devel + evr: 5.3-3.el9 + sourcerpm: systemtap-5.3-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/s/systemtap-sdt-dtrace-5.3-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 71458 + checksum: sha256:60d435c02d8102ecab9182580236e7cc9026eac9a88bfaa49babed67b4b576b5 + name: systemtap-sdt-dtrace + evr: 5.3-3.el9 + sourcerpm: systemtap-5.3-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/x/xkeyboard-config-2.33-2.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 886685 + checksum: sha256:8575107a4292036df4c33b34b98b459897d2f4b0fdf8385e342eced93102497c + name: xkeyboard-config + evr: 2.33-2.el9 + sourcerpm: xkeyboard-config-2.33-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/x/xml-common-0.6.3-58.el9.noarch.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 37016 + checksum: sha256:2278e3b1ce7ddd4ff394064e5dc5404ac2799e51f9441a056b334d518bb51af4 + name: xml-common + evr: 0.6.3-58.el9 + sourcerpm: sgml-common-0.6.3-58.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/y/yajl-2.1.0-25.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 42219 + checksum: sha256:a6becc709b5431b18ccebd844278598f01f05bfd57dc1abfaa1680d5b8edc8ac + name: yajl + evr: 2.1.0-25.el9 + sourcerpm: yajl-2.1.0-25.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/os/Packages/z/zlib-devel-1.2.11-40.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-appstream-rpms + size: 47965 + checksum: sha256:ec1e974313c06f71a11a0732b9b08ef588e3cc58bd7ee0c02df792a1b196f60b + name: zlib-devel + evr: 1.2.11-40.el9 + sourcerpm: zlib-1.2.11-40.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/a/acl-2.3.1-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 77245 + checksum: sha256:59d24711260ff0e69762fc4e728279b0e7b6ecfdb5a9b8ba01cd96682c679022 + name: acl + evr: 2.3.1-4.el9 + sourcerpm: acl-2.3.1-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/a/attr-2.5.1-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 66448 + checksum: sha256:e86457936847a358b068f4f235800fb507d44321e65814f579355c4e46f85941 + name: attr + evr: 2.5.1-3.el9 + sourcerpm: attr-2.5.1-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/a/avahi-libs-0.8-23.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 67510 + checksum: sha256:0ac1f101600bb6689221654c1367ae6af8b1b30a20d1726c006e7d9d2bc31850 + name: avahi-libs + evr: 0.8-23.el9 + sourcerpm: avahi-0.8-23.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/b/binutils-2.35.2-67.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 5016714 + checksum: sha256:b65a3ea523d2160626d0d2b2196c3d10bb87d0ffb9791e61a798a729d05bc6d0 + name: binutils + evr: 2.35.2-67.el9 + sourcerpm: binutils-2.35.2-67.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/b/binutils-gold-2.35.2-67.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 902721 + checksum: sha256:e224074a641e78c1ab5c37f204ca4cf53d2142a3f370c028bb3d38230d78cb0d + name: binutils-gold + evr: 2.35.2-67.el9 + sourcerpm: binutils-2.35.2-67.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/c/cracklib-2.9.6-27.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 100995 + checksum: sha256:6b4e2bae51af42c1ab0f1ec7430ab19542747937a827eba8cac540cb7514a145 + name: cracklib + evr: 2.9.6-27.el9 + sourcerpm: cracklib-2.9.6-27.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/c/cracklib-dicts-2.9.6-27.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 3821337 + checksum: sha256:c4ef55b06c9b5352b2338a6deccd25030472308b3ffe39735585967382e75419 + name: cracklib-dicts + evr: 2.9.6-27.el9 + sourcerpm: cracklib-2.9.6-27.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/c/crypto-policies-scripts-20250905-1.git377cc42.el9_7.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 104676 + checksum: sha256:5e0cbb9b384a94aebde15ab9a1c01b4dd33c52734e1bb559b43fb18b075295ab + name: crypto-policies-scripts + evr: 20250905-1.git377cc42.el9_7 + sourcerpm: crypto-policies-20250905-1.git377cc42.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/c/cups-libs-2.3.3op2-34.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 264370 + checksum: sha256:25295ae4cc5c3ab54687df01125e6415b8db18778c1e0229e8a771f5b8da7d39 + name: cups-libs + evr: 1:2.3.3op2-34.el9_7 + sourcerpm: cups-2.3.3op2-34.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/d/dbus-1.12.20-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 8025 + checksum: sha256:5178f638660d1699fb06caeeac91f41c07da59b500e94adf2653df892f2cbdf8 + name: dbus + evr: 1:1.12.20-8.el9 + sourcerpm: dbus-1.12.20-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/d/dbus-broker-28-7.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 173303 + checksum: sha256:342af53fbf4254e34b5f19a6be6f22c67551c26dd0c49016edc93e806621b75d + name: dbus-broker + evr: 28-7.el9 + sourcerpm: dbus-broker-28-7.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/d/dbus-common-1.12.20-8.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 18551 + checksum: sha256:298f1cada3cbcef6713098b9925694a0e30e8566f7a5bdbd72384520cf6c8360 + name: dbus-common + evr: 1:1.12.20-8.el9 + sourcerpm: dbus-1.12.20-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/d/dbus-libs-1.12.20-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 154779 + checksum: sha256:d169ddf3a47520e5f73d4edb64e845910aa9ab48e0d0206e4a92a9f882f21882 + name: dbus-libs + evr: 1:1.12.20-8.el9 + sourcerpm: dbus-1.12.20-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/d/diffutils-3.7-12.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 405687 + checksum: sha256:524412f7ce56095508190116cb8ae141737857e4447979330c3cf75ca7017e6b + name: diffutils + evr: 3.7-12.el9 + sourcerpm: diffutils-3.7-12.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/d/dmidecode-3.6-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 85305 + checksum: sha256:c7bcfac4e5af632db729b42f7172ae721c48afbdc147facf54ba74a67a78e291 + name: dmidecode + evr: 1:3.6-1.el9 + sourcerpm: dmidecode-3.6-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/d/dnf-4.14.0-31.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 490580 + checksum: sha256:872566ea31b21f66a783dc9af771cacd6bb7dce48f1c97eb8be47c0abf90db38 + name: dnf + evr: 4.14.0-31.el9 + sourcerpm: dnf-4.14.0-31.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/e/elfutils-debuginfod-client-0.193-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 43664 + checksum: sha256:f4eaff2bb0d77405c94e1877ae2dc3c741a5d06172ba75056af070b8c06b50a4 + name: elfutils-debuginfod-client + evr: 0.193-1.el9 + sourcerpm: elfutils-0.193-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/e/elfutils-default-yama-scope-0.193-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 9949 + checksum: sha256:8f64d1675627246b912a6b7b71bb4c28c2d1ef09753208253c90253a4a31132f + name: elfutils-default-yama-scope + evr: 0.193-1.el9 + sourcerpm: elfutils-0.193-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/e/elfutils-libelf-0.193-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 208617 + checksum: sha256:481f731dd9877eedebe6b99cb1af171e091ce59265aa6bbee04f9b6b589c9ce6 + name: elfutils-libelf + evr: 0.193-1.el9 + sourcerpm: elfutils-0.193-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/e/elfutils-libs-0.193-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 271508 + checksum: sha256:d99325980fe5826b62a717aa63f863b66a65e047dc5f2d593a0ddcfa4308d0bf + name: elfutils-libs + evr: 0.193-1.el9 + sourcerpm: elfutils-0.193-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/e/environment-modules-5.3.0-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 605165 + checksum: sha256:569419a5a9256714a4d0f665ff2bada6f565bcc104479115c584cdbe897cf6bf + name: environment-modules + evr: 5.3.0-2.el9 + sourcerpm: environment-modules-5.3.0-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/e/expat-2.5.0-5.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 116016 + checksum: sha256:fd3234795b06ce0a45bfdec417be51a88296c0da0ea5b0d156aa327839e33052 + name: expat + evr: 2.5.0-5.el9_6 + sourcerpm: expat-2.5.0-5.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/f/file-5.39-16.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 53149 + checksum: sha256:e82e23ca88067aa8d5b5b6adaa7a3500a0eb74e7612de35d1fb6b3b1df940aad + name: file + evr: 5.39-16.el9 + sourcerpm: file-5.39-16.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/f/freetype-2.10.4-10.el9_5.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 392547 + checksum: sha256:13fdfc2af790d82a178c3626ee7b93071cc490551c95837492e25dfe66cd730c + name: freetype + evr: 2.10.4-10.el9_5 + sourcerpm: freetype-2.10.4-10.el9_5.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/f/fuse-common-3.10.2-9.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 8718 + checksum: sha256:ee202d37528745e6367791304c4f04af4a84bc9df2027234900186a8bff858f7 + name: fuse-common + evr: 3.10.2-9.el9 + sourcerpm: fuse3-3.10.2-9.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/g/gettext-0.21-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 1181385 + checksum: sha256:52f11ec908a17fedbf993ffd87f40f27067761440c433b0d0fd38f16b8d15ec4 + name: gettext + evr: 0.21-8.el9 + sourcerpm: gettext-0.21-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/g/gettext-libs-0.21-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 295874 + checksum: sha256:b503ae5eaa875c8936ac6c28dec058d0febc6ce072c0046028bc471a37607f6a + name: gettext-libs + evr: 0.21-8.el9 + sourcerpm: gettext-0.21-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/g/glibc-gconv-extra-2.34-231.el9_7.2.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 1817539 + checksum: sha256:9664e711983109a5b1c7b4b61a1a9f0c9b518a829eeef7064a138e7bcfec1f2d + name: glibc-gconv-extra + evr: 2.34-231.el9_7.2 + sourcerpm: glibc-2.34-231.el9_7.2.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/g/glibc-langpack-en-2.34-231.el9_7.2.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 675705 + checksum: sha256:24f122dd1e6f0f9ad391d2e74da64adc8f9a8c4bf0056cc168a338dea9b631d0 + name: glibc-langpack-en + evr: 2.34-231.el9_7.2 + sourcerpm: glibc-2.34-231.el9_7.2.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/g/graphite2-1.3.14-9.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 96898 + checksum: sha256:40ed9377c2f12b029808dd5d129258d1d8a8c93b5bae75f4eb99566c16161791 + name: graphite2 + evr: 1.3.14-9.el9 + sourcerpm: graphite2-1.3.14-9.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/g/groff-base-1.22.4-10.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 1088949 + checksum: sha256:452cfe5372c834bb174ef1f6eed4d0aa6179420fd572163467ac9036fc7a3a1d + name: groff-base + evr: 1.22.4-10.el9 + sourcerpm: groff-1.22.4-10.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/g/gzip-1.12-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 169809 + checksum: sha256:45710df49b439ddc4a2848fd3877367761b574234ae28b6be46f1cf54f3fcdca + name: gzip + evr: 1.12-1.el9 + sourcerpm: gzip-1.12-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/h/harfbuzz-2.7.4-10.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 643882 + checksum: sha256:bd3beaac1c0afefcd9f4893a814e79055c257c724c73d3b08aa3d9a32df3dcf4 + name: harfbuzz + evr: 2.7.4-10.el9 + sourcerpm: harfbuzz-2.7.4-10.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/i/ima-evm-utils-1.6.2-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 72920 + checksum: sha256:8a0469b1d521e6c772501855ce969b94fd939670c8dcca443e214e099115de44 + name: ima-evm-utils + evr: 1.6.2-2.el9 + sourcerpm: ima-evm-utils-1.6.2-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/i/iproute-6.14.0-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 860574 + checksum: sha256:e34c7d528f557d3fe80a16d65937f2fe5971fab42b0c0251f5fd2f7f68f7a05d + name: iproute + evr: 6.14.0-2.el9 + sourcerpm: iproute-6.14.0-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/k/keyutils-1.6.3-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 78563 + checksum: sha256:98d9e6b3ed8dd32d5c5e48ec6227891dc0dfc9b4f8c7dd08faf825602115e4ce + name: keyutils + evr: 1.6.3-1.el9 + sourcerpm: keyutils-1.6.3-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/k/kmod-28-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 125869 + checksum: sha256:ed0cf7e6f05e0646f968e862c6b6764c5eac8378f918a33e1b78bcde7a994aa3 + name: kmod + evr: 28-11.el9 + sourcerpm: kmod-28-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/k/kmod-libs-28-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 62168 + checksum: sha256:58526b701eb3a72de98062c58b56524c35916a7b1191bb1a846da33be5a5f709 + name: kmod-libs + evr: 28-11.el9 + sourcerpm: kmod-28-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/less-590-6.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 165028 + checksum: sha256:fa762484ba40e0b7eb1c25531a66a0b578b6141cabb6f73d865c13ccdf75c1c9 + name: less + evr: 590-6.el9 + sourcerpm: less-590-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libbpf-1.5.0-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 189720 + checksum: sha256:555275a15bb01db03604ce4fa5e8d046e8a4562742cfa4c643ebe57a60a91332 + name: libbpf + evr: 2:1.5.0-2.el9 + sourcerpm: libbpf-1.5.0-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libcbor-0.7.0-5.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 59368 + checksum: sha256:93a2f44044ab11225b1123bc9df4f4d09c0a5f3251818e7d144ca64fd12c0957 + name: libcbor + evr: 0.7.0-5.el9 + sourcerpm: libcbor-0.7.0-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libcomps-0.1.18-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 79615 + checksum: sha256:cbe13dadf0b61de3a258036baab50d70fbecb9bdcd07565b394589f58e2c6da8 + name: libcomps + evr: 0.1.18-1.el9 + sourcerpm: libcomps-0.1.18-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libdb-5.3.28-57.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 727417 + checksum: sha256:3a912b2a0a6226695a5773138ce5ce090c9fb155151dffe732b8d52e6dd22d63 + name: libdb + evr: 5.3.28-57.el9_6 + sourcerpm: libdb-5.3.28-57.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libdnf-plugin-subscription-manager-1.29.47.1-1.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 32903 + checksum: sha256:28c3a22b57848307bfbb4948aa0480c755ab22c179fe6ff2552813359fec1fdb + name: libdnf-plugin-subscription-manager + evr: 1.29.47.1-1.el9_7 + sourcerpm: subscription-manager-1.29.47.1-1.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libeconf-0.4.1-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 29577 + checksum: sha256:b6f435b6b79b8a62729f581edead46542dc61fe7276117b2354c324c44ba8309 + name: libeconf + evr: 0.4.1-4.el9 + sourcerpm: libeconf-0.4.1-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libedit-3.1-38.20210216cvs.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 107505 + checksum: sha256:a56a79e2254db3d351dce58e9960921aec45715b6b7c93eb7a0f453d1e60bae4 + name: libedit + evr: 3.1-38.20210216cvs.el9 + sourcerpm: libedit-3.1-38.20210216cvs.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libfdisk-2.37.4-21.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 153926 + checksum: sha256:e39cadb3e0cfd498fa1f37ec76d5f28af35a29b23c4ab163a21d0abc868e156f + name: libfdisk + evr: 2.37.4-21.el9 + sourcerpm: util-linux-2.37.4-21.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libfido2-1.13.0-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 100573 + checksum: sha256:e56e963635b92f407471c7c5698d602135b135bda4515ecc75ac52dd1d38c7e4 + name: libfido2 + evr: 1.13.0-2.el9 + sourcerpm: libfido2-1.13.0-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libgomp-11.5.0-11.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 261873 + checksum: sha256:eef29b0651ac6b2c3087f78dbca4066e9674fcd272926157d55ada53b1755c8f + name: libgomp + evr: 11.5.0-11.el9 + sourcerpm: gcc-11.5.0-11.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libmnl-1.0.4-16.el9_4.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 30479 + checksum: sha256:b07344f5116a1913e746042748b05f978d284833282d9633e29f3d595ab596e9 + name: libmnl + evr: 1.0.4-16.el9_4 + sourcerpm: libmnl-1.0.4-16.el9_4.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libnl3-3.11.0-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 363241 + checksum: sha256:91c7bf60c756cd2a457652b95e96e725068898f4ce580b70784fc60a099621b5 + name: libnl3 + evr: 3.11.0-1.el9 + sourcerpm: libnl3-3.11.0-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libpipeline-1.5.3-4.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 52161 + checksum: sha256:32d8aea6849a815e201cdce925fb3c6de2088cfcb7f6621e93495b605abe2f13 + name: libpipeline + evr: 1.5.3-4.el9 + sourcerpm: libpipeline-1.5.3-4.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libpkgconf-1.7.3-10.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 38310 + checksum: sha256:9bdfccf6b092e0683aa6984f7c6caa737b30c0b1495e16abb03b5d1a5f8e787a + name: libpkgconf + evr: 1.7.3-10.el9 + sourcerpm: pkgconf-1.7.3-10.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libpng-1.6.37-12.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 119529 + checksum: sha256:4b5c5f328eb641047d857fbcc026dcdd9db65cd670df15e6bf0f0010990ddd6f + name: libpng + evr: 2:1.6.37-12.el9 + sourcerpm: libpng-1.6.37-12.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libpwquality-1.4.4-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 125712 + checksum: sha256:1657d94bbd79f93dc7a79d474316813bde681ce3a7f62f73314ec4d630e39349 + name: libpwquality + evr: 1.4.4-8.el9 + sourcerpm: libpwquality-1.4.4-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libseccomp-2.5.2-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 76024 + checksum: sha256:fc1d5e93483d166ca7f2acb50c04c181db2f3e7b89dba8edc6b1e5f2b0f10619 + name: libseccomp + evr: 2.5.2-2.el9 + sourcerpm: libseccomp-2.5.2-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libselinux-utils-3.6-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 197588 + checksum: sha256:63fc5e8f22ddff6ae1428b6802f7cfc4ef75c50199de107abecbff3937ad0c35 + name: libselinux-utils + evr: 3.6-3.el9 + sourcerpm: libselinux-3.6-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libtirpc-1.3.3-9.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 98735 + checksum: sha256:591a92387f21db11cb3607f566f95e1f4afe581428eec00f99539925560e1913 + name: libtirpc + evr: 1.3.3-9.el9 + sourcerpm: libtirpc-1.3.3-9.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libuser-0.63-17.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 401695 + checksum: sha256:4a2799cc539e148a84e4072d90c71a9e94ce9f2d16f7425ee6105c880c7813c4 + name: libuser + evr: 0.63-17.el9 + sourcerpm: libuser-0.63-17.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/l/libutempter-1.2.1-6.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 30505 + checksum: sha256:d352371cbb7d5bd0c53fc699df953c8c1f184b056690b3c4571e57a6634015c5 + name: libutempter + evr: 1.2.1-6.el9 + sourcerpm: libutempter-1.2.1-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/m/make-4.3-8.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 550249 + checksum: sha256:351a22b0e6744bd329b1b0f22d9c3b69a6da970b575e6c76190cc84b0fe77450 + name: make + evr: 1:4.3-8.el9 + sourcerpm: make-4.3-8.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/m/man-db-2.9.3-9.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 1233088 + checksum: sha256:44d2f613bd962c7ddd7202780d648dbdb1c9030965c36e57e72ad7b2e56fd6e2 + name: man-db + evr: 2.9.3-9.el9 + sourcerpm: man-db-2.9.3-9.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/n/ncurses-6.2-12.20210508.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 414136 + checksum: sha256:70b5e65c332d9b68b005fa0b8e7d0b53deaa21c55833fa1bd5fed4985c2f95c0 + name: ncurses + evr: 6.2-12.20210508.el9 + sourcerpm: ncurses-6.2-12.20210508.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/o/openssh-8.7p1-46.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 457771 + checksum: sha256:71b112b493a770c81e108afd8ce6616c8a941c6f4332cc5db75731d9b830ccaf + name: openssh + evr: 8.7p1-46.el9 + sourcerpm: openssh-8.7p1-46.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/o/openssh-clients-8.7p1-46.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 697157 + checksum: sha256:2f94f61ef0cfd8089ce58040586e894ec3c0f1d7aa46e63659901d4c0eea9287 + name: openssh-clients + evr: 8.7p1-46.el9 + sourcerpm: openssh-8.7p1-46.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/o/openssl-3.5.1-4.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 1531255 + checksum: sha256:f7ff8eb3fd8b75ae1745af2270998fa662fcd5f81b892e94afd87e6954e2ffef + name: openssl + evr: 1:3.5.1-4.el9_7 + sourcerpm: openssl-3.5.1-4.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/o/openssl-libs-3.5.1-4.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 2278420 + checksum: sha256:97ef99f02df91fadaeae9a2b424a5235915012588eec03b362c14baef59ca699 + name: openssl-libs + evr: 1:3.5.1-4.el9_7 + sourcerpm: openssl-3.5.1-4.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/pam-1.5.1-26.el9_6.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 636107 + checksum: sha256:fd8dc3ae80d01e90bed08e84e32e3b47b568fe5ddc857dffbae36cc4bde0887b + name: pam + evr: 1.5.1-26.el9_6 + sourcerpm: pam-1.5.1-26.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/passwd-0.80-12.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 128531 + checksum: sha256:b443edbb241b9f9ba03ce883b5f7449bfe4340cdb0215d8e97cb4e5db89455af + name: passwd + evr: 0.80-12.el9 + sourcerpm: passwd-0.80-12.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/pkgconf-1.7.3-10.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 45196 + checksum: sha256:aa38a3951a690d721a815ea8f9b01995a85f35a8540d8075205821011d0385e6 + name: pkgconf + evr: 1.7.3-10.el9 + sourcerpm: pkgconf-1.7.3-10.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/pkgconf-m4-1.7.3-10.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 16054 + checksum: sha256:91bafd6e06099451f60288327b275cfcc651822f6145176a157c6b0fa5131e02 + name: pkgconf-m4 + evr: 1.7.3-10.el9 + sourcerpm: pkgconf-1.7.3-10.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/pkgconf-pkg-config-1.7.3-10.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 12398 + checksum: sha256:47f1f744f96a2f3d360bc129837738dcebb1ee5032effc4472a891eea1d6a907 + name: pkgconf-pkg-config + evr: 1.7.3-10.el9 + sourcerpm: pkgconf-1.7.3-10.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/policycoreutils-3.6-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 244356 + checksum: sha256:d57578bdc35f4bed8670d38112aaf6258898e77859bb35c73f911c5e08a3a331 + name: policycoreutils + evr: 3.6-3.el9 + sourcerpm: policycoreutils-3.6-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/procps-ng-3.3.17-14.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 363344 + checksum: sha256:a8c7514beb4c3cafa6341f43bbe285319d863b2893a34d91159dc8e90f615dd2 + name: procps-ng + evr: 3.3.17-14.el9 + sourcerpm: procps-ng-3.3.17-14.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/protobuf-c-1.3.3-13.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 38582 + checksum: sha256:d68a518f80e00df5e63ba24d4be5058998d857e24b1af316f37001dfc91d3149 + name: protobuf-c + evr: 1.3.3-13.el9 + sourcerpm: protobuf-c-1.3.3-13.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/psmisc-23.4-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 252522 + checksum: sha256:609ffc1ea49d733bf2fabf521851acf20e62cd873c3679f735bc7486b2434359 + name: psmisc + evr: 23.4-3.el9 + sourcerpm: psmisc-23.4-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-3.9.23-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 26208 + checksum: sha256:61362064f2fad6a572a4b52dedac8a4f7aa2b80bf91c914d35d4608272a3a86b + name: python3 + evr: 3.9.23-2.el9 + sourcerpm: python3.9-3.9.23-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-chardet-4.0.0-5.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 248522 + checksum: sha256:49b0ab23d8436b6f0313cf69cd4992acd3b1ab3394753218cbd4d61dbbf5b2ae + name: python3-chardet + evr: 4.0.0-5.el9 + sourcerpm: python-chardet-4.0.0-5.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-cloud-what-1.29.47.1-1.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 54936 + checksum: sha256:09a4bda2256929bd5282a12c1d5b4bb8aad345bd3a15496425531048069975da + name: python3-cloud-what + evr: 1.29.47.1-1.el9_7 + sourcerpm: subscription-manager-1.29.47.1-1.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-dateutil-2.9.0.post0-1.el9_7.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 309563 + checksum: sha256:9ed79e9fd2140a9349c9401c9fad3e489ffdfbfed475f2585dd317de2450b94c + name: python3-dateutil + evr: 1:2.9.0.post0-1.el9_7 + sourcerpm: python-dateutil-2.9.0.post0-1.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-dbus-1.2.18-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 151470 + checksum: sha256:26f20dd590b09a8f418dc6c51ba734ca3714902ccde9ca3e91201481ed2728ba + name: python3-dbus + evr: 1.2.18-2.el9 + sourcerpm: dbus-python-1.2.18-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-decorator-4.4.2-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 32068 + checksum: sha256:298a276622e42061af13cd50820ece993a463f657a6145cb957518c7b8765286 + name: python3-decorator + evr: 4.4.2-6.el9 + sourcerpm: python-decorator-4.4.2-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-dnf-4.14.0-31.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 478769 + checksum: sha256:864c3f045bfd551c24a526520eb58da96cb188fb9afa54f491301d6ffad58cfd + name: python3-dnf + evr: 4.14.0-31.el9 + sourcerpm: dnf-4.14.0-31.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-dnf-plugins-core-4.3.0-24.el9_7.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 269566 + checksum: sha256:7d1a5b4e6918b6fbcad5e208432ad924d0d24dc889c56a26698cce9b1b2a927f + name: python3-dnf-plugins-core + evr: 4.3.0-24.el9_7 + sourcerpm: dnf-plugins-core-4.3.0-24.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-gobject-base-3.40.1-6.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 192119 + checksum: sha256:e07c84ef1c2bdae2d18625e26be0ecaa5aa8b6876c249905670748cb3943c7a6 + name: python3-gobject-base + evr: 3.40.1-6.el9 + sourcerpm: pygobject3-3.40.1-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-gobject-base-noarch-3.40.1-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 168699 + checksum: sha256:f17b28b2e02016e13f5ae88256315a2817ef229ca53e67c251afbd5e541e91ef + name: python3-gobject-base-noarch + evr: 3.40.1-6.el9 + sourcerpm: pygobject3-3.40.1-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-gpg-1.15.1-6.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 288063 + checksum: sha256:2613cde45e991f83f14d39c059746cbc195e296cf16c207d853383eb4ed43dd6 + name: python3-gpg + evr: 1.15.1-6.el9 + sourcerpm: gpgme-1.15.1-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-hawkey-0.69.0-16.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 95130 + checksum: sha256:9f4e7b0059943fbb849d51db34798532c5b72227952d564aa14c3186e8297ae3 + name: python3-hawkey + evr: 0.69.0-16.el9 + sourcerpm: libdnf-0.69.0-16.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-idna-2.10-7.el9_4.1.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 108201 + checksum: sha256:af52887cccc937de789a399ba991cb49c5e98ab26742d017e2f58ed2d9eb5d0d + name: python3-idna + evr: 2.10-7.el9_4.1 + sourcerpm: python-idna-2.10-7.el9_4.1.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-iniparse-0.4-45.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 51931 + checksum: sha256:2d963fbff4044e88673c52fb03cc11d9395dcc2a0c27a26844477bf6eb1e8160 + name: python3-iniparse + evr: 0.4-45.el9 + sourcerpm: python-iniparse-0.4-45.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-inotify-0.9.6-25.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 57334 + checksum: sha256:219825121d761bf163e746f0ca424e4dfe071aece87c22ccd632abcf78ab4920 + name: python3-inotify + evr: 0.9.6-25.el9 + sourcerpm: python-inotify-0.9.6-25.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-libcomps-0.1.18-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 53332 + checksum: sha256:9dd2bfddff642d37b5a74057921e85a627cbd4cdee4e3d4d4f9a891a907660b3 + name: python3-libcomps + evr: 0.1.18-1.el9 + sourcerpm: libcomps-0.1.18-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-libdnf-0.69.0-16.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 743267 + checksum: sha256:c8d802fe0572d6609679019211c3160bc09e64f0caf322b6eebf0aeb4715d6de + name: python3-libdnf + evr: 0.69.0-16.el9 + sourcerpm: libdnf-0.69.0-16.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-librepo-1.14.5-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 48441 + checksum: sha256:7dda71775cc09051a6e69bca714820e6ffddf5585125a00672354c4cbee92a45 + name: python3-librepo + evr: 1.14.5-3.el9 + sourcerpm: librepo-1.14.5-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-libs-3.9.23-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 8464402 + checksum: sha256:433d9fc1e3b431d206334cd6271e92b53a1b40b805dc265c772b3f0935cda9ea + name: python3-libs + evr: 3.9.23-2.el9 + sourcerpm: python3.9-3.9.23-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-pip-wheel-21.3.1-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 1193706 + checksum: sha256:75c46aab03898c66ce16be556432b71aed7efcedce02b9263339c14f57b4fdc0 + name: python3-pip-wheel + evr: 21.3.1-1.el9 + sourcerpm: python-pip-21.3.1-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-pyparsing-2.4.7-9.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 157800 + checksum: sha256:4c7b1bbabe7f37d1dd098c9d893f7f8e97e5fd43aa8fa4d4c58a3b6b66e69c70 + name: python3-pyparsing + evr: 2.4.7-9.el9 + sourcerpm: pyparsing-2.4.7-9.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-pysocks-1.7.1-12.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 39172 + checksum: sha256:1e7586cb9918e6c365105d452b9efedfaf5bb7c80309c5d0151043da847dc15f + name: python3-pysocks + evr: 1.7.1-12.el9 + sourcerpm: python-pysocks-1.7.1-12.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-requests-2.25.1-10.el9_6.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 129490 + checksum: sha256:d8dc5b2edb7ed0eb14e3d41d126c68374354f4aaed82f87f14327af73ea2c1a1 + name: python3-requests + evr: 2.25.1-10.el9_6 + sourcerpm: python-requests-2.25.1-10.el9_6.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-rpm-4.16.1.3-39.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 65490 + checksum: sha256:7c5752358e1088e44b3931e9cbfbcacf74be8f7d357851a69d06b23b621b08ce + name: python3-rpm + evr: 4.16.1.3-39.el9 + sourcerpm: rpm-4.16.1.3-39.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-setuptools-53.0.0-15.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 958725 + checksum: sha256:e3c5b5927ad0c0bde27a95c54f7a1295965b317d225ece2e98acd365aa45d09f + name: python3-setuptools + evr: 53.0.0-15.el9 + sourcerpm: python-setuptools-53.0.0-15.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-setuptools-wheel-53.0.0-15.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 479203 + checksum: sha256:36dacb345e21bc0308ef2508f0c93995520a15ef0b56aab3593186c8dc9c0c5a + name: python3-setuptools-wheel + evr: 53.0.0-15.el9 + sourcerpm: python-setuptools-53.0.0-15.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-six-1.15.0-9.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 41373 + checksum: sha256:76c760f7e4ed054d158a31ef7927130baf917703c80eda92b0202b613aa81ef2 + name: python3-six + evr: 1.15.0-9.el9 + sourcerpm: python-six-1.15.0-9.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-subscription-manager-rhsm-1.29.47.1-1.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 142259 + checksum: sha256:42d99ee5dd8fa246e974c11b88e3e80b9930244a6e48b4215896ab35f1b5a6fc + name: python3-subscription-manager-rhsm + evr: 1.29.47.1-1.el9_7 + sourcerpm: subscription-manager-1.29.47.1-1.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-systemd-234-19.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 94001 + checksum: sha256:72657e6bbeda087b57c6136ff44bf5d2d9f5673cff1c002d132f263f93283365 + name: python3-systemd + evr: 234-19.el9 + sourcerpm: python-systemd-234-19.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/p/python3-urllib3-1.26.5-6.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 223946 + checksum: sha256:458494f58101f73fdae0330abe88f34b9a648f66a7ab40500bd1b99fc6d321ab + name: python3-urllib3 + evr: 1.26.5-6.el9 + sourcerpm: python-urllib3-1.26.5-6.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/r/rpm-build-libs-4.16.1.3-39.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 87057 + checksum: sha256:b961a494d25ae5ea7a9904c1329aedc6c7b7b95ea25dd8aee7ada2a81581d1ff + name: rpm-build-libs + evr: 4.16.1.3-39.el9 + sourcerpm: rpm-4.16.1.3-39.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/r/rpm-plugin-selinux-4.16.1.3-39.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 15645 + checksum: sha256:f945ec4663887632abd23cb6cbc862c6566c13dec93dcffd2e5ee3ff0d2081bb + name: rpm-plugin-selinux + evr: 4.16.1.3-39.el9 + sourcerpm: rpm-4.16.1.3-39.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/r/rpm-sign-libs-4.16.1.3-39.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 19390 + checksum: sha256:d1333a2de3b2c50e9eb3eb88fb9c9ef4af900d86459b45a126ca2407d0c4a1e1 + name: rpm-sign-libs + evr: 4.16.1.3-39.el9 + sourcerpm: rpm-4.16.1.3-39.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/r/rsync-3.2.5-3.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 416293 + checksum: sha256:99235a7555f6454898ebbcdcf927ebed68e3a60599c9226b9d1d60578d292878 + name: rsync + evr: 3.2.5-3.el9 + sourcerpm: rsync-3.2.5-3.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/s/selinux-policy-38.1.65-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 43109 + checksum: sha256:fb9d24fa5770a76e3c15677ec3c74f6910f89ded1d519dc94baedd8ee2db1938 + name: selinux-policy + evr: 38.1.65-1.el9 + sourcerpm: selinux-policy-38.1.65-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/s/selinux-policy-targeted-38.1.65-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 7266040 + checksum: sha256:30e7116093e0a96b5a156c017fc4a975ca0892fbe70ddf4b33eac12dad5965f5 + name: selinux-policy-targeted + evr: 38.1.65-1.el9 + sourcerpm: selinux-policy-38.1.65-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/s/shadow-utils-subid-4.9-15.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 85490 + checksum: sha256:8bca26bd499d9d6fea38e95cec40e058f7b6a0a30406b927f029f421c3b08677 + name: shadow-utils-subid + evr: 2:4.9-15.el9 + sourcerpm: shadow-utils-4.9-15.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/s/subscription-manager-1.29.47.1-1.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 914878 + checksum: sha256:e5dca1018f471b436644170881b51e064ce43545dd7a25135b96a542e7cedc27 + name: subscription-manager + evr: 1.29.47.1-1.el9_7 + sourcerpm: subscription-manager-1.29.47.1-1.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/s/subscription-manager-rhsm-certificates-20220623-1.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 22460 + checksum: sha256:66c73c5e907040a6e67f70452a1c00ebc4d07cf4c7cf2e2b2795a8260795fb2a + name: subscription-manager-rhsm-certificates + evr: 20220623-1.el9 + sourcerpm: subscription-manager-rhsm-certificates-20220623-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/s/systemd-252-55.el9_7.2.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 4161351 + checksum: sha256:99a062e913b5781c11bcd30a1f74cedd18a23f63355c03c70224afc58f0f1365 + name: systemd + evr: 252-55.el9_7.2 + sourcerpm: systemd-252-55.el9_7.2.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/s/systemd-pam-252-55.el9_7.2.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 278117 + checksum: sha256:d840edfb25445e036f1d03ca9e075b89c305201f1e2d50fb3e11fe7d25403125 + name: systemd-pam + evr: 252-55.el9_7.2 + sourcerpm: systemd-252-55.el9_7.2.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/s/systemd-rpm-macros-252-55.el9_7.2.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 71499 + checksum: sha256:b161332f408a2e0100558deb2d8ecfc3f829a126c83b9d0a02e4b7887ffac2fd + name: systemd-rpm-macros + evr: 252-55.el9_7.2 + sourcerpm: systemd-252-55.el9_7.2.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/t/tcl-8.6.10-7.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 1137015 + checksum: sha256:a7cf45af14e65509a7f4d33422499372f6fb869bb82695dd4e9004e5c2e4ac1a + name: tcl + evr: 1:8.6.10-7.el9 + sourcerpm: tcl-8.6.10-7.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/t/tpm2-tss-3.2.3-1.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 572170 + checksum: sha256:dc2cc69dcda7cace9f10bf167417ca4f28f002bcb9229b5356b7a3d5e3353b1a + name: tpm2-tss + evr: 3.2.3-1.el9 + sourcerpm: tpm2-tss-3.2.3-1.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/u/unzip-6.0-59.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 182284 + checksum: sha256:dc0b3bbb5e028ae1473afac598705038bb166bf848a3b80e632950746c111ba0 + name: unzip + evr: 6.0-59.el9 + sourcerpm: unzip-6.0-59.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/u/usermode-1.114-7.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 191821 + checksum: sha256:cef4e4b2ab9c07584de031fac3d81322ea5da809a277538a4396e646e6f5b1e1 + name: usermode + evr: 1.114-7.el9 + sourcerpm: usermode-1.114-7.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/u/util-linux-2.37.4-21.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 2391248 + checksum: sha256:82bd3fae04690f35c634e8cd6ad14faacfe3db2bb398f98fb6c8d50df961978c + name: util-linux + evr: 2.37.4-21.el9 + sourcerpm: util-linux-2.37.4-21.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/u/util-linux-core-2.37.4-21.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 476169 + checksum: sha256:e1d6b36eaaa048d6cb22799d3c463c95d0aadf5dac83fdcf05e9c047eb396406 + name: util-linux-core + evr: 2.37.4-21.el9 + sourcerpm: util-linux-2.37.4-21.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/v/vim-filesystem-8.2.2637-23.el9_7.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 13179 + checksum: sha256:793710bbfc6627228c7811bdd3cbecb2c667a4581bd8b5fe9b9a2ebb20e57f79 + name: vim-filesystem + evr: 2:8.2.2637-23.el9_7 + sourcerpm: vim-8.2.2637-23.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/v/vim-minimal-8.2.2637-23.el9_7.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 659902 + checksum: sha256:01385b2acc13b22b347f9852f6fb780c6375aece5080b03788fa7cdbc8f2adbb + name: vim-minimal + evr: 2:8.2.2637-23.el9_7 + sourcerpm: vim-8.2.2637-23.el9_7.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/v/virt-what-1.27-2.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 41745 + checksum: sha256:e67e7a9da9b1b523204a992ea3bd4e51d77740d317ae0fc1ef8b850b16124692 + name: virt-what + evr: 1.27-2.el9 + sourcerpm: virt-what-1.27-2.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/x/xz-5.2.5-8.el9_0.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 235798 + checksum: sha256:26ac21be6c1e396c7bcbaa9d4786e3275e996d9d78c01f75bbbc6962e6c9bef7 + name: xz + evr: 5.2.5-8.el9_0 + sourcerpm: xz-5.2.5-8.el9_0.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/y/yum-4.14.0-31.el9.noarch.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 92793 + checksum: sha256:50e838d8901aee82b6d59c1d6ecfb8adfe9d6368fa1009e70377f3feeffbaa3c + name: yum + evr: 4.14.0-31.el9 + sourcerpm: dnf-4.14.0-31.el9.src.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/os/Packages/z/zip-3.0-35.el9.aarch64.rpm + repoid: ubi-9-for-aarch64-baseos-rpms + size: 269791 + checksum: sha256:4dfc9b2afc08b96cba0a8c7f06be5691ec26f2104d9c1a100aa0432e30aac3cd + name: zip + evr: 3.0-35.el9 + sourcerpm: zip-3.0-35.el9.src.rpm + source: + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/a/alsa-lib-1.2.14-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 1228987 + checksum: sha256:3ffbe02f3fec23537bb51e396de80f565452572dddeca1033da95fb9fb9ab8e3 + name: alsa-lib + evr: 1.2.14-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/a/annobin-12.98-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 1012262 + checksum: sha256:cc70662d5376afa8617a010844ec0a5aec13cd7ba4e8839ec0053b80c7876b93 + name: annobin + evr: 12.98-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/a/at-spi2-atk-2.38.0-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 111112 + checksum: sha256:5713e30db407b1debad820ea89e57f3db5fe9c4e222ce44ab45d9e38ce52fe5a + name: at-spi2-atk + evr: 2.38.0-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/a/at-spi2-core-2.40.3-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 213364 + checksum: sha256:3a5717b63603264a184a1ef26f606898c7f0ecc4b57ebd996d05b73a77bb8336 + name: at-spi2-core + evr: 2.40.3-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/a/atk-2.36.0-5.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 313725 + checksum: sha256:171734f6cf9638497ccaccb73ab79b49d37085930e0c03d4c954aac2eaddbdc9 + name: atk + evr: 2.36.0-5.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/c/cairo-1.17.4-7.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 41864767 + checksum: sha256:0185c51c6c00b3a238e9038addfa1be86fee1b3cc3933efdd4f05f8c5db775d6 + name: cairo + evr: 1.17.4-7.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/c/cmake-3.26.5-2.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 10671338 + checksum: sha256:2f86bb96562eaf679969c2716738fbdfcc8a3966ecc3bb6317596fe2e214ea2b + name: cmake + evr: 3.26.5-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/c/container-selinux-2.240.0-3.el9_7.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 50047 + checksum: sha256:0678644d26b304ea3fa5aeeef567a461da41c9f533bbc6d0052542b3cbb2f313 + name: container-selinux + evr: 4:2.240.0-3.el9_7 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/c/containers-common-1-135.el9_7.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 168194 + checksum: sha256:876fd10e3ef2b0d4fe856e4434fa49b33cc7586c23bd8452a47e0eee34099b5a + name: containers-common + evr: 4:1-135.el9_7 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/c/criu-3.19-3.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 1397598 + checksum: sha256:935cde45890eee106b48c5a17fcce9a359bbc33e5867c7433012a28fdc095e90 + name: criu + evr: 3.19-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/c/crun-1.23.1-2.el9_7.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 845412 + checksum: sha256:19500c02ad50c34f29a7c69d69fb48a7675c9915a0656c272b82ccbf93bd32bd + name: crun + evr: 1.23.1-2.el9_7 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/d/dwz-0.16-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 162245 + checksum: sha256:addc4c802c7f4fe34c2088913f5257e3304db4a5ab415550456001db9dcadcf0 + name: dwz + evr: 0.16-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/e/emacs-27.2-18.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 44829188 + checksum: sha256:48e2c8f48ac642e1cc5d7b3c2687486a173ba613979204961ff14256fc69dfd7 + name: emacs + evr: 1:27.2-18.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/f/fontconfig-2.14.0-2.el9_1.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 1460194 + checksum: sha256:623ac6b43061ad2f2b5d07861dfeb9b83ef70ead8df02319d375e71bc0110b67 + name: fontconfig + evr: 2.14.0-2.el9_1 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/f/fribidi-1.0.10-6.el9.2.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 1177189 + checksum: sha256:d5e12deb110f7a5a8776435efa8f6c5e42ecf990e0ed27f95293020b65891254 + name: fribidi + evr: 1.0.10-6.el9.2 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/f/fuse-overlayfs-1.15-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 128348 + checksum: sha256:ad7abdc85910089902f74488e2571b87d78f6f77ade1d3ba26827b3374086163 + name: fuse-overlayfs + evr: 1.15-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/g/gdb-16.3-2.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 24594285 + checksum: sha256:b9be2d39bdb603c682673c338770da5d1c21bfea4569ff5ad520422d6bd2c3c0 + name: gdb + evr: 16.3-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/g/ghc-srpm-macros-1.5.0-6.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 10180 + checksum: sha256:2d980af2311afd353583b200783cb39a5da7e89b6dbb9e67aa7d77a2c53e0cab + name: ghc-srpm-macros + evr: 1.5.0-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/g/git-2.47.3-1.el9_6.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 7707656 + checksum: sha256:815c2ae9574006ecb596000492929264de785444736ee3968d5ee34cb6e75159 + name: git + evr: 2.47.3-1.el9_6 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/g/go-rpm-macros-3.6.0-11.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 135441 + checksum: sha256:7bb2e2542ae3947560daaa65830ef3e72c2833431a12b4e8f46982c4308dd2e1 + name: go-rpm-macros + evr: 3.6.0-11.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/k/kernel-srpm-macros-1.0-14.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 22473 + checksum: sha256:3d04bdaff4dcecb702da206368cf0fc10e068f21ffbede2e0aaddbce7e08c57a + name: kernel-srpm-macros + evr: 1.0-14.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libX11-1.7.0-11.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 2436722 + checksum: sha256:8720840bc38af119d62734144a5e8c95c1400ba42bd877e4279a786120d878d7 + name: libX11 + evr: 1.7.0-11.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libXau-1.0.9-8.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 335512 + checksum: sha256:3a52f0d37183b84a7f8d37d6ca314ec17a32c1d4167c9131cf4000285d82c59a + name: libXau + evr: 1.0.9-8.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libXcomposite-0.4.5-7.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 329141 + checksum: sha256:10f74555246a4a992de429bf1139b762ca6b8d754d092a5eb85f0c55f576a9db + name: libXcomposite + evr: 0.4.5-7.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libXdamage-1.1.5-7.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 315892 + checksum: sha256:15c2c0d99190985a2a7d376b0cbb2d9f6172ebdcb1a3305ac0bbd7a394942e8c + name: libXdamage + evr: 1.1.5-7.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libXext-1.3.4-8.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 401955 + checksum: sha256:7f50b5d07f8e1782c4ad2c485416f210004db0477588465167c257aa62fd0b6c + name: libXext + evr: 1.3.4-8.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libXfixes-5.0.3-16.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 306511 + checksum: sha256:3c8feb2710a52fe119d58369895cb2a17a10097a0a6b3a2bf469f0e34cf58db6 + name: libXfixes + evr: 5.0.3-16.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libXft-2.3.3-8.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 365800 + checksum: sha256:b1ef5a942e759207022bf9bff3d122bc9596914d8dd7ab92ea56ebcad96ee9a6 + name: libXft + evr: 2.3.3-8.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libXi-1.7.10-8.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 498271 + checksum: sha256:1de8a31cbe5edf8d10fe85fd96c1ebd1d0525c08a3ec75599ef12bad2945545c + name: libXi + evr: 1.7.10-8.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libXrandr-1.5.2-8.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 343241 + checksum: sha256:a565d64c7ff4b9c46cfc916097b1c8c9d886c006a7c18eac085f4ca6b4e8d310 + name: libXrandr + evr: 1.5.2-8.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libXrender-0.9.10-16.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 320828 + checksum: sha256:5fc0f3794b08cc71d89bf24c19a4a02c2d15c63850225327af9f20b45e1250e8 + name: libXrender + evr: 0.9.10-16.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libXtst-1.2.3-16.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 332563 + checksum: sha256:59a99e7e1af8762969b9212aa5375be77a7bdafce73f416be82694b16ec388d5 + name: libXtst + evr: 1.2.3-16.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libdatrie-0.2.13-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 325692 + checksum: sha256:c9a3acd383ebb5f8d5d2c069dca717f147fddc461155cc12f07572972a82e7fe + name: libdatrie + evr: 0.2.13-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libdrm-2.4.123-2.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 500530 + checksum: sha256:8fd4b075f14ade405808c1ae309270aad50709f615bcd24d93aa39ae65e3a977 + name: libdrm + evr: 2.4.123-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libmpc-1.2.1-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 846236 + checksum: sha256:47774c27b65e63251f3a1cea99efbe8caed86448a573e34a44ab28ad88cc3ece + name: libmpc + evr: 1.2.1-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libnet-1.2-7.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 611553 + checksum: sha256:bc2724e7061c48e2038f4f47b433bebccedb4ffc227dc351baaf3d5a52f03b08 + name: libnet + evr: 1.2-7.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libnsl2-2.0.0-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 56885 + checksum: sha256:28fda2510dfa3d80c6f227354c3e917a104374e97566419e71ef5e246887c4e2 + name: libnsl2 + evr: 2.0.0-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libslirp-4.4.0-8.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 128699 + checksum: sha256:5e740382ebf1511fc7c4fa0c1db0bc72fad624329ff9e359cea75cccbed503e4 + name: libslirp + evr: 4.4.0-8.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libthai-0.1.28-8.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 426287 + checksum: sha256:1bff93f9076778b16fea27d75a7434caf8e9fb5e9bcabbf2cf8f7f0069302d73 + name: libthai + evr: 0.1.28-8.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libuv-1.42.0-2.el9_4.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 1300269 + checksum: sha256:f9dfa0dc965675730184604570c6a2aa95ddc2dfa6a7cb209514b1e744a4e3d7 + name: libuv + evr: 1:1.42.0-2.el9_4 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libxcb-1.13.1-9.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 519787 + checksum: sha256:6e79beeac5762cb0f4eca5a4e09aaf9f607b8d54a8154e68a672c4d42e5a617b + name: libxcb + evr: 1.13.1-9.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libxkbcommon-1.0.3-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 446799 + checksum: sha256:47b1254e062547a0e553b4e072498a91bf3c7364c8499c15a2762858197c50de + name: libxkbcommon + evr: 1.0.3-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/libxshmfence-1.3-10.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 319069 + checksum: sha256:9a36c33eafdf600040cb41cc1d8ca40395a3e00f2fd6a41a28ad66644d90edaa + name: libxshmfence + evr: 1.3-10.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/llvm-20.1.8-3.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 147354701 + checksum: sha256:87daec5cb8d79fe25b2c9e48bac5ff63ca96f8d1fa7f7cfc8374605e80f39628 + name: llvm + evr: 20.1.8-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/l/lua-rpm-macros-1-6.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 12116 + checksum: sha256:19fdee3aa469d583a7f48dce71513da47c5046018bc35bfbe57c818b7aae21d0 + name: lua-rpm-macros + evr: 1-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/m/mesa-25.0.7-3.el9_7.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 50517245 + checksum: sha256:5fc727ec10d9e7fcb65a9573f0c2eca677d80b30efb1677982ae2f21a3ef942b + name: mesa + evr: 25.0.7-3.el9_7 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/m/mpdecimal-2.5.1-3.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 3334137 + checksum: sha256:2f5ece89d6a8d892816f386462d8be291ad83f1500b4c4b3655dcc7ed5192c0d + name: mpdecimal + evr: 2.5.1-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/n/nss-3.112.0-4.el9_4.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 81951225 + checksum: sha256:2c03ead1e23a8a81cc6e28fbc46fa51b7cd085ab84186117ecb78dc86d0632f2 + name: nss + evr: 3.112.0-4.el9_4 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/n/nss_wrapper-1.1.13-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 199854 + checksum: sha256:70665df15ed2534a7216880efc46d4073c61580e6929cfb6e033a9739f487aab + name: nss_wrapper + evr: 1.1.13-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/o/ocaml-srpm-macros-6-6.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 10233 + checksum: sha256:198f33946c3b1c1e104109073449ac03fd59035e6c3f646ad847626aa646e336 + name: ocaml-srpm-macros + evr: 6-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/o/openblas-srpm-macros-2-11.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 9345 + checksum: sha256:fe7a59edc21a63ddabfc48585a536d7c97dbcf27d46fa1e8b723df87a3c76bb3 + name: openblas-srpm-macros + evr: 2-11.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/pango-1.48.7-3.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 2073489 + checksum: sha256:4efddadb4bf304a47e2cce96d6d63d1643f5bdcb06dace3c04f8d37410f8bc22 + name: pango + evr: 1.48.7-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-5.32.1-481.1.el9_6.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 12786537 + checksum: sha256:cef69403d27b100525c0e630fb17d1ef1d598c608241ea07ba0975b559a42858 + name: perl + evr: 4:5.32.1-481.1.el9_6 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Algorithm-Diff-1.2010-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 43626 + checksum: sha256:5bdfea020bfb4ee04c5fd3a5552724f21af7df49d8bf9b774060f1dd47c6b972 + name: perl-Algorithm-Diff + evr: 1.2010-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Archive-Tar-2.38-6.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 79758 + checksum: sha256:c543a9be1a2e718e3fa282b16fc058a4e3e3c21d75513591ed170a63c9944e37 + name: perl-Archive-Tar + evr: 2.38-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Archive-Zip-1.68-6.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 177506 + checksum: sha256:0bc6505ab7fe87129f423e887a65153d015c38ddc68115ccf2149ebff5db92e1 + name: perl-Archive-Zip + evr: 1.68-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-CPAN-2.29-5.el9_6.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 913914 + checksum: sha256:ce91adec7194b6d7b65079f712418469db4b4d657251ddcf6643299b232644a1 + name: perl-CPAN + evr: 2.29-5.el9_6 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-CPAN-DistnameInfo-0.12-23.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 26900 + checksum: sha256:2dde7ae0e396bf60d579f1c711a0ce6845c5a6dc8a3069fc125e64709c03e764 + name: perl-CPAN-DistnameInfo + evr: 0.12-23.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-CPAN-Meta-2.150010-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 129946 + checksum: sha256:b93a6beedf64a4270dc4281fd9ea6fc5fabc08511bfd7ec95582bdcd5a3f50f3 + name: perl-CPAN-Meta + evr: 2.150010-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-CPAN-Meta-Requirements-2.140-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 45057 + checksum: sha256:cae76684fe68e4ef068523036a12aa65aa9ff697908aa448af0b5842507c8f11 + name: perl-CPAN-Meta-Requirements + evr: 2.140-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-CPAN-Meta-YAML-0.018-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 63081 + checksum: sha256:b0ae0d2859a6dbf7cd77de0e547370f85489f617319d8f55eb3b3533c22ea943 + name: perl-CPAN-Meta-YAML + evr: 0.018-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Carp-1.50-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 37030 + checksum: sha256:67ec8f31b0276573adc231a83abb15d42f31f56c2520f377da39e6dc9904ccf9 + name: perl-Carp + evr: 1.50-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Compress-Bzip2-2.28-5.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 908406 + checksum: sha256:fd5ed562b1231e74f8dd6856e8b4494872a1afc84a11dc4b26eb3f59193cf78f + name: perl-Compress-Bzip2 + evr: 2.28-5.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Compress-Raw-Bzip2-2.101-5.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 154607 + checksum: sha256:06e2c818ae4ac7823ae67869037edb071cedb745bce8e010a268d1850999ac38 + name: perl-Compress-Raw-Bzip2 + evr: 2.101-5.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Compress-Raw-Lzma-2.101-3.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 133511 + checksum: sha256:e73434426813ed9db9b82bdd301f4d0717b613fc8db3ff48e2e198d3b1e20fad + name: perl-Compress-Raw-Lzma + evr: 2.101-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Compress-Raw-Zlib-2.101-5.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 271620 + checksum: sha256:f815738f7e64cb1912a188a57f32b9e3416192bdc2c80a61308cf668a0cb6ba9 + name: perl-Compress-Raw-Zlib + evr: 2.101-5.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Config-Perl-V-0.33-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 35359 + checksum: sha256:77f7dbd94351b5cbe86859d557eb08525cb50bad76a344c7e4f5b16decb97be1 + name: perl-Config-Perl-V + evr: 0.33-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-DB_File-1.855-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 158812 + checksum: sha256:b0db40023b1387c9e1cb5f4a28914e4e7426e112132fd9e03a21a78c08a91bd9 + name: perl-DB_File + evr: 1.855-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Data-Dumper-2.174-462.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 131573 + checksum: sha256:554ef703b9510fdfc7fb7439f20e5b5be6bc05f720ad81fc4cf3973111532d7e + name: perl-Data-Dumper + evr: 2.174-462.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Data-OptList-0.110-17.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 31802 + checksum: sha256:e2b75b4859a73491af1aa145027a54aeda204f31508f98c264ec719f0759fef0 + name: perl-Data-OptList + evr: 0.110-17.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Data-Section-0.200007-14.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 35026 + checksum: sha256:29b50e2e9fcfd3ef490fde575e5651dd185d7bc10f62c97b2d7b6b525ecdd746 + name: perl-Data-Section + evr: 0.200007-14.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Devel-PPPort-3.62-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 469970 + checksum: sha256:1c4181c874720056a80d1ee015196f36ceef296709fe93d5d2b5282d6b90f80f + name: perl-Devel-PPPort + evr: 3.62-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Devel-Size-0.83-10.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 88128 + checksum: sha256:5d65648105f4b21ba27f516113c995f25d19df091820d1fe6e99d72a6e89783c + name: perl-Devel-Size + evr: 0.83-10.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Digest-1.19-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 22653 + checksum: sha256:cfac6eec4d3564b4a9a46df943e5e3b11434673dccfe095e2f631978636d61d1 + name: perl-Digest + evr: 1.19-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Digest-MD5-2.58-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 60213 + checksum: sha256:759005f7d3a3ee7a97da1af8f4c4e30a6d8592f1bc5ca95e6e065c6793f8ea17 + name: perl-Digest-MD5 + evr: 2.58-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Digest-SHA-6.02-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 60965 + checksum: sha256:6223e7b6ee3e168987685a0432eb30908b88a4e33503c4f71ffd1f4202be64d5 + name: perl-Digest-SHA + evr: 1:6.02-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Digest-SHA1-2.13-34.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 51532 + checksum: sha256:24cb3be49a88473ca75fb773cca161a32a081afb243cd8b737aa7d3b6399a7f0 + name: perl-Digest-SHA1 + evr: 2.13-34.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Encode-3.08-462.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 1915541 + checksum: sha256:f5a4058ed88a2763aad3a39a13d7cbe68d0d76f8d7a98b634cb7de63f747e407 + name: perl-Encode + evr: 4:3.08-462.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Encode-Locale-1.05-21.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 19941 + checksum: sha256:4c7446c8690a0dc5a7e80a703ab32be8d7f8819493aec5e15a9468e5972f9070 + name: perl-Encode-Locale + evr: 1.05-21.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Env-1.04-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 22963 + checksum: sha256:f7872c1ec5309090bab03ab984ef49e7ab108f6e7f7a7acddc718e67847f2489 + name: perl-Env + evr: 1.04-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Error-0.17029-7.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 46570 + checksum: sha256:387afa8f708f97fd2f72e8d54db80a6554340eefaec6ce36b05055fc1eabd004 + name: perl-Error + evr: 1:0.17029-7.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Exporter-5.74-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 32709 + checksum: sha256:67cf67c052ac12e234811589fe0a446a8ad79d4ab09da1187b422397d5f41440 + name: perl-Exporter + evr: 5.74-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-ExtUtils-CBuilder-0.280236-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 54700 + checksum: sha256:c4825f03bd2f125d4a7b9c361fdbae58e3eb888b40792d6ca740d4c9796529a3 + name: perl-ExtUtils-CBuilder + evr: 1:0.280236-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-ExtUtils-Install-2.20-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 52908 + checksum: sha256:a5a00213a6c11ebfe564f890525323981c10bb990ce06a1ad05163ccce239a54 + name: perl-ExtUtils-Install + evr: 2.20-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-ExtUtils-MakeMaker-7.60-3.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 504754 + checksum: sha256:8f17335d16783c182512dfc1af5cd8a762b41944f024f456849f2dd475ad2648 + name: perl-ExtUtils-MakeMaker + evr: 2:7.60-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-ExtUtils-Manifest-1.73-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 51571 + checksum: sha256:db9319ce19481088c58205d252bc03fc816711399ac54b9cb90a0f12cc7a24c4 + name: perl-ExtUtils-Manifest + evr: 1:1.73-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-ExtUtils-ParseXS-3.40-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 138437 + checksum: sha256:aaa28538e07c7df4eb6e0d3ca1aa6d2806f7977116839c0605bf49962332e16b + name: perl-ExtUtils-ParseXS + evr: 1:3.40-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-File-Fetch-1.00-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 32628 + checksum: sha256:ee5ddafaff74bc4cbaafb81de847a4e5fcafe7d55ea39a3aad8acce1d3cfd9a2 + name: perl-File-Fetch + evr: 1.00-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-File-HomeDir-1.006-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 48314 + checksum: sha256:9324fc77f0cae4a487865f7168e58fefaf2a45dd44d5acb0c0ffd607bc79e972 + name: perl-File-HomeDir + evr: 1.006-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-File-Path-2.18-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 43503 + checksum: sha256:2523a27381e16676442f21d6c90a0ebabeb65eb37d0ef4a2dacc02155bad183b + name: perl-File-Path + evr: 2.18-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-File-Temp-0.231.100-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 89500 + checksum: sha256:540bfbab1936e66314c0eac3a0880cd4a6ad55242055d7492a398868653d2d89 + name: perl-File-Temp + evr: 1:0.231.100-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-File-Which-1.23-10.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 35149 + checksum: sha256:fd089f060aea15adcd7fe380a388fa8feb40daa0820b3d50dd20616c56bd6c68 + name: perl-File-Which + evr: 1.23-10.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Filter-1.60-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 108315 + checksum: sha256:a9b8bb8bef551453366fab1f66883904c8ba996926d906fd32b759880a588dad + name: perl-Filter + evr: 2:1.60-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Filter-Simple-0.96-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 32804 + checksum: sha256:a070b22cd4c09d06fa4078588f0a2a8735490defc6a93ebea7599ae5ee1ee557 + name: perl-Filter-Simple + evr: 0.96-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Getopt-Long-2.52-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 55697 + checksum: sha256:c5260e60a5d3e4a6ba1ac7aad158322bfc7af0e9e85c10a4426860620cefda28 + name: perl-Getopt-Long + evr: 1:2.52-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-HTTP-Tiny-0.076-462.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 93389 + checksum: sha256:fe6eea19db536fbb948f3bbaf2d334bce7c39638342b8c6b79df7b3cc0a3a103 + name: perl-HTTP-Tiny + evr: 0.076-462.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-IO-Compress-2.102-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 311395 + checksum: sha256:6a4d183d03c58572ad99c44427d4f80174a74e88f82e815ef9b68ee367949414 + name: perl-IO-Compress + evr: 2.102-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-IO-Compress-Lzma-2.101-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 117388 + checksum: sha256:b98fc6c2bba6a5310eeea99c39c4eb4b4c9c5f6f115c1ca391ff9f983b3603b6 + name: perl-IO-Compress-Lzma + evr: 2.101-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-IO-Socket-IP-0.41-5.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 58169 + checksum: sha256:820b50e8bbd44baeb36fb2c4996d88909043fb26333c16a0f4f5335d1bc1d04a + name: perl-IO-Socket-IP + evr: 0.41-5.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-IO-Socket-SSL-2.073-2.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 295384 + checksum: sha256:f70d650d6e7f244491287e88d0f95637461c3fbd4e6a6124d285520eb0606924 + name: perl-IO-Socket-SSL + evr: 2.073-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-IO-Zlib-1.11-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 22007 + checksum: sha256:e83d2fcd26cbbac178ae8a77d75bb1e35ae697a0a1ebd9838787b0e7355b476f + name: perl-IO-Zlib + evr: 1:1.11-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-IPC-Cmd-1.04-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 45145 + checksum: sha256:d36b285269c9f8f186899296e922527b0d5efedae08d8ecef5e928369f344f04 + name: perl-IPC-Cmd + evr: 2:1.04-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-IPC-SysV-2.09-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 80187 + checksum: sha256:f3d99435bdc3bb3066a79ccf7e0e15b91ce2503a7ef2ef8a228238e03fd41b09 + name: perl-IPC-SysV + evr: 2.09-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-IPC-System-Simple-1.30-6.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 46334 + checksum: sha256:13c06559e1d68b47019a9e4ae4387d5962f0dd85a6ee77f2ed23ebcea92a7990 + name: perl-IPC-System-Simple + evr: 1.30-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Importer-0.026-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 52799 + checksum: sha256:52f89eb0a2d5f0a6a668679aa2d9adb4fb92e35fdd06e87d0b9d169d43d2e7ce + name: perl-Importer + evr: 0.026-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-JSON-PP-4.06-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 66646 + checksum: sha256:25990b7a748140b948e4ad9a6aad236f7c82dc7a5c6eab6c2fb370de45d582d5 + name: perl-JSON-PP + evr: 1:4.06-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Locale-Maketext-1.29-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 68578 + checksum: sha256:eb34611f4a8b295e9ba09f63b102db48b152e4915f90d9a9c33dba6e3331b3ed + name: perl-Locale-Maketext + evr: 1.29-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-MIME-Base64-3.16-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 43653 + checksum: sha256:b48266a93fef844c4b3ee3ff3d61df0cc497558b12e2b7be9e8a87fd3bd3a88b + name: perl-MIME-Base64 + evr: 3.16-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-MIME-Charset-1.012.2-15.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 68860 + checksum: sha256:375a66d8aadbde800a204d0681df4b0146dbd2cbcca577762162708d772095f4 + name: perl-MIME-Charset + evr: 1.012.2-15.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-MRO-Compat-0.13-15.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 21684 + checksum: sha256:145780b93fce797e44ceb5911d79d150830ef976551d2a2dea4a64368002cd59 + name: perl-MRO-Compat + evr: 0.13-15.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Math-BigInt-1.9998.18-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 3013100 + checksum: sha256:6dc7b0f22726602de1368de52d7f4eae6c5144971ba6bf9dd6fe17a293f8da6d + name: perl-Math-BigInt + evr: 1:1.9998.18-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Math-BigInt-FastCalc-0.500.900-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 2419116 + checksum: sha256:b1221f5ccb5a07e8f87ba1397e17eea89ae9d9e152a724feb666985e76738e45 + name: perl-Math-BigInt-FastCalc + evr: 0.500.900-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Math-BigRat-0.2614-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 62659 + checksum: sha256:9e90c3abafc7b3b556ba1e1054834d95c79b698d4d72d31ad0d846ce9f8ba166 + name: perl-Math-BigRat + evr: 0.2614-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Module-Build-0.42.31-9.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 321930 + checksum: sha256:203f542dbb18437a7d0f30cfc819eb2b719f191b3a4e2b0456f20a291f68a0da + name: perl-Module-Build + evr: 2:0.42.31-9.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Module-CoreList-5.20240609-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 139931 + checksum: sha256:f40d3b1814a4a9d35a071732892b188cfe5ca7546f477944fb54b8ddc19676a5 + name: perl-Module-CoreList + evr: 1:5.20240609-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Module-Load-0.36-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 20494 + checksum: sha256:d48889d7e5f4606b8de8d7886988274da466b047cb2434dc91bfe4d4339d1e24 + name: perl-Module-Load + evr: 1:0.36-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Module-Load-Conditional-0.74-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 26054 + checksum: sha256:69741f661710264f9aa8d97cdbde828b80323503bfa7da5c91330987a00d89ba + name: perl-Module-Load-Conditional + evr: 0.74-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Module-Metadata-1.000037-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 65016 + checksum: sha256:f3816981e19fb56a34bf13f1e288c01ef18613693bae505aa5ee0dc372d7aad1 + name: perl-Module-Metadata + evr: 1.000037-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Module-Signature-0.88-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 113588 + checksum: sha256:2777705793dd0cf55ac736f06632c02a93c47e5ef38c5eb0cd7603c3f2c76ec1 + name: perl-Module-Signature + evr: 0.88-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Mozilla-CA-20200520-6.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 151174 + checksum: sha256:488e0f8b1f3d167a5eb3c0156045adea8d1dbe668b24c83b988fa42250690b0d + name: perl-Mozilla-CA + evr: 20200520-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Net-Ping-2.74-5.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 70563 + checksum: sha256:e4a27ae525d6bf274e4f1612f3c5dc81e4557467bda40bd63ce8e5723e00a8cb + name: perl-Net-Ping + evr: 2.74-5.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Net-SSLeay-1.94-3.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 693509 + checksum: sha256:c4b96a011129196428c74b1bc6d72a5c4d45514bd877e345dbf1ee9ede8c5769 + name: perl-Net-SSLeay + evr: 1.94-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Object-HashBase-0.009-7.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 32480 + checksum: sha256:5e8e5fb82b0a685c85f86490924ea1e0e3ac6364b07f43e087175d3f587c0e64 + name: perl-Object-HashBase + evr: 0.009-7.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Package-Generator-1.106-23.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 29367 + checksum: sha256:6a5be4bb4322abe97c45c84cb26368b594b9d90a7e66d4841b74d179ecd72c9a + name: perl-Package-Generator + evr: 1.106-23.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Params-Check-0.38-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 23416 + checksum: sha256:aa052e7b8c96f6c4610ab34686928f0f7adbb41044e29378620e3d5e827cce76 + name: perl-Params-Check + evr: 1:0.38-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Params-Util-1.102-5.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 207956 + checksum: sha256:a7eb296be9dc11401756128d84ae57a6e2e98fd0231cb5a52d7e86d42153ee56 + name: perl-Params-Util + evr: 1.102-5.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-PathTools-3.78-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 141038 + checksum: sha256:3457f843826ffa381deea36e926b9c89e78b024bb0d7877d3eaf0ce9af414d1d + name: perl-PathTools + evr: 3.78-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Perl-OSType-1.010-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 32465 + checksum: sha256:dd1ff7c7ef5ad251b1af9029f0555b4d21f3d96dd589ebb0d5989bd185f9abed + name: perl-Perl-OSType + evr: 1.010-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-PerlIO-via-QuotedPrint-0.09-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 24579 + checksum: sha256:d06492c280011cd128a3e84fe071584470de288053375da173a6304ebafc0e87 + name: perl-PerlIO-via-QuotedPrint + evr: 0.09-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Pod-Checker-1.74-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 35413 + checksum: sha256:ce262ff36c0f737cd181b4e8974ded778cffcc6a6ca949b98b716e2a822b41fe + name: perl-Pod-Checker + evr: 4:1.74-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Pod-Escapes-1.07-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 22192 + checksum: sha256:278a6249918084e23053e4847fd00c417de61ecf551ae11c6eaca2068b136ded + name: perl-Pod-Escapes + evr: 1:1.07-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Pod-Perldoc-3.28.01-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 225409 + checksum: sha256:5ee087f47aa3f1f317069a5c5914f78caea706b0c5690baf6245c5fc9579d71a + name: perl-Pod-Perldoc + evr: 3.28.01-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Pod-Simple-3.42-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 318605 + checksum: sha256:0519c7d5391807d300f0490e57ef0402a6831f6820045f6faec44c60b47e110c + name: perl-Pod-Simple + evr: 1:3.42-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Pod-Usage-2.01-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 91508 + checksum: sha256:82e3309aa8a5b9967dd1bdae4c0e3855e91722244bec647cc95499709aec7bc9 + name: perl-Pod-Usage + evr: 4:2.01-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Scalar-List-Utils-1.56-462.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 187594 + checksum: sha256:2b9117c65c6939ee02a54d235897441f826ec331eec1db4b674f37e06fc6638a + name: perl-Scalar-List-Utils + evr: 4:1.56-462.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Socket-2.031-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 57721 + checksum: sha256:cbd4a46e548d84325929c4fc205c20239359f1562729281247265d780fd375ad + name: perl-Socket + evr: 4:2.031-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Software-License-0.103014-12.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 135074 + checksum: sha256:27c65fae4f13a24c6e3634b70f39b439bf5b90b8892b2987d4498dbb4ba2780f + name: perl-Software-License + evr: 0.103014-12.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Storable-3.21-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 225886 + checksum: sha256:ec9eda9094c07d88067eda454000dfd55465b9dcc3f675599df828044317aa63 + name: perl-Storable + evr: 1:3.21-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Sub-Exporter-0.987-27.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 59528 + checksum: sha256:a552bfe187044ae29d0dc667e6e0a29c6340bf308d32d4b0c902f19d124e2c39 + name: perl-Sub-Exporter + evr: 0.987-27.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Sub-Install-0.928-28.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 30662 + checksum: sha256:224662bdabe9c803615622a3adcb891165ddcdc3eb58aedfed1789576f9048f1 + name: perl-Sub-Install + evr: 0.928-28.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Sys-Syslog-0.36-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 97885 + checksum: sha256:8f3db804c924748fc7f7f3a10e093bd1195661657a404ab102a9c1fbb8fe5cb4 + name: perl-Sys-Syslog + evr: 0.36-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Term-ANSIColor-5.01-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 69123 + checksum: sha256:40014939aeafb292b2baea665a8a3b1ee227dac7ecaac540c5fb537a6f8c3824 + name: perl-Term-ANSIColor + evr: 5.01-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Term-Cap-1.17-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 23367 + checksum: sha256:52658f861201f1947d07040968098fa9d31433c46bb8b38cd33ca2cd1fdb3b67 + name: perl-Term-Cap + evr: 1.17-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Term-Size-Any-0.002-35.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 15436 + checksum: sha256:f9aa001a28f500b09632dc321a4b46780f0cd02aa02ac8de8529684960fea05f + name: perl-Term-Size-Any + evr: 0.002-35.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Term-Size-Perl-0.031-12.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 24324 + checksum: sha256:c0283217d4d0998f3c2b24f42d956de7bc0c0c41478f40bdf6ef868748e003ec + name: perl-Term-Size-Perl + evr: 0.031-12.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Term-Table-0.015-8.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 42326 + checksum: sha256:a51423376f857f9720d3ad0e706db782758ac19bc3a28a0feaba80442ea7bd81 + name: perl-Term-Table + evr: 0.015-8.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-TermReadKey-2.38-11.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 98184 + checksum: sha256:d4f5da01fc7692c6b65a9cd180c7cc05f29163b4b580ef06118f3246621ee228 + name: perl-TermReadKey + evr: 2.38-11.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Test-Harness-3.42-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 226770 + checksum: sha256:9c62f68a4bb3b0c1e6fbdfbbf2a840e50d93e1f6e0f8936931153725e0593c53 + name: perl-Test-Harness + evr: 1:3.42-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Test-Simple-1.302183-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 355537 + checksum: sha256:9b4b7c9a1a8723a1d4c1c353060ddb7f57e48343552506af10066d9ebaed37e6 + name: perl-Test-Simple + evr: 3:1.302183-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Text-Balanced-2.04-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 52612 + checksum: sha256:41dca789e663140111944d257574c4eaa74b66d6169f256a9ffe407fa8070d27 + name: perl-Text-Balanced + evr: 2.04-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Text-Diff-1.45-13.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 41875 + checksum: sha256:df1478044a0c7fb575b1324c0e9311a51e883ca61ff39952d0042ee1b2eb5fd1 + name: perl-Text-Diff + evr: 1.45-13.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Text-Glob-0.11-15.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 16200 + checksum: sha256:9aa6c8502f05a42e5048063c2aff09e15cf8a44f6d00b3f8f154e58f051ff4cc + name: perl-Text-Glob + evr: 0.11-15.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Text-ParseWords-3.30-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 18773 + checksum: sha256:68425a0a7b9566b14abb56211c43f55146ac20c70a6dc69f983729505c94379c + name: perl-Text-ParseWords + evr: 3.30-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Text-Tabs+Wrap-2013.0523-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 30727 + checksum: sha256:e3728f77c64a1dc3edae34554fdcb1f6c940b54f665c8529b730f4afff6f1543 + name: perl-Text-Tabs+Wrap + evr: 2013.0523-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Text-Template-1.59-5.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 62651 + checksum: sha256:71bd67c547eec1d910a9c549be0ed7959a0f8e52a09e37d000a76bab1fd73cd3 + name: perl-Text-Template + evr: 1.59-5.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Thread-Queue-3.14-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 27710 + checksum: sha256:d844642772b9a505fc9bd5aaf94b597f1cf66ba2a890462f33f0fa226ccde79b + name: perl-Thread-Queue + evr: 3.14-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Tie-RefHash-1.40-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 43611 + checksum: sha256:d21a4a6ac093c7622f28c5ac2bd6aa7fae86c5b4c150249d9ca696b5461f3f6a + name: perl-Tie-RefHash + evr: 1.40-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Time-HiRes-1.9764-462.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 124567 + checksum: sha256:c9e00767aec7da2661ca2785530bc7f35c120e7411cfcd6889437c20add7ade1 + name: perl-Time-HiRes + evr: 4:1.9764-462.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Time-Local-1.300-7.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 54755 + checksum: sha256:f9d3745fb10235d5097536f81976f8234921de7a5c4b5cd599aa2b790f4ad18b + name: perl-Time-Local + evr: 2:1.300-7.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-URI-5.09-3.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 123780 + checksum: sha256:20fa38e20285da9712b42fdb9a5dffbc72644c4d608db827e2a10e9d8055dce2 + name: perl-URI + evr: 5.09-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Unicode-Collate-1.29-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 915935 + checksum: sha256:9f5cd2c294c8f4383e9d6d8ea9b7e2c2a1e913c5a27d39e041885548a570dff4 + name: perl-Unicode-Collate + evr: 1.29-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Unicode-LineBreak-2019.001-11.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 320828 + checksum: sha256:52d4dd85581dfa68c432cab3bde847ee4f62285bbc18ee04fdd5fc5e87dd9a2d + name: perl-Unicode-LineBreak + evr: 2019.001-11.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-Unicode-Normalize-1.27-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 55458 + checksum: sha256:514286df911a40dad2269810466a25279f07d2efab97db7479de337cfcedd971 + name: perl-Unicode-Normalize + evr: 1.27-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-autodie-2.34-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 106197 + checksum: sha256:82f0f75aaf2ac269983fc0c5a4a8c436e0382963ea15dd3e6b1b983865a6ae9b + name: perl-autodie + evr: 2.34-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-bignum-0.51-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 40019 + checksum: sha256:065483710b985ef93e23a0a9d69826d777ac3b3580429b011ecc1db4b03f6f8d + name: perl-bignum + evr: 0.51-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-constant-1.33-461.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 32045 + checksum: sha256:c68aeb1a1dbcf82f3be9b0b23a8fcbaaa9083d46328a76b6646af5412eaeedca + name: perl-constant + evr: 1.33-461.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-experimental-0.022-6.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 24159 + checksum: sha256:72d8e178ae3d2c2607e9ac4875957f841af9511398ddf07279b5e02a0e38034c + name: perl-experimental + evr: 0.022-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-inc-latest-0.500-20.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 28925 + checksum: sha256:3ac7d9dbcf90cfa75334d84853688e714b67a2982e4c9a33afac0ea4f79b1fb4 + name: perl-inc-latest + evr: 2:0.500-20.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-libnet-3.13-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 110461 + checksum: sha256:e473459e582b0cf07d4ecb9c7045547ad3543b24b5796f06ff8b42184d4a0fad + name: perl-libnet + evr: 3.13-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-local-lib-2.000024-13.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 78260 + checksum: sha256:4f60f5abc65be4e926262251a0a8d6ed0a86ac650dba678411b148c6a4ea34fd + name: perl-local-lib + evr: 2.000024-13.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-parent-0.238-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 23463 + checksum: sha256:cb61d28f218c1b1f51be254fa0282270b54fb051e4a164e7937411d7023d8c66 + name: perl-parent + evr: 1:0.238-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-perlfaq-5.20210520-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 212379 + checksum: sha256:9d33eccd67de62a9793105ef005f4865af5d931471697c9aaf4fd6e2f3da3a16 + name: perl-perlfaq + evr: 5.20210520-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-podlators-4.14-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 150048 + checksum: sha256:71e7c3e0eb8d62e314cf45b89d5be318ddb507399a96018079dd5fffe2b18de9 + name: perl-podlators + evr: 1:4.14-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-srpm-macros-1-41.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 10651 + checksum: sha256:05990bf148e58515223b0936ee7b621e5d39bb875e2481a4d84522bd4b57d4e3 + name: perl-srpm-macros + evr: 1-41.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-threads-2.25-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 130514 + checksum: sha256:92008f60b397b2e4380eddfe58aa788f78245a8fc44352d68bfa324fbec46655 + name: perl-threads + evr: 1:2.25-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-threads-shared-1.61-460.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 119822 + checksum: sha256:1b348ea3a479412c1236b95dc2d5d651a42e1c144626c38b8c08ef190b0c137b + name: perl-threads-shared + evr: 1.61-460.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/perl-version-0.99.28-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 180220 + checksum: sha256:123e4f54296116246dfd22b4c6628fab4537c62c8a95394194085e6f60b3763c + name: perl-version + evr: 7:0.99.28-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/pixman-0.40.0-6.el9_3.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 647633 + checksum: sha256:0bd62940984b88bfd5914463d948999e29665450e6850ad5c9c4fbc129f3c3d0 + name: pixman + evr: 0.40.0-6.el9_3 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/pyproject-rpm-macros-1.16.2-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 289973 + checksum: sha256:cb7775937762f5ab13165854b5fab8d1e1ea8003451ccb02faaf60b4590c1949 + name: pyproject-rpm-macros + evr: 1.16.2-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/python-rpm-macros-3.9-54.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 32761 + checksum: sha256:b48fc9a942da394ad4cefd19dd2ebf4c5839d0267a41c797fb04dc6173b5f296 + name: python-rpm-macros + evr: 3.9-54.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/python3.11-3.11.13-3.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 20186499 + checksum: sha256:f2bdd9e71b0d1042116b6d3bd1d389274821c0c5aac476dd110b405b62ddae9e + name: python3.11 + evr: 3.11.13-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/python3.11-charset-normalizer-2.1.0-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 95122 + checksum: sha256:40eb84c10d4c782c4b94521fd6da46571089b3469929a01070c86f088b7ed8be + name: python3.11-charset-normalizer + evr: 2.1.0-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/python3.11-idna-3.4-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 189422 + checksum: sha256:e10ade754bd9cb27bfe035a261ba687e7d241abe05030b07a3eacf167881f9f1 + name: python3.11-idna + evr: 3.4-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/python3.11-pip-22.3.1-6.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 9341716 + checksum: sha256:e6c081ee7bbe789bcadb4a21f625eb6746ca485d230c0cef5bbb7a4564000bcb + name: python3.11-pip + evr: 22.3.1-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/python3.11-pysocks-1.7.1-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 287308 + checksum: sha256:445ccd059e048dc740336ef765e8397bef4492774e7b5c318cd756d8e217f51d + name: python3.11-pysocks + evr: 1.7.1-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/python3.11-requests-2.28.1-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 4048621 + checksum: sha256:ef21d050c9239587a3d0e3640a036554bc9a94716c2319fbd98039419010ed9b + name: python3.11-requests + evr: 2.28.1-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/python3.11-setuptools-65.5.1-5.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 2632663 + checksum: sha256:df86c0c49a1d96bb7d91ee4a72e60c9b0368f2965742b98ba010281aafea5604 + name: python3.11-setuptools + evr: 65.5.1-5.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/python3.11-six-1.16.0-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 44753 + checksum: sha256:29cec169e93ff35fa41d958a61e4b7bef874ee2ea77c3080aefa8f2ea121e5e9 + name: python3.11-six + evr: 1.16.0-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/p/python3.11-urllib3-1.26.12-5.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 289008 + checksum: sha256:6874e5f1a06de82f23178bcec7902c78ebc3fa94a84b608f4f09e5ce9c93fb4e + name: python3.11-urllib3 + evr: 1.26.12-5.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/q/qt5-5.15.9-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 13771 + checksum: sha256:149c54e64307cb3da96287a068f09c4ea5d3968bf2ba088383069f294695cc6d + name: qt5 + evr: 5.15.9-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/r/redhat-rpm-config-210-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 91018 + checksum: sha256:a3a359bc68ec76e514e0c4f25f600dafcd4636bb4eef8f57530f054a12104fb4 + name: redhat-rpm-config + evr: 210-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/r/rust-srpm-macros-17-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 35132 + checksum: sha256:dfb94bc23f8c1be02f7d94e4b6d6dc05e98c7d4a162f5ef64f407bf6af738d42 + name: rust-srpm-macros + evr: 17-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/s/scl-utils-2.0.3-4.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 51970 + checksum: sha256:af49314f37d7414b3c214b0a85d7adbbbf74d4b8d7eb7bc5bc38ee869c951726 + name: scl-utils + evr: 1:2.0.3-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/s/sgml-common-0.6.3-58.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 111961 + checksum: sha256:ca6fe92503402d24ebc976123288ec2169e75632bd63dd1c146e8d310eb5ee01 + name: sgml-common + evr: 0.6.3-58.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/s/skopeo-1.20.0-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 10334745 + checksum: sha256:313984f660a2f9f49d5b94bdec3c133dd19c92be3a832d24a352ab90eda9bfb9 + name: skopeo + evr: 2:1.20.0-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/s/slirp4netns-1.3.3-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 76019 + checksum: sha256:fcf453e6ffb0f7892fb087d8052f9ceebab6dfbc3797ad6b98c8eee9814e009d + name: slirp4netns + evr: 1.3.3-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/s/sombok-2.4.0-16.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 318398 + checksum: sha256:5f192b4d26bb9550982e644248f675017ec3d85af2fc721c6509c329c6e1c2bc + name: sombok + evr: 2.4.0-16.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/s/spirv-tools-2025.2-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 3290634 + checksum: sha256:2efc92e886ee1dbb4666c9e7a7558351d741912413b08bce689c0ddf1cc10f61 + name: spirv-tools + evr: 2025.2-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/s/systemtap-5.3-3.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 6615223 + checksum: sha256:d045f03f3219580e1b139eb31b26ce407aa443d336d86f9a47bd089922808b21 + name: systemtap + evr: 5.3-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/w/wayland-1.21.0-1.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 239785 + checksum: sha256:f26f7fc3c60e1c5fe67abd6b6a0c26bb435e869f8451f092805eafe440b23172 + name: wayland + evr: 1.21.0-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/x/xkeyboard-config-2.33-2.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 1768610 + checksum: sha256:fc472164cec4c2e4794081a476f00448bc8defadb7a863d079d4a782ba1f23c7 + name: xkeyboard-config + evr: 2.33-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/appstream/source/SRPMS/Packages/y/yajl-2.1.0-25.el9.src.rpm + repoid: ubi-9-for-aarch64-appstream-source-rpms + size: 101373 + checksum: sha256:08182ae11608d0ad5d9ef01c558a39489f331fe449f9be6df1a91c5e950163f9 + name: yajl + evr: 2.1.0-25.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/a/acl-2.3.1-4.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 535332 + checksum: sha256:cb449bc6c85e0b50fa0bb98c969ff8481fee40517d8ebec5e28b72e5360fbe1e + name: acl + evr: 2.3.1-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/a/attr-2.5.1-3.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 482234 + checksum: sha256:5171534e7de11df197f3c5e08658544983198288e04624c739b5c3d9db07b59c + name: attr + evr: 2.5.1-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/a/avahi-0.8-23.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1629599 + checksum: sha256:adfecbf7f7595fbc1c501d52a50ac8fffcaa22ead979dd30364c8ab1293cfb6e + name: avahi + evr: 0.8-23.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/b/binutils-2.35.2-67.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 22466144 + checksum: sha256:808329b18e0f35131b96708146d1f8bbd4065e97c1c85309f87f65eaa2b93ba9 + name: binutils + evr: 2.35.2-67.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/b/brotli-1.0.9-7.el9_5.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 498766 + checksum: sha256:0c54d337221bca2bfeafaa7ce372aed7a2fcdb1f800be609ed8579bc1187bcd4 + name: brotli + evr: 1.0.9-7.el9_5 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/c/cracklib-2.9.6-27.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 6414228 + checksum: sha256:56a815a100d75c1d42c07090b632f05e51ea6d17df097d2936ab25d9aca49310 + name: cracklib + evr: 2.9.6-27.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/c/crypto-policies-20250905-1.git377cc42.el9_7.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 107074 + checksum: sha256:a8ccbe1e1a1b7263941b20d156594925a70017d6de72889dfa7618d8b02a33aa + name: crypto-policies + evr: 20250905-1.git377cc42.el9_7 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/c/cups-2.3.3op2-34.el9_7.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 8125620 + checksum: sha256:63b1d4c243b1adbbf34eea95c3ef2521409c3906988c5f60702252ddafe578ee + name: cups + evr: 1:2.3.3op2-34.el9_7 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/d/dbus-1.12.20-8.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 2143916 + checksum: sha256:3fe74a2b4fb4485c93e974010d9376e30a63dfcc628bfd6c01837c27b4953912 + name: dbus + evr: 1:1.12.20-8.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/d/dbus-broker-28-7.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 254475 + checksum: sha256:aced3097fbb8a424ca1816b8cb3e79960a9ccf7ba139538282886e692c317b29 + name: dbus-broker + evr: 28-7.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/d/dbus-python-1.2.18-2.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 604976 + checksum: sha256:c1af733518b6d651fb1c80c65a852611ddaf250a4e8ef17b5a1defa7bba6211a + name: dbus-python + evr: 1.2.18-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/d/diffutils-3.7-12.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1477522 + checksum: sha256:7a10e2d961f8d755f8ccf51a1fb7f68687671b82d9486e4b8d648561af1a185e + name: diffutils + evr: 3.7-12.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/d/dmidecode-3.6-1.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 82438 + checksum: sha256:36383b31f643c92b47d960c473ed2196f5ae0682de67d1fd88d2d2ee47afe2e8 + name: dmidecode + evr: 1:3.6-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/d/dnf-4.14.0-31.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 2232195 + checksum: sha256:c0aaa295d8515cc470df5f4bec406e5db50e7bfa2622934fd783ac9539f0b81b + name: dnf + evr: 4.14.0-31.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/d/dnf-plugins-core-4.3.0-24.el9_7.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 555906 + checksum: sha256:7b7c21938ead2aaa0396ddea33396f865979d5a6c2eaf27af87b844e9a2d1a5b + name: dnf-plugins-core + evr: 4.3.0-24.el9_7 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/e/elfutils-0.193-1.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 12000622 + checksum: sha256:bc3e7c1e374a3756ced155ef6a556639415967b34adf643c8056323123e0281b + name: elfutils + evr: 0.193-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/e/environment-modules-5.3.0-2.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1685315 + checksum: sha256:f990f48e0cc8aa4322d5b18fb7c548da3ad4fbf79614df275d7603dcfc7e8f5b + name: environment-modules + evr: 5.3.0-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/e/expat-2.5.0-5.el9_6.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 8369732 + checksum: sha256:736df300c50aad5de613ee8322bedb9522042024a95df9c886089e225bc764f7 + name: expat + evr: 2.5.0-5.el9_6 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/f/file-5.39-16.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1003666 + checksum: sha256:e8261cbcd55b85efdcd12ce1a2c6e63a72c64c872d618de4ba24557a1fda63c0 + name: file + evr: 5.39-16.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/f/fonts-rpm-macros-2.0.5-7.el9.1.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 50762 + checksum: sha256:6da7d722d419e6e9ce5abb4f6adcb82613d0629261011ec42134cfe092078e83 + name: fonts-rpm-macros + evr: 1:2.0.5-7.el9.1 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/f/freetype-2.10.4-10.el9_5.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 4767581 + checksum: sha256:b5f1bbbd25b22e01fc2508188b49a97fdf5f72d069039358cb5837dffcf9f2c1 + name: freetype + evr: 2.10.4-10.el9_5 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/f/fuse3-3.10.2-9.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 799367 + checksum: sha256:ddfcd07bcdcc07bdabe0f05b2c5c3bb1d6582af9c6b127632dd74f8ca78d56c9 + name: fuse3 + evr: 3.10.2-9.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/g/gcc-11.5.0-11.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 81971986 + checksum: sha256:4ab595dc52e7a66f9cb067e55081e9ba4e2cb577187cf1ac9a2e92e07c295560 + name: gcc + evr: 11.5.0-11.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/g/gettext-0.21-8.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 9750918 + checksum: sha256:1b4dc42c4afa9d998cd13750e0aa73e0d3a16f6792bfc5e17d39aabd9c68426d + name: gettext + evr: 0.21-8.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/g/glibc-2.34-231.el9_7.2.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 20247873 + checksum: sha256:a1638d70dfd1554dbcca0ef6187a3387bb36f6e2b8f484b553f52a4be15a2fd1 + name: glibc + evr: 2.34-231.el9_7.2 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/g/gpgme-1.15.1-6.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1737968 + checksum: sha256:ceeb7d42bc8ddf6f09013439bfed4e591411b81293fe3db5e4edb06cbe1879fb + name: gpgme + evr: 1.15.1-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/g/graphite2-1.3.14-9.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 6312801 + checksum: sha256:5e2022500d0c9129817bb77916e6b55375344ed2737e05cc82e0f53f295cf2d6 + name: graphite2 + evr: 1.3.14-9.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/g/groff-1.22.4-10.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 4138121 + checksum: sha256:16d1628338ede3c55a795782f05848112d47816ba073978af6fcd90ecce08f5c + name: groff + evr: 1.22.4-10.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/g/gzip-1.12-1.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 856147 + checksum: sha256:a05f582ec42e89258ee5e10af96dee4300bcb2a6a69a76bfb5b46f79e6a6a47b + name: gzip + evr: 1.12-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/h/harfbuzz-2.7.4-10.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 9551851 + checksum: sha256:d0ea2d865c05da90d7a32c6ad835bc3ba2067e759aaec2b0ca94a148735e43f8 + name: harfbuzz + evr: 2.7.4-10.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/i/ima-evm-utils-1.6.2-2.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 179312 + checksum: sha256:645080ac16b4cc7d858b419642ae8a606d7f637e721a6eb7be5203bc3eb6c995 + name: ima-evm-utils + evr: 1.6.2-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/i/iproute-6.14.0-2.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 941316 + checksum: sha256:f1ed92f747e6bce4ba204f9881f2f991dfbab212568f985135d43047c9fac4a8 + name: iproute + evr: 6.14.0-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/k/keyutils-1.6.3-1.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 150790 + checksum: sha256:6afa567438acd0d3a6a66bc6a3c68ec2f4ae5ed9c7230c3f0478d2281a092688 + name: keyutils + evr: 1.6.3-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/k/kmod-28-11.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 579198 + checksum: sha256:4f6fefbf0d004b23494fe18ccfff2b9151ea887a276c56a6f25ea597a250991c + name: kmod + evr: 28-11.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/less-590-6.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 382338 + checksum: sha256:4a5023846942905da4226503f6a9da91a66bf6c179dc21d2e4210b3371399b17 + name: less + evr: 590-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libarchive-3.5.3-6.el9_6.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 7047682 + checksum: sha256:4e936a7bb7e593fab81247b88b97fc07a03bf24c4c3ed8188060dcf7af83b348 + name: libarchive + evr: 3.5.3-6.el9_6 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libbpf-1.5.0-2.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 144761845 + checksum: sha256:a659928f24bc29e7d1b842175a26c0bcc5149c6a012d2c9eeaaaee87e40aa467 + name: libbpf + evr: 2:1.5.0-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libcbor-0.7.0-5.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 276760 + checksum: sha256:0fe4d1387cdb9c79ee26a6677df578b4d30facf4afa06cfa674fb686c3fa754a + name: libcbor + evr: 0.7.0-5.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libcomps-0.1.18-1.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 3723982 + checksum: sha256:65158204d46f288501cd32c6ba3dc23341d07d0fd20fa8022ee36744ea295f70 + name: libcomps + evr: 0.1.18-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libdb-5.3.28-57.el9_6.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 35290920 + checksum: sha256:6a74a3d96bd4657659524050945e2a47e93779addf2de374a13e1baf32b4ab8d + name: libdb + evr: 5.3.28-57.el9_6 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libdnf-0.69.0-16.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1264279 + checksum: sha256:347862b7966bf09f5841bcba4631e989795019177dc9d9553b5b70a3aed7ac98 + name: libdnf + evr: 0.69.0-16.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libeconf-0.4.1-4.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 201501 + checksum: sha256:4541a0915eca1e6fd1440253cf6bdfc5482c7b6dd3d3c7310a77faf852b7671a + name: libeconf + evr: 0.4.1-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libedit-3.1-38.20210216cvs.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 531597 + checksum: sha256:067e19c3ad8c9254119e7918ef7d2af3c3d33d364d34016f4b65fb71eb1676b3 + name: libedit + evr: 3.1-38.20210216cvs.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libfido2-1.13.0-2.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 865138 + checksum: sha256:c3f125f8b3242600cc1013183930e990b4b791c0d6c6544bf371a28c7abfebe1 + name: libfido2 + evr: 1.13.0-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libmnl-1.0.4-16.el9_4.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 313835 + checksum: sha256:ebfb5c801e7a3a2b83b4c4612ea923b9dd155428e738ff52b03e8966b78d2c08 + name: libmnl + evr: 1.0.4-16.el9_4 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libnl3-3.11.0-1.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 5068824 + checksum: sha256:13f6ea90f26fbc96e3754584a576c03ca41221fc939164f5a7b6341a6372fd7a + name: libnl3 + evr: 3.11.0-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libpipeline-1.5.3-4.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1006052 + checksum: sha256:f1a40821328b6e3fd7264c78c18f8c2045e7a30a05ef9f8b2934d5ca15724ce3 + name: libpipeline + evr: 1.5.3-4.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libpng-1.6.37-12.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1527840 + checksum: sha256:41f1d58a05cafaa0e6e8cf82f5a3a0f00afa47a082f093364da7cc279576d2fc + name: libpng + evr: 2:1.6.37-12.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libpwquality-1.4.4-8.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 447225 + checksum: sha256:14fbf335e2c6f22b441a9750a69b7c41e197c4dd21adac701fd81f17660ee0b4 + name: libpwquality + evr: 1.4.4-8.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/librepo-1.14.5-3.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 831063 + checksum: sha256:9fc1ee1f881b41d97e45f0620943aa51190bd81fbc49b322154e6c9c171a0c53 + name: librepo + evr: 1.14.5-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libseccomp-2.5.2-2.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 653169 + checksum: sha256:43dd0fa2cd26306e2017704075e628bbe675c8731b17848df82f3b59337f1be8 + name: libseccomp + evr: 2.5.2-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libselinux-3.6-3.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 271153 + checksum: sha256:a08a84389665ef614eb6d9b06a53128eab89b650c799c0558f3ae04df97c4b13 + name: libselinux + evr: 3.6-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libtirpc-1.3.3-9.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 589716 + checksum: sha256:95d684042f4c5f63ac57923639fd1e7d6d278766b4ee99feb24baa5567fe4b7e + name: libtirpc + evr: 1.3.3-9.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libuser-0.63-17.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 826138 + checksum: sha256:575f5e59909935ac0cab65f6911f1ead623dd27d2731564f796af9643eda3ee8 + name: libuser + evr: 0.63-17.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libutempter-1.2.1-6.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 30093 + checksum: sha256:e48843d2734fefad084a86165860ea9575bdc53f63bb5845d8807ce9ccb4f914 + name: libutempter + evr: 1.2.1-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/l/libxcrypt-4.4.18-3.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 543970 + checksum: sha256:d18f72eb41ecd0370e2e47f1dc5774be54e9ff3b4dd333578017666c7c488f40 + name: libxcrypt + evr: 4.4.18-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/m/make-4.3-8.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 2335546 + checksum: sha256:a5cc45d6c158b255cda528c496dbb8bc7783acb9898b97a39a1811230e102d7c + name: make + evr: 1:4.3-8.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/m/man-db-2.9.3-9.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1908835 + checksum: sha256:5aee54fde87608ff46c540b4a6e22fb986e5ca3cbc62ce8e828e6d25c7092494 + name: man-db + evr: 2.9.3-9.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/n/ncurses-6.2-12.20210508.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 3586993 + checksum: sha256:cdb59ed3771a3a4f00e2ffca853f2de4aa887e3d5c3655317f2e2c03f461103f + name: ncurses + evr: 6.2-12.20210508.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/o/openssh-8.7p1-46.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 2409939 + checksum: sha256:ec12d8e9961af4c44db364db36ff199d5317f88c505f3b6d53b1f3f8d63f7903 + name: openssh + evr: 8.7p1-46.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/o/openssl-3.5.1-4.el9_7.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 53366082 + checksum: sha256:af5e55f59d701095543d09d13fc80b48266631ee14209a36fead770526eccc0d + name: openssl + evr: 1:3.5.1-4.el9_7 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/pam-1.5.1-26.el9_6.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1130406 + checksum: sha256:9a351f0455da788ff63026af9a8ee30e744017941c82283f970d1ed066000bb6 + name: pam + evr: 1.5.1-26.el9_6 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/passwd-0.80-12.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 294731 + checksum: sha256:ee9ed53ab4bbea3f477855225c541f9e40e34fac54004872d57e9ddecbffd779 + name: passwd + evr: 0.80-12.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/pkgconf-1.7.3-10.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 310904 + checksum: sha256:4d53718592b298ca7c49665b1f4e7bd32dcb42cad15c89345585da9f20d4fcae + name: pkgconf + evr: 1.7.3-10.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/policycoreutils-3.6-3.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 7979164 + checksum: sha256:48bdb8572030963c36daee5247b5df6dcb4309022459e87bc2ac8df47f925a7a + name: policycoreutils + evr: 3.6-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/procps-ng-3.3.17-14.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1054334 + checksum: sha256:acfd5c270ba5724a0f5f2a84cc47ee222d6a03095421fddbf6932375ec7d67f0 + name: procps-ng + evr: 3.3.17-14.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/protobuf-c-1.3.3-13.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 513224 + checksum: sha256:d4d82978c58a2f9ca8e24b953fd9ac74efee41572ec9649c4f2f183cda98b33f + name: protobuf-c + evr: 1.3.3-13.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/psmisc-23.4-3.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 386002 + checksum: sha256:9e65fd323b6c88f71e05576b931a10ba4bdce9314114ba88e436482efa77d6bd + name: psmisc + evr: 23.4-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/pygobject3-3.40.1-6.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 576452 + checksum: sha256:1ad25647ca3d35d691c4dc118cedc4bb82911ce6ccffdc648ca0eed21b2007a3 + name: pygobject3 + evr: 3.40.1-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/pyparsing-2.4.7-9.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 661672 + checksum: sha256:cb0cca6cd8da2ffffe67b9937a1b3146fe30bf942154a1a81955e5821737cf32 + name: pyparsing + evr: 2.4.7-9.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-chardet-4.0.0-5.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1917985 + checksum: sha256:1088982b6cf2baa4aa11ed199f3cda785fe3002b3b7c5a74e9d65ba3969559b8 + name: python-chardet + evr: 4.0.0-5.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-dateutil-2.9.0.post0-1.el9_7.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 354007 + checksum: sha256:0c76b606124fb4093748b73cd9396c0c8fdfc7b5b8cae11ca168284e02321298 + name: python-dateutil + evr: 1:2.9.0.post0-1.el9_7 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-decorator-4.4.2-6.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 45990 + checksum: sha256:a218b1f0d66b0d9d69624ec77a9eee8d476650b587574ffc9817af0891536cf7 + name: python-decorator + evr: 4.4.2-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-idna-2.10-7.el9_4.1.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 195340 + checksum: sha256:175a3c6c98d0e56721eef1237529c11c2caca4c6fbbc0d9c30c28489e014388b + name: python-idna + evr: 2.10-7.el9_4.1 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-iniparse-0.4-45.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 50707 + checksum: sha256:12ec23b9a41dc8e239d8bc76d70db8ab428ac6d472c49418a26c9068ce0a9d91 + name: python-iniparse + evr: 0.4-45.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-inotify-0.9.6-25.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 73889 + checksum: sha256:f75505a3d5d26682703ba38308a4e534149316f3a976abc73ac634d7191be0ff + name: python-inotify + evr: 0.9.6-25.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-pip-21.3.1-1.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 8984717 + checksum: sha256:cb9e0cca3bd8dc24798cf1fb333d574774ce8288598331d44994d768f33648d3 + name: python-pip + evr: 21.3.1-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-pysocks-1.7.1-12.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 289343 + checksum: sha256:31a68e258ececf1a34326a898bff562070721ed64a69c6f033defde4371766ee + name: python-pysocks + evr: 1.7.1-12.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-requests-2.25.1-10.el9_6.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 3751447 + checksum: sha256:24bc309d5ef2e9d6733a4247c880deac877088247de320d8f00d230864a477c5 + name: python-requests + evr: 2.25.1-10.el9_6 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-setuptools-53.0.0-15.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 2080284 + checksum: sha256:08d279a3ec69f016e717f56bcec922cd68353fa8acba8de8fb56cf34ebc876a5 + name: python-setuptools + evr: 53.0.0-15.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-six-1.15.0-9.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 47236 + checksum: sha256:a13be570131c132697c1bdae9042ed20c0a1963db8d9037a5fdb90e80532a979 + name: python-six + evr: 1.15.0-9.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-systemd-234-19.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 68399 + checksum: sha256:c61068568df2e7e2f5623e7825a95ce27e7facf3f7415b56c7bd82ab97cbe102 + name: python-systemd + evr: 234-19.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python-urllib3-1.26.5-6.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 286060 + checksum: sha256:1710e562d5982b0035f987303e48a4ca87e437f3202a66ba259a94146fb4e282 + name: python-urllib3 + evr: 1.26.5-6.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/p/python3.9-3.9.23-2.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 20282986 + checksum: sha256:6a52f96b7ec884ec6ad9f2f6475e9682e80581481db891c4949230d7a4f0771c + name: python3.9 + evr: 3.9.23-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/r/rpm-4.16.1.3-39.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 4498489 + checksum: sha256:07d62b4b303a48f60845d4bae4d269bee8b2fc372e470cecc486d09a9685139f + name: rpm + evr: 4.16.1.3-39.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/r/rsync-3.2.5-3.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1306931 + checksum: sha256:a1fd44e58d1fb5b52b72586c5ef2e12c040428f771cde1d1350b36d3b9155db0 + name: rsync + evr: 3.2.5-3.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/s/selinux-policy-38.1.65-1.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1167653 + checksum: sha256:b9e7269bb64eb50dd44133b0f88dfe13728c03655dac8f57e759d11a2cd57264 + name: selinux-policy + evr: 38.1.65-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/s/shadow-utils-4.9-15.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1712227 + checksum: sha256:c6feefc65a20ec4203979e0cde4d4a6d86981ac7c836e55148273bd9fc2b57b2 + name: shadow-utils + evr: 2:4.9-15.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/s/subscription-manager-1.29.47.1-1.el9_7.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1983747 + checksum: sha256:622df42d52ba40cebf0f60729c0f15a54774bf51bfab2a75ff95108c90785a69 + name: subscription-manager + evr: 1.29.47.1-1.el9_7 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/s/subscription-manager-rhsm-certificates-20220623-1.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 25124 + checksum: sha256:a814ce978afe85327fd03829047ce04181d5d3f76bad8cfe8d24adfbd9be38a2 + name: subscription-manager-rhsm-certificates + evr: 20220623-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/s/systemd-252-55.el9_7.2.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 44869424 + checksum: sha256:8b9e2822d07a18533d56f0e89f191f137d52281a5090a25af2c7bdee2c2e6cb6 + name: systemd + evr: 252-55.el9_7.2 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/t/tcl-8.6.10-7.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 6000353 + checksum: sha256:cffe1533560f76cbddb6b75d0f76f8b7e98e975e911ae9873c80c0b386b40dfd + name: tcl + evr: 1:8.6.10-7.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/t/tpm2-tss-3.2.3-1.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1660943 + checksum: sha256:11c9b6951d6823d120d310243f500f78ce13f9e206134309692e4a761294f3b9 + name: tpm2-tss + evr: 3.2.3-1.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/u/unzip-6.0-59.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1433595 + checksum: sha256:299d7451195ccb37d8eb90f1870e00eb5ff4c12716c933d4c1657949f0d6aaf8 + name: unzip + evr: 6.0-59.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/u/usermode-1.114-7.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 311458 + checksum: sha256:808023704a1979f1dbe77628d9fd55b16356a6a0d4da0fa602892f1380d8959b + name: usermode + evr: 1.114-7.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/u/util-linux-2.37.4-21.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 6281028 + checksum: sha256:cde2d6a98345d49de9d225fc3acf7542fb35fde32832f1361415486a7839c222 + name: util-linux + evr: 2.37.4-21.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/v/vim-8.2.2637-23.el9_7.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 12811300 + checksum: sha256:c66687ac83b80d3830fb0e8b2fca7b322049beaa190b3daef6c155771812b5d7 + name: vim + evr: 2:8.2.2637-23.el9_7 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/v/virt-what-1.27-2.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 572569 + checksum: sha256:72f4b2db072110d563f5bdd94fa3f50d2bb5ba7aef8cec05d5e49431908cd668 + name: virt-what + evr: 1.27-2.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/x/xz-5.2.5-8.el9_0.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1168293 + checksum: sha256:bce98f3a307e75a8ac28f909e29b41d64b15461fa9ddf0bf4ef3c2f6de946b46 + name: xz + evr: 5.2.5-8.el9_0 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/z/zip-3.0-35.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 1137410 + checksum: sha256:416b6957a4365204cfb2ba9e5b9b9f21075b615114c6afe46c83166de258bb5d + name: zip + evr: 3.0-35.el9 + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/aarch64/baseos/source/SRPMS/Packages/z/zlib-1.2.11-40.el9.src.rpm + repoid: ubi-9-for-aarch64-baseos-source-rpms + size: 561153 + checksum: sha256:e47b884c132983fd0cc40c761de72e1a34ada9ee395cfe50997f9fb9257669d8 + name: zlib + evr: 1.2.11-40.el9 + module_metadata: [] - arch: x86_64 packages: - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/x86_64/appstream/os/Packages/a/alsa-lib-1.2.14-1.el9.x86_64.rpm @@ -284,13 +5480,13 @@ arches: name: go-srpm-macros evr: 3.6.0-11.el9 sourcerpm: go-rpm-macros-3.6.0-11.el9.src.rpm - - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/x86_64/appstream/os/Packages/k/kernel-headers-5.14.0-611.7.1.el9_7.x86_64.rpm + - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/x86_64/appstream/os/Packages/k/kernel-headers-5.14.0-611.8.1.el9_7.x86_64.rpm repoid: ubi-9-for-x86_64-appstream-rpms - size: 2982545 - checksum: sha256:f23e85b193ff7fd6ec26e7f84b9a042f19bcafffab9f6f6d42acdc305b58f702 + size: 2985529 + checksum: sha256:c290b18dcacfd513ca4e07279c4e30680345b04da41f85486e0bb107aa12367d name: kernel-headers - evr: 5.14.0-611.7.1.el9_7 - sourcerpm: kernel-5.14.0-611.7.1.el9_7.src.rpm + evr: 5.14.0-611.8.1.el9_7 + sourcerpm: kernel-5.14.0-611.8.1.el9_7.src.rpm - url: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi9/9/x86_64/appstream/os/Packages/k/kernel-srpm-macros-1.0-14.el9.noarch.rpm repoid: ubi-9-for-x86_64-appstream-rpms size: 14098 From 88d59a7e9537f24b8e1c8053fd2406f02d1a5375 Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Wed, 19 Nov 2025 15:07:05 -0500 Subject: [PATCH 02/15] chore: migrate to use downstream dockerfile as default Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .github/actions/docker-build/action.yaml | 30 ++- .github/workflows/pr-build-image.yaml | 3 +- .rhdh/docker/Dockerfile | 27 +-- docker/Dockerfile | 295 ----------------------- 4 files changed, 25 insertions(+), 330 deletions(-) delete mode 100644 docker/Dockerfile diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 3cd77df520..bbe2131778 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -35,7 +35,7 @@ inputs: dockerfilePath: description: Path to the Dockerfile to use required: false - default: 'docker/Dockerfile' + default: '.rhdh/docker/Dockerfile' skipArtifactUpload: description: Skip uploading the built image as a GitHub artifact required: false @@ -78,10 +78,11 @@ runs: run: | set -ex - echo "=== Creating local cache directory ===" + echo "::group::Creating local cache directory" mkdir -p ${{ env.LOCAL_CACHE_DIR }} || echo "Failed to create local cache directory" + echo "::endgroup::" - echo "=== Fetching dependencies with hermeto ===" + echo "::group::Fetching dependencies with hermeto" # Build hermeto cache for rpm, yarn, and pip podman run --rm -v "$PWD:/source:z" -v "$LOCAL_CACHE_DIR:/cachi2:z" -w /source "$HERMETO_IMAGE" \ --log-level DEBUG \ @@ -89,15 +90,17 @@ runs: --source . \ --output /cachi2/output \ '[{"type": "rpm", "path": "."}, {"type": "yarn","path": "."}, {"type": "yarn","path": "./dynamic-plugins"}, {"type": "pip","path": "./python", "allow_binary": "false"}]' || echo "Fetch-deps failed" + echo "::endgroup::" if [ -d ${{ env.LOCAL_CACHE_DIR }}/output ]; then - echo "=== Output directory exists, running generate-env ===" + echo "::group::Generating environment file" # Generate environment file podman run --rm -v "$PWD:/source:z" -v "$LOCAL_CACHE_DIR:/cachi2:z" -w /source "$HERMETO_IMAGE" \ --log-level DEBUG \ generate-env --format env \ --output /cachi2/cachi2.env /cachi2/output + echo "::endgroup::" else echo "No output directory found, skipping generate-env" @@ -105,11 +108,12 @@ runs: fi if [ -d ${{ env.LOCAL_CACHE_DIR }}/output ]; then - echo "=== Running inject-files ===" + echo "::group::Injecting files" podman run --rm -v "$PWD:/source:z" -v "$LOCAL_CACHE_DIR:/cachi2:z" -w /source "$HERMETO_IMAGE" \ --log-level DEBUG \ inject-files /cachi2/output || echo "Inject-files failed" + echo "::endgroup::" else echo "No output directory found, skipping inject-files" @@ -122,24 +126,25 @@ runs: shell: bash run: | set -ex - echo "=== Before ownership fix ===" + echo "::group::Fixing cache ownership" ls -l ${{ env.LOCAL_CACHE_DIR_REALPATH }} - echo "=== Attempting to fix ownership to runner user ===" + sudo chown -R runner ${{ env.LOCAL_CACHE_DIR_REALPATH }} - echo "=== After ownership fix ===" + ls -l ${{ env.LOCAL_CACHE_DIR_REALPATH }} + echo "::endgroup::" - name: Transform Containerfile for hermetic build shell: bash run: | set -x + echo "::group::Transforming Containerfile for hermetic build" CONTAINERFILE_PATH="${{ inputs.dockerfilePath }}" - TRANSFORMED_CONTAINERFILE="${CONTAINERFILE_PATH}.hermeto" # Copy original dockerfile for hermetic build modifications - cp "$CONTAINERFILE_PATH" "$TRANSFORMED_CONTAINERFILE" + cp "$CONTAINERFILE_PATH" "$TRANSFORMED_CONTAINERFILE" # Transform the dockerfile to simulate Konflux build # Configure dnf to use the cachi2 repo (supports both x86_64 and aarch64) @@ -147,6 +152,7 @@ runs: # Inject the cachi2 env variables to every RUN command sed -i 's/^\s*RUN /RUN . \/cachi2\/cachi2.env \&\& /' "$TRANSFORMED_CONTAINERFILE" + echo "::endgroup::" echo "TRANSFORMED_CONTAINERFILE=$TRANSFORMED_CONTAINERFILE" >> $GITHUB_ENV @@ -167,8 +173,9 @@ runs: if: ${{ inputs.skipArtifactUpload != 'true' }} shell: bash run: | + echo "::group::Saving image and metadata for artifact" mkdir -p ./rhdh-podman-artifacts - + # Extract the built image tags from the metadata TAGS_LIST="${{ steps.meta.outputs.tags }}" @@ -180,6 +187,7 @@ runs: # Save metadata for the push workflow echo "$TAGS_LIST" > ./rhdh-podman-artifacts/tags.txt + echo "::endgroup::" - name: Upload image artifact if: ${{ inputs.skipArtifactUpload != 'true' }} diff --git a/.github/workflows/pr-build-image.yaml b/.github/workflows/pr-build-image.yaml index 406a65f7a8..e5181c7367 100644 --- a/.github/workflows/pr-build-image.yaml +++ b/.github/workflows/pr-build-image.yaml @@ -78,5 +78,4 @@ jobs: pr-${{ github.event.number }} pr-${{ github.event.number }}-${{ env.SHORT_SHA }} imageLabels: quay.expires-after=14d - platform: linux/amd64 - dockerfilePath: .rhdh/docker/Dockerfile + platform: linux/amd64 \ No newline at end of file diff --git a/.rhdh/docker/Dockerfile b/.rhdh/docker/Dockerfile index 7f7f0d2034..092de30c42 100644 --- a/.rhdh/docker/Dockerfile +++ b/.rhdh/docker/Dockerfile @@ -1,6 +1,6 @@ # THIS IS USED BY Konflux builds >= 1.6 # -# Copyright (c) 2023-2024 Red Hat, Inc. +# Copyright (c) 2023-2025 Red Hat, Inc. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -122,10 +122,8 @@ RUN echo "=== TWEAK .yarnrc.yml ==="; \ cat .yarnrc.yml RUN git config --global --add safe.directory ./ -# Upstream only -# RUN rm app-config.yaml && mv app-config.example.yaml app-config.yaml -# Downstream only - replace midstream build-metadata.json with the version from downstream (where we include the midstream SHA) +# replace midstream build-metadata.json with the version from downstream (where we include the midstream SHA) COPY packages/app/src/build-metadata.json ./packages/app/src/ # hadolint ignore=DL3059,DL4006,SC2086 @@ -166,23 +164,10 @@ RUN echo "=== YARN COPY DYNAMIC PLUGINS in $(pwd) ==="; "$YARN" copy-dynamic-plu WORKDIR $CONTAINER_SOURCE -# Downstream only - clean up dynamic plugins sources: +# Clean up dynamic plugins sources: # Only keep the dist sub-folder in the dynamic-plugins folder RUN echo "=== DELETE DYNAMIC PLUGINS/* (except dist/) from $(pwd) ==="; find dynamic-plugins -maxdepth 1 -mindepth 1 -type d -not -name dist -exec rm -Rf {} \; -# Stage 4 - Build the actual backend image and install production dependencies -# Upstream only -# FROM skeleton AS cleanup - -# Upstream only - copy the install dependencies from the build stage and context -# COPY --from=build $CONTAINER_SOURCE/yarn.lock \ -# $CONTAINER_SOURCE/package.json \ -# ./ -# COPY --from=build \ -# $CONTAINER_SOURCE/packages/backend/dist/skeleton.tar.gz \ -# $CONTAINER_SOURCE/packages/backend/dist/bundle.tar.gz \ -# ./packages/backend/dist/ - # unpack and remove tarballs ENV TARBALL_PATH=./packages/backend/dist RUN tar xzf "$TARBALL_PATH"/skeleton.tar.gz; tar xzf "$TARBALL_PATH"/bundle.tar.gz; \ @@ -259,9 +244,7 @@ RUN microdnf install -y python3.11 python3.11-pip python3.11-devel make cmake cp rm -fr python/; \ microdnf clean all -# Upstream only - copy from cleanup stage -# COPY --from=cleanup --chown=1001:1001 $CONTAINER_SOURCE/ ./ -# Downstream only - copy from build, not cleanup stage +# copy from build, not cleanup stage COPY --from=build --chown=1001:1001 "$CONTAINER_SOURCE"/ ./ # RHIDP-4220 - make Konflux preflight and EC checks happy - [check-container] Create a directory named /licenses and include all relevant licensing @@ -309,7 +292,7 @@ ENV GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE='' # Users can still override this when running the image. ENV NO_PROXY='localhost,127.0.0.1' -# The `--no-node-snapshot` node option enables the usage of the backstage scaffolder on nodejs 20 +# The `--no-node-snapshot` node option enables the usage of the backstage scaffolder on nodejs 20+ # https://github.com/backstage/backstage/issues/20661 # Copy instrumentation needed for surfacing metrics diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index 823a9d71e8..0000000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,295 +0,0 @@ -# THIS IS USED BY Konflux builds == 1.4 - 1.5; see ../.rhdh/docker/Dockerfile for >=1.6 -# -# Copyright (c) 2023-2024 Red Hat, Inc. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Stage 1 - Build nodejs skeleton -# https://registry.access.redhat.com/ubi9/nodejs-22 -FROM registry.access.redhat.com/ubi9/nodejs-22:9.7-1762230782 AS skeleton -# hadolint ignore=DL3002 -USER 0 - -# Install isolated-vm dependencies -# hadolint ignore=DL3041 -RUN dnf install -q -y --allowerasing --nobest \ - acl alternatives attr audit-libs basesystem bash binutils binutils-gold brotli brotli-devel bsdtar bzip2-libs ca-certificates cmake containers-common coreutils-single cpp \ - cracklib cracklib-dicts criu criu-libs crun crypto-policies crypto-policies-scripts curl-minimal cyrus-sasl-lib dbus dbus-broker dbus-common dbus-libs dejavu-sans-fonts \ - dmidecode dnf dnf-data elfutils-debuginfod-client elfutils-default-yama-scope elfutils-libelf elfutils-libs emacs-filesystem environment-modules expat file-libs filesystem \ - findutils fonts-filesystem fuse-common fuse-overlayfs fuse3 fuse3-libs gawk gcc gcc-c++ gdb-gdbserver gdbm-libs gettext gettext-libs git git-core git-core-doc glib2 glibc \ - glibc-common glibc-devel glibc-headers glibc-langpack-en glibc-locale-source glibc-minimal-langpack gmp gnupg2 gnutls gobject-introspection gpgme grep groff-base gzip \ - ima-evm-utils iproute json-c json-glib kernel-headers keyutils keyutils-libs kmod kmod-libs krb5-libs langpacks-core-en langpacks-core-font-en langpacks-en less \ - libacl libarchive libassuan libattr libblkid libbpf libbrotli libcap libcap-ng libcbor libcom_err libcomps libcurl-minimal libdb libdnf libdnf-plugin-subscription-manager \ - libeconf libedit libevent libfdisk libffi libfido2 libgcc libgcrypt libgomp libgpg-error libidn2 libksba libmnl libmodulemd libmount libmpc libnet libnghttp2 libnl3 \ - libpipeline libpkgconf libpwquality librepo libreport-filesystem librhsm libseccomp libselinux libsemanage libsepol libsigsegv libslirp libsmartcols libsolv libstdc++ libstdc++-devel \ - libtasn1 libunistring libuser libutempter libuuid libverto libxcrypt libxcrypt-compat libxcrypt-devel libxml2 libyaml libzstd lua-libs lz4-libs make man mpfr \ - ncurses ncurses-base ncurses-libs nettle nodejs nodejs-devel nodejs-docs nodejs-full-i18n nodejs-libs nodejs-nodemon nodejs-packaging npm npth nss_wrapper-libs openldap \ - openssh openssh-clients openssl openssl-devel openssl-fips-provider openssl-fips-provider-so openssl-libs p11-kit p11-kit-trust pam passwd pcre pcre2 pcre2-syntax \ - perl perl-AutoLoader perl-B perl-base perl-Carp perl-Class-Struct perl-constant perl-Data-Dumper perl-Digest perl-Digest-MD5 perl-DynaLoader perl-Encode perl-Errno perl-Error \ - perl-Exporter perl-Fcntl perl-File-Basename perl-File-Find perl-File-Path perl-File-stat perl-File-Temp perl-FileHandle perl-Getopt-Long perl-Getopt-Std perl-Git perl-HTTP-Tiny \ - perl-interpreter perl-IO perl-IO-Socket-IP perl-IO-Socket-SSL perl-IPC-Open3 perl-lib perl-libnet perl-libs perl-MIME-Base64 perl-Mozilla-CA perl-mro perl-NDBM_File perl-Net-SSLeay \ - perl-overload perl-overloading perl-parent perl-PathTools perl-Pod-Escapes perl-Pod-Perldoc perl-Pod-Simple perl-Pod-Usage perl-podlators perl-POSIX perl-Scalar-List-Utils perl-SelectSaver \ - perl-Socket perl-Storable perl-subs perl-Symbol perl-Term-ANSIColor perl-Term-Cap perl-TermReadKey perl-Text-ParseWords perl-Text-Tabs+Wrap perl-Time-Local perl-URI perl-vars pkgconf \ - pkgconf-m4 pkgconf-pkg-config popt procps-ng protobuf-c psmisc python-unversioned-command python3 python3-chardet python3-cloud-what python3-dateutil python3-dbus python3-decorator \ - python3-dnf python3-dnf-plugins-core python3-gobject-base python3-gobject-base-noarch python3-gpg python3-hawkey python3-idna python3-iniparse python3-inotify python3-libcomps \ - python3-libdnf python3-librepo python3-libs python3-pip python3-pip-wheel python3-pysocks python3-requests python3-rpm python3-setuptools python3-setuptools-wheel python3-six \ - python3-subscription-manager-rhsm python3-systemd python3-urllib3 readline redhat-release rootfiles rpm rpm-build-libs rpm-libs rpm-plugin-selinux rpm-sign-libs rsync scl-utils \ - sed selinux-policy selinux-policy-targeted setup shadow-utils skopeo slirp4netns sqlite-libs subscription-manager subscription-manager-rhsm-certificates systemd systemd-libs \ - systemd-pam systemd-rpm-macros tar tcl tpm2-tss tzdata unzip usermode util-linux util-linux-core vim-filesystem vim-minimal virt-what which xz xz-libs yajl yum zlib zlib-devel && \ - \ - # '(micro)dnf update -y' not allowed in Konflux+Cachi2: instead use renovate or https://github.com/konflux-ci/rpm-lockfile-prototype to update the rpms.lock.yaml file - dnf clean all - -ENV EXTERNAL_SOURCE_NESTED=. -ENV CONTAINER_SOURCE=/opt/app-root/src - -# Env vars -ENV YARN=$CONTAINER_SOURCE/.yarn/releases/yarn-3.8.7.cjs - -WORKDIR $CONTAINER_SOURCE/ -COPY $EXTERNAL_SOURCE_NESTED/.yarn ./.yarn -COPY $EXTERNAL_SOURCE_NESTED/.yarnrc.yml ./ - -# Add execute permissions to yarn; add yarn to path via symlink -RUN chmod +x "$YARN" && ln -s "$YARN" /usr/local/bin/yarn - -# Stage 2 - Install dependencies -FROM skeleton AS deps -COPY $EXTERNAL_SOURCE_NESTED/yarn.lock ./ -# BEGIN COPY package.json files -COPY $EXTERNAL_SOURCE_NESTED/plugins/scalprum-backend/package.json ./plugins/scalprum-backend/package.json -COPY $EXTERNAL_SOURCE_NESTED/plugins/licensed-users-info-backend/package.json ./plugins/licensed-users-info-backend/package.json -COPY $EXTERNAL_SOURCE_NESTED/plugins/dynamic-plugins-info-backend/package.json ./plugins/dynamic-plugins-info-backend/package.json -COPY $EXTERNAL_SOURCE_NESTED/packages/theme-wrapper/package.json ./packages/theme-wrapper/package.json -COPY $EXTERNAL_SOURCE_NESTED/packages/plugin-utils/package.json ./packages/plugin-utils/package.json -COPY $EXTERNAL_SOURCE_NESTED/packages/backend/package.json ./packages/backend/package.json -COPY $EXTERNAL_SOURCE_NESTED/packages/app/package.json ./packages/app/package.json -COPY $EXTERNAL_SOURCE_NESTED/packages/app-next/package.json ./packages/app-next/package.json -COPY $EXTERNAL_SOURCE_NESTED/package.json ./package.json -# END COPY package.json files - -# unpack headers from tarball (includes openssl headers not present in /usr/include/node) - see RHIDP-6755 for why we need this upstream -COPY $EXTERNAL_SOURCE_NESTED/.nvm/ . -RUN NODE_HEADERS_VERSION=$(node --version); echo "=== Install node headers $NODE_HEADERS_VERSION from tar.gz ==="; \ - if [[ ! -f releases/node-${NODE_HEADERS_VERSION}-headers.tar.gz ]]; then \ - echo "[ERROR] Base image includes nodejs $NODE_HEADERS_VERSION but could not find releases/node-${NODE_HEADERS_VERSION}-headers.tar.gz to install!"; \ - echo "[ERROR] To fix, upload the node-${NODE_HEADERS_VERSION}-headers.tar.gz file into https://github.com/redhat-developer/rhdh/tree/main/.nvm/releases (or related branch)!"; \ - exit 1; \ - fi; \ - mkdir -p ~/.cache/node-gyp/${NODE_HEADERS_VERSION/v/}; \ - tar -xf releases/node-${NODE_HEADERS_VERSION}-headers.tar.gz --directory ~/.cache/node-gyp/${NODE_HEADERS_VERSION/v/}/ --strip-components 1; \ - echo "11" > ~/.cache/node-gyp/${NODE_HEADERS_VERSION/v/}/installVersion; \ - rm -fr releases/node-${NODE_HEADERS_VERSION}-headers.tar.gz - -# Increase timeout for yarn install -RUN "$YARN" config set httpTimeout 600000 - -RUN echo "=== YARN INSTALL ==="; FAILED=0; "$YARN" install --immutable || FAILED=1; \ - for d in /tmp/xfs-*; do if [[ -f ${d}/build.log ]]; then \ - (( FAILED = FAILED + 1 )); \ - echo; echo $d; \ - echo "!!! YARN INSTALL FAILED !!!"; \ - cat ${d}/build.log; \ - fi; done; \ - if [[ $FAILED -gt 0 ]]; then exit $FAILED; fi - -# Stage 3 - Build packages -FROM deps AS build - -COPY $EXTERNAL_SOURCE_NESTED ./ - -RUN git config --global --add safe.directory ./ -# Upstream only -RUN rm app-config.yaml && mv app-config.example.yaml app-config.yaml - -# Downstream only - replace midstream build-metadata.json with the version from downstream (where we include the midstream SHA) -# COPY packages/app/src/build-metadata.json ./packages/app/src/ - -# hadolint ignore=DL3059,DL4006,SC2086 -RUN \ - # Append build time into packages/app/src/build-metadata.json - now=$(date -u +%FT%TZ); sed -i packages/app/src/build-metadata.json -r \ - -e "s/(\"Last Commit\": \"(.+)\")/\1, \"Build Time\": \"$now\"/" && \ - cat packages/app/src/build-metadata.json; echo - -# suppress git warnings about dubious ownership in repository at '/opt/app-root/src' when building -RUN echo "=== YARN BUILD ==="; FAILED=0; \ - git config --global --add safe.directory /opt/app-root/src; \ - "$YARN" build || FAILED=1; \ - for d in $(find . -name yarn-install.log); do \ - (( FAILED = FAILED + 1 )); echo; echo $d; echo "======"; cat ${d}; \ - done; \ - if [[ $FAILED -gt 0 ]]; then exit $FAILED; fi - -WORKDIR $CONTAINER_SOURCE/dynamic-plugins - -RUN echo "=== DYNAMIC PLUGIN YARN INSTALL ==="; FAILED=0; "$YARN" install --immutable || FAILED=1; \ - for d in /tmp/xfs-*; do if [[ -f ${d}/build.log ]]; then \ - (( FAILED = FAILED + 1 )); \ - echo; echo $d; \ - echo "!!! DYNAMIC PLUGIN YARN INSTALL FAILED !!!"; \ - cat ${d}/build.log; \ - fi; done; \ - if [[ $FAILED -gt 0 ]]; then exit $FAILED; fi - -RUN echo "=== EXPORT DYNAMIC PLUGINS ==="; FAILED=0; \ - "$YARN" export-dynamic || FAILED=1; \ - for d in $(find . -name yarn-install.log); do \ - (( FAILED = FAILED + 1 )); echo; echo $d; echo "======"; cat ${d}; \ - done; \ - if [[ $FAILED -gt 0 ]]; then exit $FAILED; fi - -RUN echo "=== YARN COPY DYNAMIC PLUGINS in $(pwd) ==="; "$YARN" copy-dynamic-plugins dist - -WORKDIR $CONTAINER_SOURCE - -# Stage 4 - Build the actual backend image and install production dependencies -# Upstream only -FROM skeleton AS cleanup - -# Upstream only - copy the install dependencies from the build stage and context -COPY --from=build $CONTAINER_SOURCE/yarn.lock \ - $CONTAINER_SOURCE/package.json \ - ./ -COPY --from=build \ - $CONTAINER_SOURCE/packages/backend/dist/skeleton.tar.gz \ - $CONTAINER_SOURCE/packages/backend/dist/bundle.tar.gz \ - ./packages/backend/dist/ - -# unpack and remove tarballs -ENV TARBALL_PATH=./packages/backend/dist -RUN tar xzf "$TARBALL_PATH"/skeleton.tar.gz; tar xzf "$TARBALL_PATH"/bundle.tar.gz; \ - rm -f "$TARBALL_PATH"/skeleton.tar.gz "$TARBALL_PATH"/bundle.tar.gz - -# Copy app-config files needed in runtime -COPY $EXTERNAL_SOURCE_NESTED/app-config*.yaml ./ -COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins.default.yaml ./ - -# Hackaround: create library symlinks to build: isolated-vm node-gyp better-sqlite cpu-features -# TODO is this still needed? maintaining it over time will be a chore if the .so files change -RUN echo "=== lib64 symlinks ==="; \ - for l in libbrotlidec.so.1 libbrotlienc.so.1 libbrotlicommon.so.1 libc.so.6 ld-linux-x86-64.so.2 libcrypto.so.3 libk5crypto.so.3 libz.so.1 libssl.so.3; do \ - ln -s /usr/lib64/$l /usr/lib64/${l%.*} 2>/dev/null || true; \ - ls -l /usr/lib64/${l%.*}; \ - done - -# Increase timeout for yarn install -RUN "$YARN" config set httpTimeout 600000 - -# Install production dependencies -# hadolint ignore=DL3059 -RUN echo "=== YARN WORKSPACES FOCUS ==="; FAILED=0; "$YARN" workspaces focus --all --production || true; \ - for d in /tmp/xfs-*; do if [[ -f ${d}/build.log ]]; then \ - (( FAILED = FAILED + 1 )); echo; echo $d; echo "======"; cat ${d}/build.log; \ - fi; done; \ - if [[ $FAILED -gt 0 ]]; then exit $FAILED; fi - -RUN \ - # delete all the nested .npmrc files and set default values - find . -type f -name .npmrc -exec rm -Rf {} \; && \ - # reset npm config to the default registry and absolute path to .pem file - npm config set registry=https://registry.npmjs.org/ && \ - npm config set cafile /opt/app-root/src/registry-ca.pem - -# Stage 5 - Build the runner image -# https://registry.access.redhat.com/ubi9/nodejs-22-minimal -FROM registry.access.redhat.com/ubi9/nodejs-22-minimal:9.7-1762215467 AS runner -USER 0 - -ENV EXTERNAL_SOURCE_NESTED=. -ENV CONTAINER_SOURCE=/opt/app-root/src -WORKDIR $CONTAINER_SOURCE/ - -# Install techdocs dependencies using requirements files -# hadolint ignore=DL3013,DL3041,SC2086 -COPY "$EXTERNAL_SOURCE_NESTED"/python/ ./python -RUN microdnf install -y python3.11 python3.11-pip python3.11-devel make cmake cpp gcc gcc-c++ skopeo 1>/dev/null 2>&1; \ - alternatives --install /usr/bin/python python /usr/bin/python3.11 1 && \ - alternatives --install /usr/bin/pip pip /usr/bin/pip3.11 1 && \ - # fix ownership for pip install folder - mkdir -p /opt/app-root/src/.cache/pip && chown -R root:root /opt/app-root && \ - # ls -ld /opt/ /opt/app-root /opt/app-root/src/ /opt/app-root/src/.cache /opt/app-root/src/.cache/pip || true; \ - pushd "$EXTERNAL_SOURCE_NESTED"/python/ >/dev/null && \ - set -e; \ - python3.11 -V; pip3.11 -V; \ - pip install --no-cache-dir --upgrade pip setuptools pyyaml; \ - pip install --no-cache-dir -r requirements.txt -r requirements-build.txt; mkdocs --version; \ - popd >/dev/null; \ - rm -fr python/; \ - microdnf clean all - -# Upstream only - copy from cleanup stage -COPY --from=cleanup --chown=1001:1001 $CONTAINER_SOURCE/ ./ -# Downstream only - copy from build, not cleanup stage -# COPY --from=build --chown=1001:1001 "$CONTAINER_SOURCE"/ ./ - -# Copy embedded dynamic plugins from $CONTAINER_SOURCE -COPY --from=build --chown=1001:1001 $CONTAINER_SOURCE/dynamic-plugins/dist/ ./dynamic-plugins/dist/ - -# RHIDP-4220 - make Konflux preflight and EC checks happy - [check-container] Create a directory named /licenses and include all relevant licensing -COPY $EXTERNAL_SOURCE_NESTED/LICENSE /licenses/ - -# RHIDP-5216/RHIDP-5215 - interim marketplace catalog entities until these data will be loaded from container images -COPY $EXTERNAL_SOURCE_NESTED/catalog-entities/marketplace /marketplace/catalog-entities/ - -# Copy script to gather dynamic plugins; copy embedded dynamic plugins to root folder; fix permissions -COPY docker/install-dynamic-plugins.py docker/install-dynamic-plugins.sh ./ -RUN chmod -R a+rx ./install-dynamic-plugins.* - - -# Fix for https://issues.redhat.com/browse/RHIDP-728 -RUN mkdir -p /opt/app-root/src/.npm; chown -R 1001:1001 /opt/app-root/src/.npm - -# The fix-permissions script is important when operating in environments that dynamically use a random UID at runtime, such as OpenShift. -# The upstream backstage image does not account for this and it causes the container to fail at runtime. -# suppress warnings about dereferencing symlinks -RUN fix-permissions ./ 2>&1 | grep -v "chgrp: cannot dereference" || true - -# Switch to nodejs user -USER 1001 - -# Temporary workaround to avoid triggering issue -# https://github.com/backstage/backstage/issues/20644 -ENV CHOKIDAR_USEPOLLING='1' CHOKIDAR_INTERVAL='10000' - -# To avoid running scripts when using `npm pack` to install dynamic plugins -ENV NPM_CONFIG_ignore-scripts='true' - -# gGVM6sYRK0D0ndVX22BOtS7NRcxPej8t is key for dev environment -# Upstream - Use dev key in all branches -ENV SEGMENT_WRITE_KEY=gGVM6sYRK0D0ndVX22BOtS7NRcxPej8t -ENV SEGMENT_TEST_MODE=false - -# RHIDP-2217: corporate proxy support (configured using 'global-agent' for 'node-fetch' calls and 'undici' for 'fetch' calls) -# This is to avoid having to define several environment variables for the same purpose, -# i.e, GLOBAL_AGENT_HTTP(S)_PROXY (for 'global-agent') and the conventional HTTP(S)_PROXY (honored by other libraries like Axios). -# By setting GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE to an empty value, -# 'global-agent' will use the same HTTP_PROXY, HTTPS_PROXY and NO_PROXY environment variables. -ENV GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE='' - -# RHDHBUGS-106,RHIDP-4646: requests to the loopback interface should bypass the corporate proxy if set. -# Note that NO_PROXY will take effect only if the 'HTTP(S)_PROXY' environment variables are set. -# Users can still override this when running the image. -ENV NO_PROXY='localhost,127.0.0.1' - -# The `--no-node-snapshot` node option enables the usage of the backstage scaffolder on nodejs 20 -# https://github.com/backstage/backstage/issues/20661 - -# Copy instrumentation needed for surfacing metrics -COPY --chown=1001:1001 $EXTERNAL_SOURCE_NESTED/packages/backend/src/instrumentation.js ./ -# Remove write and execute permissions -RUN chmod a=r ./instrumentation.js - -ENV NODE_OPTIONS="--no-node-snapshot" -ENTRYPOINT ["node", "--require", "./instrumentation.js", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.example.yaml", "--config", "app-config.example.production.yaml"] - -# append Brew metadata here From dd0ff4bcb65cbe2b657d5a9f007029714d641064 Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Thu, 20 Nov 2025 15:07:15 -0500 Subject: [PATCH 03/15] chore: update symlinks for aarch64 Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .rhdh/docker/Dockerfile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.rhdh/docker/Dockerfile b/.rhdh/docker/Dockerfile index 092de30c42..6528fc5895 100644 --- a/.rhdh/docker/Dockerfile +++ b/.rhdh/docker/Dockerfile @@ -180,7 +180,16 @@ COPY $EXTERNAL_SOURCE_NESTED/dynamic-plugins.default.yaml ./ # Hackaround: create library symlinks to build: isolated-vm node-gyp better-sqlite cpu-features # TODO is this still needed? maintaining it over time will be a chore if the .so files change RUN echo "=== lib64 symlinks ==="; \ - for l in libbrotlidec.so.1 libbrotlienc.so.1 libbrotlicommon.so.1 libc.so.6 ld-linux-x86-64.so.2 libcrypto.so.3 libk5crypto.so.3 libz.so.1 libssl.so.3; do \ + ARCH=$(uname -m); \ + if [ "$ARCH" = "x86_64" ]; then \ + LD_LINUX="ld-linux-x86-64.so.2"; \ + elif [ "$ARCH" = "aarch64" ]; then \ + LD_LINUX="ld-linux-aarch64.so.1"; \ + else \ + echo "Unsupported architecture: $ARCH"; \ + exit 1; \ + fi; \ + for l in libbrotlidec.so.1 libbrotlienc.so.1 libbrotlicommon.so.1 libc.so.6 $LD_LINUX libcrypto.so.3 libk5crypto.so.3 libz.so.1 libssl.so.3; do \ ln -s /usr/lib64/$l /usr/lib64/${l%.*} 2>/dev/null || true; \ ls -l /usr/lib64/${l%.*}; \ done From b41ec954a39b3567a3e0af6aeb143df184cecdc9 Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Fri, 21 Nov 2025 09:47:07 -0500 Subject: [PATCH 04/15] chore: refactor docker build setup - Rename Dockerfile to Containerfile - Adds a local hermeto build script for local testing - Remove obsolete .rhdh directory and merged the doc content with docker Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .github/actions/docker-build/action.yaml | 12 +- .gitignore | 4 +- .rhdh/docker/.gitignore | 4 - .rhdh/docker/README.adoc | 20 --- docker/.gitignore | 8 ++ .../docker/Dockerfile => docker/Containerfile | 0 docker/README.adoc | 36 +++++- scripts/local-hermeto-build.sh | 122 ++++++++++++++++++ 8 files changed, 168 insertions(+), 38 deletions(-) delete mode 100644 .rhdh/docker/.gitignore delete mode 100644 .rhdh/docker/README.adoc create mode 100644 docker/.gitignore rename .rhdh/docker/Dockerfile => docker/Containerfile (100%) create mode 100755 scripts/local-hermeto-build.sh diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index bbe2131778..db300f7ef4 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -32,10 +32,10 @@ inputs: description: Path to the component directory for hermetic builds required: false default: '.' - dockerfilePath: - description: Path to the Dockerfile to use + containerfilePath: + description: Path to the Containerfile to use required: false - default: '.rhdh/docker/Dockerfile' + default: 'docker/Containerfile' skipArtifactUpload: description: Skip uploading the built image as a GitHub artifact required: false @@ -140,11 +140,11 @@ runs: set -x echo "::group::Transforming Containerfile for hermetic build" - CONTAINERFILE_PATH="${{ inputs.dockerfilePath }}" + CONTAINERFILE_PATH="${{ inputs.containerfilePath }}" TRANSFORMED_CONTAINERFILE="${CONTAINERFILE_PATH}.hermeto" # Copy original dockerfile for hermetic build modifications - cp "$CONTAINERFILE_PATH" "$TRANSFORMED_CONTAINERFILE" + cp "$CONTAINERFILE_PATH" "$TRANSFORMED_CONTAINERFILE" # Transform the dockerfile to simulate Konflux build # Configure dnf to use the cachi2 repo (supports both x86_64 and aarch64) @@ -160,7 +160,7 @@ runs: id: build uses: redhat-actions/buildah-build@7a95fa7ee0f02d552a32753e7414641a04307056 # v2.13 with: - containerfiles: ${{ inputs.dockerfilePath }}.hermeto + containerfiles: ${{ inputs.containerfilePath }}.hermeto context: . platform: ${{ inputs.platform }} tags: ${{ steps.meta.outputs.tags }} diff --git a/.gitignore b/.gitignore index 4becc7a784..2039ca367d 100644 --- a/.gitignore +++ b/.gitignore @@ -76,4 +76,6 @@ dynamic-plugins-root/* # Python Caches **/__pycache__/ **/.pytest_cache/ -**/.venv/ \ No newline at end of file +**/.venv/ + +hermeto-cache/ \ No newline at end of file diff --git a/.rhdh/docker/.gitignore b/.rhdh/docker/.gitignore deleted file mode 100644 index d1cd54a5ad..0000000000 --- a/.rhdh/docker/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -bin/ -lib/ -lib64/ -pyvenv.cfg diff --git a/.rhdh/docker/README.adoc b/.rhdh/docker/README.adoc deleted file mode 100644 index 45bd8bc5a8..0000000000 --- a/.rhdh/docker/README.adoc +++ /dev/null @@ -1,20 +0,0 @@ -# Downstream Dockerfile - -This folder contains the containerfile (dockerfile) used in Konflux downstream for RHDH builds. - -It requires hermeto to cache dependencies (rpm, pip, yarn) before the build can proceed, so that the build is reproduceable/offline/hermetically sealed. - -Note that some things in this repo are changed when they're synced to downstream. See link:https://gitlab.cee.redhat.com/rhidp/rhdh/-/blob/rhdh-1-rhel-9/build/ci/sync-midstream.sh[build/ci/sync-midstream.sh]. Note: RH VPN required. - - -## How do I build this dockerfile - -Depending on what you're trying to accomplish you have some options: - -1. build from the link:../../docker/Dockerfile[docker/Dockerfile] instead of link:Dockerfile[.rhdh/docker/Dockerfile], using `podman build` or equivalent - -2. create your own hermeto cache folder with https://github.com/hermetoproject/hermeto and then tweak this Dockerfile using ENV vars, to use your local cache folder -+ -You will need to replace `YARN_GLOBAL_FOLDER=/cachi2/output/deps/yarn` to point you your local `/path/to/hermeto-output/deps/yarn` folder instead. See also link:https://github.com/hermetoproject/hermeto/blob/main/docs/usage.md#generate-environment-variables[Generating Environment Variables]. - -3. Use Konflux to build a merge request against the midstream repo. See link:https://gitlab.cee.redhat.com/rhidp/rhdh/-/blob/rhdh-1-rhel-9/docs/RHDH-Konflux-user-guide.adoc#user-content-building-locally[Konflux user guide - building locally]. Note: RH VPN required. diff --git a/docker/.gitignore b/docker/.gitignore new file mode 100644 index 0000000000..0c4dfc047f --- /dev/null +++ b/docker/.gitignore @@ -0,0 +1,8 @@ +bin/ +lib/ +lib64/ +pyvenv.cfg +# Python Caches +**/__pycache__/ +**/.pytest_cache/ +**/.venv/ \ No newline at end of file diff --git a/.rhdh/docker/Dockerfile b/docker/Containerfile similarity index 100% rename from .rhdh/docker/Dockerfile rename to docker/Containerfile diff --git a/docker/README.adoc b/docker/README.adoc index beade285c7..df1fd0dc91 100644 --- a/docker/README.adoc +++ b/docker/README.adoc @@ -8,19 +8,41 @@ If you want an image that runs on Mac M1 (arm64/aarch64) or another architecture ## Building locally -Check out this repo, choose the branch or tag you want to use, then build an image: +This folder contains the Containerfile used in Konflux downstream for RHDH builds. +It requires hermeto to cache dependencies (rpm, pip, yarn) before the build can proceed, so that the build is reproduceable/offline/hermetically sealed. + +Note that some things in this repo are changed when they're synced to downstream. See link:https://gitlab.cee.redhat.com/rhidp/rhdh/-/blob/rhdh-1-rhel-9/build/ci/sync-midstream.sh[build/ci/sync-midstream.sh]. Note: RH VPN required. + +## How to build this Containerfile + +Depending on what you're trying to accomplish you have some options: + +1. Use the link:../scripts/local-hermeto-build.sh[local-hermeto-build.sh] script to build the image locally. ++ + +This script will do the following: + +* creates a hermeto cache folder in the `./hermeto-cache` folder +* generates a transformed Containerfile that uses the hermeto cache (injects the cachi2 env variables to every RUN command, and configures dnf, pip and yarn to use the cachi2 repo. See link:https://github.com/hermetoproject/hermeto/blob/main/docs/usage.md#generate-environment-variables[Generating Environment Variables] for more information.) +* builds the image using the transformed Containerfile + ++ +```bash +# create the hermeto cache +./scripts/local-hermeto-build.sh cache . + +# build the image using the hermeto cache +./scripts/local-hermeto-build.sh image . image:tag ``` -podman build -f docker/Dockerfile . -t redhat-developer/rhdh:local -``` +2. Create a pull request in this repository to trigger a PR build in Github which will publish the image to `quay.io/rhdh-community/rhdh`. Note: this will only build AMD64 images. -## Downstream builds +3. Trigger the link:../.github/workflows/next-build-image.yaml[Build Next and Tag Image] action in Github manually to perform a multi-arch build and publish the images to `quay.io/rhdh-community/rhdh`. -Downstream dockerfile and configuration can be found here: +4. Use Konflux to build a merge request against the midstream repo. See link:https://gitlab.cee.redhat.com/rhidp/rhdh/-/blob/rhdh-1-rhel-9/docs/RHDH-Konflux-user-guide.adoc#user-content-building-locally[Konflux user guide - building locally]. Note: RH VPN required. -* link:../.rhdh/docker/[.rhdh/docker] -Downstream sources use the above folder to transform sources in this repo to something that can be built within the Red Hat build pipeline. +## Downstream builds *_Red Hat VPN access required._* diff --git a/scripts/local-hermeto-build.sh b/scripts/local-hermeto-build.sh new file mode 100755 index 0000000000..282153f756 --- /dev/null +++ b/scripts/local-hermeto-build.sh @@ -0,0 +1,122 @@ +#!/bin/bash -e +# +# Copyright (c) 2021-2025 Red Hat, Inc. +# This program and the accompanying materials are made +# available under the terms of the Eclipse Public License 2.0 +# which is available at https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# this script will extract the filesystem of a container to a folder +# so you can browse its contents. Also works with scratch images + +set -x + +LOCAL_CACHE_BASEDIR=./hermeto-cache/ +HERMETO_IMAGE=quay.io/konflux-ci/hermeto:latest + + +usage () +{ + echo "This script tries to somewhat simulate the Konflux build process. + +Usage: $0 [image] + +The examples below assume you are in the root of the repository. +Examples: + $0 cache . + $0 image . quay.io/example/image:tag + +Options: + The type of build. Options are: + - cache: Build the cache using Hermeto + - image: Build the image + The directory of the component to build. + [image] The name of the container image to build. Required for the 'image' type. + " + exit +} + +if [[ $# -lt 2 ]]; then usage; fi + +TYPE=$1 +COMPONENT_DIR=$2 +IMAGE=$3 + +# Check if the type is valid +if [[ "$TYPE" != "cache" && "$TYPE" != "image" ]]; then + echo "Invalid type: $TYPE" + usage +fi + +# Check if image is provided for the 'image' type +if [[ "$TYPE" == "image" && -z "$IMAGE" ]]; then + echo "Image name is required for the 'image' type." + usage +fi + +function transformContainerfile() { + local containerfile="$1" + local transformed_containerfile="$2" + + cp $containerfile $transformed_containerfile + + # configure dnf to use the cachi2 repo + sed -i '/RUN *\(dnf\|microdnf\) install/i RUN rm -r /etc/yum.repos.d/* && cp /cachi2/output/deps/rpm/$(uname -m)/repos.d/hermeto.repo /etc/yum.repos.d/' $transformed_containerfile + + # inject the cachi2 env variables to every RUN command + sed -i 's/^\s*RUN /RUN . \/cachi2\/cachi2.env \&\& /' $transformed_containerfile +} + +COMPONENT_DIR=$(realpath "$COMPONENT_DIR") +LOCAL_CACHE_DIR=$(realpath "$LOCAL_CACHE_BASEDIR")/$(basename "$COMPONENT_DIR") +LOCAL_CACHE_OUTPUT_DIR=$LOCAL_CACHE_DIR/output +echo "Component dir: $COMPONENT_DIR" +echo "Local cache dir: $LOCAL_CACHE_DIR" + +############# +### CACHE ### +############# +if [[ "$TYPE" == "cache" ]]; then + # ensure the local cache dir exists + mkdir -p $LOCAL_CACHE_OUTPUT_DIR + + # ensure the latest hermeto image + podman pull $HERMETO_IMAGE + # build cache + podman run --rm -ti -v "$PWD:/source:z" -v "$LOCAL_CACHE_DIR":/cachi2:z -w /source $HERMETO_IMAGE \ + --log-level DEBUG \ + fetch-deps --dev-package-managers \ + --source . \ + --output /cachi2/output \ + '[{"type": "rpm", "path": "."}, {"type": "yarn","path": "."}, {"type": "yarn","path": "./dynamic-plugins"}, {"type": "pip","path": "./python", "allow_binary": "false"}]' + + podman run --rm -ti -v "$PWD:/source:z" -v "$LOCAL_CACHE_DIR":/cachi2:z -w /source $HERMETO_IMAGE \ + generate-env --format env --output /cachi2/cachi2.env /cachi2/output + + podman run --rm -ti -v "$PWD:/source:z" -v "$LOCAL_CACHE_DIR":/cachi2:z -w /source $HERMETO_IMAGE \ + inject-files /cachi2/output +fi + +############# +### IMAGE ### +############# +if [[ "$TYPE" == "image" ]]; then + + # ensure the local cache dir exists + if [[ ! -d "$LOCAL_CACHE_DIR" ]]; then + echo "Local cache dir does not exist. Please run the script with 'cache' first." + echo "example: $0 cache $2" + exit 1 + fi + + # transform the containerfile to simulate Konflux build + transformContainerfile "$COMPONENT_DIR/docker/Containerfile" "$COMPONENT_DIR/docker/Containerfile.hermeto" + + podman build -t "$IMAGE" \ + --network none \ + --no-cache \ + -f "$COMPONENT_DIR"/docker/Containerfile.hermeto \ + -v "$LOCAL_CACHE_DIR":/cachi2 \ + "$COMPONENT_DIR" +fi \ No newline at end of file From 6ee818759356ef955c27cbeadfeb88299c58da84 Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Fri, 21 Nov 2025 10:18:29 -0500 Subject: [PATCH 05/15] chore: update the update-Dockerfile.sh script with updated containerfile locations Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .github/actions/docker-build/action.yaml | 2 +- scripts/update-Dockerfile.sh | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index db300f7ef4..331749c436 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -196,4 +196,4 @@ runs: name: podman-image-${{ github.event.number || github.ref_name }}-${{ env.SHORT_SHA }}-${{ env.PLATFORM_ARCH }} path: ./rhdh-podman-artifacts/ retention-days: 1 - if-no-files-found: error \ No newline at end of file + if-no-files-found: error diff --git a/scripts/update-Dockerfile.sh b/scripts/update-Dockerfile.sh index 1346682280..c14c82f85e 100755 --- a/scripts/update-Dockerfile.sh +++ b/scripts/update-Dockerfile.sh @@ -10,14 +10,11 @@ # Utility script to inject all the package.json files into the container before running yarn install # see also ../package.json build stage which should trigger this when building in CI -for dockerfile in ./docker/Dockerfile .rhdh/docker/Dockerfile; do +for containerfile in ./docker/Containerfile; do # trim existing COPY lines - sed -i "/# BEGIN COPY package.json files/,/# END COPY package.json files/c# BEGIN COPY package.json files\n# END COPY package.json files" $dockerfile + sed -i "/# BEGIN COPY package.json files/,/# END COPY package.json files/c# BEGIN COPY package.json files\n# END COPY package.json files" $containerfile # add new COPY lines -for path in $( (find . -maxdepth 1 -name package.json; find ./plugins ./packages -name package.json) | sort -uV); do - sed -i "s|\# BEGIN COPY package.json files|\# BEGIN COPY package.json files\nCOPY ${path/\./\$EXTERNAL_SOURCE_NESTED} $path|g" $dockerfile + for path in $( (find . -maxdepth 1 -name package.json; find ./plugins ./packages -name package.json) | sort -uV); do + sed -i "s|\# BEGIN COPY package.json files|\# BEGIN COPY package.json files\nCOPY ${path/\./\$EXTERNAL_SOURCE_NESTED} $path|g" $containerfile done done - -# remove e2e-tests from downstream dockerfile -sed -i .rhdh/docker/Dockerfile -r -e "/e2e-tests/d" From 25e4ce18f0ce3d05be7d98a16557fba508531aa8 Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Fri, 21 Nov 2025 11:33:26 -0500 Subject: [PATCH 06/15] chore: update docs and scripts with new container file location Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .../check-image-and-changes/action.yaml | 3 +- .github/renovate.json | 3 +- .github/workflows/update-rpm-lockfile.yaml | 12 +++---- CONTRIBUTING.md | 5 +-- README.md | 8 ++--- python/README.requirements.md | 31 ++++++++----------- rpms.in.yaml | 2 +- 7 files changed, 25 insertions(+), 39 deletions(-) diff --git a/.github/actions/check-image-and-changes/action.yaml b/.github/actions/check-image-and-changes/action.yaml index f4e5489e5b..c79e2b9a02 100644 --- a/.github/actions/check-image-and-changes/action.yaml +++ b/.github/actions/check-image-and-changes/action.yaml @@ -53,8 +53,7 @@ runs: while IFS= read -r file; do if [[ -n "$file" ]]; then # If file is NOT in one of the non-essential directories, mark as relevant - # contents of .rhdh/docker are only for downstream and we do zero testing of those python or docker files in upstream e2e - if ! [[ "$file" =~ ^(e2e|e2e-tests|doc|docs|\.ibm|\.rhdh/docker)/ ]]; then + if ! [[ "$file" =~ ^(e2e|e2e-tests|doc|docs|\.ibm)/ ]]; then echo "Relevant change detected: $file" RELEVANT_CHANGES=true break diff --git a/.github/renovate.json b/.github/renovate.json index 17c1af0c1d..adf06c6fef 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -54,8 +54,7 @@ "minor" ], "matchFileNames": [ - ".rhdh/docker/Dockerfile", - "docker/Dockerfile" + "docker/Containerfile" ], "additionalBranchPrefix": "dockerfile ", "groupName": "Dockerfile images (non-major) [skip-build]", diff --git a/.github/workflows/update-rpm-lockfile.yaml b/.github/workflows/update-rpm-lockfile.yaml index 244abea34c..a42fc3ceb7 100644 --- a/.github/workflows/update-rpm-lockfile.yaml +++ b/.github/workflows/update-rpm-lockfile.yaml @@ -11,11 +11,11 @@ on: - release-1.** paths: - 'rpms.in.yaml' - - '.rhdh/docker/Dockerfile' + - 'docker/Containerfile' permissions: contents: write env: - DOCKERFILE_PATH: .rhdh/docker/Dockerfile + CONTAINERFILE_PATH: docker/Containerfile jobs: update-lockfile: runs-on: ubuntu-latest @@ -27,8 +27,8 @@ jobs: - name: Check if hermetic Dockerfile exists run: | - if [ ! -f "${{ env.DOCKERFILE_PATH }}" ]; then - echo "Error: ${{ env.DOCKERFILE_PATH }} not found!" + if [ ! -f "${{ env.CONTAINERFILE_PATH }}" ]; then + echo "Error: ${{ env.CONTAINERFILE_PATH }} not found!" exit 1 fi - name: Configure Git @@ -57,9 +57,9 @@ jobs: fi - name: Run rpm-lockfile-prototype run: | - echo "Running '${HOME}/.local/bin/rpm-lockfile-prototype -f ${{ env.DOCKERFILE_PATH }} rpms.in.yaml' in $(pwd)" + echo "Running '${HOME}/.local/bin/rpm-lockfile-prototype -f ${{ env.CONTAINERFILE_PATH }} rpms.in.yaml' in $(pwd)" - ${HOME}/.local/bin/rpm-lockfile-prototype -f ${{ env.DOCKERFILE_PATH }} rpms.in.yaml + ${HOME}/.local/bin/rpm-lockfile-prototype -f ${{ env.CONTAINERFILE_PATH }} rpms.in.yaml - name: Check for lockfile changes id: check-lockfile-changes diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c2f449ea8e..43c0c15f1d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -162,10 +162,7 @@ Follow the [Conventional Commits](https://www.conventionalcommits.org/) specific ### Adding Statically Linked Plugins for Frontend and Backend -When contributing a new `@internal` plugin into this repo, you must remember to add the plugin to the Dockerfiles under the section titled `Stage 2 - Install dependencies`: - -- [Upstream Dockerfile](.rhdh/docker/Dockerfile) -- [Downstream Dockerfile](docker/Dockerfile) +When contributing a new `@internal` plugin into this repo, you must remember to add the plugin to the [Containerfile](docker/Dockerfile) under the section titled `Stage 2 - Install dependencies`: For example: diff --git a/README.md b/README.md index 8744f57d9e..d6ad999185 100644 --- a/README.md +++ b/README.md @@ -74,14 +74,10 @@ Want to know more about Backstage, consult the [documentation](https://backstage RHDH is currently only available for amd64/x86_64. -For additional architecture support, please vote for https://issues.redhat.com/browse/RHIDP-1351 with your reason for needing additional arches. +For additional architecture support, please vote for with your reason for needing additional arches. If you want an image that runs on Mac M1 (arm64/aarch64) or another architecture, you will need to build it yourself. ### Building locally -Check out this repo, choose the branch or tag you want to use, then build an image: - -``` -podman build -f docker/Dockerfile . -t rhdh:local -``` +Refer to the [Containerfile documentation](docker/README.adoc) for details on building locally diff --git a/python/README.requirements.md b/python/README.requirements.md index eccc6d2ad7..89f4db4923 100644 --- a/python/README.requirements.md +++ b/python/README.requirements.md @@ -1,5 +1,4 @@ -# To iteratively add/fix requirements: - +# To iteratively add/fix requirements ## Testing locally using github sources @@ -7,13 +6,13 @@ Add more to, or update existing dependencies in, the `requirements.in`. You can also remove all the pinned versions, then: -``` +```bash pip-compile --allow-unsafe --strip-extras requirements.in -o requirements.txt ``` Try to install everything in `requirements.txt`: -``` +```bash rm -rf pyvenv.cfg lib* bin/* virtualenv .; . bin/activate pip install --upgrade pip; pip install -r requirements.txt @@ -21,9 +20,9 @@ pip install --upgrade pip; pip install -r requirements.txt If it fails, repeat previous step to add more dependencies `requirements.in` and repeat. -Now, set up BUILD requirements, see https://github.com/containerbuildsystem/cachito/blob/master/docs/pip.md#build-dependencies to get `pip_find_builddeps.py`, then run: +Now, set up BUILD requirements, see to get `pip_find_builddeps.py`, then run: -``` +```bash rm -fr /tmp/pip_find_builddeps.py* cd /tmp; curl -sSLO https://raw.githubusercontent.com/containerbuildsystem/cachito/refs/heads/master/bin/pip_find_builddeps.py && chmod +x pip_find_builddeps.py; cd - /tmp/pip_find_builddeps.py requirements.txt -o requirements-build.in --append --no-cache @@ -31,7 +30,7 @@ cd /tmp; curl -sSLO https://raw.githubusercontent.com/containerbuildsystem/cachi Review the contents of `requirements-build.in` to remove dupes. Then regenerate `requirements-build.txt` -``` +```bash pip-compile --allow-unsafe --strip-extras requirements-build.in -o requirements-build.txt ``` @@ -39,7 +38,7 @@ If it passes, you can run `cachito_hash.sh` to fix the sha256sums. Finally, MAKE SURE YOU OVERRIDE what's in the .txt files to add in the cachito_hash values, as pip-compile will remove them. This can be done by running `cachito_hash.sh`. -``` +```bash # plantuml-markdown==3.9.7 plantuml-markdown @ https://github.com/mikitex70/plantuml-markdown/archive/fcf62aa930708368ec1daaad8b5b5dbe1d1b2014.zip#cachito_hash=sha256:a487c2312a53fe47a0947e8624290b2c8ea51e373140d02950531966b1db5caa @@ -64,7 +63,7 @@ Next, regenerate the requirements*.txt files. You may also want to remove any versions pinned to the .in files to see if the latest deps can work together. -``` +```bash # for github path_to_python=python @@ -87,7 +86,7 @@ cd - Next, run Hermeto: -``` +```bash # "install" hermeto as a podman-run container: alias hermeto='podman run --rm -ti -v "$PWD:$PWD:z" -w "$PWD" quay.io/konflux-ci/hermeto:latest' @@ -103,7 +102,7 @@ hermeto fetch-deps --source ${git_repo} --output /tmp/python-hermeto-gitlab-outp Should see something like this: -``` +```bash 2025-07-14 14:49:25,691 INFO Found name in setup.py: 'Python dependencies' 2025-07-14 14:49:25,691 INFO Found version in setup.py: '1.0' 2025-07-14 14:49:25,691 INFO Resolved name Python dependencies for package at /home/nboldt/4/tmp70bz7pdq.hermeto-source-copy/distgit/containers/rhdh-hub/python @@ -112,13 +111,13 @@ Should see something like this: 2025-07-14 14:50:30,784 INFO All dependencies fetched successfully \o/ ``` -For more on Hermeto and pip, see https://github.com/hermetoproject/hermeto/blob/main/docs/pip.md +For more on Hermeto and pip, see ## Testing in Konflux using gitlab sources To test in Konflux, repeat the above steps in the midstream (gitlab) repo, using something like: -``` +```bash pip3.11 install --user --no-cache-dir -r requirements.txt -r requirements-build.txt ``` @@ -129,8 +128,4 @@ If the build fails, add more dependencies to the requirements file, and try agai When the build passes, commit changes to upstream repo, and trigger sync to cause a midstream/downstream build to verify your changes. -Note that some files are transformed between up/mid/downstream, so you may have to apply changes in more than one file. - -- Upstream: `docker/Dockerfile` (upstream) and `.rhdh/docker/Dockerfile` (midstream) - -- Midstream is transformed to `distgit/containers/rhdh-hub/Containerfile` via [sync-midstream.sh](https://gitlab.cee.redhat.com/rhidp/rhdh/-/blob/rhdh-1-rhel-9/build/ci/sync-midstream.sh) +- `docker/Containerfile` is transformed to `distgit/containers/rhdh-hub/Containerfile` via [sync-midstream.sh](https://gitlab.cee.redhat.com/rhidp/rhdh/-/blob/rhdh-1-rhel-9/build/ci/sync-midstream.sh) diff --git a/rpms.in.yaml b/rpms.in.yaml index b34dbe17d0..fbd07894a2 100644 --- a/rpms.in.yaml +++ b/rpms.in.yaml @@ -1,5 +1,5 @@ # after editing, run (https://github.com/konflux-ci/rpm-lockfile-prototype): -# rpm-lockfile-prototype -f .rhdh/docker/Dockerfile rpms.in.yaml +# rpm-lockfile-prototype -f docker/Containerfile rpms.in.yaml # to regen rpms.lock.yaml # Note that the repoid values are special, and must be from here: # https://github.com/release-engineering/rhtap-ec-policy/blob/main/data/known_rpm_repositories.yml From d6f5590935ddca2de3534a76d3144677278dde8a Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Fri, 21 Nov 2025 11:58:39 -0500 Subject: [PATCH 07/15] chore: remove dead janus slack invite link Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- CONTRIBUTING.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 43c0c15f1d..d356c8229f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -170,10 +170,6 @@ For example: COPY $EXTERNAL_SOURCE_NESTED/plugins/dynamic-plugins-info/package.json ./plugins/dynamic-plugins-info/package.json ``` -## Support - -You can reach out to us in our [community Slack channel](https://join.slack.com/t/janus-idp/shared_invite/zt-1pxtehxom-fCFtF9rRe3vFqUiFFeAkmg) if you run into any issues with setup, running, or testing the application. Members of the team and community can assist you with questions and concerns you might have. Even if you don't need help, please consider joining and being involved in our community. - ## License By contributing, you agree that your contributions will be licensed under the [Apache-2.0 License](https://github.com/redhat-developer/rhdh/blob/main/LICENSE). From 7eacea98972c54855cd4dd467bfa9d945b91f84d Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Fri, 21 Nov 2025 12:24:05 -0500 Subject: [PATCH 08/15] chore: update pr podman push with new artifact name Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .github/actions/docker-build/action.yaml | 7 ++++++- .github/workflows/pr-podman-push.yaml | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 331749c436..c04b6de44a 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -127,11 +127,16 @@ runs: run: | set -ex echo "::group::Fixing cache ownership" + + echo "=== Before ownership fix ===" ls -l ${{ env.LOCAL_CACHE_DIR_REALPATH }} + echo "=== Attempting to fix ownership to runner user ===" sudo chown -R runner ${{ env.LOCAL_CACHE_DIR_REALPATH }} - + + echo "=== After ownership fix ===" ls -l ${{ env.LOCAL_CACHE_DIR_REALPATH }} + echo "::endgroup::" - name: Transform Containerfile for hermetic build diff --git a/.github/workflows/pr-podman-push.yaml b/.github/workflows/pr-podman-push.yaml index 64e72e56b1..837ec9a411 100644 --- a/.github/workflows/pr-podman-push.yaml +++ b/.github/workflows/pr-podman-push.yaml @@ -41,11 +41,9 @@ jobs: if [ -n "$PR_NUMBER" ]; then echo "Found PR number: $PR_NUMBER" echo "PR branch: $PR_BRANCH" - echo "Artifact Name: container-image-pr-$PR_NUMBER-$SHORT_SHA" echo "pr_number=$PR_NUMBER" >> $GITHUB_OUTPUT echo "short-sha=$SHORT_SHA" >> $GITHUB_OUTPUT - echo "artifact-name=container-image-pr-$PR_NUMBER-$SHORT_SHA" >> $GITHUB_OUTPUT else echo "Failed to determine PR number" exit 1 @@ -56,10 +54,12 @@ jobs: BUILD_ID="${{ steps.get-pr-info.outputs.pr_number }}" SHORT_SHA="${{ github.event.workflow_run.head_sha }}" SHORT_SHA="${SHORT_SHA:0:8}" + # Currently PR builds build for amd64 only + PLATFORM_ARCH="amd64" echo "SHORT_SHA=$SHORT_SHA" >> $GITHUB_ENV - ARTIFACT_NAME="podman-image-${BUILD_ID}-${SHORT_SHA}" + ARTIFACT_NAME="podman-image-${BUILD_ID}-${SHORT_SHA}-${PLATFORM_ARCH}" echo "ARTIFACT_NAME=$ARTIFACT_NAME" >> $GITHUB_ENV echo "SKIP_ARTIFACT_NAME=pr-${BUILD_ID}-${SHORT_SHA}-isSkipped" >> $GITHUB_ENV echo "Using artifact name: $ARTIFACT_NAME" From f444c66f58bbb82c1a7fc8e8068716485ea6b90b Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Fri, 21 Nov 2025 12:33:40 -0500 Subject: [PATCH 09/15] chore: add missing architecture field in artifact names Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .github/actions/docker-build/action.yaml | 8 ++++++++ .github/workflows/pr-podman-push.yaml | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index c04b6de44a..bab00aca8b 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -55,6 +55,14 @@ runs: docker-images: false swap-storage: false + - name: Set platform architecture + shell: bash + run: | + # Get the current platform architecture + PLATFORM_ARCH=$(uname -m) + echo "PLATFORM_ARCH=$PLATFORM_ARCH" >> $GITHUB_ENV + echo "Platform Architecture: $PLATFORM_ARCH" + - name: Extract metadata (tags, labels, annotations) for Docker id: meta uses: docker/metadata-action@v5 diff --git a/.github/workflows/pr-podman-push.yaml b/.github/workflows/pr-podman-push.yaml index 837ec9a411..a680f846de 100644 --- a/.github/workflows/pr-podman-push.yaml +++ b/.github/workflows/pr-podman-push.yaml @@ -55,7 +55,7 @@ jobs: SHORT_SHA="${{ github.event.workflow_run.head_sha }}" SHORT_SHA="${SHORT_SHA:0:8}" # Currently PR builds build for amd64 only - PLATFORM_ARCH="amd64" + PLATFORM_ARCH=x86_64 echo "SHORT_SHA=$SHORT_SHA" >> $GITHUB_ENV From de9ea21ea6b7bac061ca400cb497b8fb8e56117e Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Fri, 21 Nov 2025 12:48:26 -0500 Subject: [PATCH 10/15] chore: remove arch in artifacts since we don't do multi-arch for PRs Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .github/actions/docker-build/action.yaml | 10 +--------- .github/workflows/pr-podman-push.yaml | 5 +---- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index bab00aca8b..5481a38a9f 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -55,14 +55,6 @@ runs: docker-images: false swap-storage: false - - name: Set platform architecture - shell: bash - run: | - # Get the current platform architecture - PLATFORM_ARCH=$(uname -m) - echo "PLATFORM_ARCH=$PLATFORM_ARCH" >> $GITHUB_ENV - echo "Platform Architecture: $PLATFORM_ARCH" - - name: Extract metadata (tags, labels, annotations) for Docker id: meta uses: docker/metadata-action@v5 @@ -206,7 +198,7 @@ runs: if: ${{ inputs.skipArtifactUpload != 'true' }} uses: actions/upload-artifact@v4 with: - name: podman-image-${{ github.event.number || github.ref_name }}-${{ env.SHORT_SHA }}-${{ env.PLATFORM_ARCH }} + name: podman-image-${{ github.event.number || github.ref_name }}-${{ env.SHORT_SHA }} path: ./rhdh-podman-artifacts/ retention-days: 1 if-no-files-found: error diff --git a/.github/workflows/pr-podman-push.yaml b/.github/workflows/pr-podman-push.yaml index a680f846de..69f7b5db86 100644 --- a/.github/workflows/pr-podman-push.yaml +++ b/.github/workflows/pr-podman-push.yaml @@ -54,12 +54,9 @@ jobs: BUILD_ID="${{ steps.get-pr-info.outputs.pr_number }}" SHORT_SHA="${{ github.event.workflow_run.head_sha }}" SHORT_SHA="${SHORT_SHA:0:8}" - # Currently PR builds build for amd64 only - PLATFORM_ARCH=x86_64 - echo "SHORT_SHA=$SHORT_SHA" >> $GITHUB_ENV - ARTIFACT_NAME="podman-image-${BUILD_ID}-${SHORT_SHA}-${PLATFORM_ARCH}" + ARTIFACT_NAME="podman-image-${BUILD_ID}-${SHORT_SHA}" echo "ARTIFACT_NAME=$ARTIFACT_NAME" >> $GITHUB_ENV echo "SKIP_ARTIFACT_NAME=pr-${BUILD_ID}-${SHORT_SHA}-isSkipped" >> $GITHUB_ENV echo "Using artifact name: $ARTIFACT_NAME" From 36b2d84069c436044f36ae301b87320ab0f0cdc9 Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Mon, 24 Nov 2025 16:27:44 -0500 Subject: [PATCH 11/15] refactor: enhance GitHub Actions workflows with improved environment variable handling - Moved many values into environmental variables for readability, maintainability and security (input sanitization). - Deleted the on-new-issue.yaml workflow since we no longer create github issues. These changes aim to improve readability and also follow best practices as defined in https://securitylab.github.com/resources/github-actions-untrusted-input/. Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .github/actions/check-author/action.yaml | 15 +++--- .../check-image-and-changes/action.yaml | 26 ++++++---- .github/actions/docker-build/action.yaml | 15 +++--- .github/actions/get-sha/action.yml | 14 ++++-- .github/workflows/auto-approve-bot-prs.yaml | 19 ++++---- .github/workflows/next-build-image.yaml | 48 ++++++++++++------- .github/workflows/on-new-issue.yaml | 25 ---------- .github/workflows/pr-build-image.yaml | 44 +++++++++++------ .github/workflows/pr-podman-push.yaml | 32 +++++++++---- .github/workflows/pr.yaml | 8 +++- .github/workflows/push-e2e-runner.yaml | 13 +++-- .github/workflows/update-backstage.yaml | 30 ++++++++---- .github/workflows/update-rpm-lockfile.yaml | 28 +++++++---- .gitignore | 2 +- docker/.gitignore | 2 +- 15 files changed, 193 insertions(+), 128 deletions(-) delete mode 100644 .github/workflows/on-new-issue.yaml diff --git a/.github/actions/check-author/action.yaml b/.github/actions/check-author/action.yaml index 5a355f77e2..0ddce3efc8 100644 --- a/.github/actions/check-author/action.yaml +++ b/.github/actions/check-author/action.yaml @@ -41,25 +41,28 @@ runs: shell: bash env: GH_TOKEN: ${{ inputs.gh_token }} + AUTHOR: ${{ inputs.author }} + TEAM: ${{ inputs.team }} + ORGANIZATION: ${{ inputs.organization }} run: | - echo "Checking if ${{ inputs.author }} is an active member of ${{ inputs.team }} team in ${{ inputs.organization }}..." + echo "Checking if $AUTHOR is an active member of $TEAM team in $ORGANIZATION..." # Use the memberships endpoint to get specific membership info - if response=$(gh api "/orgs/${{ inputs.organization }}/teams/${{ inputs.team }}/memberships/${{ inputs.author }}" 2>/dev/null); then + if response=$(gh api "/orgs/${ORGANIZATION}/teams/${TEAM}/memberships/${AUTHOR}" 2>/dev/null); then state=$(echo "$response" | jq -r '.state') if [[ "$state" == "active" ]]; then - echo "✓ Author ${{ inputs.author }} is an active member of the ${{ inputs.team }} team" + echo "✓ Author $AUTHOR is an active member of the $TEAM team" echo "is_active_member=true" >> $GITHUB_OUTPUT elif [[ "$state" == "pending" ]]; then - echo "⚠️ Author ${{ inputs.author }} has a pending invitation to the ${{ inputs.team }} team (not active)" + echo "⚠️ Author $AUTHOR has a pending invitation to the $TEAM team (not active)" echo "is_active_member=false" >> $GITHUB_OUTPUT else - echo "✗ Author ${{ inputs.author }} has unexpected membership state: $state" + echo "✗ Author $AUTHOR has unexpected membership state: $state" echo "is_active_member=false" >> $GITHUB_OUTPUT fi else # API call failed (user not in team) - echo "✗ Author ${{ inputs.author }} is not a member of the ${{ inputs.team }} team" + echo "✗ Author $AUTHOR is not a member of the $TEAM team" echo "is_active_member=false" >> $GITHUB_OUTPUT fi diff --git a/.github/actions/check-image-and-changes/action.yaml b/.github/actions/check-image-and-changes/action.yaml index c79e2b9a02..548b514985 100644 --- a/.github/actions/check-image-and-changes/action.yaml +++ b/.github/actions/check-image-and-changes/action.yaml @@ -25,12 +25,15 @@ runs: - name: Check for relevant changes id: changes shell: bash + env: + GET_SHA_OUTPUT: ${{ steps.get-sha.outputs.short_sha }} + PR_BASE_SHA: ${{ github.event.pull_request.base.sha }} run: | # Ensure that SHORT_SHA is available for subsequent steps in this context - echo "SHORT_SHA=${SHORT_SHA:-${{ steps.get-sha.outputs.short_sha }}}" >> $GITHUB_ENV + echo "SHORT_SHA=${SHORT_SHA:-$GET_SHA_OUTPUT}" >> $GITHUB_ENV # Get base commit for comparison - BASE_COMMIT=$(git merge-base ${{ github.event.pull_request.base.sha }} HEAD) + BASE_COMMIT=$(git merge-base "$PR_BASE_SHA" HEAD) echo "BASE_COMMIT=$BASE_COMMIT" # Get list of changed files @@ -76,16 +79,19 @@ runs: - name: Check if Docker image exists id: image-check shell: bash + env: + PR_NUMBER: ${{ github.event.number }} + IMAGE_REGISTRY: ${{ env.REGISTRY }} run: | # First check the PR base tag (most important for skipping builds) - IMAGE_TAG_PR="pr-${{ github.event.number }}" - IMAGE_NAME_PR="${{ env.REGISTRY }}/rhdh-community/rhdh:${IMAGE_TAG_PR}" + IMAGE_TAG_PR="pr-${PR_NUMBER}" + IMAGE_NAME_PR="${IMAGE_REGISTRY}/rhdh-community/rhdh:${IMAGE_TAG_PR}" IMAGE_EXISTS_PR=$(curl -s "https://quay.io/api/v1/repository/rhdh-community/rhdh/tag/" | jq -r --arg tag "$IMAGE_TAG_PR" '.tags[] | select(.name == $tag) | .name') # For safety, also check commit-specific tag - IMAGE_TAG_COMMIT="pr-${{ github.event.number }}-${SHORT_SHA}" - IMAGE_NAME_COMMIT="${{ env.REGISTRY }}/rhdh-community/rhdh:${IMAGE_TAG_COMMIT}" + IMAGE_TAG_COMMIT="pr-${PR_NUMBER}-${SHORT_SHA}" + IMAGE_NAME_COMMIT="${IMAGE_REGISTRY}/rhdh-community/rhdh:${IMAGE_TAG_COMMIT}" IMAGE_EXISTS_COMMIT=$(curl -s "https://quay.io/api/v1/repository/rhdh-community/rhdh/tag/" | jq -r --arg tag "$IMAGE_TAG_COMMIT" '.tags[] | select(.name == $tag) | .name') @@ -104,12 +110,12 @@ runs: - name: Determine final skip decision id: final-decision shell: bash + env: + SKIP_BUILD_TAG: ${{ steps.changes.outputs.skip_build_tag }} + RELEVANT_CHANGES: ${{ steps.changes.outputs.relevant_changes }} + IMAGE_EXISTS: ${{ steps.image-check.outputs.exists }} run: | # Get the values from previous steps - SKIP_BUILD_TAG="${{ steps.changes.outputs.skip_build_tag }}" - RELEVANT_CHANGES="${{ steps.changes.outputs.relevant_changes }}" - IMAGE_EXISTS="${{ steps.image-check.outputs.exists }}" - echo "Skip build tag: $SKIP_BUILD_TAG" echo "Relevant changes: $RELEVANT_CHANGES" echo "Image exists: $IMAGE_EXISTS" diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 5481a38a9f..93e609ba1c 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -141,12 +141,14 @@ runs: - name: Transform Containerfile for hermetic build shell: bash + id: transform-containerfile + env: + CONTAINERFILE_PATH: ${{ inputs.containerfilePath }} + TRANSFORMED_CONTAINERFILE: ${{ inputs.containerfilePath }}.hermeto run: | set -x echo "::group::Transforming Containerfile for hermetic build" - CONTAINERFILE_PATH="${{ inputs.containerfilePath }}" - TRANSFORMED_CONTAINERFILE="${CONTAINERFILE_PATH}.hermeto" # Copy original dockerfile for hermetic build modifications cp "$CONTAINERFILE_PATH" "$TRANSFORMED_CONTAINERFILE" @@ -159,13 +161,13 @@ runs: sed -i 's/^\s*RUN /RUN . \/cachi2\/cachi2.env \&\& /' "$TRANSFORMED_CONTAINERFILE" echo "::endgroup::" - echo "TRANSFORMED_CONTAINERFILE=$TRANSFORMED_CONTAINERFILE" >> $GITHUB_ENV + echo "transformed_containerfile=$TRANSFORMED_CONTAINERFILE" >> $GITHUB_OUTPUT - name: "Build Docker Image" id: build uses: redhat-actions/buildah-build@7a95fa7ee0f02d552a32753e7414641a04307056 # v2.13 with: - containerfiles: ${{ inputs.containerfilePath }}.hermeto + containerfiles: ${{ steps.transform-containerfile.outputs.transformed_containerfile }} context: . platform: ${{ inputs.platform }} tags: ${{ steps.meta.outputs.tags }} @@ -177,12 +179,13 @@ runs: - name: Save image as artifact if: ${{ inputs.skipArtifactUpload != 'true' }} shell: bash + env: + TAGS_LIST: ${{ steps.meta.outputs.tags }} # Extract the built image tags from the metadata + run: | echo "::group::Saving image and metadata for artifact" mkdir -p ./rhdh-podman-artifacts - # Extract the built image tags from the metadata - TAGS_LIST="${{ steps.meta.outputs.tags }}" # Save all the built images to tar (podman save can handle multiple tags) echo "Saving images with tags:" diff --git a/.github/actions/get-sha/action.yml b/.github/actions/get-sha/action.yml index 05cc70a07c..9e5906ec81 100644 --- a/.github/actions/get-sha/action.yml +++ b/.github/actions/get-sha/action.yml @@ -26,16 +26,20 @@ runs: steps: - name: Get the last commit short SHA shell: bash + env: + PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }} + REPOSITORY: ${{ github.repository }} + PR_NUMBER: ${{ github.event.number }} run: | - if [[ -n "${{ github.event.pull_request.head.sha }}" ]]; then - # running on a PR - REF="${{ github.event.pull_request.head.sha }}" - REPO="${{ github.repository }}/pull/${{ github.event.number }}" + if [[ -n "$PR_HEAD_SHA" ]]; then + # running on a PR + REF="$PR_HEAD_SHA" + REPO="${REPOSITORY}/pull/${PR_NUMBER}" else # running on a main branch # todo: handle other branches than main REF="HEAD" - REPO="${{ github.repository }}" + REPO="$REPOSITORY" fi SHORT_SHA=$(git rev-parse --short=8 $REF) echo "SHORT_SHA=$SHORT_SHA" >> $GITHUB_ENV diff --git a/.github/workflows/auto-approve-bot-prs.yaml b/.github/workflows/auto-approve-bot-prs.yaml index 503d6eb97a..cc85978d89 100644 --- a/.github/workflows/auto-approve-bot-prs.yaml +++ b/.github/workflows/auto-approve-bot-prs.yaml @@ -42,9 +42,10 @@ jobs: - name: Check PR eligibility id: check-eligibility + env: + PR_BRANCH: ${{ github.event.pull_request.head.ref }} + PR_DRAFT: ${{ github.event.pull_request.draft }} run: | - PR_BRANCH="${{ github.event.pull_request.head.ref }}" - PR_DRAFT="${{ github.event.pull_request.draft }}" # Don't auto-approve draft PRs if [[ "$PR_DRAFT" == "true" ]]; then @@ -63,7 +64,7 @@ jobs: ELIGIBLE=false for pattern in "${ELIGIBLE_PATTERNS[@]}"; do - if [[ "$PR_BRANCH" =~ $pattern ]]; then + if [[ "${{ env.PR_BRANCH }}" =~ $pattern ]]; then ELIGIBLE=true break fi @@ -78,19 +79,21 @@ jobs: - name: Add required labels and approve PR if: steps.check-eligibility.outputs.eligible == 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PR_NUMBER: ${{ github.event.pull_request.number }} + REPO: ${{ github.repository }} run: | # Add the required labels if not already present - gh pr edit ${{ github.event.pull_request.number }} --add-label "lgtm,approved" --repo ${{ github.repository }} + gh pr edit "$PR_NUMBER" --add-label "lgtm,approved" --repo "$REPO" # Auto-approve the PR - gh pr review ${{ github.event.pull_request.number }} \ + gh pr review "$PR_NUMBER" \ --approve \ - --repo ${{ github.repository }} \ + --repo "$REPO" \ --body "**Auto-Approved** This PR has been automatically approved by the auto-approve workflow. **Labels Added:** \`lgtm\`, \`approved\`" - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/next-build-image.yaml b/.github/workflows/next-build-image.yaml index cfad01764a..26157b6384 100644 --- a/.github/workflows/next-build-image.yaml +++ b/.github/workflows/next-build-image.yaml @@ -64,17 +64,20 @@ jobs: fetch-depth: 0 - name: Prepare + env: + MATRIX_OS: ${{ matrix.os }} + GITHUB_REF_NAME: ${{ github.ref_name }} run: | - if [ "${{ matrix.os }}" == "ubuntu-24.04" ]; then + if [ "$MATRIX_OS" == "ubuntu-24.04" ]; then platform="linux/amd64" - elif [ "${{ matrix.os }}" == "ubuntu-24.04-arm" ]; then + elif [ "$MATRIX_OS" == "ubuntu-24.04-arm" ]; then platform="linux/arm64" else echo "Unknown platform" exit 1 fi - ref_name=${{ github.ref_name }} + ref_name=$GITHUB_REF_NAME if [ "$ref_name" == "main" ]; then ref_name="next" elif [[ "$ref_name" =~ ^release-([0-9]+)\.([0-9]+) ]]; then @@ -106,7 +109,7 @@ jobs: - name: Check Quay credentials run: | - if [ "${{ env.HAS_QUAY_AUTH }}" != "true" ]; then + if [ "$HAS_QUAY_AUTH" != "true" ]; then echo "::error::Missing QUAY_USERNAME or QUAY_TOKEN secrets" exit 1 fi @@ -148,9 +151,11 @@ jobs: - name: Export digest id: export-digest + env: + DIGEST: ${{ steps.push-image.outputs.digest }} run: | mkdir -p /tmp/digests - digest="${{ steps.push-image.outputs.digest }}" + digest="$DIGEST" touch "/tmp/digests/${digest#sha256:}" - name: Upload digest @@ -169,8 +174,10 @@ jobs: HAS_QUAY_AUTH: ${{ secrets.QUAY_USERNAME != '' && secrets.QUAY_TOKEN != '' }} steps: - name: Prepare + env: + REF_NAME_INPUT: ${{ github.ref_name }} run: | - ref_name=${{ github.ref_name }} + ref_name=$REF_NAME_INPUT if [ "$ref_name" == "main" ]; then ref_name="next" elif [[ "$ref_name" =~ ^release-([0-9]+)\.([0-9]+) ]]; then @@ -313,11 +320,14 @@ jobs: - name: Create manifest list and push working-directory: /tmp/digests + env: + META_RELEASE_JSON: ${{ steps.meta-release.outputs.json }} + META_NEXT_JSON: ${{ steps.meta-next.outputs.json }} run: | # Read tags from the metadata JSON of the step that ran - meta='${{ steps.meta-release.outputs.json }}' + meta="$META_RELEASE_JSON" if [ -z "$meta" ] || [ "$meta" = "null" ]; then - meta='${{ steps.meta-next.outputs.json }}' + meta="$META_NEXT_JSON" fi # Create and annotate the manifest list for EACH tag to ensure Quay applies expiry per tag @@ -326,20 +336,24 @@ jobs: docker buildx imagetools create \ --annotation "quay.expires-after=${EXPIRES_AFTER}" \ -t "$tag" \ - $(printf '${{ env.REGISTRY }}/${{ env.REGISTRY_IMAGE }}@sha256:%s ' *) + $(printf "${REGISTRY}/${REGISTRY_IMAGE}@sha256:%s " *) done - name: Inspect image (for :next builds) id: inspect-next if: ${{ env.REF_NAME_SHORT == 'next' || startsWith(env.REF_NAME_SHORT,'next-') }} + env: + META_VERSION: ${{ steps.meta-next.outputs.version }} run: | - docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ env.REGISTRY_IMAGE }}:${{ steps.meta-next.outputs.version }} + docker buildx imagetools inspect "${REGISTRY}/${REGISTRY_IMAGE}:${META_VERSION}" - name: Inspect image (for releases) id: inspect-release if: ${{ env.REF_NAME_SHORT != 'next' && !startsWith(env.REF_NAME_SHORT,'next-') }} + env: + META_VERSION: ${{ steps.meta-release.outputs.version }} run: | - docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ env.REGISTRY_IMAGE }}:${{ steps.meta-release.outputs.version }} + docker buildx imagetools inspect "${REGISTRY}/${REGISTRY_IMAGE}:${META_VERSION}" - name: Wait for manifest propagation if: env.HAS_QUAY_AUTH == 'true' @@ -347,10 +361,10 @@ jobs: echo "Waiting for Quay to propagate multi-arch manifests..." # Determine which metadata step ran to get the primary tag - if [ "${{ env.REF_NAME_SHORT }}" == "next" ] || [[ "${{ env.REF_NAME_SHORT }}" == "next-"* ]]; then - primary_tag="${{ env.REF_NAME }}" + if [ "$REF_NAME_SHORT" == "next" ] || [[ "$REF_NAME_SHORT" == "next-"* ]]; then + primary_tag="$REF_NAME" else - primary_tag="${{ env.REF_NAME }}" + primary_tag="$REF_NAME" fi # Retry loop to check manifest availability @@ -360,7 +374,7 @@ jobs: while [ $attempt -le $max_attempts ]; do echo "Checking manifest availability (attempt $attempt/$max_attempts)..." - if docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ env.REGISTRY_IMAGE }}:${primary_tag} >/dev/null 2>&1; then + if docker buildx imagetools inspect "${REGISTRY}/${REGISTRY_IMAGE}:${primary_tag}" >/dev/null 2>&1; then echo "✓ Multi-arch manifest is available after $((($attempt - 1) * 5)) seconds" break fi @@ -560,10 +574,10 @@ jobs: echo "Re-annotating tag: ${tag}" if docker buildx imagetools create \ - --tag "${{ env.REGISTRY }}/${REGISTRY_IMAGE}:${tag}" \ + --tag "${REGISTRY}/${REGISTRY_IMAGE}:${tag}" \ --annotation "quay.expires-after=${EXPIRES_AFTER}" \ --annotation "org.opencontainers.image.expires=${EXPIRES_AFTER}" \ - "${{ env.REGISTRY }}/${REGISTRY_IMAGE}:${tag}"; then + "${REGISTRY}/${REGISTRY_IMAGE}:${tag}"; then echo "Expiry annotations applied to: ${tag}" else echo "::warning::Failed to re-annotate ${tag}" diff --git a/.github/workflows/on-new-issue.yaml b/.github/workflows/on-new-issue.yaml deleted file mode 100644 index c92f0b0a3b..0000000000 --- a/.github/workflows/on-new-issue.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: On New Issue - -on: - issues: - types: - - opened - -jobs: - add-to-project: - # https://github.com/janus-idp/.github/blob/main/.github/workflows/add-to-project.yaml - uses: janus-idp/.github/.github/workflows/add-to-project.yaml@main - with: - project_id: 2 - secrets: inherit - - - add-jira-label: - runs-on: ubuntu-latest - permissions: - issues: write - steps: - - run: | - gh issue --repo ${{github.repository}} edit ${{github.event.issue.number}} --add-label "jira" - env: - GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/pr-build-image.yaml b/.github/workflows/pr-build-image.yaml index e5181c7367..4ff848f576 100644 --- a/.github/workflows/pr-build-image.yaml +++ b/.github/workflows/pr-build-image.yaml @@ -40,35 +40,49 @@ jobs: uses: ./.github/actions/check-image-and-changes - name: Store isSkipped status + env: + IS_SKIPPED: ${{ steps.check-image.outputs.is_skipped }} run: | mkdir -p ./rhdh-skip-artifacts - echo "${{ steps.check-image.outputs.is_skipped }}" > ./rhdh-skip-artifacts/isSkipped.txt + echo "$IS_SKIPPED" > ./rhdh-skip-artifacts/isSkipped.txt - name: Upload isSkipped status uses: actions/upload-artifact@v4 + env: + ARTIFACT_NAME: pr-${{ github.event.number }}-${{ env.SHORT_SHA }}-isSkipped with: - name: pr-${{ github.event.number }}-${{ env.SHORT_SHA }}-isSkipped + name: ${{ env.ARTIFACT_NAME }} path: ./rhdh-skip-artifacts/isSkipped.txt retention-days: 1 if-no-files-found: error - name: Debug outputs + env: + IMAGE_EXISTS: ${{ steps.check-image.outputs.image_exists }} + RELEVANT_CHANGES: ${{ steps.check-image.outputs.relevant_changes }} + SHORT_SHA_VAR: ${{ env.SHORT_SHA }} + PR_NUMBER: ${{ github.event.number }} run: | - echo "Image exists: ${{ steps.check-image.outputs.image_exists }}" - echo "Relevant changes: ${{ steps.check-image.outputs.relevant_changes }}" - echo "SHORT_SHA: ${{ env.SHORT_SHA }}" - echo "PR Number: ${{ github.event.number }}" - echo "Base Tag: pr-${{ github.event.number }}" - echo "Commit Tag: pr-${{ github.event.number }}-${{ env.SHORT_SHA }}" + echo "Image exists: $IMAGE_EXISTS" + echo "Relevant changes: $RELEVANT_CHANGES" + echo "SHORT_SHA: $SHORT_SHA_VAR" + echo "PR Number: $PR_NUMBER" + echo "Base Tag: pr-$PR_NUMBER" + echo "Commit Tag: pr-$PR_NUMBER-$SHORT_SHA_VAR" - name: Get the latest commits from base branch if: ${{ steps.check-image.outputs.is_skipped != 'true' }} + env: + REPO: ${{ github.repository }} + PR_USER_LOGIN: ${{ github.event.pull_request.user.login }} + PR_USER_EMAIL: ${{ github.event.pull_request.user.email }} + PR_BASE_REF: ${{ github.event.pull_request.base.ref }} run: | - git remote add base-origin https://github.com/${{ github.repository }} || true - git config user.name "${{ github.event.pull_request.user.login }}" - git config user.email "${{ github.event.pull_request.user.email }}" - echo "Updating PR with latest commits from ${{ github.event.pull_request.base.ref }} ..." - git fetch base-origin ${{ github.event.pull_request.base.ref }} - git merge --no-edit base-origin/${{ github.event.pull_request.base.ref }} + git remote add base-origin https://github.com/"$REPO" || true + git config user.name "$PR_USER_LOGIN" + git config user.email "$PR_USER_EMAIL" + echo "Updating PR with latest commits from $PR_BASE_REF ..." + git fetch base-origin "$PR_BASE_REF" + git merge --no-edit base-origin/"$PR_BASE_REF" - name: Build Image (Hermetic) if: ${{ steps.check-image.outputs.is_skipped != 'true' }} uses: ./.github/actions/docker-build @@ -78,4 +92,4 @@ jobs: pr-${{ github.event.number }} pr-${{ github.event.number }}-${{ env.SHORT_SHA }} imageLabels: quay.expires-after=14d - platform: linux/amd64 \ No newline at end of file + platform: linux/amd64 diff --git a/.github/workflows/pr-podman-push.yaml b/.github/workflows/pr-podman-push.yaml index 69f7b5db86..2a714f43e1 100644 --- a/.github/workflows/pr-podman-push.yaml +++ b/.github/workflows/pr-podman-push.yaml @@ -30,10 +30,10 @@ jobs: && format('{0}:{1}', github.event.workflow_run.head_repository.owner.login, github.event.workflow_run.head_branch) || github.event.workflow_run.head_branch }} + FULL_SHA: ${{ github.event.workflow_run.head_sha }} run: | - FULL_SHA="${{ github.event.workflow_run.head_sha }}" - SHORT_SHA=$(echo "$FULL_SHA" | cut -c1-8) + SHORT_SHA=$(echo "${{ env.FULL_SHA }}" | cut -c1-8) # Need to use gh cli instead of `events.workflow_run.pull_requests` because the latter doesn't work for PRs from forks # Refer to https://github.com/orgs/community/discussions/25220 PR_NUMBER=$(gh pr view --repo "${PR_TARGET_REPO}" "${PR_BRANCH}" --json number --jq '.number') @@ -49,22 +49,30 @@ jobs: exit 1 fi - name: Determine artifact name + id: get-artifact-name + env: + PR_NUMBER: ${{ steps.get-pr-info.outputs.pr_number }} + WORKFLOW_HEAD_SHA: ${{ github.event.workflow_run.head_sha }} run: | # For workflow_run, extract from the event context - BUILD_ID="${{ steps.get-pr-info.outputs.pr_number }}" - SHORT_SHA="${{ github.event.workflow_run.head_sha }}" - SHORT_SHA="${SHORT_SHA:0:8}" + SHORT_SHA=$(echo "${{ env.WORKFLOW_HEAD_SHA }}" | cut -c1-8) - echo "SHORT_SHA=$SHORT_SHA" >> $GITHUB_ENV - ARTIFACT_NAME="podman-image-${BUILD_ID}-${SHORT_SHA}" - echo "ARTIFACT_NAME=$ARTIFACT_NAME" >> $GITHUB_ENV - echo "SKIP_ARTIFACT_NAME=pr-${BUILD_ID}-${SHORT_SHA}-isSkipped" >> $GITHUB_ENV + echo "short_sha=$SHORT_SHA" >> $GITHUB_OUTPUT + ARTIFACT_NAME="podman-image-${{ env.PR_NUMBER }}-${SHORT_SHA}" + SKIP_ARTIFACT_NAME="pr-${{ env.PR_NUMBER }}-${SHORT_SHA}-isSkipped" + echo "Using artifact name: $ARTIFACT_NAME" echo "Using skip artifact name: $SKIP_ARTIFACT_NAME" + echo "artifact_name=$ARTIFACT_NAME" >> $GITHUB_OUTPUT + echo "skip_artifact_name=$SKIP_ARTIFACT_NAME" >> $GITHUB_OUTPUT + + - name: Download Skip Status Artifact id: download-skip-status uses: actions/download-artifact@v4 + env: + SKIP_ARTIFACT_NAME: ${{ steps.get-artifact-name.outputs.skip_artifact_name }} with: name: ${{ env.SKIP_ARTIFACT_NAME }} path: ./rhdh-skip-artifacts @@ -87,6 +95,8 @@ jobs: - name: Download Image Artifacts if: ${{ steps.check-skip.outputs.is_skipped != 'true' }} uses: actions/download-artifact@v4 + env: + ARTIFACT_NAME: ${{ steps.get-artifact-name.outputs.artifact_name }} with: name: ${{ env.ARTIFACT_NAME }} path: ./rhdh-podman-artifacts @@ -124,8 +134,10 @@ jobs: - name: Push Images if: ${{ steps.check-skip.outputs.is_skipped != 'true' }} uses: redhat-actions/push-to-registry@5ed88d269cf581ea9ef6dd6806d01562096bee9c # v2.8 + env: + PUSHED_TAGS: ${{ steps.prepare.outputs.tags }} with: - tags: ${{ steps.prepare.outputs.tags }} + tags: ${{ env.PUSHED_TAGS }} username: ${{ secrets.QUAY_USERNAME }} password: ${{ secrets.QUAY_TOKEN }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 5486f995cb..c3d94bd80d 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -72,10 +72,14 @@ jobs: steps: - name: Check if internal PR id: check + env: + IS_TEAM_MEMBER: ${{ needs.check-commit-author.outputs.is_active_team_member }} + PR_REPO_FULL_NAME: ${{ github.event.pull_request.head.repo.full_name }} + CURRENT_REPO: ${{ github.repository }} run: | - if [[ "${{ needs.check-commit-author.outputs.is_active_team_member }}" == "true" ]]; then + if [[ "$IS_TEAM_MEMBER" == "true" ]]; then echo "✓ Commit author is in rhdh team - using internal environment" - elif [[ "${{ github.event.pull_request.head.repo.full_name }}" == "${{ github.repository }}" ]]; then + elif [[ "$PR_REPO_FULL_NAME" == "$CURRENT_REPO" ]]; then echo "✓ Internal PR (not from fork) - using internal environment" else echo "✓ External PR from fork from non-rhdh team member - using external environment for security" diff --git a/.github/workflows/push-e2e-runner.yaml b/.github/workflows/push-e2e-runner.yaml index a5c6a940ea..67175455e3 100644 --- a/.github/workflows/push-e2e-runner.yaml +++ b/.github/workflows/push-e2e-runner.yaml @@ -41,16 +41,19 @@ jobs: fetch-depth: 0 - name: Prepare Environment Variables + env: + INPUT_BRANCH: ${{ inputs.branch }} + GITHUB_REF: ${{ github.ref }} run: | echo "PLATFORM=linux/amd64" >> $GITHUB_ENV # create image tag from the correct branch (either from a push or a workflow_dispatch trigger) - if [[ "${{ inputs.branch }}" ]] && [[ "${{ inputs.branch }}" != "NONE" ]]; then - echo "Switch to ${{ inputs.branch }}" - git checkout "${{ inputs.branch }}" - IMAGE_TAG="${{ inputs.branch }}" + if [[ "$INPUT_BRANCH" ]] && [[ "$INPUT_BRANCH" != "NONE" ]]; then + echo "Switch to $INPUT_BRANCH" + git checkout "$INPUT_BRANCH" + IMAGE_TAG="$INPUT_BRANCH" else - echo "Use current branch ${{ github.ref }}" + echo "Use current branch $GITHUB_REF" IMAGE_TAG=$(git rev-parse --abbrev-ref HEAD) fi echo "Use IMAGE_TAG = $IMAGE_TAG" diff --git a/.github/workflows/update-backstage.yaml b/.github/workflows/update-backstage.yaml index e9b83de25b..5694d6e470 100644 --- a/.github/workflows/update-backstage.yaml +++ b/.github/workflows/update-backstage.yaml @@ -66,22 +66,34 @@ jobs: cache-prefix: ${{ runner.os }}-v20 - name: Run versons:bump script + env: + INPUT_RELEASE: ${{ inputs.release }} + INPUT_PATTERN: ${{ inputs.pattern }} run: | - yarn versions:bump \ - ${{ inputs.release && format('--release {0}', inputs.release) }} \ - ${{ inputs.pattern && format('--pattern {0}', inputs.pattern) }} + RELEASE_ARG="" + PATTERN_ARG="" + if [[ -n "$INPUT_RELEASE" ]]; then + RELEASE_ARG="--release $INPUT_RELEASE" + fi + if [[ -n "$INPUT_PATTERN" ]]; then + PATTERN_ARG="--pattern $INPUT_PATTERN" + fi + yarn versions:bump $RELEASE_ARG $PATTERN_ARG - name: Determine PR details id: pr-details + env: + INPUT_RELEASE: ${{ inputs.release }} + INPUT_PATTERN: ${{ inputs.pattern }} run: | - if [[ -n "${{ inputs.release }}" ]]; then - echo "commit_message=feat: update Backstage to ${{ inputs.release }}" >> $GITHUB_OUTPUT - echo "branch=dependencies/backstage-${{ inputs.release }}" >> $GITHUB_OUTPUT - elif [[ -n "${{ inputs.pattern }}" ]]; then - sanitized_branch=$(echo "${{ inputs.pattern }}" | tr -d '@{}*' | tr '/' '-' | tr ',' '.') + if [[ -n "$INPUT_RELEASE" ]]; then + echo "commit_message=feat: update Backstage to $INPUT_RELEASE" >> $GITHUB_OUTPUT + echo "branch=dependencies/backstage-$INPUT_RELEASE" >> $GITHUB_OUTPUT + elif [[ -n "$INPUT_PATTERN" ]]; then + sanitized_branch=$(echo "$INPUT_PATTERN" | tr -d '@{}*' | tr '/' '-' | tr ',' '.') # Remove trailing hyphen if present sanitized_branch=${sanitized_branch%-*} - echo "commit_message=feat: update Backstage plugins dependencies with pattern ${{ inputs.pattern }}" >> $GITHUB_OUTPUT + echo "commit_message=feat: update Backstage plugins dependencies with pattern $INPUT_PATTERN" >> $GITHUB_OUTPUT echo "branch=dependencies/${sanitized_branch}" >> $GITHUB_OUTPUT else echo "commit_message=feat: update Backstage to the latest version" >> $GITHUB_OUTPUT diff --git a/.github/workflows/update-rpm-lockfile.yaml b/.github/workflows/update-rpm-lockfile.yaml index 2682e60462..4aadace985 100644 --- a/.github/workflows/update-rpm-lockfile.yaml +++ b/.github/workflows/update-rpm-lockfile.yaml @@ -74,26 +74,33 @@ jobs: - name: Determine target branch id: target-branch + env: + REF_NAME: ${{ github.ref_name }} run: | - TARGET_BRANCH="${{ github.ref_name }}" + TARGET_BRANCH="${REF_NAME}" echo "name=${TARGET_BRANCH}" >> $GITHUB_OUTPUT echo "Target branch: ${TARGET_BRANCH}" - name: Create Pull Request id: create-pull-request if: steps.check-lockfile-changes.outputs.changes == 'true' + env: + TARGET_BRANCH_NAME: ${{ steps.target-branch.outputs.name }} + SERVER_URL: ${{ github.server_url }} + REPO: ${{ github.repository }} + RUN_ID: ${{ github.run_id }} uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8 with: token: ${{ secrets.RHDH_BOT_TOKEN }} commit-message: "chore: update rpms.lock.yaml [skip-build]" - title: "chore: update RPM lockfile in branch (${{ steps.target-branch.outputs.name }}) [skip-build]" + title: "chore: update RPM lockfile in branch (${{ env.TARGET_BRANCH_NAME }}) [skip-build]" body: | ## Description - This PR updates the `rpms.lock.yaml` file with the latest package versions based on current `rpms.in.yaml` configuration using `${{ env.DOCKERFILE_PATH }}` as the base container context + This PR updates the `rpms.lock.yaml` file with the latest package versions based on current `rpms.in.yaml` configuration using `${{ env.CONTAINERFILE_PATH }}` as the base container context - This PR was automatically created by the [Update RPM Lockfile GitHub Action](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}). - branch: chore/automated-update-rpm-lockfile/${{ steps.target-branch.outputs.name }} + This PR was automatically created by the [Update RPM Lockfile GitHub Action](${{ env.SERVER_URL }}/${{ env.REPO }}/actions/runs/${{ env.RUN_ID }}). + branch: chore/automated-update-rpm-lockfile/${{ env.TARGET_BRANCH_NAME }} delete-branch: true draft: false sign-commits: true @@ -105,11 +112,13 @@ jobs: - name: Add /lgtm and /approved comment uses: actions/github-script@v7 + env: + PR_NUMBER: ${{ steps.create-pull-request.outputs.pull-request-number }} with: github-token: ${{ secrets.RHDH_BOT_TOKEN }} script: | const body = "/lgtm\n/approved"; - const prNumber = ${{ steps.create-pull-request.outputs.pull-request-number }}; + const prNumber = process.env.PR_NUMBER; github.rest.issues.createComment({ issue_number: parseInt(prNumber), owner: context.repo.owner, @@ -118,9 +127,12 @@ jobs: }) - name: Summary + env: + HAS_CHANGES: ${{ steps.check-lockfile-changes.outputs.changes }} + PR_URL: ${{ steps.create-pull-request.outputs.pull-request-url }} run: | - if [ "${{ steps.check-lockfile-changes.outputs.changes }}" == "true" ]; then - echo "✅ RPM lockfile updated and created PR: ${{ steps.create-pull-request.outputs.pull-request-url }}" + if [ "$HAS_CHANGES" == "true" ]; then + echo "✅ RPM lockfile updated and created PR: $PR_URL" else echo "🚫 No changes detected in RPM lockfile" fi diff --git a/.gitignore b/.gitignore index c0b701ce60..854e36d404 100644 --- a/.gitignore +++ b/.gitignore @@ -81,4 +81,4 @@ dynamic-plugins-root/* **/.pytest_cache/ **/.venv/ -hermeto-cache/ \ No newline at end of file +hermeto-cache/ diff --git a/docker/.gitignore b/docker/.gitignore index 0c4dfc047f..cb8e24765a 100644 --- a/docker/.gitignore +++ b/docker/.gitignore @@ -5,4 +5,4 @@ pyvenv.cfg # Python Caches **/__pycache__/ **/.pytest_cache/ -**/.venv/ \ No newline at end of file +**/.venv/ From 9f5e9ba66af0366701aa21e2ecc98afa09345276 Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Wed, 26 Nov 2025 16:44:19 -0500 Subject: [PATCH 12/15] chore: update workflows to use default github envs Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .github/actions/docker-build/action.yaml | 7 +++++-- .github/actions/get-sha/action.yml | 5 ++--- .github/workflows/auto-approve-bot-prs.yaml | 7 +++---- .github/workflows/next-build-image.yaml | 8 +++----- .github/workflows/pr-build-image.yaml | 15 ++++++--------- .github/workflows/pr.yaml | 3 +-- .github/workflows/push-e2e-runner.yaml | 1 - .github/workflows/update-rpm-lockfile.yaml | 20 +++----------------- .github/workflows/update-versions.yaml | 3 +-- 9 files changed, 24 insertions(+), 45 deletions(-) diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 93e609ba1c..1f28e94440 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -68,10 +68,13 @@ runs: # Hermetic Build Steps - name: Set up hermetic build variables shell: bash + env: + COMPONENT_DIR: ${{ inputs.componentDirectory }} + # Note: GITHUB_WORKSPACE is available as a default env var run: | echo "HERMETO_IMAGE=quay.io/konflux-ci/hermeto:latest" >> $GITHUB_ENV - echo "LOCAL_CACHE_DIR=./hermeto-cache/$(basename ${{ inputs.componentDirectory }})" >> $GITHUB_ENV - echo "COMPONENT_ABS_DIR=${{ github.workspace }}/${{ inputs.componentDirectory }}" >> $GITHUB_ENV + echo "LOCAL_CACHE_DIR=./hermeto-cache/$(basename "$COMPONENT_DIR")" >> $GITHUB_ENV + echo "COMPONENT_ABS_DIR=${GITHUB_WORKSPACE}/${COMPONENT_DIR}" >> $GITHUB_ENV - name: Cache dependencies with hermeto shell: bash diff --git a/.github/actions/get-sha/action.yml b/.github/actions/get-sha/action.yml index 9e5906ec81..06eb2ee73e 100644 --- a/.github/actions/get-sha/action.yml +++ b/.github/actions/get-sha/action.yml @@ -28,18 +28,17 @@ runs: shell: bash env: PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }} - REPOSITORY: ${{ github.repository }} PR_NUMBER: ${{ github.event.number }} run: | if [[ -n "$PR_HEAD_SHA" ]]; then # running on a PR REF="$PR_HEAD_SHA" - REPO="${REPOSITORY}/pull/${PR_NUMBER}" + REPO="${GITHUB_REPOSITORY}/pull/${PR_NUMBER}" else # running on a main branch # todo: handle other branches than main REF="HEAD" - REPO="$REPOSITORY" + REPO="$GITHUB_REPOSITORY" fi SHORT_SHA=$(git rev-parse --short=8 $REF) echo "SHORT_SHA=$SHORT_SHA" >> $GITHUB_ENV diff --git a/.github/workflows/auto-approve-bot-prs.yaml b/.github/workflows/auto-approve-bot-prs.yaml index cc85978d89..b9d00fcc05 100644 --- a/.github/workflows/auto-approve-bot-prs.yaml +++ b/.github/workflows/auto-approve-bot-prs.yaml @@ -64,7 +64,7 @@ jobs: ELIGIBLE=false for pattern in "${ELIGIBLE_PATTERNS[@]}"; do - if [[ "${{ env.PR_BRANCH }}" =~ $pattern ]]; then + if [[ "$PR_BRANCH" =~ $pattern ]]; then ELIGIBLE=true break fi @@ -82,15 +82,14 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} PR_NUMBER: ${{ github.event.pull_request.number }} - REPO: ${{ github.repository }} run: | # Add the required labels if not already present - gh pr edit "$PR_NUMBER" --add-label "lgtm,approved" --repo "$REPO" + gh pr edit "$PR_NUMBER" --add-label "lgtm,approved" --repo "$GITHUB_REPOSITORY" # Auto-approve the PR gh pr review "$PR_NUMBER" \ --approve \ - --repo "$REPO" \ + --repo "$GITHUB_REPOSITORY" \ --body "**Auto-Approved** This PR has been automatically approved by the auto-approve workflow. diff --git a/.github/workflows/next-build-image.yaml b/.github/workflows/next-build-image.yaml index 26157b6384..ed9710ca38 100644 --- a/.github/workflows/next-build-image.yaml +++ b/.github/workflows/next-build-image.yaml @@ -66,7 +66,6 @@ jobs: - name: Prepare env: MATRIX_OS: ${{ matrix.os }} - GITHUB_REF_NAME: ${{ github.ref_name }} run: | if [ "$MATRIX_OS" == "ubuntu-24.04" ]; then platform="linux/amd64" @@ -77,7 +76,8 @@ jobs: exit 1 fi - ref_name=$GITHUB_REF_NAME + ref_name="$GITHUB_REF_NAME" + if [ "$ref_name" == "main" ]; then ref_name="next" elif [[ "$ref_name" =~ ^release-([0-9]+)\.([0-9]+) ]]; then @@ -174,10 +174,8 @@ jobs: HAS_QUAY_AUTH: ${{ secrets.QUAY_USERNAME != '' && secrets.QUAY_TOKEN != '' }} steps: - name: Prepare - env: - REF_NAME_INPUT: ${{ github.ref_name }} run: | - ref_name=$REF_NAME_INPUT + ref_name="$GITHUB_REF_NAME" if [ "$ref_name" == "main" ]; then ref_name="next" elif [[ "$ref_name" =~ ^release-([0-9]+)\.([0-9]+) ]]; then diff --git a/.github/workflows/pr-build-image.yaml b/.github/workflows/pr-build-image.yaml index 4ff848f576..70a7d5c0dc 100644 --- a/.github/workflows/pr-build-image.yaml +++ b/.github/workflows/pr-build-image.yaml @@ -59,30 +59,27 @@ jobs: env: IMAGE_EXISTS: ${{ steps.check-image.outputs.image_exists }} RELEVANT_CHANGES: ${{ steps.check-image.outputs.relevant_changes }} - SHORT_SHA_VAR: ${{ env.SHORT_SHA }} PR_NUMBER: ${{ github.event.number }} run: | echo "Image exists: $IMAGE_EXISTS" echo "Relevant changes: $RELEVANT_CHANGES" - echo "SHORT_SHA: $SHORT_SHA_VAR" + echo "SHORT_SHA: $SHORT_SHA" echo "PR Number: $PR_NUMBER" echo "Base Tag: pr-$PR_NUMBER" - echo "Commit Tag: pr-$PR_NUMBER-$SHORT_SHA_VAR" + echo "Commit Tag: pr-$PR_NUMBER-$SHORT_SHA" - name: Get the latest commits from base branch if: ${{ steps.check-image.outputs.is_skipped != 'true' }} env: - REPO: ${{ github.repository }} PR_USER_LOGIN: ${{ github.event.pull_request.user.login }} PR_USER_EMAIL: ${{ github.event.pull_request.user.email }} - PR_BASE_REF: ${{ github.event.pull_request.base.ref }} run: | - git remote add base-origin https://github.com/"$REPO" || true + git remote add base-origin https://github.com/"$GITHUB_REPOSITORY" || true git config user.name "$PR_USER_LOGIN" git config user.email "$PR_USER_EMAIL" - echo "Updating PR with latest commits from $PR_BASE_REF ..." - git fetch base-origin "$PR_BASE_REF" - git merge --no-edit base-origin/"$PR_BASE_REF" + echo "Updating PR with latest commits from $GITHUB_BASE_REF ..." + git fetch base-origin "$GITHUB_BASE_REF" + git merge --no-edit base-origin/"$GITHUB_BASE_REF" - name: Build Image (Hermetic) if: ${{ steps.check-image.outputs.is_skipped != 'true' }} uses: ./.github/actions/docker-build diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index c3d94bd80d..06373343ee 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -75,11 +75,10 @@ jobs: env: IS_TEAM_MEMBER: ${{ needs.check-commit-author.outputs.is_active_team_member }} PR_REPO_FULL_NAME: ${{ github.event.pull_request.head.repo.full_name }} - CURRENT_REPO: ${{ github.repository }} run: | if [[ "$IS_TEAM_MEMBER" == "true" ]]; then echo "✓ Commit author is in rhdh team - using internal environment" - elif [[ "$PR_REPO_FULL_NAME" == "$CURRENT_REPO" ]]; then + elif [[ "$PR_REPO_FULL_NAME" == "$GITHUB_REPOSITORY" ]]; then echo "✓ Internal PR (not from fork) - using internal environment" else echo "✓ External PR from fork from non-rhdh team member - using external environment for security" diff --git a/.github/workflows/push-e2e-runner.yaml b/.github/workflows/push-e2e-runner.yaml index 67175455e3..644cd9b3ae 100644 --- a/.github/workflows/push-e2e-runner.yaml +++ b/.github/workflows/push-e2e-runner.yaml @@ -43,7 +43,6 @@ jobs: - name: Prepare Environment Variables env: INPUT_BRANCH: ${{ inputs.branch }} - GITHUB_REF: ${{ github.ref }} run: | echo "PLATFORM=linux/amd64" >> $GITHUB_ENV diff --git a/.github/workflows/update-rpm-lockfile.yaml b/.github/workflows/update-rpm-lockfile.yaml index 4aadace985..6be65203c2 100644 --- a/.github/workflows/update-rpm-lockfile.yaml +++ b/.github/workflows/update-rpm-lockfile.yaml @@ -72,35 +72,21 @@ jobs: echo "changes=true" >> $GITHUB_OUTPUT fi - - name: Determine target branch - id: target-branch - env: - REF_NAME: ${{ github.ref_name }} - run: | - TARGET_BRANCH="${REF_NAME}" - echo "name=${TARGET_BRANCH}" >> $GITHUB_OUTPUT - echo "Target branch: ${TARGET_BRANCH}" - - name: Create Pull Request id: create-pull-request if: steps.check-lockfile-changes.outputs.changes == 'true' - env: - TARGET_BRANCH_NAME: ${{ steps.target-branch.outputs.name }} - SERVER_URL: ${{ github.server_url }} - REPO: ${{ github.repository }} - RUN_ID: ${{ github.run_id }} uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8 with: token: ${{ secrets.RHDH_BOT_TOKEN }} commit-message: "chore: update rpms.lock.yaml [skip-build]" - title: "chore: update RPM lockfile in branch (${{ env.TARGET_BRANCH_NAME }}) [skip-build]" + title: "chore: update RPM lockfile in branch (${{ github.ref_name }}) [skip-build]" body: | ## Description This PR updates the `rpms.lock.yaml` file with the latest package versions based on current `rpms.in.yaml` configuration using `${{ env.CONTAINERFILE_PATH }}` as the base container context - This PR was automatically created by the [Update RPM Lockfile GitHub Action](${{ env.SERVER_URL }}/${{ env.REPO }}/actions/runs/${{ env.RUN_ID }}). - branch: chore/automated-update-rpm-lockfile/${{ env.TARGET_BRANCH_NAME }} + This PR was automatically created by the [Update RPM Lockfile GitHub Action](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}). + branch: chore/automated-update-rpm-lockfile/${{ github.ref_name }} delete-branch: true draft: false sign-commits: true diff --git a/.github/workflows/update-versions.yaml b/.github/workflows/update-versions.yaml index 3b8ed03be8..54b528ee62 100644 --- a/.github/workflows/update-versions.yaml +++ b/.github/workflows/update-versions.yaml @@ -32,8 +32,7 @@ jobs: - name: Run update-versions-doc script run: node scripts/update-versions-doc.mjs docs/dynamic-plugins/versions.md - env: - GITHUB_REPOSITORY: ${{ github.repository }} + # Note: GITHUB_REPOSITORY is available as a default env var in the github runner - name: Create Pull Request uses: peter-evans/create-pull-request@v7 From f66d8a33c8570cf3b09b4cc8432c1c0fd5eabbed Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Fri, 28 Nov 2025 17:44:27 -0500 Subject: [PATCH 13/15] chore: add cursor rule to enforce github actions best practices Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .claude/memories/github-workflows-security.md | 607 +++++++++++++++++ .cursor/rules/github-workflows-security.mdc | 613 +++++++++++++++++ .dockerignore | 10 +- .rulesync/rules/github-workflows-security.md | 624 ++++++++++++++++++ 4 files changed, 1853 insertions(+), 1 deletion(-) create mode 100644 .claude/memories/github-workflows-security.md create mode 100644 .cursor/rules/github-workflows-security.mdc create mode 100644 .rulesync/rules/github-workflows-security.md diff --git a/.claude/memories/github-workflows-security.md b/.claude/memories/github-workflows-security.md new file mode 100644 index 0000000000..aef3c5936c --- /dev/null +++ b/.claude/memories/github-workflows-security.md @@ -0,0 +1,607 @@ +# GitHub Workflows Security Best Practices + +This rule provides comprehensive guidance for creating secure GitHub Actions workflows, based on the [GitHub Security Lab](https://securitylab.github.com/) blog series on GitHub Actions security. + +> **Note on Action Versions:** The action versions (commit SHAs and version tags) used in examples throughout this document may be outdated. When implementing these patterns, always check for the latest versions of actions and update the commit SHAs accordingly. You can find the latest versions on each action's GitHub releases page. + +## Table of Contents + +- [Untrusted Input Handling](#untrusted-input-handling) +- [pull_request_target Security](#pull_request_target-security) +- [Action Pinning and Permissions](#action-pinning-and-permissions) +- [Environment Variable Safety](#environment-variable-safety) +- [Artifact Security](#artifact-security) +- [Repository-Specific Patterns](#repository-specific-patterns) +- [Reusable Actions](#reusable-actions) + +--- + +## Untrusted Input Handling + +Reference: [GitHub Actions: Untrusted Input](https://securitylab.github.com/resources/github-actions-untrusted-input/) + +### Always Use Environment Variables for GitHub Context Expressions + +**NEVER** directly interpolate GitHub context expressions in `run:` scripts. Always encapsulate them in environment variables first. + +```yaml +# BAD - Direct interpolation is vulnerable to injection +- name: Print PR title + run: echo "Title: ${{ github.event.pull_request.title }}" + +# GOOD - Use environment variable encapsulation +- name: Print PR title + env: + TITLE: ${{ github.event.pull_request.title }} + run: echo "Title: $TITLE" +``` + +### Use Default GitHub Environment Variables + +Prefer using default GitHub environment variables (like `$GITHUB_REF_NAME`, `$GITHUB_SHA`, `$GITHUB_REPOSITORY`) over context expressions when available: + +```yaml +# GOOD - Use default environment variables +- name: Show branch info + run: | + echo "Branch: $GITHUB_REF_NAME" + echo "SHA: $GITHUB_SHA" + echo "Repository: $GITHUB_REPOSITORY" + +# Also acceptable when env vars aren't available +- name: Show PR number + env: + PR_NUMBER: ${{ github.event.number }} + run: echo "PR #$PR_NUMBER" +``` + +### Dangerous Context Expressions + +The following context expressions are **especially dangerous** because they are controlled by external users: + +| Expression | Risk | +|------------|------| +| `github.event.issue.title` | Attacker-controlled issue title | +| `github.event.issue.body` | Attacker-controlled issue body | +| `github.event.pull_request.title` | Attacker-controlled PR title | +| `github.event.pull_request.body` | Attacker-controlled PR description | +| `github.event.comment.body` | Attacker-controlled comment content | +| `github.event.review.body` | Attacker-controlled review content | +| `github.event.pages.*.page_name` | Attacker-controlled page name | +| `github.event.commits.*.message` | Attacker-controlled commit message | +| `github.event.head_commit.message` | Attacker-controlled commit message | +| `github.event.head_commit.author.email` | Attacker-controlled author email | +| `github.event.head_commit.author.name` | Attacker-controlled author name | +| `github.event.commits.*.author.email` | Attacker-controlled author email | +| `github.event.commits.*.author.name` | Attacker-controlled author name | +| `github.event.pull_request.head.ref` | Attacker-controlled branch name | +| `github.event.pull_request.head.label` | Attacker-controlled label | +| `github.event.pull_request.head.repo.default_branch` | Attacker-controlled default branch | +| `github.head_ref` | Attacker-controlled branch name | + +**Always sanitize or encapsulate these in environment variables:** + +```yaml +# GOOD - Proper encapsulation of dangerous inputs +- name: Check PR eligibility + env: + PR_BRANCH: ${{ github.event.pull_request.head.ref }} + PR_TITLE: ${{ github.event.pull_request.title }} + run: | + # Now safe to use in shell + echo "Branch: $PR_BRANCH" + echo "Title: $PR_TITLE" +``` + +--- + +## pull_request_target Security + +Reference: [GitHub Actions: Preventing pwn requests](https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/) + +### When to Use Each Trigger + +| Trigger | Secrets Access | Write Permission | Use Case | +|---------|---------------|------------------|----------| +| `pull_request` | No (from forks) | No | Build/test PR code safely | +| `pull_request_target` | Yes | Yes | Label PRs, comment, NO code checkout | +| `workflow_run` | Yes | Yes | Post-processing after `pull_request` | + +### CRITICAL: Never Checkout Untrusted Code with pull_request_target + +```yaml +# DANGEROUS - Checking out PR code with secrets access +on: pull_request_target +jobs: + build: + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} # UNSAFE! + - run: npm install # Attacker's code runs with secrets! + +# SAFE - Only checkout target branch (default behavior) +on: pull_request_target +jobs: + label: + steps: + - uses: actions/checkout@v4 # Checks out base branch, safe + - name: Add label + run: gh pr edit $PR_NUMBER --add-label "needs-review" +``` + +### Preferred Pattern: pull_request + workflow_run + +When you need to run untrusted PR code AND access secrets/write permissions, split into two workflows: + +**Step 1: Unprivileged `pull_request` workflow** + +```yaml +# .github/workflows/pr-build.yaml +name: PR Build +on: pull_request + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 # Safe - no secrets access + + - name: Build and test + run: | + npm install + npm test + + - name: Save PR number + run: echo "${{ github.event.number }}" > pr_number.txt + + - name: Upload results + uses: actions/upload-artifact@v4 + with: + name: pr-results + path: | + pr_number.txt + test-results/ +``` + +**Step 2: Privileged `workflow_run` workflow** + +```yaml +# .github/workflows/pr-comment.yaml +name: PR Comment +on: + workflow_run: + workflows: ["PR Build"] + types: [completed] + +jobs: + comment: + runs-on: ubuntu-latest + if: github.event.workflow_run.conclusion == 'success' + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: pr-results + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Comment on PR + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + PR_NUMBER=$(cat pr_number.txt) + gh pr comment "$PR_NUMBER" --body "Build succeeded!" +``` + +### When pull_request_target is Necessary: Use Author Verification + +If you must use `pull_request_target` with code checkout, use the repository's `check-author` action to verify the author is trusted: + +```yaml +# Reference implementation from .github/workflows/pr.yaml +on: + pull_request_target: + types: [opened, synchronize, reopened, ready_for_review] + +jobs: + check-commit-author: + runs-on: ubuntu-latest + outputs: + is_active_team_member: ${{ steps.team-check.outputs.is_active_member }} + steps: + - name: Generate GitHub App Token + id: app-token + uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4 + with: + app-id: ${{ secrets.RHDH_GITHUB_APP_ID }} + private-key: ${{ secrets.RHDH_GITHUB_APP_PRIVATE_KEY }} + + - name: Checkout main branch for secure version of check-author action + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + with: + fetch-depth: 1 + ref: main # Always use main branch for security-critical action + persist-credentials: false + + - name: Check if commit author is an active member of the team + id: team-check + uses: ./.github/actions/check-author + with: + author: ${{ github.actor }} + organization: redhat-developer + team: rhdh + gh_token: ${{ steps.app-token.outputs.token }} + whitelisted_authors: '["openshift-cherrypick-robot"]' + + authorize: + environment: + ${{ (needs.check-commit-author.outputs.is_active_team_member == 'true' || + github.event.pull_request.head.repo.full_name == github.repository) && + 'internal' || 'external' }} + runs-on: ubuntu-latest + needs: check-commit-author + steps: + - name: Authorized + run: echo "Author is authorized to run this workflow" + + build: + needs: authorize + runs-on: ubuntu-latest + steps: + - name: Checkout PR code (now safe after authorization) + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + persist-credentials: false +``` + +--- + +## Action Pinning and Permissions + +Reference: [GitHub Actions: Building Blocks](https://securitylab.github.com/resources/github-actions-building-blocks/) + +### Pin Actions to Commit SHAs + +**Always** pin third-party actions to full commit SHAs, not tags: + +```yaml +# BAD - Tags can be moved to malicious commits +- uses: actions/checkout@v4 +- uses: docker/login-action@v3 + +# GOOD - Pinned to immutable commit SHA with version comment +- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 +- uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3 +``` + +### Use persist-credentials: false + +Always disable credential persistence unless explicitly needed: + +```yaml +- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + with: + persist-credentials: false # Prevents token from being stored on disk +``` + +### Explicit Permissions Block + +Always declare the minimum required permissions: + +```yaml +# At workflow level +permissions: + contents: read + pull-requests: write + +# Or at job level for finer control +jobs: + build: + permissions: + contents: read + # ... + + deploy: + permissions: + contents: read + packages: write + # ... +``` + +### Common Permission Patterns + +```yaml +# Read-only workflow (most restrictive) +permissions: + contents: read + +# PR workflows that need to comment +permissions: + contents: read + pull-requests: write + +# Package publishing +permissions: + contents: read + packages: write + +# Release workflows +permissions: + contents: write + packages: write +``` + +--- + +## Environment Variable Safety + +Reference: [GitHub Actions: New Patterns and Mitigations](https://securitylab.github.com/resources/github-actions-new-patterns-and-mitigations/) + +### NEVER Append Untrusted Data to GITHUB_ENV + +```yaml +# DANGEROUS - Allows command injection via GITHUB_ENV +- name: Set environment + run: | + echo "BRANCH=${{ github.head_ref }}" >> $GITHUB_ENV # UNSAFE! + +# SAFE - Use env: block instead +- name: Use branch + env: + BRANCH: ${{ github.head_ref }} + run: echo "Branch is $BRANCH" +``` + +### Safe GITHUB_ENV Usage + +Only write trusted, validated data to `GITHUB_ENV`: + +```yaml +# SAFE - Writing computed/validated values +- name: Compute values + run: | + # Safe - internally computed values + SHORT_SHA="${GITHUB_SHA:0:7}" + echo "SHORT_SHA=$SHORT_SHA" >> $GITHUB_ENV + + # Safe - output from trusted command + DATE=$(date +%Y-%m-%d) + echo "BUILD_DATE=$DATE" >> $GITHUB_ENV +``` + +### Use GITHUB_OUTPUT for Step Outputs + +```yaml +- name: Generate output + id: compute + env: + INPUT_VALUE: ${{ github.event.inputs.value }} + run: | + # Process the input safely + result=$(echo "$INPUT_VALUE" | tr '[:upper:]' '[:lower:]') + echo "result=$result" >> $GITHUB_OUTPUT + +- name: Use output + run: echo "Result: ${{ steps.compute.outputs.result }}" +``` + +--- + +## Artifact Security + +### Treat Artifacts from Untrusted Sources as Untrusted + +When using `workflow_run` to process artifacts from `pull_request` workflows: + +```yaml +on: + workflow_run: + workflows: ["PR Build"] + types: [completed] + +jobs: + process: + runs-on: ubuntu-latest + steps: + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: build-results + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + # DANGEROUS - Never execute downloaded binaries + # - run: ./downloaded-binary + + # SAFE - Only read data files + - name: Read PR number + run: | + PR_NUMBER=$(cat pr_number.txt) + # Validate it's actually a number + if ! [[ "$PR_NUMBER" =~ ^[0-9]+$ ]]; then + echo "Invalid PR number" + exit 1 + fi +``` + +### Validate Artifact Contents + +```yaml +- name: Process artifact safely + run: | + # Validate file exists and is reasonable size + if [[ ! -f "result.txt" ]] || [[ $(stat -c%s "result.txt") -gt 1000000 ]]; then + echo "Invalid artifact" + exit 1 + fi + + # Read and validate content + CONTENT=$(cat result.txt) + # Add validation as needed +``` + +--- + +## Repository-Specific Patterns + +### Concurrency Control + +Use concurrency to cancel duplicate runs **from the same PR or branch only**. A new push to PR A should cancel the previous workflow for PR A, but should NOT affect workflows for PR B. + +```yaml +concurrency: + # Group by workflow name + PR number (for PRs) or ref (for branches) + # This ensures: + # - PR A's new workflow cancels PR A's old workflow + # - PR A's workflow does NOT cancel PR B's workflow + # - Push to branch X cancels previous push to branch X + group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + cancel-in-progress: true +``` + +**How the group key works:** +- For pull requests: `github.event.number` provides the unique PR number (e.g., `my-workflow-123`) +- For branch pushes: `github.ref` provides the branch ref (e.g., `my-workflow-refs/heads/main`) +- Each unique group runs independently; only duplicate runs within the same group are cancelled + +### Standard Workflow Header + +```yaml +# Copyright Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# ... + +name: Descriptive Workflow Name + +on: + pull_request: # Or appropriate trigger + +concurrency: + group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +env: + # Global environment variables + REGISTRY: quay.io + +jobs: + # ... +``` + +### Environment-Based Authorization + +Use GitHub Environments for manual approval gates: + +```yaml +jobs: + authorize: + environment: + ${{ (condition) && 'internal' || 'external' }} + runs-on: ubuntu-latest + steps: + - run: echo "Authorized" + + deploy: + needs: authorize + # Proceeds only after environment approval +``` + +--- + +## Reusable Actions + +### When to Create Reusable Actions + +Create a reusable composite action in `.github/actions/` when: + +1. Logic is used by multiple workflows +2. Logic is complex enough to benefit from encapsulation +3. Logic requires multiple steps that should be tested together + +### Composite Action Template + +```yaml +# .github/actions/my-action/action.yaml +name: "My Action" +description: "Description of what this action does" + +inputs: + required-input: + description: "A required input" + required: true + optional-input: + description: "An optional input" + required: false + default: "default-value" + +outputs: + result: + description: "The result of the action" + value: ${{ steps.main.outputs.result }} + +runs: + using: "composite" + steps: + - name: Validate inputs + shell: bash + env: + INPUT_VALUE: ${{ inputs.required-input }} + run: | + if [[ -z "$INPUT_VALUE" ]]; then + echo "Error: required-input is empty" + exit 1 + fi + + - name: Main logic + id: main + shell: bash + env: + REQUIRED: ${{ inputs.required-input }} + OPTIONAL: ${{ inputs.optional-input }} + run: | + # Your logic here + echo "result=success" >> $GITHUB_OUTPUT +``` + +### Existing Reusable Actions + +This repository provides the following reusable actions: + +| Action | Purpose | +|--------|---------| +| `.github/actions/check-author` | Verify if PR author is a team member | +| `.github/actions/check-image-and-changes` | Check if image exists and detect relevant changes | +| `.github/actions/docker-build` | Build Docker images with hermetic build | +| `.github/actions/get-sha` | Get short SHA for tagging | + +--- + +## Quick Reference Checklist + +When creating or reviewing a workflow, verify: + +- [ ] All GitHub context expressions are encapsulated in `env:` blocks +- [ ] No direct interpolation of untrusted inputs in `run:` scripts +- [ ] Actions are pinned to commit SHAs with version comments +- [ ] `permissions:` block is explicit and minimal +- [ ] `persist-credentials: false` used with `actions/checkout` where appropriate +- [ ] `pull_request_target` is only used when secrets/write access is truly needed +- [ ] If `pull_request_target` checks out PR code, author verification is in place +- [ ] No untrusted data is appended to `GITHUB_ENV` +- [ ] Artifacts from untrusted sources are validated before use +- [ ] Concurrency is configured to prevent duplicate runs + +--- + +## References + +- [Part 1: Preventing pwn requests](https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/) +- [Part 2: Untrusted Input](https://securitylab.github.com/resources/github-actions-untrusted-input/) +- [Part 3: Building Blocks](https://securitylab.github.com/resources/github-actions-building-blocks/) +- [Part 4: New Patterns and Mitigations](https://securitylab.github.com/resources/github-actions-new-patterns-and-mitigations/) diff --git a/.cursor/rules/github-workflows-security.mdc b/.cursor/rules/github-workflows-security.mdc new file mode 100644 index 0000000000..84536af617 --- /dev/null +++ b/.cursor/rules/github-workflows-security.mdc @@ -0,0 +1,613 @@ +--- +alwaysApply: false +description: Security best practices for GitHub Actions workflows based on GitHub Security Lab guidelines +globs: .github/workflows/**,.github/actions/** +--- + +# GitHub Workflows Security Best Practices + +This rule provides comprehensive guidance for creating secure GitHub Actions workflows, based on the [GitHub Security Lab](https://securitylab.github.com/) blog series on GitHub Actions security. + +> **Note on Action Versions:** The action versions (commit SHAs and version tags) used in examples throughout this document may be outdated. When implementing these patterns, always check for the latest versions of actions and update the commit SHAs accordingly. You can find the latest versions on each action's GitHub releases page. + +## Table of Contents + +- [Untrusted Input Handling](#untrusted-input-handling) +- [pull_request_target Security](#pull_request_target-security) +- [Action Pinning and Permissions](#action-pinning-and-permissions) +- [Environment Variable Safety](#environment-variable-safety) +- [Artifact Security](#artifact-security) +- [Repository-Specific Patterns](#repository-specific-patterns) +- [Reusable Actions](#reusable-actions) + +--- + +## Untrusted Input Handling + +Reference: [GitHub Actions: Untrusted Input](https://securitylab.github.com/resources/github-actions-untrusted-input/) + +### Always Use Environment Variables for GitHub Context Expressions + +**NEVER** directly interpolate GitHub context expressions in `run:` scripts. Always encapsulate them in environment variables first. + +```yaml +# BAD - Direct interpolation is vulnerable to injection +- name: Print PR title + run: echo "Title: ${{ github.event.pull_request.title }}" + +# GOOD - Use environment variable encapsulation +- name: Print PR title + env: + TITLE: ${{ github.event.pull_request.title }} + run: echo "Title: $TITLE" +``` + +### Use Default GitHub Environment Variables + +Prefer using default GitHub environment variables (like `$GITHUB_REF_NAME`, `$GITHUB_SHA`, `$GITHUB_REPOSITORY`) over context expressions when available: + +```yaml +# GOOD - Use default environment variables +- name: Show branch info + run: | + echo "Branch: $GITHUB_REF_NAME" + echo "SHA: $GITHUB_SHA" + echo "Repository: $GITHUB_REPOSITORY" + +# Also acceptable when env vars aren't available +- name: Show PR number + env: + PR_NUMBER: ${{ github.event.number }} + run: echo "PR #$PR_NUMBER" +``` + +### Dangerous Context Expressions + +The following context expressions are **especially dangerous** because they are controlled by external users: + +| Expression | Risk | +|------------|------| +| `github.event.issue.title` | Attacker-controlled issue title | +| `github.event.issue.body` | Attacker-controlled issue body | +| `github.event.pull_request.title` | Attacker-controlled PR title | +| `github.event.pull_request.body` | Attacker-controlled PR description | +| `github.event.comment.body` | Attacker-controlled comment content | +| `github.event.review.body` | Attacker-controlled review content | +| `github.event.pages.*.page_name` | Attacker-controlled page name | +| `github.event.commits.*.message` | Attacker-controlled commit message | +| `github.event.head_commit.message` | Attacker-controlled commit message | +| `github.event.head_commit.author.email` | Attacker-controlled author email | +| `github.event.head_commit.author.name` | Attacker-controlled author name | +| `github.event.commits.*.author.email` | Attacker-controlled author email | +| `github.event.commits.*.author.name` | Attacker-controlled author name | +| `github.event.pull_request.head.ref` | Attacker-controlled branch name | +| `github.event.pull_request.head.label` | Attacker-controlled label | +| `github.event.pull_request.head.repo.default_branch` | Attacker-controlled default branch | +| `github.head_ref` | Attacker-controlled branch name | + +**Always sanitize or encapsulate these in environment variables:** + +```yaml +# GOOD - Proper encapsulation of dangerous inputs +- name: Check PR eligibility + env: + PR_BRANCH: ${{ github.event.pull_request.head.ref }} + PR_TITLE: ${{ github.event.pull_request.title }} + run: | + # Now safe to use in shell + echo "Branch: $PR_BRANCH" + echo "Title: $PR_TITLE" +``` + +--- + +## pull_request_target Security + +Reference: [GitHub Actions: Preventing pwn requests](https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/) + +### When to Use Each Trigger + +| Trigger | Secrets Access | Write Permission | Use Case | +|---------|---------------|------------------|----------| +| `pull_request` | No (from forks) | No | Build/test PR code safely | +| `pull_request_target` | Yes | Yes | Label PRs, comment, NO code checkout | +| `workflow_run` | Yes | Yes | Post-processing after `pull_request` | + +### CRITICAL: Never Checkout Untrusted Code with pull_request_target + +```yaml +# DANGEROUS - Checking out PR code with secrets access +on: pull_request_target +jobs: + build: + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} # UNSAFE! + - run: npm install # Attacker's code runs with secrets! + +# SAFE - Only checkout target branch (default behavior) +on: pull_request_target +jobs: + label: + steps: + - uses: actions/checkout@v4 # Checks out base branch, safe + - name: Add label + run: gh pr edit $PR_NUMBER --add-label "needs-review" +``` + +### Preferred Pattern: pull_request + workflow_run + +When you need to run untrusted PR code AND access secrets/write permissions, split into two workflows: + +**Step 1: Unprivileged `pull_request` workflow** + +```yaml +# .github/workflows/pr-build.yaml +name: PR Build +on: pull_request + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 # Safe - no secrets access + + - name: Build and test + run: | + npm install + npm test + + - name: Save PR number + run: echo "${{ github.event.number }}" > pr_number.txt + + - name: Upload results + uses: actions/upload-artifact@v4 + with: + name: pr-results + path: | + pr_number.txt + test-results/ +``` + +**Step 2: Privileged `workflow_run` workflow** + +```yaml +# .github/workflows/pr-comment.yaml +name: PR Comment +on: + workflow_run: + workflows: ["PR Build"] + types: [completed] + +jobs: + comment: + runs-on: ubuntu-latest + if: github.event.workflow_run.conclusion == 'success' + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: pr-results + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Comment on PR + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + PR_NUMBER=$(cat pr_number.txt) + gh pr comment "$PR_NUMBER" --body "Build succeeded!" +``` + +### When pull_request_target is Necessary: Use Author Verification + +If you must use `pull_request_target` with code checkout, use the repository's `check-author` action to verify the author is trusted: + +```yaml +# Reference implementation from .github/workflows/pr.yaml +on: + pull_request_target: + types: [opened, synchronize, reopened, ready_for_review] + +jobs: + check-commit-author: + runs-on: ubuntu-latest + outputs: + is_active_team_member: ${{ steps.team-check.outputs.is_active_member }} + steps: + - name: Generate GitHub App Token + id: app-token + uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4 + with: + app-id: ${{ secrets.RHDH_GITHUB_APP_ID }} + private-key: ${{ secrets.RHDH_GITHUB_APP_PRIVATE_KEY }} + + - name: Checkout main branch for secure version of check-author action + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + with: + fetch-depth: 1 + ref: main # Always use main branch for security-critical action + persist-credentials: false + + - name: Check if commit author is an active member of the team + id: team-check + uses: ./.github/actions/check-author + with: + author: ${{ github.actor }} + organization: redhat-developer + team: rhdh + gh_token: ${{ steps.app-token.outputs.token }} + whitelisted_authors: '["openshift-cherrypick-robot"]' + + authorize: + environment: + ${{ (needs.check-commit-author.outputs.is_active_team_member == 'true' || + github.event.pull_request.head.repo.full_name == github.repository) && + 'internal' || 'external' }} + runs-on: ubuntu-latest + needs: check-commit-author + steps: + - name: Authorized + run: echo "Author is authorized to run this workflow" + + build: + needs: authorize + runs-on: ubuntu-latest + steps: + - name: Checkout PR code (now safe after authorization) + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + persist-credentials: false +``` + +--- + +## Action Pinning and Permissions + +Reference: [GitHub Actions: Building Blocks](https://securitylab.github.com/resources/github-actions-building-blocks/) + +### Pin Actions to Commit SHAs + +**Always** pin third-party actions to full commit SHAs, not tags: + +```yaml +# BAD - Tags can be moved to malicious commits +- uses: actions/checkout@v4 +- uses: docker/login-action@v3 + +# GOOD - Pinned to immutable commit SHA with version comment +- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 +- uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3 +``` + +### Use persist-credentials: false + +Always disable credential persistence unless explicitly needed: + +```yaml +- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + with: + persist-credentials: false # Prevents token from being stored on disk +``` + +### Explicit Permissions Block + +Always declare the minimum required permissions: + +```yaml +# At workflow level +permissions: + contents: read + pull-requests: write + +# Or at job level for finer control +jobs: + build: + permissions: + contents: read + # ... + + deploy: + permissions: + contents: read + packages: write + # ... +``` + +### Common Permission Patterns + +```yaml +# Read-only workflow (most restrictive) +permissions: + contents: read + +# PR workflows that need to comment +permissions: + contents: read + pull-requests: write + +# Package publishing +permissions: + contents: read + packages: write + +# Release workflows +permissions: + contents: write + packages: write +``` + +--- + +## Environment Variable Safety + +Reference: [GitHub Actions: New Patterns and Mitigations](https://securitylab.github.com/resources/github-actions-new-patterns-and-mitigations/) + +### NEVER Append Untrusted Data to GITHUB_ENV + +```yaml +# DANGEROUS - Allows command injection via GITHUB_ENV +- name: Set environment + run: | + echo "BRANCH=${{ github.head_ref }}" >> $GITHUB_ENV # UNSAFE! + +# SAFE - Use env: block instead +- name: Use branch + env: + BRANCH: ${{ github.head_ref }} + run: echo "Branch is $BRANCH" +``` + +### Safe GITHUB_ENV Usage + +Only write trusted, validated data to `GITHUB_ENV`: + +```yaml +# SAFE - Writing computed/validated values +- name: Compute values + run: | + # Safe - internally computed values + SHORT_SHA="${GITHUB_SHA:0:7}" + echo "SHORT_SHA=$SHORT_SHA" >> $GITHUB_ENV + + # Safe - output from trusted command + DATE=$(date +%Y-%m-%d) + echo "BUILD_DATE=$DATE" >> $GITHUB_ENV +``` + +### Use GITHUB_OUTPUT for Step Outputs + +```yaml +- name: Generate output + id: compute + env: + INPUT_VALUE: ${{ github.event.inputs.value }} + run: | + # Process the input safely + result=$(echo "$INPUT_VALUE" | tr '[:upper:]' '[:lower:]') + echo "result=$result" >> $GITHUB_OUTPUT + +- name: Use output + run: echo "Result: ${{ steps.compute.outputs.result }}" +``` + +--- + +## Artifact Security + +### Treat Artifacts from Untrusted Sources as Untrusted + +When using `workflow_run` to process artifacts from `pull_request` workflows: + +```yaml +on: + workflow_run: + workflows: ["PR Build"] + types: [completed] + +jobs: + process: + runs-on: ubuntu-latest + steps: + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: build-results + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + # DANGEROUS - Never execute downloaded binaries + # - run: ./downloaded-binary + + # SAFE - Only read data files + - name: Read PR number + run: | + PR_NUMBER=$(cat pr_number.txt) + # Validate it's actually a number + if ! [[ "$PR_NUMBER" =~ ^[0-9]+$ ]]; then + echo "Invalid PR number" + exit 1 + fi +``` + +### Validate Artifact Contents + +```yaml +- name: Process artifact safely + run: | + # Validate file exists and is reasonable size + if [[ ! -f "result.txt" ]] || [[ $(stat -c%s "result.txt") -gt 1000000 ]]; then + echo "Invalid artifact" + exit 1 + fi + + # Read and validate content + CONTENT=$(cat result.txt) + # Add validation as needed +``` + +--- + +## Repository-Specific Patterns + +### Concurrency Control + +Use concurrency to cancel duplicate runs **from the same PR or branch only**. A new push to PR A should cancel the previous workflow for PR A, but should NOT affect workflows for PR B. + +```yaml +concurrency: + # Group by workflow name + PR number (for PRs) or ref (for branches) + # This ensures: + # - PR A's new workflow cancels PR A's old workflow + # - PR A's workflow does NOT cancel PR B's workflow + # - Push to branch X cancels previous push to branch X + group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + cancel-in-progress: true +``` + +**How the group key works:** +- For pull requests: `github.event.number` provides the unique PR number (e.g., `my-workflow-123`) +- For branch pushes: `github.ref` provides the branch ref (e.g., `my-workflow-refs/heads/main`) +- Each unique group runs independently; only duplicate runs within the same group are cancelled + +### Standard Workflow Header + +```yaml +# Copyright Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# ... + +name: Descriptive Workflow Name + +on: + pull_request: # Or appropriate trigger + +concurrency: + group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +env: + # Global environment variables + REGISTRY: quay.io + +jobs: + # ... +``` + +### Environment-Based Authorization + +Use GitHub Environments for manual approval gates: + +```yaml +jobs: + authorize: + environment: + ${{ (condition) && 'internal' || 'external' }} + runs-on: ubuntu-latest + steps: + - run: echo "Authorized" + + deploy: + needs: authorize + # Proceeds only after environment approval +``` + +--- + +## Reusable Actions + +### When to Create Reusable Actions + +Create a reusable composite action in `.github/actions/` when: + +1. Logic is used by multiple workflows +2. Logic is complex enough to benefit from encapsulation +3. Logic requires multiple steps that should be tested together + +### Composite Action Template + +```yaml +# .github/actions/my-action/action.yaml +name: "My Action" +description: "Description of what this action does" + +inputs: + required-input: + description: "A required input" + required: true + optional-input: + description: "An optional input" + required: false + default: "default-value" + +outputs: + result: + description: "The result of the action" + value: ${{ steps.main.outputs.result }} + +runs: + using: "composite" + steps: + - name: Validate inputs + shell: bash + env: + INPUT_VALUE: ${{ inputs.required-input }} + run: | + if [[ -z "$INPUT_VALUE" ]]; then + echo "Error: required-input is empty" + exit 1 + fi + + - name: Main logic + id: main + shell: bash + env: + REQUIRED: ${{ inputs.required-input }} + OPTIONAL: ${{ inputs.optional-input }} + run: | + # Your logic here + echo "result=success" >> $GITHUB_OUTPUT +``` + +### Existing Reusable Actions + +This repository provides the following reusable actions: + +| Action | Purpose | +|--------|---------| +| `.github/actions/check-author` | Verify if PR author is a team member | +| `.github/actions/check-image-and-changes` | Check if image exists and detect relevant changes | +| `.github/actions/docker-build` | Build Docker images with hermetic build | +| `.github/actions/get-sha` | Get short SHA for tagging | + +--- + +## Quick Reference Checklist + +When creating or reviewing a workflow, verify: + +- [ ] All GitHub context expressions are encapsulated in `env:` blocks +- [ ] No direct interpolation of untrusted inputs in `run:` scripts +- [ ] Actions are pinned to commit SHAs with version comments +- [ ] `permissions:` block is explicit and minimal +- [ ] `persist-credentials: false` used with `actions/checkout` where appropriate +- [ ] `pull_request_target` is only used when secrets/write access is truly needed +- [ ] If `pull_request_target` checks out PR code, author verification is in place +- [ ] No untrusted data is appended to `GITHUB_ENV` +- [ ] Artifacts from untrusted sources are validated before use +- [ ] Concurrency is configured to prevent duplicate runs + +--- + +## References + +- [Part 1: Preventing pwn requests](https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/) +- [Part 2: Untrusted Input](https://securitylab.github.com/resources/github-actions-untrusted-input/) +- [Part 3: Building Blocks](https://securitylab.github.com/resources/github-actions-building-blocks/) +- [Part 4: New Patterns and Mitigations](https://securitylab.github.com/resources/github-actions-new-patterns-and-mitigations/) diff --git a/.dockerignore b/.dockerignore index 5a96daab39..1f752befd5 100644 --- a/.dockerignore +++ b/.dockerignore @@ -14,4 +14,12 @@ examples .ibm/images/* !.ibm/images/Dockerfile !.yarnrc.yml -hermeto-cache \ No newline at end of file +hermeto-cache +.github +.cursor +.claude +.rulesync +.rulesyncignore +.pr_agents.toml +.sonarcloud.properties + diff --git a/.rulesync/rules/github-workflows-security.md b/.rulesync/rules/github-workflows-security.md new file mode 100644 index 0000000000..0ea16661c1 --- /dev/null +++ b/.rulesync/rules/github-workflows-security.md @@ -0,0 +1,624 @@ +--- +targets: + - '*' +root: false +description: Security best practices for GitHub Actions workflows based on GitHub Security Lab guidelines +globs: + - .github/workflows/** + - .github/actions/** +cursor: + alwaysApply: false + description: Security best practices for GitHub Actions workflows based on GitHub Security Lab guidelines + globs: + - .github/workflows/** + - .github/actions/** +--- + +# GitHub Workflows Security Best Practices + +This rule provides comprehensive guidance for creating secure GitHub Actions workflows, based on the [GitHub Security Lab](https://securitylab.github.com/) blog series on GitHub Actions security. + +> **Note on Action Versions:** The action versions (commit SHAs and version tags) used in examples throughout this document may be outdated. When implementing these patterns, always check for the latest versions of actions and update the commit SHAs accordingly. You can find the latest versions on each action's GitHub releases page. + +## Table of Contents + +- [Untrusted Input Handling](#untrusted-input-handling) +- [pull_request_target Security](#pull_request_target-security) +- [Action Pinning and Permissions](#action-pinning-and-permissions) +- [Environment Variable Safety](#environment-variable-safety) +- [Artifact Security](#artifact-security) +- [Repository-Specific Patterns](#repository-specific-patterns) +- [Reusable Actions](#reusable-actions) + +--- + +## Untrusted Input Handling + +Reference: [GitHub Actions: Untrusted Input](https://securitylab.github.com/resources/github-actions-untrusted-input/) + +### Always Use Environment Variables for GitHub Context Expressions + +**NEVER** directly interpolate GitHub context expressions in `run:` scripts. Always encapsulate them in environment variables first. + +```yaml +# BAD - Direct interpolation is vulnerable to injection +- name: Print PR title + run: echo "Title: ${{ github.event.pull_request.title }}" + +# GOOD - Use environment variable encapsulation +- name: Print PR title + env: + TITLE: ${{ github.event.pull_request.title }} + run: echo "Title: $TITLE" +``` + +### Use Default GitHub Environment Variables + +Prefer using default GitHub environment variables (like `$GITHUB_REF_NAME`, `$GITHUB_SHA`, `$GITHUB_REPOSITORY`) over context expressions when available: + +```yaml +# GOOD - Use default environment variables +- name: Show branch info + run: | + echo "Branch: $GITHUB_REF_NAME" + echo "SHA: $GITHUB_SHA" + echo "Repository: $GITHUB_REPOSITORY" + +# Also acceptable when env vars aren't available +- name: Show PR number + env: + PR_NUMBER: ${{ github.event.number }} + run: echo "PR #$PR_NUMBER" +``` + +### Dangerous Context Expressions + +The following context expressions are **especially dangerous** because they are controlled by external users: + +| Expression | Risk | +|------------|------| +| `github.event.issue.title` | Attacker-controlled issue title | +| `github.event.issue.body` | Attacker-controlled issue body | +| `github.event.pull_request.title` | Attacker-controlled PR title | +| `github.event.pull_request.body` | Attacker-controlled PR description | +| `github.event.comment.body` | Attacker-controlled comment content | +| `github.event.review.body` | Attacker-controlled review content | +| `github.event.pages.*.page_name` | Attacker-controlled page name | +| `github.event.commits.*.message` | Attacker-controlled commit message | +| `github.event.head_commit.message` | Attacker-controlled commit message | +| `github.event.head_commit.author.email` | Attacker-controlled author email | +| `github.event.head_commit.author.name` | Attacker-controlled author name | +| `github.event.commits.*.author.email` | Attacker-controlled author email | +| `github.event.commits.*.author.name` | Attacker-controlled author name | +| `github.event.pull_request.head.ref` | Attacker-controlled branch name | +| `github.event.pull_request.head.label` | Attacker-controlled label | +| `github.event.pull_request.head.repo.default_branch` | Attacker-controlled default branch | +| `github.head_ref` | Attacker-controlled branch name | + +**Always sanitize or encapsulate these in environment variables:** + +```yaml +# GOOD - Proper encapsulation of dangerous inputs +- name: Check PR eligibility + env: + PR_BRANCH: ${{ github.event.pull_request.head.ref }} + PR_TITLE: ${{ github.event.pull_request.title }} + run: | + # Now safe to use in shell + echo "Branch: $PR_BRANCH" + echo "Title: $PR_TITLE" +``` + +--- + +## pull_request_target Security + +Reference: [GitHub Actions: Preventing pwn requests](https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/) + +### When to Use Each Trigger + +| Trigger | Secrets Access | Write Permission | Use Case | +|---------|---------------|------------------|----------| +| `pull_request` | No (from forks) | No | Build/test PR code safely | +| `pull_request_target` | Yes | Yes | Label PRs, comment, NO code checkout | +| `workflow_run` | Yes | Yes | Post-processing after `pull_request` | + +### CRITICAL: Never Checkout Untrusted Code with pull_request_target + +```yaml +# DANGEROUS - Checking out PR code with secrets access +on: pull_request_target +jobs: + build: + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} # UNSAFE! + - run: npm install # Attacker's code runs with secrets! + +# SAFE - Only checkout target branch (default behavior) +on: pull_request_target +jobs: + label: + steps: + - uses: actions/checkout@v4 # Checks out base branch, safe + - name: Add label + run: gh pr edit $PR_NUMBER --add-label "needs-review" +``` + +### Preferred Pattern: pull_request + workflow_run + +When you need to run untrusted PR code AND access secrets/write permissions, split into two workflows: + +**Step 1: Unprivileged `pull_request` workflow** + +```yaml +# .github/workflows/pr-build.yaml +name: PR Build +on: pull_request + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 # Safe - no secrets access + + - name: Build and test + run: | + npm install + npm test + + - name: Save PR number + run: echo "${{ github.event.number }}" > pr_number.txt + + - name: Upload results + uses: actions/upload-artifact@v4 + with: + name: pr-results + path: | + pr_number.txt + test-results/ +``` + +**Step 2: Privileged `workflow_run` workflow** + +```yaml +# .github/workflows/pr-comment.yaml +name: PR Comment +on: + workflow_run: + workflows: ["PR Build"] + types: [completed] + +jobs: + comment: + runs-on: ubuntu-latest + if: github.event.workflow_run.conclusion == 'success' + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: pr-results + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Comment on PR + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + PR_NUMBER=$(cat pr_number.txt) + gh pr comment "$PR_NUMBER" --body "Build succeeded!" +``` + +### When pull_request_target is Necessary: Use Author Verification + +If you must use `pull_request_target` with code checkout, use the repository's `check-author` action to verify the author is trusted: + +```yaml +# Reference implementation from .github/workflows/pr.yaml +on: + pull_request_target: + types: [opened, synchronize, reopened, ready_for_review] + +jobs: + check-commit-author: + runs-on: ubuntu-latest + outputs: + is_active_team_member: ${{ steps.team-check.outputs.is_active_member }} + steps: + - name: Generate GitHub App Token + id: app-token + uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4 + with: + app-id: ${{ secrets.RHDH_GITHUB_APP_ID }} + private-key: ${{ secrets.RHDH_GITHUB_APP_PRIVATE_KEY }} + + - name: Checkout main branch for secure version of check-author action + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + with: + fetch-depth: 1 + ref: main # Always use main branch for security-critical action + persist-credentials: false + + - name: Check if commit author is an active member of the team + id: team-check + uses: ./.github/actions/check-author + with: + author: ${{ github.actor }} + organization: redhat-developer + team: rhdh + gh_token: ${{ steps.app-token.outputs.token }} + whitelisted_authors: '["openshift-cherrypick-robot"]' + + authorize: + environment: + ${{ (needs.check-commit-author.outputs.is_active_team_member == 'true' || + github.event.pull_request.head.repo.full_name == github.repository) && + 'internal' || 'external' }} + runs-on: ubuntu-latest + needs: check-commit-author + steps: + - name: Authorized + run: echo "Author is authorized to run this workflow" + + build: + needs: authorize + runs-on: ubuntu-latest + steps: + - name: Checkout PR code (now safe after authorization) + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + persist-credentials: false +``` + +--- + +## Action Pinning and Permissions + +Reference: [GitHub Actions: Building Blocks](https://securitylab.github.com/resources/github-actions-building-blocks/) + +### Pin Actions to Commit SHAs + +**Always** pin third-party actions to full commit SHAs, not tags: + +```yaml +# BAD - Tags can be moved to malicious commits +- uses: actions/checkout@v4 +- uses: docker/login-action@v3 + +# GOOD - Pinned to immutable commit SHA with version comment +- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 +- uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3 +``` + +### Use persist-credentials: false + +Always disable credential persistence unless explicitly needed: + +```yaml +- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + with: + persist-credentials: false # Prevents token from being stored on disk +``` + +### Explicit Permissions Block + +Always declare the minimum required permissions: + +```yaml +# At workflow level +permissions: + contents: read + pull-requests: write + +# Or at job level for finer control +jobs: + build: + permissions: + contents: read + # ... + + deploy: + permissions: + contents: read + packages: write + # ... +``` + +### Common Permission Patterns + +```yaml +# Read-only workflow (most restrictive) +permissions: + contents: read + +# PR workflows that need to comment +permissions: + contents: read + pull-requests: write + +# Package publishing +permissions: + contents: read + packages: write + +# Release workflows +permissions: + contents: write + packages: write +``` + +--- + +## Environment Variable Safety + +Reference: [GitHub Actions: New Patterns and Mitigations](https://securitylab.github.com/resources/github-actions-new-patterns-and-mitigations/) + +### NEVER Append Untrusted Data to GITHUB_ENV + +```yaml +# DANGEROUS - Allows command injection via GITHUB_ENV +- name: Set environment + run: | + echo "BRANCH=${{ github.head_ref }}" >> $GITHUB_ENV # UNSAFE! + +# SAFE - Use env: block instead +- name: Use branch + env: + BRANCH: ${{ github.head_ref }} + run: echo "Branch is $BRANCH" +``` + +### Safe GITHUB_ENV Usage + +Only write trusted, validated data to `GITHUB_ENV`: + +```yaml +# SAFE - Writing computed/validated values +- name: Compute values + run: | + # Safe - internally computed values + SHORT_SHA="${GITHUB_SHA:0:7}" + echo "SHORT_SHA=$SHORT_SHA" >> $GITHUB_ENV + + # Safe - output from trusted command + DATE=$(date +%Y-%m-%d) + echo "BUILD_DATE=$DATE" >> $GITHUB_ENV +``` + +### Use GITHUB_OUTPUT for Step Outputs + +```yaml +- name: Generate output + id: compute + env: + INPUT_VALUE: ${{ github.event.inputs.value }} + run: | + # Process the input safely + result=$(echo "$INPUT_VALUE" | tr '[:upper:]' '[:lower:]') + echo "result=$result" >> $GITHUB_OUTPUT + +- name: Use output + run: echo "Result: ${{ steps.compute.outputs.result }}" +``` + +--- + +## Artifact Security + +### Treat Artifacts from Untrusted Sources as Untrusted + +When using `workflow_run` to process artifacts from `pull_request` workflows: + +```yaml +on: + workflow_run: + workflows: ["PR Build"] + types: [completed] + +jobs: + process: + runs-on: ubuntu-latest + steps: + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: build-results + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + # DANGEROUS - Never execute downloaded binaries + # - run: ./downloaded-binary + + # SAFE - Only read data files + - name: Read PR number + run: | + PR_NUMBER=$(cat pr_number.txt) + # Validate it's actually a number + if ! [[ "$PR_NUMBER" =~ ^[0-9]+$ ]]; then + echo "Invalid PR number" + exit 1 + fi +``` + +### Validate Artifact Contents + +```yaml +- name: Process artifact safely + run: | + # Validate file exists and is reasonable size + if [[ ! -f "result.txt" ]] || [[ $(stat -c%s "result.txt") -gt 1000000 ]]; then + echo "Invalid artifact" + exit 1 + fi + + # Read and validate content + CONTENT=$(cat result.txt) + # Add validation as needed +``` + +--- + +## Repository-Specific Patterns + +### Concurrency Control + +Use concurrency to cancel duplicate runs **from the same PR or branch only**. A new push to PR A should cancel the previous workflow for PR A, but should NOT affect workflows for PR B. + +```yaml +concurrency: + # Group by workflow name + PR number (for PRs) or ref (for branches) + # This ensures: + # - PR A's new workflow cancels PR A's old workflow + # - PR A's workflow does NOT cancel PR B's workflow + # - Push to branch X cancels previous push to branch X + group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + cancel-in-progress: true +``` + +**How the group key works:** +- For pull requests: `github.event.number` provides the unique PR number (e.g., `my-workflow-123`) +- For branch pushes: `github.ref` provides the branch ref (e.g., `my-workflow-refs/heads/main`) +- Each unique group runs independently; only duplicate runs within the same group are cancelled + +### Standard Workflow Header + +```yaml +# Copyright Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# ... + +name: Descriptive Workflow Name + +on: + pull_request: # Or appropriate trigger + +concurrency: + group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +env: + # Global environment variables + REGISTRY: quay.io + +jobs: + # ... +``` + +### Environment-Based Authorization + +Use GitHub Environments for manual approval gates: + +```yaml +jobs: + authorize: + environment: + ${{ (condition) && 'internal' || 'external' }} + runs-on: ubuntu-latest + steps: + - run: echo "Authorized" + + deploy: + needs: authorize + # Proceeds only after environment approval +``` + +--- + +## Reusable Actions + +### When to Create Reusable Actions + +Create a reusable composite action in `.github/actions/` when: + +1. Logic is used by multiple workflows +2. Logic is complex enough to benefit from encapsulation +3. Logic requires multiple steps that should be tested together + +### Composite Action Template + +```yaml +# .github/actions/my-action/action.yaml +name: "My Action" +description: "Description of what this action does" + +inputs: + required-input: + description: "A required input" + required: true + optional-input: + description: "An optional input" + required: false + default: "default-value" + +outputs: + result: + description: "The result of the action" + value: ${{ steps.main.outputs.result }} + +runs: + using: "composite" + steps: + - name: Validate inputs + shell: bash + env: + INPUT_VALUE: ${{ inputs.required-input }} + run: | + if [[ -z "$INPUT_VALUE" ]]; then + echo "Error: required-input is empty" + exit 1 + fi + + - name: Main logic + id: main + shell: bash + env: + REQUIRED: ${{ inputs.required-input }} + OPTIONAL: ${{ inputs.optional-input }} + run: | + # Your logic here + echo "result=success" >> $GITHUB_OUTPUT +``` + +### Existing Reusable Actions + +This repository provides the following reusable actions: + +| Action | Purpose | +|--------|---------| +| `.github/actions/check-author` | Verify if PR author is a team member | +| `.github/actions/check-image-and-changes` | Check if image exists and detect relevant changes | +| `.github/actions/docker-build` | Build Docker images with hermetic build | +| `.github/actions/get-sha` | Get short SHA for tagging | + +--- + +## Quick Reference Checklist + +When creating or reviewing a workflow, verify: + +- [ ] All GitHub context expressions are encapsulated in `env:` blocks +- [ ] No direct interpolation of untrusted inputs in `run:` scripts +- [ ] Actions are pinned to commit SHAs with version comments +- [ ] `permissions:` block is explicit and minimal +- [ ] `persist-credentials: false` used with `actions/checkout` where appropriate +- [ ] `pull_request_target` is only used when secrets/write access is truly needed +- [ ] If `pull_request_target` checks out PR code, author verification is in place +- [ ] No untrusted data is appended to `GITHUB_ENV` +- [ ] Artifacts from untrusted sources are validated before use +- [ ] Concurrency is configured to prevent duplicate runs + +--- + +## References + +- [Part 1: Preventing pwn requests](https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/) +- [Part 2: Untrusted Input](https://securitylab.github.com/resources/github-actions-untrusted-input/) +- [Part 3: Building Blocks](https://securitylab.github.com/resources/github-actions-building-blocks/) +- [Part 4: New Patterns and Mitigations](https://securitylab.github.com/resources/github-actions-new-patterns-and-mitigations/) + From 2d1c2b35e6ef316a12a905ef873cbf84b37b047b Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Tue, 2 Dec 2025 16:51:08 -0500 Subject: [PATCH 14/15] chore: remove unnecessary comment Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .github/actions/docker-build/action.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/actions/docker-build/action.yaml b/.github/actions/docker-build/action.yaml index 61d4ba3e8f..a631ce74a2 100644 --- a/.github/actions/docker-build/action.yaml +++ b/.github/actions/docker-build/action.yaml @@ -70,7 +70,6 @@ runs: shell: bash env: COMPONENT_DIR: ${{ inputs.componentDirectory }} - # Note: GITHUB_WORKSPACE is available as a default env var run: | echo "HERMETO_IMAGE=quay.io/konflux-ci/hermeto:latest" >> $GITHUB_ENV echo "LOCAL_CACHE_DIR=./hermeto-cache/$(basename "$COMPONENT_DIR")" >> $GITHUB_ENV From 53017fa79bd7487d4b88b39f75a86048d7419dda Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Fri, 5 Dec 2025 15:28:45 -0500 Subject: [PATCH 15/15] chore: refactor local hermeto install script Signed-off-by: Frank Kong rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- scripts/local-hermeto-build.sh | 255 +++++++++++++++++++++------------ 1 file changed, 165 insertions(+), 90 deletions(-) diff --git a/scripts/local-hermeto-build.sh b/scripts/local-hermeto-build.sh index 282153f756..f9543aa81b 100755 --- a/scripts/local-hermeto-build.sh +++ b/scripts/local-hermeto-build.sh @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash # # Copyright (c) 2021-2025 Red Hat, Inc. # This program and the accompanying materials are made @@ -7,18 +7,27 @@ # # SPDX-License-Identifier: EPL-2.0 # -# this script will extract the filesystem of a container to a folder -# so you can browse its contents. Also works with scratch images - -set -x - -LOCAL_CACHE_BASEDIR=./hermeto-cache/ -HERMETO_IMAGE=quay.io/konflux-ci/hermeto:latest - - -usage () -{ - echo "This script tries to somewhat simulate the Konflux build process. +# This script simulates the Konflux build process locally using Hermeto. +# It can either build the dependency cache or build a container image. +set -ex +set -uo pipefail + +####################################### +# Constants +####################################### +readonly LOCAL_CACHE_BASEDIR='./hermeto-cache/' +readonly HERMETO_IMAGE='quay.io/konflux-ci/hermeto:latest' + +####################################### +# Prints usage information and exits. +# Globals: +# None +# Arguments: +# None +####################################### +usage() { + cat << EOF +This script tries to somewhat simulate the Konflux build process. Usage: $0 [image] @@ -28,95 +37,161 @@ Examples: $0 image . quay.io/example/image:tag Options: - The type of build. Options are: - - cache: Build the cache using Hermeto - - image: Build the image + The type of build. Options are: + - cache: Build the cache using Hermeto + - image: Build the image The directory of the component to build. - [image] The name of the container image to build. Required for the 'image' type. - " - exit + [image] The name of the container image to build. Required for 'image' type. +EOF + exit 1 } -if [[ $# -lt 2 ]]; then usage; fi - -TYPE=$1 -COMPONENT_DIR=$2 -IMAGE=$3 - -# Check if the type is valid -if [[ "$TYPE" != "cache" && "$TYPE" != "image" ]]; then - echo "Invalid type: $TYPE" - usage -fi - -# Check if image is provided for the 'image' type -if [[ "$TYPE" == "image" && -z "$IMAGE" ]]; then - echo "Image name is required for the 'image' type." - usage -fi +####################################### +# Transforms a Containerfile to inject Hermeto/cachi2 configuration. +# Globals: +# None +# Arguments: +# containerfile: Path to the original Containerfile +# transformed_containerfile: Path to write the transformed Containerfile +####################################### +transform_containerfile() { + local containerfile="$1" + local transformed_containerfile="$2" + + cp "${containerfile}" "${transformed_containerfile}" + + # Configure dnf to use the cachi2 repo + sed -i '/RUN *\(dnf\|microdnf\) install/i RUN rm -r /etc/yum.repos.d/* && cp /cachi2/output/deps/rpm/$(uname -m)/repos.d/hermeto.repo /etc/yum.repos.d/' \ + "${transformed_containerfile}" + + # inject the cachi2 env variables to every RUN command + sed -i 's/^\s*RUN /RUN . \/cachi2\/cachi2.env \&\& /' $transformed_containerfile +} -function transformContainerfile() { - local containerfile="$1" - local transformed_containerfile="$2" +####################################### +# Builds the dependency cache using Hermeto. +# Globals: +# HERMETO_IMAGE +# Arguments: +# local_cache_dir: Path to the local cache directory +# local_cache_output_dir: Path to the cache output directory +####################################### +build_cache() { + local local_cache_dir="$1" + local local_cache_output_dir="$2" + + # Ensure the local cache dir exists + mkdir -p "${local_cache_output_dir}" + + # Ensure the latest hermeto image + podman pull "${HERMETO_IMAGE}" + + # Build cache + podman run --rm -ti \ + -v "${PWD}:/source:z" \ + -v "${local_cache_dir}:/cachi2:z" \ + -w /source \ + "${HERMETO_IMAGE}" \ + --log-level DEBUG \ + fetch-deps --dev-package-managers \ + --source . \ + --output /cachi2/output \ + '[{"type": "rpm", "path": "."}, {"type": "yarn","path": "."}, {"type": "yarn","path": "./dynamic-plugins"}, {"type": "pip","path": "./python", "allow_binary": "false"}]' + + podman run --rm -ti \ + -v "${PWD}:/source:z" \ + -v "${local_cache_dir}:/cachi2:z" \ + -w /source \ + "${HERMETO_IMAGE}" \ + generate-env --format env --output /cachi2/cachi2.env /cachi2/output - cp $containerfile $transformed_containerfile + podman run --rm -ti \ + -v "${PWD}:/source:z" \ + -v "${local_cache_dir}:/cachi2:z" \ + -w /source \ + "${HERMETO_IMAGE}" \ + inject-files /cachi2/output + return 0 +} - # configure dnf to use the cachi2 repo - sed -i '/RUN *\(dnf\|microdnf\) install/i RUN rm -r /etc/yum.repos.d/* && cp /cachi2/output/deps/rpm/$(uname -m)/repos.d/hermeto.repo /etc/yum.repos.d/' $transformed_containerfile +####################################### +# Builds a container image using the hermeto cache. +# Globals: +# None +# Arguments: +# component_dir: Path to the component directory +# local_cache_dir: Path to the local cache directory +# image: Name of the container image to build +####################################### +build_image() { + local component_dir="$1" + local local_cache_dir="$2" + local image="$3" + + # Ensure the local cache dir exists + if [[ ! -d "${local_cache_dir}" ]]; then + echo "Local cache dir does not exist. Please run the script with 'cache' first." + echo "example: $0 cache ${component_dir}" + exit 1 + fi - # inject the cachi2 env variables to every RUN command - sed -i 's/^\s*RUN /RUN . \/cachi2\/cachi2.env \&\& /' $transformed_containerfile + # Transform the containerfile to simulate Konflux build + transform_containerfile \ + "${component_dir}/docker/Containerfile" \ + "${component_dir}/docker/Containerfile.hermeto" + + podman build -t "${image}" \ + --network none \ + --no-cache \ + -f "${component_dir}/docker/Containerfile.hermeto" \ + -v "${local_cache_dir}:/cachi2" \ + "${component_dir}" } -COMPONENT_DIR=$(realpath "$COMPONENT_DIR") -LOCAL_CACHE_DIR=$(realpath "$LOCAL_CACHE_BASEDIR")/$(basename "$COMPONENT_DIR") -LOCAL_CACHE_OUTPUT_DIR=$LOCAL_CACHE_DIR/output -echo "Component dir: $COMPONENT_DIR" -echo "Local cache dir: $LOCAL_CACHE_DIR" - -############# -### CACHE ### -############# -if [[ "$TYPE" == "cache" ]]; then - # ensure the local cache dir exists - mkdir -p $LOCAL_CACHE_OUTPUT_DIR - - # ensure the latest hermeto image - podman pull $HERMETO_IMAGE - # build cache - podman run --rm -ti -v "$PWD:/source:z" -v "$LOCAL_CACHE_DIR":/cachi2:z -w /source $HERMETO_IMAGE \ - --log-level DEBUG \ - fetch-deps --dev-package-managers \ - --source . \ - --output /cachi2/output \ - '[{"type": "rpm", "path": "."}, {"type": "yarn","path": "."}, {"type": "yarn","path": "./dynamic-plugins"}, {"type": "pip","path": "./python", "allow_binary": "false"}]' - - podman run --rm -ti -v "$PWD:/source:z" -v "$LOCAL_CACHE_DIR":/cachi2:z -w /source $HERMETO_IMAGE \ - generate-env --format env --output /cachi2/cachi2.env /cachi2/output +####################################### +# Main entry point for the script. +# Globals: +# LOCAL_CACHE_BASEDIR +# Arguments: +# Command line arguments +####################################### +main() { + if [[ $# -lt 2 ]]; then + usage + fi - podman run --rm -ti -v "$PWD:/source:z" -v "$LOCAL_CACHE_DIR":/cachi2:z -w /source $HERMETO_IMAGE \ - inject-files /cachi2/output -fi + local type="$1" + local component_dir="$2" + local image="${3:-}" -############# -### IMAGE ### -############# -if [[ "$TYPE" == "image" ]]; then + # Check if the type is valid + if [[ "${type}" != "cache" && "${type}" != "image" ]]; then + echo "Invalid type: ${type}" + usage + fi - # ensure the local cache dir exists - if [[ ! -d "$LOCAL_CACHE_DIR" ]]; then - echo "Local cache dir does not exist. Please run the script with 'cache' first." - echo "example: $0 cache $2" - exit 1 + # Check if image is provided for the 'image' type + if [[ "${type}" == "image" && -z "${image}" ]]; then + echo "Image name is required for the 'image' type." + usage fi - # transform the containerfile to simulate Konflux build - transformContainerfile "$COMPONENT_DIR/docker/Containerfile" "$COMPONENT_DIR/docker/Containerfile.hermeto" + # Resolve paths + local resolved_component_dir="$(realpath "${component_dir}")" + local local_cache_dir="$(realpath "${LOCAL_CACHE_BASEDIR}")/$(basename "${resolved_component_dir}")" + local local_cache_output_dir="${local_cache_dir}/output" + + echo "Component dir: ${resolved_component_dir}" + echo "Local cache dir: ${local_cache_dir}" + + case "${type}" in + cache) + build_cache "${local_cache_dir}" "${local_cache_output_dir}" + ;; + image) + build_image "${resolved_component_dir}" "${local_cache_dir}" "${image}" + ;; + esac +} - podman build -t "$IMAGE" \ - --network none \ - --no-cache \ - -f "$COMPONENT_DIR"/docker/Containerfile.hermeto \ - -v "$LOCAL_CACHE_DIR":/cachi2 \ - "$COMPONENT_DIR" -fi \ No newline at end of file +main "$@"