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