File openSUSE-repos-20250728.9adc675.obscpio of Package openSUSE-repos

07070100000000000041ED0000000000000000000000026887617700000000000000000000000000000000000000000000002800000000openSUSE-repos-20250728.9adc675/.github07070100000001000041ED0000000000000000000000026887617700000000000000000000000000000000000000000000003200000000openSUSE-repos-20250728.9adc675/.github/workflows07070100000002000081A400000000000000000000000168876177000003E2000000000000000000000000000000000000004200000000openSUSE-repos-20250728.9adc675/.github/workflows/repo_checks.yml# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the "main" branch
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v4

      # Runs a single command using the runners shell. use run: | to run multiple (command per line)
      - name: Run a one-line script
        run: bash checks/repo_checks
07070100000003000081A40000000000000000000000016887617700000104000000000000000000000000000000000000003C00000000openSUSE-repos-20250728.9adc675/.github/workflows/test.yaml---
name: CI

on: [pull_request, workflow_dispatch]  # yamllint disable-line rule:truthy

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Test
        run: |
          cd t && \
          make test_container
07070100000004000081A400000000000000000000000168876177000011ED000000000000000000000000000000000000002A00000000openSUSE-repos-20250728.9adc675/README.md    # openSUSE-repos

**Definitions for openSUSE repository management via zypp-services.**

[openSUSE-repos](https://github.com/openSUSE/openSUSE-repos) simplifies openSUSE repository management by utilizing [Repository Index Service (RIS)](https://en.opensuse.org/openSUSE:Standards_Repository_Index_Service) for core distribution.
Current version utilizes the new [cdn.opensuse.org](https://code.opensuse.org/leap/features/issue/128).

This feature was originally requested as part of https://code.opensuse.org/leap/features/issue/91

## Example manual usage of zypper as
```
$ tree /somewhere # zypp expects repo/repoindex.xml
/somewhere
└── repo
    └── repoindex.xml

$ zypper addservice /somewhere openSUSE # Use openSUSE prefix for all reposistories managed by service
$ zypper --gpg-auto-import-keys ref -s # optionally force refresh services

Repositories managed by zypp-services can be easily identified as they will have openSUSE: prefix (or any other that you have chosen).
```

## How to enable or disable source or debug repositories with openSUSE-repos

### Enabling / Disabling openSUSE source repo
```
$ sudo zypper modifyrepo -e openSUSE:repo-oss-source 
Repository 'openSUSE:repo-oss-source' has been successfully enabled.
$ sudo zypper modifyrepo -d openSUSE:repo-oss-source 
Repository 'openSUSE:repo-oss-source' has been successfully disabled.
```
### Enabling / Disabling openSUSE debug repo
```
$ sudo zypper modifyrepo -e openSUSE:repo-oss-debug
Repository 'openSUSE:repo-oss-debug' has been successfully enabled.
$ sudo zypper modifyrepo -d openSUSE:repo-oss-debug
Repository 'openSUSE:repo-oss-debug' has been successfully disabled.
```

### There is a typo in repository definition how can I fix it myself?
```
$ vim /usr/share/zypp/local/service/openSUSE/repo/repoindex.xml
$ zypper --gpg-auto-import-keys ref -s # to refresh services
```

### Reloading / Refreshing list of repositories

It might initially happen that system shows no repositories. This can be easily fixed by running either 
```
# sudo zypper refresh-services # or simply zypper refs ... re-generate repository definitions without refreshing repodata
# sudo zypper refresh -s # or simply zypper ref -s ...  re-generate repository definitions and refresh repodata
```
## Restoring original distribution repositories
openSUSE-repos does backup of all existing  default distribution repo files under /etc/zypp/repos.d/*.rpmsave

As of today uninstalling openSUSE-repos **will not** restore original distribution repo files.
You can restore original repo files by running following as root.
Note: You should not use rpmconf, as the original file was simply moved under a new name.

```
# zypper remove openSUSE-repos-*

# ls -la /etc/zypp/repos.d/*.rpmsave # review list of repos that will be restored
# for file in /etc/zypp/repos.d/*.rpmsave; do echo mv $file `echo $file | sed -s "s/\.rpmsave//"`; done
# zypper ref
```


## How to contribute?

Package is developed in [GitHub/openSUSE](https://github.com/openSUSE/openSUSE-repos/).

We have a [simple CI](https://github.com/openSUSE/openSUSE-repos/actions) which runs [repo_checks](https://github.com/openSUSE/openSUSE-repos/blob/main/checks/repo_checks) to ensure that paths are correct.

Before we enroll update to openSUSE users it has to pass [openQA test](https://github.com/os-autoinst/os-autoinst-distri-opensuse/blob/master/tests/console/opensuse_repos.pm).


Package or its [.spec file](https://build.opensuse.org/projects/Base:System/packages/openSUSE-repos/files/openSUSE-repos.spec?expand=1) needs to be manually updated in [OBS](https://build.opensuse.org/package/show/Base:System/openSUSE-repos) once changes are merged in GitHub.

Make sure to install osc and required obs services by openSUSE-repos package

```
$ sudo zypper in openSUSE-release-tools obs-service-tar
```

Fork the repository in OBS, fetch latest request and make a submit request.

```
$ osc bco Base:System/openSUSE-repos
cd home:i*:branches:Base:System/openSUSE-repos
osc service mr
osc addremove
osc commit # changelog can be reviewed by osc vc
osc sr # submit request back to Base:System
```

Don't forget to send changes back to Tumbleweed and Leap once changes are merged to Base:System.

```
$ osc sr Base:System openSUSE-repos openSUSE:Factory
$ osc sr openSUSE:Factory openSUSE-repos openSUSE:Leap:15.6 # once merged to Factory
$ osc sr openSUSE:Factory openSUSE-repos openSUSE:Leap:16.0 # once merged to Factory
$ osc sr openSUSE:Factory openSUSE-repos openSUSE:Leap:Micro:6.0 # once merged to Factory
```

That's all. Happy Hacking
07070100000005000041ED0000000000000000000000026887617700000000000000000000000000000000000000000000002700000000openSUSE-repos-20250728.9adc675/checks07070100000006000081ED0000000000000000000000016887617700000CDE000000000000000000000000000000000000003300000000openSUSE-repos-20250728.9adc675/checks/repo_checks#!/bin/bash

set -e

CURRDIR="$(dirname -- "${BASH_SOURCE[0]}")"

expand_and_check_url() {
    local raw_url=$1
    local label=$2

    local expanded_url=$(echo "$raw_url" \
        | awk -v u="$distver" '{gsub(/%{distver}/,u)}1' \
        | awk -v u="$disturl" '{gsub(/%{disturl}/,u)}1' \
        | awk -v u="$distsub" '{gsub(/%{distsub}/,u)}1' \
        | awk -v u="$basearch" '{gsub(/\$basearch/,u)}1' \
        | awk -v u="$distarch" '{gsub(/\$DIST_ARCH/,u)}1')

    echo "[INFO] expanded_url=$expanded_url"

    if [[ $expanded_url == *"%{"* ]]; then
        echo "[ERROR] $filename - Unexpanded variable found in $expanded_url"
        exit 1
    fi

    if [[ $expanded_url == *"\$"* ]]; then
        echo "[ERROR] $filename - Unexpanded shell \$ variable found in $expanded_url"
        exit 2
    fi

    # Append path if needed
    local url_check=$expanded_url
    [[ "$label" == "repo" ]] && url_check="${expanded_url}/repodata/repomd.xml"

    if [[ "$label" == "mirrorlist" ]]; then
        if [[ "$expanded_url" == *\?* ]]; then
            # Separate base and query parts
            base="${expanded_url%%\?*}"             # Strip everything after ?
            query="${expanded_url#*\?}"             # Extract everything after ?
            url_check="${base}/repodata/repomd.xml?${query}"
        else
            echo "[ERROR] $filename no ?variable part found in $expanded_url. Expected /?mirrorlist"
            exit 3
        fi
    fi

    if curl --head --silent --fail "$url_check" > /dev/null 2>&1; then
        echo "[OK] - $filename - Url $url_check exists."
    else
        echo "[ERROR] - $filename - Url $url_check does not exist."
        exit 3
    fi
}

for path in "$CURRDIR"/../*.xml; do
    filename=$(basename "$path")
    echo "Checking repo definitions in $filename"

    disturl=$(grep "disturl=" "$path" | awk -F"=" '{print $2}' | tr -d "\"'")
    distsub=$(grep "distsub=" "$path" | awk -F"=" '{print $2}' | tr -d "\"'")

    echo "[INFO] $filename disturl=$disturl"
    echo "[INFO] $filename distsub=$distsub"

    distver="tumbleweed"
    distarch="zsystems"
    basearch="x86_64"

    if [[ $distsub == "leap" ]]; then
        if [[ $filename == *"leap16"* ]]; then
            distver="16.0"
            distarch="x86_64"
        else
            distver="15.5"
            distarch="armv7hl"
        fi
    elif [[ $distsub == "leap-micro" ]]; then
        if [[ $filename == *"leap-micro6"* ]]; then
            distver="6.0"
        else
            distver="5.5"
        fi
        distarch="aarch64"
    fi

    echo "[INFO] Using hardcoded distver=$distver"
    echo "[INFO] Using hardcoded distarch=$distarch"

    # Check <repo url>
    grep '<repo url' "$path" | while read -r line; do
        raw_url=$(echo "$line" | awk -F"=" '{print $2}' | tr -d "\"'")
        expand_and_check_url "$raw_url" "repo"
    done

    # Check mirrorlist=
    grep 'mirrorlist=' "$path" | while read -r line; do
        raw_url=$(echo "$line" | awk -F"=" '{print $2}' | tr -d "\"'")
        expand_and_check_url "$raw_url" "mirrorlist"
    done

    # Check gpgkey=
    grep 'gpgkey=' "$path" | while read -r line; do
        raw_url=$(echo "$line" | awk -F"=" '{print $2}' | tr -d "\"'")
        expand_and_check_url "$raw_url" "gpgkey"
    done
done07070100000007000081A4000000000000000000000001688761770000014A000000000000000000000000000000000000003A00000000openSUSE-repos-20250728.9adc675/nvidia-leap-repoindex.xml<repoindex ttl="0"
    disturl="https://download.nvidia.com"
    distsub="leap"
    distver="${releasever}"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/opensuse/%{distsub}/%{distver}"
    alias="repo-non-free"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

</repoindex>
07070100000008000081A4000000000000000000000001688761770000011C000000000000000000000000000000000000003D00000000openSUSE-repos-20250728.9adc675/nvidia-microos-repoindex.xml<repoindex ttl="0"
    disturl="https://download.nvidia.com"
    distsub="tumbleweed"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/opensuse/%{distsub}"
    alias="repo-non-free"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

</repoindex>
07070100000009000081A4000000000000000000000001688761770000011C000000000000000000000000000000000000003E00000000openSUSE-repos-20250728.9adc675/nvidia-slowroll-repoindex.xml<repoindex ttl="0"
    disturl="https://download.nvidia.com"
    distsub="tumbleweed"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/opensuse/%{distsub}"
    alias="repo-non-free"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

</repoindex>
0707010000000A000081A4000000000000000000000001688761770000011C000000000000000000000000000000000000004000000000openSUSE-repos-20250728.9adc675/nvidia-tumbleweed-repoindex.xml<repoindex ttl="0"
    disturl="https://download.nvidia.com"
    distsub="tumbleweed"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/opensuse/%{distsub}"
    alias="repo-non-free"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

</repoindex>
0707010000000B000081A400000000000000000000000168876177000003CF000000000000000000000000000000000000004300000000openSUSE-repos-20250728.9adc675/opensuse-leap-micro5-repoindex.xml<repoindex ttl="0"
    disturl="http://cdn.opensuse.org"
    distsub="leap-micro"
    distver="${releasever}"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/distribution/%{distsub}/%{distver}/product/repo/Leap-Micro-%{distver}-$DIST_ARCH-Media1"
    alias="repo-main"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/distribution/%{distsub}/%{distver}/product/repo/Leap-Micro-%{distver}-$DIST_ARCH-Media2"
    alias="repo-debug"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/distribution/%{distsub}/%{distver}/product/repo/Leap-Micro-%{distver}-$DIST_ARCH-Media3"
    alias="repo-source"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/update/%{distsub}/%{distver}/sle"
    alias="repo-sle-update"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>


</repoindex>
0707010000000C000081A400000000000000000000000168876177000004EA000000000000000000000000000000000000004300000000openSUSE-repos-20250728.9adc675/opensuse-leap-micro6-repoindex.xml<repoindex ttl="0"
    disturl="http://cdn.opensuse.org"
    distsub="leap-micro"
    distver="${releasever}"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/distribution/%{distsub}/%{distver}/product/repo/openSUSE-Leap-Micro-%{distver}-$DIST_ARCH"
    gpgkey="%{disturl}/distribution/%{distsub}/%{distver}/product/repo/openSUSE-Leap-Micro-%{distver}-$DIST_ARCH/repodata/repomd.xml.key"
    alias="repo-main"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/distribution/%{distsub}/%{distver}/product/repo/openSUSE-Leap-Micro-%{distver}-$DIST_ARCH-Debug"
    gpgkey="%{disturl}/distribution/%{distsub}/%{distver}/product/repo/openSUSE-Leap-Micro-%{distver}-$DIST_ARCH-Debug/repodata/repomd.xml.key"
    alias="repo-debug"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/distribution/%{distsub}/%{distver}/product/repo/openSUSE-Leap-Micro-%{distver}-$DIST_ARCH-Source"
    gpgkey="%{disturl}/distribution/%{distsub}/%{distver}/product/repo/openSUSE-Leap-Micro-%{distver}-$DIST_ARCH-Source/repodata/repomd.xml.key"
    alias="repo-source"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

</repoindex>
0707010000000D000081A400000000000000000000000168876177000002F4000000000000000000000000000000000000004200000000openSUSE-repos-20250728.9adc675/opensuse-leap-ports-repoindex.xml<repoindex ttl="0"
    disturl="http://cdn.opensuse.org"
    distsub="leap"
    distver="${releasever}"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/ports/$DIST_ARCH/distribution/%{distsub}/%{distver}/repo/oss?mediahandler=curl2"
    alias="repo-oss"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/source/distribution/%{distsub}/%{distver}/repo/oss?mediahandler=curl2"
    alias="repo-oss-source"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="https://codecs.opensuse.org/openh264/openSUSE_Leap?mediahandler=curl2"
    alias="repo-openh264"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

</repoindex>
0707010000000E000081A40000000000000000000000016887617700000B14000000000000000000000000000000000000003C00000000openSUSE-repos-20250728.9adc675/opensuse-leap-repoindex.xml<repoindex ttl="0"
    disturl="http://cdn.opensuse.org"
    distsub="leap"
    distver="${releasever}"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/distribution/%{distsub}/%{distver}/repo/oss?mediahandler=curl2"
    alias="repo-oss"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/debug/distribution/%{distsub}/%{distver}/repo/oss?mediahandler=curl2"
    alias="repo-oss-debug"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/source/distribution/%{distsub}/%{distver}/repo/oss?mediahandler=curl2"
    alias="repo-oss-source"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/distribution/%{distsub}/%{distver}/repo/non-oss?mediahandler=curl2"
    alias="repo-non-oss"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/debug/distribution/%{distsub}/%{distver}/repo/non-oss?mediahandler=curl2"
    alias="repo-non-oss-debug"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="https://codecs.opensuse.org/openh264/openSUSE_Leap?mediahandler=curl2"
    alias="repo-openh264"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/update/%{distsub}/%{distver}/oss?mediahandler=curl2"
    alias="update-oss"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/debug/update/%{distsub}/%{distver}/oss?mediahandler=curl2"
    alias="update-oss-debug"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/update/%{distsub}/%{distver}/non-oss?mediahandler=curl2"
    alias="update-non-oss"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/debug/update/%{distsub}/%{distver}/non-oss?mediahandler=curl2"
    alias="update-non-oss-debug"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/update/%{distsub}/%{distver}/backports?mediahandler=curl2"
    alias="update-backports"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/update/%{distsub}/%{distver}/backports_debug?mediahandler=curl2"
    alias="update-backports-debug"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/update/%{distsub}/%{distver}/sle?mediahandler=curl2"
    alias="update-sle"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/debug/update/%{distsub}/%{distver}/sle?mediahandler=curl2"
    alias="update-sle-debug"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

</repoindex>
0707010000000F000081A40000000000000000000000016887617700000720000000000000000000000000000000000000003E00000000openSUSE-repos-20250728.9adc675/opensuse-leap16-repoindex.xml<repoindex ttl="0"
    disturl="http://cdn.opensuse.org"
    distsub="leap"
    distver="${releasever}"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/distribution/leap/%{distver}/repo/oss/$basearch"
    gpgkey="%{disturl}/distribution/leap/%{distver}/repo/oss/$basearch/repodata/repomd.xml.key"
    alias="repo-oss"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/debug/distribution/leap/%{distver}/repo/oss/$basearch"
    gpgkey="%{disturl}/debug/distribution/leap/%{distver}/repo/oss/$basearch/repodata/repomd.xml.key"
    alias="repo-oss-debug"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/source/distribution/leap/%{distver}/repo/oss"
    gpgkey="%{disturl}/source/distribution/leap/%{distver}/repo/oss/repodata/repomd.xml.key"
    alias="repo-oss-source"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/distribution/leap/%{distver}/repo/non-oss/$basearch"
    gpgkey="%{disturl}/distribution/leap/%{distver}/repo/non-oss/$basearch/repodata/repomd.xml.key"
    alias="repo-non-oss"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/debug/distribution/leap/%{distver}/repo/non-oss/$basearch"
    gpgkey="%{disturl}/debug/distribution/leap/%{distver}/repo/non-oss/$basearch/repodata/repomd.xml.key"
    alias="repo-non-oss-debug"
    name="%{alias} (%{distver})"
    enabled="false"
    autorefresh="true"/>

<repo url="https://codecs.opensuse.org/openh264/openSUSE_Leap_16"
    gpgkey="https://codecs.opensuse.org/openh264/openSUSE_Leap_16/repodata/repomd.xml.key"
    alias="repo-openh264"
    name="%{alias} (%{distver})"
    enabled="true"
    autorefresh="true"/>

</repoindex>
07070100000010000081A400000000000000000000000168876177000003E2000000000000000000000000000000000000003F00000000openSUSE-repos-20250728.9adc675/opensuse-microos-repoindex.xml<repoindex ttl="0"
    disturl="http://cdn.opensuse.org"
    distsub="tumbleweed"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/%{distsub}/repo/oss"
    alias="repo-oss"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/debug/%{distsub}/repo/oss"
    alias="repo-oss-debug"
    name="%{alias}"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/source/%{distsub}/repo/oss"
    alias="repo-oss-source"
    name="%{alias}"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/%{distsub}/repo/non-oss"
    alias="repo-non-oss"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

<repo url="https://codecs.opensuse.org/openh264/openSUSE_Tumbleweed"
    alias="repo-openh264"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/update/%{distsub}"
    alias="update-tumbleweed"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

</repoindex>
07070100000011000081A400000000000000000000000168876177000003FE000000000000000000000000000000000000004000000000openSUSE-repos-20250728.9adc675/opensuse-slowroll-repoindex.xml<repoindex ttl="0"
    disturl="http://download.opensuse.org"
    distsub="slowroll"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/%{distsub}/repo/oss"
    alias="repo-oss"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/debug/%{distsub}/repo/oss"
    alias="repo-oss-debug"
    name="%{alias}"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/source/%{distsub}/repo/oss"
    alias="repo-oss-source"
    name="%{alias}"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/%{distsub}/repo/non-oss"
    alias="repo-non-oss"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

<repo url="https://codecs.opensuse.org/openh264/openSUSE_Tumbleweed"
    alias="repo-openh264"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/update/%{distsub}/repo/oss"
    alias="update-slowroll"
    name="%{alias}"
    enabled="true"
    priority="80"
    autorefresh="true"/>

</repoindex>
07070100000012000081A40000000000000000000000016887617700000704000000000000000000000000000000000000004800000000openSUSE-repos-20250728.9adc675/opensuse-tumbleweed-ports-repoindex.xml<repoindex ttl="0"
    disturl="http://cdn.opensuse.org"
    distsub="tumbleweed"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/ports/$DIST_ARCH/%{distsub}/repo/oss"
    gpgkey="%{disturl}/ports/$DIST_ARCH/%{distsub}/repo/oss/repodata/repomd.xml.key"
    alias="repo-oss"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/ports/$DIST_ARCH/debug/%{distsub}/repo/oss"
    gpgkey="%{disturl}/ports/$DIST_ARCH/debug/%{distsub}/repo/oss/repodata/repomd.xml.key"
    alias="repo-oss-debug"
    name="%{alias}"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/ports/$DIST_ARCH/source/%{distsub}/repo/oss"
    gpgkey="%{disturl}/ports/$DIST_ARCH/source/%{distsub}/repo/oss/repodata/repomd.xml.key"
    alias="repo-oss-source"
    name="%{alias}"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/ports/$DIST_ARCH/%{distsub}/repo/non-oss"
    gpgkey="%{disturl}/ports/$DIST_ARCH/%{distsub}/repo/non-oss/repodata/repomd.xml.key"
    alias="repo-non-oss"
    name="%{alias}"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/ports/$DIST_ARCH/source/%{distsub}/repo/non-oss"
    gpgkey="%{disturl}/ports/$DIST_ARCH/source/%{distsub}/repo/non-oss/repodata/repomd.xml.key"
    alias="repo-non-oss-source"
    name="%{alias}"
    enabled="false"
    autorefresh="true"/>

<repo url="https://codecs.opensuse.org/openh264/openSUSE_Tumbleweed"
    gpgkey="https://codecs.opensuse.org/openh264/openSUSE_Tumbleweed/repodata/repomd.xml.key"
    alias="repo-openh264"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/ports/$DIST_ARCH/update/%{distsub}"
    alias="update-tumbleweed"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

</repoindex>
07070100000013000081A400000000000000000000000168876177000005A3000000000000000000000000000000000000004200000000openSUSE-repos-20250728.9adc675/opensuse-tumbleweed-repoindex.xml<repoindex ttl="0"
    disturl="http://cdn.opensuse.org"
    distsub="tumbleweed"
    debugenable="false"
    sourceenable="false">

<repo url="%{disturl}/%{distsub}/repo/oss"
    gpgkey="%{disturl}/%{distsub}/repo/oss/repodata/repomd.xml.key"
    alias="repo-oss"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/debug/%{distsub}/repo/oss"
    gpgkey="%{disturl}/debug/%{distsub}/repo/oss/repodata/repomd.xml.key"
    alias="repo-oss-debug"
    name="%{alias}"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/source/%{distsub}/repo/oss"
    gpgkey="%{disturl}/source/%{distsub}/repo/oss/repodata/repomd.xml.key"
    alias="repo-oss-source"
    name="%{alias}"
    enabled="false"
    autorefresh="true"/>

<repo url="%{disturl}/%{distsub}/repo/non-oss"
    gpgkey="%{disturl}/%{distsub}/repo/non-oss/repodata/repomd.xml.key"
    alias="repo-non-oss"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

<repo url="https://codecs.opensuse.org/openh264/openSUSE_Tumbleweed"
    gpgkey="https://codecs.opensuse.org/openh264/openSUSE_Tumbleweed/repodata/repomd.xml.key"
    alias="repo-openh264"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

<repo url="%{disturl}/update/%{distsub}"
    gpgkey="%{disturl}/update/%{distsub}/repodata/repomd.xml.key"
    alias="update-tumbleweed"
    name="%{alias}"
    enabled="true"
    autorefresh="true"/>

</repoindex>
07070100000014000041ED0000000000000000000000026887617700000000000000000000000000000000000000000000002200000000openSUSE-repos-20250728.9adc675/t07070100000015000081ED00000000000000000000000168876177000001E9000000000000000000000000000000000000003300000000openSUSE-repos-20250728.9adc675/t/01-tumbleweed.sh#!lib/test-in-container-systemd.sh tumbleweed

set -e

mkdir -p /usr/share/zypp/local/service/openSUSE/repo/
ln -sf /opt/project/opensuse-tumbleweed-repoindex.xml /usr/share/zypp/local/service/openSUSE/repo/repoindex.xml
zypper addservice /usr/share/zypp/local/service/openSUSE/ openSUSE

zypper -vvv ref -s

grep -r baseurl /etc/zypp/repos.d
grep -r baseurl /etc/zypp/repos.d | grep -q cdn.opensuse.org

# make sure we can install a random package
zypper -vvvn in vim-small

echo success
07070100000016000081ED00000000000000000000000168876177000004AC000000000000000000000000000000000000002D00000000openSUSE-repos-20250728.9adc675/t/02-leap.sh#!lib/test-in-container-systemd.sh leap

set -e

mkdir -p /usr/share/zypp/local/service/openSUSE/repo/
ln -sf /opt/project/opensuse-leap-repoindex.xml /usr/share/zypp/local/service/openSUSE/repo/repoindex.xml
zypper addservice /usr/share/zypp/local/service/openSUSE/ openSUSE

echo =======================
curl -is https://cdn.opensuse.org/update/leap/15.5/sle/repodata/repomd.xml
curl -is https://download.opensuse.org/update/leap/15.5/sle/repodata/repomd.xml
echo =======================
curl -is https://cdn.opensuse.org/update/leap/15.5/sle/repodata/repomd.xml.key
curl -is https://download.opensuse.org/update/leap/15.5/sle/repodata/repomd.xml.key
echo =======================
curl -is https://cdn.opensuse.org/update/leap/15.5/sle/repodata/repomd.xml.asc
curl -is https://download.opensuse.org/update/leap/15.5/sle/repodata/repomd.xml.asc
echo =======================

echo =======================
zypper -vvv ref -s || ( tail -n 200 /var/log/zypper.log && ( sleep 1; exit 1 ) )

echo =======================

grep -r baseurl /etc/zypp/repos.d
grep -r baseurl /etc/zypp/repos.d | grep -q cdn.opensuse.org

# make sure we can install a random package
zypper -vvvn in vim-small

echo success
07070100000017000081A4000000000000000000000001688761770000005A000000000000000000000000000000000000002B00000000openSUSE-repos-20250728.9adc675/t/Makefile

test_container:
	( for f in *.sh; do ./$$f && continue; echo FAIL $$f; exit 1 ; done )

07070100000018000081A40000000000000000000000016887617700000464000000000000000000000000000000000000002C00000000openSUSE-repos-20250728.9adc675/t/README.mdScripts to test using podman containers
-------------------

The goal is to cover following workflow:

* Change xml files.
* Spawn a container, add zypper service.
* Check basic installation of a package to verify outcome.

The test is set of bash commands.
The script relies on shebang to prepare an image and spawn a container.

###### Example: Run test for mysql states:

```bash
cd t
./01-tumbleweed.sh
```

#### By default, a container is destroyed when the test finishes.

This is to simplify re-run of tests and do not flood machine with leftover containers after tests.
To make sure container stays around after faiure - set environment variable *T_PAUSE_ON_FAILURE* to 1

###### Example: Connect to the container after test failure

```bash
> # terminal 1
> echo fail >> 01-tumbleweed.sh
> T_PAUSE_ON_FAILURE=1 ./01-tumbleweed.sh
...
bash: line 18: fail: command not found
Test failed, press any key to finish
```
The terminal will wait for any input to finish the test and clean up the container.
Now use another terminal window to check the running podman container and get into it for eventual troubleshooting:

07070100000019000041ED0000000000000000000000026887617700000000000000000000000000000000000000000000002600000000openSUSE-repos-20250728.9adc675/t/lib0707010000001A000081ED00000000000000000000000168876177000009E1000000000000000000000000000000000000004300000000openSUSE-repos-20250728.9adc675/t/lib/test-in-container-systemd.sh#!/bin/bash
#
# Copyright (C) 2024 SUSE LLC
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, see <http://www.gnu.org/licenses/>.

last=${@:$#} # last parameter
other=${*%${!#}} # all parameters except the last
other=$(echo $other) # remove trailing space
image="${other##* }"

set -euo pipefail

test "$image" != "" || (echo empty image, exiting; exit 1)

testcase=$last

PODMAN=podman
(
PODMAN_info="$($PODMAN info >/dev/null 2>&1)" || $PODMAN info
[ -n "$testcase" ] || (echo No testcase provided; exit 1)
[ -f "$testcase" ] || (echo Cannot find file "$testcase"; exit 1 )
) >&2

thisdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
basename=$(basename "$testcase")
basename=${basename,,}
basename=${basename//:/_}


ident=opensuse.repo.t.$image
containername="$ident.${basename,,}"

echo image=$image
(
echo image2=$image
)

(
echo FROM registry.opensuse.org/opensuse/$image
cat << EOF
ENV container podman

ENV LANG en_US.UTF-8

RUN zypper -vvvn install systemd

WORKDIR /opt/project

# ENTRYPOINT ["tail", "-f", "/dev/null"]
ENTRYPOINT ["/usr/lib/systemd/systemd"]
EOF
) | $PODMAN build -t $ident.image -f - $thisdir/../..

$PODMAN run --privileged --rm --name "$containername" -d -v"$thisdir/../..":/opt/project -- $ident.image

in_cleanup=0

ret=111

function cleanup {
    [ "$in_cleanup" != 1 ] || return
    in_cleanup=1
    if [ "$ret" != 0 ] && [ -n "${T_PAUSE_ON_FAILURE-}" ]; then
        read -rsn1 -p"Test failed, press any key to finish";echo
    fi
    [ "$ret" == 0 ] || echo FAIL $basename
    $PODMAN stop -t 0 "$containername" >&/dev/null || :
}

trap cleanup INT TERM EXIT
counter=1

# wait container start
until [ $counter -gt 10 ]; do
  sleep 0.5
  $PODMAN exec "$containername" pwd >& /dev/null && break
  ((counter++))
done

$PODMAN exec "$containername" pwd >& /dev/null || (echo Cannot start container; exit 1 ) >&2

set +e
$PODMAN exec -e TESTCASE="$testcase"  -i "$containername" bash -xe < "$testcase"
ret=$?
( exit $ret )

07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!66 blocks
openSUSE Build Service is sponsored by