#!/usr/bin/env python3
# Copyright Red Hat
#
# This script 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 3 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 .
#
# Author: Adam Williamson
# Modifications: Trevor Cooper
# Original Source: https://pagure.io/fedora-qa/qa-misc/blob/master/f/testpackages
# Script to create test packages and repos (currently, a single repo
# containing a fake acpica-tools package) for openQA package
# management testing.
import os
import shutil
import sys
import rpmfluff
# The concept behind using a fake (low-versioned) acpica-tools is
# so we can test updating from the official repos. It gives us a 99%
# assurance we have a package we will be able to update, as it's a
# very simple package that has minimal dependencies and rarely
# changes. It is not critical path, so updates to it do not themselves
# get tested (which can produce odd consequences and is why we no
# longer use python3-kickstart). It is present in both Rocky Linux 8
# Rocky Linux 9 as well as in upstream Fedora mainline and Fedora ELN
# allowing us to match upstream changes more easily.
pkgacpi = rpmfluff.SimpleRpmBuild('acpica-tools', '1', '1', ['noarch'])
pkgacpi.addVendor("Rocky Enterprise Software Foundation")
pkgacpi.addPackager("Rocky Linux Build System (Peridot) ")
# temporary, while we're switching from pandoc to acpi
pkgpandoc = rpmfluff.SimpleRpmBuild('pandoc-common', '1', '1', ['noarch'])
pkgpandoc.addVendor("Rocky Enterprise Software Foundation")
pkgpandoc.addPackager("Rocky Linux Koji ")
repo1 = rpmfluff.YumRepoBuild([pkgacpi, pkgpandoc])
repo1dir = 'openqa-testrepo-1'
def cleanup(repos=True):
dirs = [pkgacpi.get_base_dir(), pkgpandoc.get_base_dir()]
if repos:
dirs.extend((repo1dir,))
for _dir in dirs:
if os.path.isdir(_dir):
shutil.rmtree(_dir)
cleanup()
os.mkdir(repo1dir)
repo1.repoDir = repo1dir
repo1.make('noarch')
README = """This repository contains empty test packages for openQA package
management tool testing. The repository and packages were created with the
'tools/testpackages8' script from the openqa-testrepos repository:
https://git.resf.org/testing/openqa-testrepos
"""
with open('/'.join((repo1dir, 'README')), 'w') as rmfh:
rmfh.write(README)
cleanup(repos=False)