Update to 5^20260604git6376095 (sync with Fedora)

- Update openQA 4.6 -> 5 to match Fedora; refresh the Fedora messaging /
  update-restart plugins, configs, and pre-generated asset cache for the
  new snapshot.
- Re-sync the spec with Fedora v5 (drop the stale older baseline).
- Carry Fedora backports: skip tests_dependencies.t earlier, and support
  invent.kde.org / work_items in bug URLs.
- Pairs with os-autoinst 5 (the worker no longer caps os-autoinst < 5).
This commit is contained in:
Andrew Lukoshko 2026-07-20 19:45:53 +02:00
parent f5eaebd0d6
commit 990da3102b
9 changed files with 515 additions and 83 deletions

4
.gitignore vendored
View File

@ -1,2 +1,2 @@
SOURCES/openQA-46f13d3b28d19cbc8e5eca1abbbae4dd52fa6bf6.tar.gz
SOURCES/assetcache-46f13d3b28d19cbc8e5eca1abbbae4dd52fa6bf6.tar.xz
SOURCES/openQA-637609536026a0950adf5d3aa30b54f16c73e178.tar.gz
SOURCES/assetcache-637609536026a0950adf5d3aa30b54f16c73e178.tar.xz

View File

@ -1,2 +1,2 @@
964133352c77f027cdd53b25b07f341110c024fd SOURCES/openQA-46f13d3b28d19cbc8e5eca1abbbae4dd52fa6bf6.tar.gz
b219dc292b1e789bb2352962872dd87554aba832 SOURCES/assetcache-46f13d3b28d19cbc8e5eca1abbbae4dd52fa6bf6.tar.xz
6cb0c8ca0be44ba7e9eda423fd497f8102977af2 SOURCES/openQA-637609536026a0950adf5d3aa30b54f16c73e178.tar.gz
14ff43991d8e0644245a6d474219d09163edbfc9 SOURCES/assetcache-637609536026a0950adf5d3aa30b54f16c73e178.tar.xz

View File

@ -0,0 +1,75 @@
From a5465d3a37632a503c772f0c87f4d03f198ecdbf Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Fri, 5 Jun 2026 16:14:57 -0700
Subject: [PATCH] fix: Support invent.kde.org and 'work_items' in bug URL
handling
https://invent.kde.org is another issue tracker we should know
about. It's Gitlab.
While we're here, also handle Gitlab URLs with 'work_items' in
them instead of 'issues', as Gitlab rebranded that recently. We
don't need to support this in the other direction (ref to URL)
yet, fortunately - Gitlab redirects /issues/ to /work_items/.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
lib/OpenQA/Utils.pm | 7 ++++++-
t/16-utils.t | 2 ++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/lib/OpenQA/Utils.pm b/lib/OpenQA/Utils.pm
index 4bb40db6e..e73617d15 100644
--- a/lib/OpenQA/Utils.pm
+++ b/lib/OpenQA/Utils.pm
@@ -49,6 +49,7 @@ BEGIN {
poo => 'https://progress.opensuse.org/issues/',
gh => 'https://github.com/',
kde => 'https://bugs.kde.org/show_bug.cgi?id=',
+ kdi => 'https://invent.kde.org/',
fdo => 'https://bugs.freedesktop.org/show_bug.cgi?id=',
jsc => 'https://jira.suse.com/browse/',
pio => 'https://pagure.io/',
@@ -66,6 +67,7 @@ BEGIN {
$BUGREFS{poo} => 'poo',
$BUGREFS{gh} => 'gh',
$BUGREFS{kde} => 'kde',
+ $BUGREFS{kdi} => 'kdi',
$BUGREFS{fdo} => 'fdo',
$BUGREFS{jsc} => 'jsc',
$BUGREFS{pio} => 'pio',
@@ -441,6 +443,8 @@ sub bugurl ($bugref) {
# same page as https://github.com/os-autoinst/openQA/pull/966 and vice
# versa for both an issue as well as pull request
# for pagure.io it has to be "issue", not "issues"
+ # gitlab rebranded "issues" to "work_items" in 2026, but so far
+ # they're keeping a redirect so we can still use "issues" for now
$bugref =~ BUGREF_REGEX or return $bugref;
my $issuetext = $+{marker} eq 'pio' ? 'issue' : 'issues';
return $BUGREFS{$+{marker}} . ($+{repo} ? "$+{repo}/$issuetext/" : '') . $+{id};
@@ -464,7 +468,8 @@ sub href_to_bugref ($text) {
# interchangeable, see comment in 'bugurl', too
# gitlab URLs have an odd /-/ after the repo name, e.g.
# https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5244
- $regex = qr{(?<!["\(\[])(?<url_root>$regex)((?<repo>.*?)/(-/)?(issues?|pull)/)?(?<id>([A-Z]+-)?\d+)(?![\w])};
+ $regex
+ = qr{(?<!["\(\[])(?<url_root>$regex)((?<repo>.*?)/(-/)?(issues?|pull|work_items)/)?(?<id>([A-Z]+-)?\d+)(?![\w])};
$text =~ s{$regex}{@{[$BUGURLS{$+{url_root}} . ($+{repo} ? '#' . $+{repo} : '')]}#$+{id}}gi;
return $text;
}
diff --git a/t/16-utils.t b/t/16-utils.t
index 111acb6ff..fc910cb6c 100644
--- a/t/16-utils.t
+++ b/t/16-utils.t
@@ -142,6 +142,8 @@ is href_to_bugref('https://gitlab.gnome.org/GNOME/foo/-/issues/1234'), 'ggo#GNOM
is href_to_bugref('https://gitlab.com/fedora/sigs/flatpak/fedora-flatpaks/-/issues/26'),
'gfs#flatpak/fedora-flatpaks#26',
'Fedora SIGs gitlab url to bugref';
+is href_to_bugref('https://invent.kde.org/plasma/systemsettings/-/work_items/49'), 'kdi#plasma/systemsettings#49',
+ 'KDE Invent gitlab url to bugref (with newer "work_items" name)';
is find_bug_number('yast_roleconf-ntp-servers-empty-bsc1114818-20181115.png'), 'bsc1114818',
'find the bug number from the needle name';
--
2.54.0

View File

@ -0,0 +1,45 @@
From b744b8a9033260380c359b068497d264088e6a10 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Thu, 4 Jun 2026 16:00:11 -0700
Subject: [PATCH] t: Skip earlier in tests_dependencies.t
Skipping after the first subtest causes the test system to get
confused and fail:
Test Summary Report
-------------------
t/ui/16-tests_dependencies.t (Wstat: 0 Tests: 1 Failed: 0)
Parse errors: Bad plan. You planned 0 tests but ran 1.
So we must skip the whole thing if Selenium isn't present, even
though that first subtest doesn't really need it.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
t/ui/16-tests_dependencies.t | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/t/ui/16-tests_dependencies.t b/t/ui/16-tests_dependencies.t
index 6dfa7e4ff..53600db26 100644
--- a/t/ui/16-tests_dependencies.t
+++ b/t/ui/16-tests_dependencies.t
@@ -19,6 +19,8 @@ use OpenQA::JobDependencies::Constants qw(CHAINED DIRECTLY_CHAINED PARALLEL);
use OpenQA::Jobs::Constants;
use OpenQA::WebAPI::Controller::Test;
+driver_missing unless my $driver = call_driver;
+
subtest 'detailed behavior of merging parallel jobs into clusters' => sub {
my (%clusters, %cluster_by_job);
my %data = (cluster => \%clusters, cluster_by_job => \%cluster_by_job);
@@ -79,7 +81,6 @@ $dependencies->create({child_job_id => 99945, parent_job_id => 99937, dependency
$dependencies->create({child_job_id => 99927, parent_job_id => 99961, dependency => DIRECTLY_CHAINED});
my $t = Test::Mojo->new('OpenQA::WebAPI');
-driver_missing unless my $driver = call_driver;
sub get_tooltip ($job_id) {
$driver->execute_script("return \$('#nodeTable$job_id').closest('.node').data('bs-original-title');");
--
2.54.0

View File

@ -76,13 +76,14 @@ EOF
my $tempdir = tempdir;
$ENV{OPENQA_CONFIG} = $tempdir;
path($ENV{OPENQA_CONFIG})->make_path->child("openqa.ini")->spurt($conf);
path($ENV{OPENQA_CONFIG})->make_path->child("openqa.ini")->spew($conf);
my $t = Test::Mojo->new('OpenQA::WebAPI');
# XXX: Test::Mojo loses its app when setting a new ua
# https://github.com/kraih/mojo/issues/598
my $app = $t->app;
$app->config->{'scm git'}->{git_auto_update} = 'no';
$t->ua(
OpenQA::Client->new(apikey => 'PERCIVALKEY02', apisecret => 'PERCIVALSECRET02')->ioloop(Mojo::IOLoop->singleton));
$t->app($app);
@ -259,7 +260,6 @@ subtest 'duplicate and pass job' => sub {
subtest 'create update job' => sub {
$plugin_mock_callcount = 0;
diag("Count: $plugin_mock_callcount");
$settings->{BUILD} = 'Update-FEDORA-2019-6bda4c81f4';
# this is intentionally not in alphabetical order
$settings->{ADVISORY_NVRS} = 'kernel-5.2.7-100.fc29 kernel-tools-5.2.7-100.fc29 kernel-headers-5.2.7-100.fc29';
@ -271,7 +271,6 @@ subtest 'create update job' => sub {
delete $settings->{SUBVARIANT};
$t->post_ok("/api/v1/jobs" => form => $settings)->status_is(200);
ok(my $updatejob = $t->tx->res->json->{id}, 'got ID of update job');
diag("Count: $plugin_mock_callcount");
ok($plugin_mock_callcount == 1, 'mock was called');
my ($body, $headerframe) = @{$published{'org.fedoraproject.stg.ci.fedora-update.test.queued'}};
$expected_artifact = {
@ -316,14 +315,12 @@ subtest 'create update job' => sub {
subtest 'create update job (new-style ADVISORY_NVR_N)' => sub {
$plugin_mock_callcount = 0;
diag("Count: $plugin_mock_callcount");
delete $settings->{ADVISORY_NVRS};
# these are intentionally not in alphabetical order
$settings->{ADVISORY_NVRS_1} = 'kernel-5.2.8-100.fc29 kernel-tools-5.2.8-100.fc29';
$settings->{ADVISORY_NVRS_2} = 'kernel-headers-5.2.8-100.fc29';
$t->post_ok("/api/v1/jobs" => form => $settings)->status_is(200);
ok(my $newupdatejob = $t->tx->res->json->{id}, 'got ID of new-style update job');
diag("Count: $plugin_mock_callcount");
ok($plugin_mock_callcount == 1, 'mock was called');
my ($body, $headerframe) = @{$published{'org.fedoraproject.stg.ci.fedora-update.test.queued'}};
$expected_artifact = {

View File

@ -24,7 +24,7 @@ package OpenQA::WebAPI::Plugin::FedoraMessaging;
use Digest::SHA qw(sha256_hex);
use POSIX qw(strftime);
use Mojo::Base 'OpenQA::WebAPI::Plugin::AMQP';
use Mojo::Base 'OpenQA::WebAPI::Plugin::AMQP', -signatures;
use OpenQA::Jobs::Constants;
use OpenQA::Log qw(log_debug log_error);
use OpenQA::Utils;
@ -36,8 +36,14 @@ sub _iso8601_now {
return $now;
}
sub publish_amqp {
my ($self, $topic, $event_data, $headerframe) = @_;
sub publish_amqp ($self, $topic, $event_data, $headerframe = {}, $remaining_attempts = undef, $retry_delay = undef) {
# note: the parent method has a retry mechanism which means that
# if publication fails, *this* method will be re-run with
# $headerframe populated, $remaining_attempts decremented and
# $retry_delay increased
# re-doing the wrap in this case is harmless as we ultimately
# merge the newly-created frame with the passed-in one and give
# the passed-in one priority
my $sentat = _iso8601_now;
my $messageid = create_uuid_string;
# default fedora-messaging compliant header frame. Ridiculous
@ -59,10 +65,10 @@ sub publish_amqp {
message_id => $messageid,
);
# merge in the passed header frame values to allow overriding
$headerframe //= {};
%fullheaderframe = (%fullheaderframe, %$headerframe);
# call parent method
$self->SUPER::publish_amqp($topic, $event_data, \%fullheaderframe);
# call parent method. it's vital that we pass through $remaining_attempts
# to avoid an eternal loop
$self->SUPER::publish_amqp($topic, $event_data, \%fullheaderframe, $remaining_attempts, $retry_delay);
}
sub log_event_fedora_ci_messages {

View File

@ -1,3 +1,3 @@
# Type Name ID GECOS [HOME] Shell
u geekotest - "openQA user" /var/lib/openqa /bin/bash
m geekotest nogroup
m geekotest nobody

View File

@ -1,4 +1,4 @@
# Type Name ID GECOS [HOME] Shell
u _openqa-worker - "openQA worker" /var/lib/empty /bin/bash
m _openqa-worker nogroup
m _openqa-worker qemu
m _openqa-worker kvm

View File

@ -1,3 +1,4 @@
# AlmaLinux spec, tracked from the Fedora openQA package.
# Fedora spec initially based on upstream spec file from OBS:
# https://build.opensuse.org/package/view_file/devel:openQA/openQA/openQA.spec
# License: GPLv2+
@ -22,15 +23,18 @@
%global github_owner os-autoinst
%global github_name openQA
%global github_version 4.6
%global github_commit 46f13d3b28d19cbc8e5eca1abbbae4dd52fa6bf6
%global github_version 5
%global github_commit 637609536026a0950adf5d3aa30b54f16c73e178
# if set, will be a post-release snapshot build, otherwise a 'normal' build
%global github_date 20230731
%global github_date 20260604
%global shortcommit %(c=%{github_commit}; echo ${c:0:7})
# can't use linebreaks here!
%global openqa_services openqa-webui.service openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-enqueue-audit-event-cleanup.service openqa-enqueue-audit-event-cleanup.timer openqa-enqueue-asset-cleanup.service openqa-enqueue-asset-cleanup.timer openqa-enqueue-result-cleanup.service openqa-enqueue-result-cleanup.timer openqa-enqueue-bug-cleanup.service openqa-enqueue-bug-cleanup.timer
%global openqa_main_service openqa-webui.service
%global openqa_extra_services openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-enqueue-audit-event-cleanup.service openqa-enqueue-audit-event-cleanup.timer openqa-enqueue-asset-cleanup.service openqa-enqueue-git-auto-update.service openqa-enqueue-asset-cleanup.timer openqa-enqueue-result-cleanup.service openqa-enqueue-result-cleanup.timer openqa-enqueue-bug-cleanup.service openqa-enqueue-bug-cleanup.timer openqa-enqueue-git-auto-update.timer openqa-enqueue-needle-ref-cleanup.service openqa-enqueue-needle-ref-cleanup.timer openqa-enqueue-scheduled-product-cleanup.service openqa-enqueue-scheduled-product-cleanup.timer
%global openqa_services %{openqa_main_service} %{openqa_extra_services}
%global openqa_worker_services openqa-worker.target openqa-slirpvde.service openqa-vde_switch.service openqa-worker-cacheservice.service openqa-worker-cacheservice-minion.service
%global openqa_localdb_services openqa-setup-db.service openqa-dump-db.service openqa-dump-db.timer
%if %{undefined tmpfiles_create}
%global tmpfiles_create() \
@ -39,23 +43,33 @@
%endif
# diff from SUSE: we have 'openqa-client', they have 'openQA-client'
%define python_scripts_requires python3-requests python3-future openqa-client
%define python_scripts_requires python3-requests openqa-client
# The following line is generated from dependencies.yaml (upstream)
%define assetpack_requires perl(CSS::Minifier::XS) >= 0.01 perl(JavaScript::Minifier::XS) >= 0.11 perl(Mojolicious::Plugin::AssetPack) >= 1.36
%define assetpack_requires perl(CSS::Minifier::XS) >= 0.01 perl(JavaScript::Minifier::XS) >= 0.11 perl(Mojolicious) perl(Mojolicious::Plugin::AssetPack) >= 1.36 perl(YAML::PP) >= 0.026
# Diff from SUSE: we use 'perl-interpreter' where they use 'perl',
# our 'perl' is a metapackage and we don't want all of it
# we use 'chrony' where they use 'ntp-daemon'
# their versioning of mojolicious is different due to
# https://github.com/openSUSE/cpanspec/issues/47
# The following line is generated from dependencies.yaml (upstream)
%define common_requires perl-interpreter >= 5.20.0 perl(Archive::Extract) > 0.7 perl(Carp::Always) >= 0.14.02 perl(Config::IniFiles) perl(Config::Tiny) perl(Cpanel::JSON::XS) >= 4.09 perl(Cwd) perl(Data::Dump) perl(Data::Dumper) perl(Digest::MD5) perl(Filesys::Df) perl(Getopt::Long) perl(Minion) >= 10.25 perl(Mojolicious) >= 9.30 perl(Regexp::Common) perl(Storable) perl(Time::Moment) perl(Try::Tiny)
%define common_requires chrony perl-interpreter >= 5.20.0 perl(Carp::Always) >= 0.14.02 perl(Config::IniFiles) perl(Cpanel::JSON::XS) >= 4.09 perl(Cwd) perl(Data::Dump) perl(Data::Dumper) perl(Digest::MD5) perl(Feature::Compat::Try) perl(Filesys::Df) perl(Getopt::Long) perl(HTTP::Status) perl(Minion) >= 10.25 perl(Mojolicious) >= 9.34 perl(Regexp::Common) perl(Storable) perl(Text::Glob) perl(Time::Moment)
# Diff from SUSE: we package bsdcat and bsdtar separately
# runtime requirements for the main package that are not required by other sub-packages
# The following line is generated from dependencies.yaml (upstream)
%define main_requires %assetpack_requires git-core hostname perl(BSD::Resource) perl(Carp) perl(CommonMark) perl(Config::Tiny) perl(DBD::Pg) >= 3.7.4 perl(DBI) >= 1.632 perl(DBIx::Class) >= 0.082801 perl(DBIx::Class::DeploymentHandler) perl(DBIx::Class::DynamicDefault) perl(DBIx::Class::OptimisticLocking) perl(DBIx::Class::ResultClass::HashRefInflator) perl(DBIx::Class::Schema::Config) perl(DBIx::Class::Storage::Statistics) perl(Date::Format) perl(DateTime) perl(DateTime::Duration) perl(DateTime::Format::Pg) perl(Exporter) perl(Fcntl) perl(File::Basename) perl(File::Copy) perl(File::Copy::Recursive) perl(File::Path) perl(File::Spec) perl(FindBin) perl(Getopt::Long::Descriptive) perl(IO::Handle) perl(IPC::Run) perl(JSON::Validator) perl(LWP::UserAgent) perl(Module::Load::Conditional) perl(Module::Pluggable) perl(Mojo::Base) perl(Mojo::ByteStream) perl(Mojo::IOLoop) perl(Mojo::JSON) perl(Mojo::Pg) perl(Mojo::RabbitMQ::Client) >= 0.2 perl(Mojo::URL) perl(Mojo::Util) perl(Mojolicious::Commands) perl(Mojolicious::Plugin) perl(Mojolicious::Static) perl(Net::OpenID::Consumer) perl(POSIX) perl(Pod::POM) perl(SQL::Translator) perl(Scalar::Util) perl(Sort::Versions) perl(Text::Diff) perl(Time::HiRes) perl(Time::ParseDate) perl(Time::Piece) perl(Time::Seconds) perl(URI::Escape) perl(YAML::PP) >= 0.026 perl(YAML::XS) perl(aliased) perl(base) perl(constant) perl(diagnostics) perl(strict) perl(warnings)
%define main_requires %assetpack_requires bsdcat bsdtar git-core hostname openssh-clients perl(BSD::Resource) perl(Carp) perl(CommonMark) perl(DBD::Pg) >= 3.7.4 perl(DBI) >= 1.632 perl(DBIx::Class) >= 0.082801 perl(DBIx::Class::DeploymentHandler) perl(DBIx::Class::DynamicDefault) perl(DBIx::Class::OptimisticLocking) perl(DBIx::Class::ResultClass::HashRefInflator) perl(DBIx::Class::Schema::Config) perl(DBIx::Class::Storage::Statistics) perl(Date::Format) perl(DateTime) perl(DateTime::Duration) perl(DateTime::Format::Pg) perl(Exporter) perl(Fcntl) perl(File::Basename) perl(File::Copy) perl(File::Copy::Recursive) perl(File::Path) perl(File::Spec) perl(FindBin) perl(Getopt::Long::Descriptive) perl(IO::Handle) perl(IPC::Run) perl(JSON::Validator) perl(LWP::UserAgent) perl(Module::Load::Conditional) perl(Module::Pluggable) perl(Mojo::Base) perl(Mojo::ByteStream) perl(Mojo::IOLoop) perl(Mojo::JSON) perl(Mojo::Pg) perl(Mojo::RabbitMQ::Client) >= 0.2 perl(Mojo::URL) perl(Mojo::Util) perl(Mojolicious::Commands) perl(Mojolicious::Plugin) perl(Mojolicious::Plugin::OAuth2) perl(Mojolicious::Static) perl(Net::OpenID::Consumer) perl(POSIX) perl(Pod::POM) perl(SQL::Translator) perl(Scalar::Util) perl(Sort::Versions) perl(Text::Diff) perl(Time::HiRes) perl(Time::ParseDate) perl(Time::Piece) perl(Time::Seconds) perl(URI::Escape) perl(YAML::PP) >= 0.026 perl(YAML::XS) perl(aliased) perl(base) perl(constant) perl(diagnostics) perl(strict) perl(warnings)
# The following line is generated from dependencies.yaml (upstream)
%define client_requires curl git-core jq perl(Getopt::Long::Descriptive) perl(IO::Socket::SSL) >= 2.009 perl(IPC::Run) perl(JSON::Validator) perl(LWP::Protocol::https) perl(LWP::UserAgent) perl(Test::More) perl(YAML::PP) >= 0.020 perl(YAML::XS)
# Diff from SUSE 1: case (they have openQA-client, we have openqa-client)
# Diff from SUSE 2: we have 'sqlite' not 'sqlite3'
# Diff from SUSE 3: we package bsdcat and bsdtar separately
# The following line is generated from dependencies.yaml (upstream)
%define worker_requires openqa-client optipng os-autoinst < 5 perl(Capture::Tiny) perl(File::Map) perl(Minion::Backend::SQLite) >= 5.0.7 perl(Mojo::IOLoop::ReadWriteProcess) >= 0.26 perl(Mojo::SQLite) psmisc sqlite >= 3.24.0
%define worker_requires bsdcat bsdtar openqa-client optipng os-autoinst perl(Capture::Tiny) perl(File::Map) perl(Minion::Backend::SQLite) >= 5.0.7 perl(Mojo::IOLoop::ReadWriteProcess) >= 0.26 perl(Mojo::SQLite) psmisc sqlite >= 3.24.0
# Diff from SUSE: we don't have perl(MCP) packaged currently
# The following line is generated from dependencies.yaml (upstream)
%define mcp_requires %{nil}
# Diff from SUSE: they have npm as they run npm install in the spec,
# we do it in update-cache.sh
# The following line is generated from dependencies.yaml (upstream)
%define build_requires %assetpack_requires rubygem(sass)
@ -64,24 +78,33 @@
# package.
# Diff from SUSE: Selenium requirements dropped as not available in Fedora,
# critic and (python) yamllint requirements dropped as we don't run those
# checks in our package build (except Perl::Critic itself as the
# compile-check-all test fails on the in-tree critic module if we leave
# that out)
# checks in our package build, ssh-keygen is in openssh in Fedora
# (openssh-common in SUSE), Syntax::Keyword::Try::Deparse seems to be
# missing upstream
# The following line is generated from dependencies.yaml (upstream)
%define test_requires %common_requires %main_requires %python_scripts_requires %worker_requires ShellCheck curl jq os-autoinst-devel perl(App::cpanminus) perl(Mojolicious::Plugin::OAuth2) perl(Perl::Critic) perl(Test::Exception) perl(Test::Fatal) perl(Test::MockModule) perl(Test::MockObject) perl(Test::Mojo) perl(Test::Most) perl(Test::Output) perl(Test::Pod) perl(Test::Strict) perl(Test::Warnings) >= 0.029 postgresql-server
%define test_requires %common_requires %main_requires %mcp_requires %python_scripts_requires %worker_requires curl file jq openssh os-autoinst perl(App::cpanminus) perl(Test::Compile) perl(Test::Exception) perl(Test::Fatal) perl(Test::Mock::Time) perl(Test::MockModule) perl(Test::MockObject) perl(Test::Mojo) perl(Test::Most) perl(Test::Output) perl(Test::Pod) perl(Test::Strict) perl(Test::Warnings) >= 0.029 perl(Syntax::Keyword::Try::Deparse) postgresql-server
%ifarch x86_64
%define qemu qemu qemu-kvm
%else
%define qemu qemu
%endif
# Diff from SUSE: perl::Critic::Community is omitted as we do not package it,
# SUSE has python3-yamllint but we just have yamllint,
# SUSE has python3-gitlint and python3-ruff but we just have gitlint and ruff
# shfmt is omitted as our package for it was orphaned and retired
# Perl::Critic doesn't have a third version component on Fedora
# The following line is generated from dependencies.yaml (upstream)
%define style_check_requires ShellCheck perl(Code::TidyAll) perl(Perl::Critic) >= 1.156 perl(Pod::Markdown) perl(Test::Perl::Critic) gitlint ruff yamllint
# diff from SUSE: perl(Devel::Cover::Report::Codecovbash) dropped because
# it's not in Fedora (this means you can't run 'make coverage-codecov')
# xorg-x11-fonts dropped because that binary package doesn't exist in
# Fedora (it exists as a source package generating multiple binary
# packages) and I can't find any particular reason for it
# The following line is generated from dependencies.yaml (upstream)
%define devel_requires %build_requires %qemu %test_requires curl perl(Devel::Cover) perl(Perl::Tidy) postgresql-devel rsync sudo tar
%define devel_no_selenium_requires %build_requires %qemu %test_requires curl perl(Devel::Cover) perl(Perl::Tidy) postgresql-devel rsync sudo tar
%define cover_requires perl(Devel::Cover)
# diff from SUSE 1: xorg-x11-fonts dropped because that binary package
# doesn't exist in Fedora (it exists as a source package generating
# multiple binary packages) and I can't find any reason for it
# diff from SUSE 2: we don't have perl(Test::CheckGitStatus) packaged
# The following line is generated from dependencies.yaml (upstream)
%define devel_no_selenium_requires %build_requires %cover_requires %qemu %style_check_requires %test_requires curl make pandoc perl(Perl::Tidy) perl(TAP::Harness::JUnit) postgresql-devel python3-weasyprint rsync sudo tar
# diff from SUSE: chromedriver dropped as we don't package it
# that makes this look fairly silly, but we want to follow the SUSE
# spec as close as we can
@ -92,9 +115,11 @@
Name: openqa
Version: %{github_version}%{?github_date:^%{github_date}git%{shortcommit}}
Release: 2%{?dist}
Summary: OS-level automated testing framework
License: GPLv2+
Release: 1%{?dist}
Summary: Framework for automated system-level testing (web-frontend, scheduler and tools)
# openQA is mostly GPLv2+. some scripts and bundled Node modules are
# MIT, ace-builds is BSD-3-Clause
License: GPL-2.0-or-later AND MIT AND BSD-3-Clause
Url: http://os-autoinst.github.io/openQA/
Source0: https://github.com/%{github_owner}/%{github_name}/archive/%{github_commit}/%{github_name}-%{github_commit}.tar.gz
# pre-generated cached assets, build with update-cache.sh. We could
@ -114,11 +139,15 @@ Source3: FedoraMessaging.pm
# tests for the fedora-messaging publishing plugin
Source4: 23-fedora-messaging.t
# sysusers config files. note these are shipped in the upstream tarball
# but we cannot use the files from the tarball for %pre scriptlet
# generation, so we duplicate them as source files for that purpose;
# this is an ugly hack that should be removed if it becomes possible
# but we need to change the groups so we have our own versions here
Source5: geekotest.conf
Source6: openQA-worker.conf
# https://github.com/os-autoinst/openQA/pull/7504
# Fix 16-tests_dependencies.t when selenium is not present
Patch: 0001-t-Skip-earlier-in-tests_dependencies.t.patch
# https://github.com/os-autoinst/openQA/pull/7509
# Support invent.kde.org as a bug tracker (for bug links)
Patch: 0001-fix-Support-invent.kde.org-and-work_items-in-bug-URL.patch
BuildRequires: make
BuildRequires: %{python_scripts_requires}
@ -140,7 +169,6 @@ Requires(post): coreutils
# Standard for packages that have systemd services & sysusers
%{?systemd_requires}
%{?sysusers_requires_compat}
# the plugin is needed if the auth method is set to "oauth2"
Recommends: perl(Mojolicious::Plugin::OAuth2)
@ -148,10 +176,33 @@ Recommends: perl(Mojolicious::Plugin::OAuth2)
Recommends: perl(IO::Uncompress::UnXz)
# server needs to run an rsync server if worker caching is used
Recommends: rsync
# Optionally enabled with USE_PNGQUANT=1
Recommends: pngquant
# For the httpd subpackage split in 4.3-7, needed for updates to work right
Obsoletes: openqa < 4.3-7
# The NPM bundled dependency generator does not work as the modules
# seem to be stripped down to the minimum openQA needs - package.json
# is stripped out. So we have to list these manually
Provides: bundled(nodejs-ace-builds) = 1.43.1
Provides: bundled(nodejs-anser) = 2.3.2
Provides: bundled(nodejs-bootstrap) = 5.3.7
Provides: bundled(nodejs-chosen-js) = 1.8.7
Provides: bundled(nodejs-d3) = 7.9.0
Provides: bundled(nodejs-dagre-d3) = 0.6.4
Provides: bundled(nodejs-datatables.net) = 2.3.2
Provides: bundled(nodejs-datatables.net-bs5) = 2.3.2
Provides: bundled(nodejs-fork-awesome) = 1.2.0
Provides: bundled(nodejs-jquery) = 3.7.1
Provides: bundled(nodejs-jquery-ujs) = 1.2.3
Provides: bundled(nodejs-timeago) = 1.6.7
# Note: Fedora does not have the issue SUSE has with noarch. on Fedora
# if build for *any* arch fails, the build is considered failed for
# *all* arches, so we can never get in a situation where the
# perl-Mojolicious-Plugin-AssetPack version differs across arches as
# SUSE can
BuildArch: noarch
%description
@ -277,7 +328,6 @@ helper for interacting with the openQA REST API.
%package python-scripts
Summary: Additional scripts in python
Group: Development/Tools/Other
Requires: %python_scripts_requires
%description python-scripts
@ -285,29 +335,43 @@ Additional scripts for the use of openQA in the python programming language.
%package local-db
Summary: Helper package to ease setup of postgresql DB
Group: Development/Tools/Other
Requires: %name
Requires: %{name} = %{version}
Requires: postgresql-server
BuildRequires: postgresql-server
Supplements: packageand(%name:postgresql-server)
Supplements: (%{name} and postgresql-server)
%description local-db
You only need this package if you have a local postgresql server
next to the webui.
%package single-instance
Summary: Convenience package for a single-instance setup
Group: Development/Tools/Other
Requires: %{name} = %{version}
Summary: Convenience package for a single-instance setup using apache proxy
Provides: %{name}-single-instance-apache
Provides: %{name}-single-instance-apache2
Requires: %{name}-local-db
Requires: %{name} = %{version}
Requires: %{name}-worker = %{version}
Requires: httpd
%description single-instance
Use this package to setup a local instance with all services provided together.
%package single-instance-nginx
Summary: Convenience package for a single-instance setup using nginx proxy
Requires: %{name}-local-db
Requires: %{name} = %{version}
Requires: %{name}-worker = %{version}
Requires: nginx
%description single-instance-nginx
Use this package to setup a local instance with all services provided together.
%package bootstrap
Summary: Automated openQA setup
Requires: curl
Requires: iputils
Requires: procps
%description bootstrap
This can automatically setup openQA - either directly on your system
@ -320,6 +384,44 @@ Summary: The openQA documentation
Documentation material covering installation, configuration, basic test
writing, etc., covering both openQA and the os-autoinst test engine.
%package munin
Summary: Munin scripts
Requires: munin
Requires: munin-node
Requires: curl
Requires: perl-interpreter
%description munin
Use this package to install munin scripts that allow to monitor some openQA
statistics.
%package client-bash-completion
Summary: Bash Completion for %{name}
Group: Development/Tools/Other
Requires: bash-completion
Supplements: (%{name}-client and bash-completion)
%description client-bash-completion
The official bash completion script for openqa-cli.
%package client-zsh-completion
Summary: Zsh Completion for %{name}
Group: Development/Tools/Other
Supplements: (%{name}-client and zsh)
%description client-zsh-completion
The official zsh completion script for openqa-cli.
%package llm-server
Summary: Local LLM Server features for openQA workers
Requires: %{name}-worker = %{version}
Requires: podman
%description llm-server
openQA workers can optionally host a local llama.cpp server to provide
LLM features directly from the worker node. This package provides the
Podman Quadlet configuration to automatically manage the server.
%prep
%autosetup -p1 -n %{github_name}-%{github_commit} -a 1
sed -e 's,/bin/env python,/bin/python,' -i script/openqa-label-all
@ -328,6 +430,8 @@ sed -i -e 's,apache2\.service,httpd\.service,g' systemd/*.service
# ...Fedora keeps httpd config here, SUSE keeps it there.
sed -i -e 's,"$(DESTDIR)"/etc/apache2/vhosts.d,"$(DESTDIR)"%{_sysconfdir}/httpd/conf.d,g' Makefile
sed -i -e 's,/etc/apache2/vhosts.d,%{_sysconfdir}/httpd/conf.d,g' etc/apache2/vhosts.d/*
# ...Fedora keeps nginx config here, SUSE keeps it there.
sed -i -e 's,"$(DESTDIR)"/etc/nginx/vhosts.d,"$(DESTDIR)"%{_sysconfdir}/nginx/conf.d,g' Makefile
# These are the Fedora-y standard TLS cert/key locations.
sed -i -e 's,/etc/apache2/ssl.crt,%{_sysconfdir}/pki/tls/certs,g' etc/apache2/vhosts.d/*
sed -i -e 's,/etc/apache2/ssl.key,%{_sysconfdir}/pki/tls/private,g' etc/apache2/vhosts.d/*
@ -336,6 +440,9 @@ cp %{SOURCE2} lib/OpenQA/WebAPI/Plugin/
cp %{SOURCE3} lib/OpenQA/WebAPI/Plugin/
# we don't really need the tidy test
rm -f t/00-tidy.t
# we don't have the deps for the MCP feature yet
rm -f lib/OpenQA/WebAPI/Plugin/MCP.pm
rm -f t/api/17-mcp.t
# add the fedora-messaging publishing plugin test to the sources
cp %{SOURCE4} t/
@ -344,15 +451,11 @@ cp %{SOURCE4} t/
# this does nothing, but it's harmless, so just in case it turns up...
make %{?_smp_mflags}
%install
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
%make_install
mkdir -p %{buildroot}%{_datadir}/openqa/etc/openqa
ln -s %{_sysconfdir}/openqa/openqa.ini %{buildroot}%{_datadir}/openqa/etc/openqa/openqa.ini
ln -s %{_sysconfdir}/openqa/database.ini %{buildroot}%{_datadir}/openqa/etc/openqa/database.ini
mkdir -p %{buildroot}%{_bindir}
ln -s %{_datadir}/openqa/script/client %{buildroot}%{_bindir}/openqa-client
ln -s %{_datadir}/openqa/script/openqa-cli %{buildroot}%{_bindir}/openqa-cli
@ -362,8 +465,19 @@ ln -s %{_datadir}/openqa/script/openqa-load-templates %{buildroot}%{_bindir}/ope
ln -s %{_datadir}/openqa/script/openqa-clone-custom-git-refspec %{buildroot}%{_bindir}/openqa-clone-custom-git-refspec
ln -s %{_datadir}/openqa/script/openqa-validate-yaml %{buildroot}%{_bindir}/openqa-validate-yaml
ln -s %{_datadir}/openqa/script/setup-db %{buildroot}%{_bindir}/openqa-setup-db
ln -s %{_datadir}/openqa/script/dump-db %{buildroot}%{_bindir}/openqa-dump-db
ln -s %{_datadir}/openqa/script/openqa-label-all %{buildroot}%{_bindir}/openqa-label-all
install -d -m 755 %{buildroot}%{_datadir}/openqa/client
install -m 644 public/openqa-cli.yaml %{buildroot}%{_datadir}/openqa/client/openqa-cli.yaml
# munin
install -d -m 755 %{buildroot}/%{_datadir}/munin/plugins
install -m 755 contrib/munin/plugins/minion %{buildroot}/%{_datadir}/munin/plugins/openqa_minion_
install -d -m 755 %{buildroot}/%{_sysconfdir}/munin/plugin-conf.d
install -m 644 contrib/munin/config/minion.config %{buildroot}/%{_sysconfdir}/munin/plugin-conf.d/openqa-minion
install -m 755 contrib/munin/utils/munin-mail %{buildroot}/%{_datadir}/openqa/script/munin-mail
# on the whole I think it's "less bad" to install our duplicate copies
# of these over top of the ones from the tarball. if they ever go out
# of sync, at least our scriptlets will match the installed config
@ -376,11 +490,6 @@ grep -rl %{_bindir}/env . | while read file; do
sed -e 's,%{_bindir}/env perl,%{_bindir}/perl,' -i $file
done
mkdir %{buildroot}%{_localstatedir}/lib/openqa/pool/1
mkdir %{buildroot}%{_localstatedir}/lib/openqa/cache
mkdir %{buildroot}%{_localstatedir}/lib/openqa/webui
mkdir %{buildroot}%{_localstatedir}/lib/openqa/webui/cache
# We don't do AppArmor
rm -rf %{buildroot}%{_sysconfdir}/apparmor.d
# these scripts are very SUSE-specific
@ -388,6 +497,7 @@ rm -f %{buildroot}%{_datadir}/openqa/script/openqa-auto-update
rm -f %{buildroot}%{_datadir}/openqa/script/openqa-continuous-update
rm -f %{buildroot}%{_datadir}/openqa/script/openqa-rollback
rm -f %{buildroot}%{_datadir}/openqa/script/openqa-check-devel-repo
rm -f %{buildroot}%{_datadir}/openqa/script/openqa-clean-repo-cache
%check
@ -400,17 +510,12 @@ export LC_ALL=en_US.UTF-8
touch openqa-debug.log autoinst-log.txt
chmod a+w openqa-debug.log autoinst-log.txt
# we can't use 'unshare' in Fedora package build env
sed -i -e 's,unshare -r -n ,,g' t/40-script_openqa-clone-custom-git-refspec.t t/40-openqa-clone-job.t t/32-openqa_client-script.t
# these tests expect a 'not connected' error that it gets with unshare
# but with mock we get 'Connection refused', so just wipe them
sed -i -e '/fails without network/d' t/32-openqa_client-script.t t/40-openqa-clone-job.t
sed -i -e 's,unshare -r -n ,,g' t/40-script_openqa-clone-custom-git-refspec.t
# Skip tests not working currently, or flaky
rm \
t/01-test-utilities.t \
t/17-labels_carry_over.t \
t/25-cache-service.t \
t/34-developer_mode-unit.t \
t/44-scripts.t
t/25-cache-service.t
# "CI" set with longer timeouts as needed for higher performance variations
# within CI systems, e.g. OBS. See t/lib/OpenQA/Test/TimeLimit.pm
@ -421,15 +526,15 @@ export OPENQA_TEST_TIMEOUT_SCALE_CI=15
# packaging
export CONTAINER_TEST=0
export HELM_TEST=0
# We don't want fatal warnings during package building
export PERL_TEST_WARNINGS_ONLY_REPORT_WARNINGS=1
# GIT_CEILING_DIRECTORIES here avoids a case where git error handling
# can differ when you run the build in mock and cause 16-utils-runcmd
# to fail
make test GIT_CEILING_DIRECTORIES="/" CHECKSTYLE=0 PROVE_ARGS='-l -r' TEST_PG_PATH=%{buildroot}/DB
make test GIT_CEILING_DIRECTORIES="/" CHECKSTYLE=0 PROVE_ARGS='-r t' TEST_PG_PATH=%{buildroot}/DB
rm -rf %{buildroot}/DB
%endif
%pre
%sysusers_create_compat %{SOURCE5}
%pre worker
%sysusers_create_compat %{SOURCE6}
@ -444,7 +549,9 @@ rm -rf %{buildroot}/DB
%post httpd
if [ $1 -eq 1 ]; then
echo "### copy and edit /etc/httpd/conf.d/openqa.conf.template!"
echo "### copy and edit /etc/httpd/conf.d/openqa.conf.template if using apache!"
echo "### copy and edit /etc/nginx/conf.d/openqa.conf.template if using nginx!"
fi
%preun
@ -463,39 +570,59 @@ fi
%systemd_postun_with_restart %{openqa_worker_services}
%post local-db
%systemd_post openqa-setup-db.service
%systemd_post %{openqa_localdb_services}
%preun local-db
%systemd_preun openqa-setup-db.service
%systemd_preun %{openqa_localdb_services}
%postun local-db
%systemd_postun_with_restart openqa-setup-db.service
%systemd_postun_with_restart %{openqa_localdb_services}
%post llm-server
# ensure the Podman Quadlet generator is run to create the .service unit
[ -x /usr/bin/systemctl ] && /usr/bin/systemctl daemon-reload || :
%systemd_post openqa-llm-server.service
%preun llm-server
%systemd_preun openqa-llm-server.service
%postun llm-server
%systemd_postun openqa-llm-server.service
%files
%doc README.asciidoc
%doc README.md
%ghost %config(noreplace) %attr(0644,geekotest,root) %{_sysconfdir}/openqa/openqa.ini
%ghost %config(noreplace) %attr(0640,geekotest,root) %{_sysconfdir}/openqa/database.ini
%dir %{_sysconfdir}/openqa
%config(noreplace) %{_sysconfdir}/openqa/openqa.ini
%config(noreplace) %attr(-,root,geekotest) %{_sysconfdir}/openqa/database.ini
%dir %{_sysconfdir}/openqa/openqa.ini.d
%dir %{_sysconfdir}/openqa/database.ini.d
%{_datadir}/doc/openqa/examples/openqa.ini
%{_datadir}/doc/openqa/examples/database.ini
%dir %{_datadir}/openqa
%dir %{_datadir}/openqa/etc
%dir %{_datadir}/openqa/etc/openqa
%{_datadir}/openqa/etc/openqa/openqa.ini
%{_datadir}/openqa/etc/openqa/database.ini
%config %{_sysconfdir}/logrotate.d
# init
%{_unitdir}/openqa-webui.service
%{_unitdir}/openqa-livehandler.service
%{_unitdir}/openqa-gru.service
%dir %{_unitdir}/openqa-gru.service.requires
%{_unitdir}/openqa-scheduler.service
%dir %{_unitdir}/openqa-scheduler.service.requires
%{_unitdir}/openqa-websockets.service
%dir %{_unitdir}/openqa-websockets.service.requires
%{_unitdir}/openqa-enqueue-audit-event-cleanup.service
%{_unitdir}/openqa-enqueue-audit-event-cleanup.timer
%{_unitdir}/openqa-enqueue-asset-cleanup.service
%{_unitdir}/openqa-enqueue-asset-cleanup.timer
%{_unitdir}/openqa-enqueue-git-auto-update.service
%{_unitdir}/openqa-enqueue-git-auto-update.timer
%{_unitdir}/openqa-enqueue-result-cleanup.service
%{_unitdir}/openqa-enqueue-result-cleanup.timer
%{_unitdir}/openqa-enqueue-bug-cleanup.service
%{_unitdir}/openqa-enqueue-bug-cleanup.timer
%{_unitdir}/openqa-enqueue-needle-ref-cleanup.service
%{_unitdir}/openqa-enqueue-needle-ref-cleanup.timer
%{_unitdir}/openqa-enqueue-scheduled-product-cleanup.service
%{_unitdir}/openqa-enqueue-scheduled-product-cleanup.timer
%{_tmpfilesdir}/openqa-webui.conf
# web libs
%{_datadir}/openqa/lib/DBIx/
@ -504,11 +631,14 @@ fi
%{_datadir}/openqa/lib/OpenQA/Scheduler/
%{_datadir}/openqa/lib/OpenQA/Schema/
%{_datadir}/openqa/lib/OpenQA/WebAPI/
%exclude %{_datadir}/openqa/lib/OpenQA/WebAPI/Plugin/FedoraMessaging.pm
%exclude %{_datadir}/openqa/lib/OpenQA/WebAPI/Plugin/FedoraUpdateRestart.pm
%{_datadir}/openqa/lib/OpenQA/WebSockets/
%{_datadir}/openqa/templates
%{_datadir}/openqa/public
%{_datadir}/openqa/dbicdh
%{_datadir}/openqa/assets
%{_datadir}/openqa/dbicdh
%{_datadir}/openqa/node_modules
%dir %{_datadir}/openqa/script
%{_datadir}/openqa/script/configure-web-proxy
%{_datadir}/openqa/script/create_admin
@ -524,7 +654,10 @@ fi
%{_datadir}/openqa/script/openqa-enqueue-asset-cleanup
%{_datadir}/openqa/script/openqa-enqueue-audit-event-cleanup
%{_datadir}/openqa/script/openqa-enqueue-bug-cleanup
%{_datadir}/openqa/script/openqa-enqueue-git-auto-update
%{_datadir}/openqa/script/openqa-enqueue-needle-ref-cleanup
%{_datadir}/openqa/script/openqa-enqueue-result-cleanup
%{_datadir}/openqa/script/openqa-enqueue-scheduled-product-cleanup
%{_datadir}/openqa/script/openqa-gru
%{_datadir}/openqa/script/openqa-webui-daemon
%{_datadir}/openqa/script/upgradedb
@ -547,8 +680,16 @@ fi
%files devel
%files client-bash-completion
%{_datadir}/bash-completion/completions/openqa-cli
%files client-zsh-completion
%{_datadir}/zsh/site-functions/_openqa-cli
%files common
%license COPYING
%dir %{_datadir}/doc/openqa
%dir %{_datadir}/doc/openqa/examples
%dir %{_datadir}/openqa
%ghost %dir %{_datadir}/openqa/packed
%{_datadir}/openqa/lib
@ -575,16 +716,23 @@ fi
# this is a compat symlink to a directory whose contents are split
# between server and worker
%{_localstatedir}/lib/openqa/script
%{_unitdir}/openqa-minion-restart.service
%{_unitdir}/openqa-minion-restart.path
%files worker
%{_datadir}/openqa/lib/OpenQA/CacheService/
%{_datadir}/openqa/lib/OpenQA/Worker/
%config(noreplace) %{_sysconfdir}/openqa/workers.ini
%config(noreplace) %attr(0400,_openqa-worker,root) %{_sysconfdir}/openqa/client.conf
%ghost %config(noreplace) %attr(0644,root,root) %{_sysconfdir}/openqa/workers.ini
%ghost %config(noreplace) %attr(0400,_openqa-worker,root) %{_sysconfdir}/openqa/client.conf
%dir %{_sysconfdir}/openqa/workers.ini.d
%dir %{_sysconfdir}/openqa/client.conf.d
%{_datadir}/doc/openqa/examples/workers.ini
%{_datadir}/doc/openqa/examples/client.conf
# init
%dir %{_unitdir}
%{_prefix}/lib/systemd/system-generators/systemd-openqa-generator
%{_unitdir}/openqa-worker.target
%{_unitdir}/openqa-worker.slice
%{_unitdir}/openqa-worker@.service
%{_unitdir}/openqa-worker-plain@.service
%{_unitdir}/openqa-worker-cacheservice-minion.service
@ -599,7 +747,7 @@ fi
%{_datadir}/openqa/script/openqa-vde_switch
%{_tmpfilesdir}/openqa.conf
%{_sysusersdir}/openQA-worker.conf
%ghost %dir %{_rundir}/openqa
%ghost %dir %attr(0755,_openqa-worker,root) %{_rundir}/openqa
# worker libs
%dir %{_datadir}/openqa
%dir %{_datadir}/openqa/script
@ -612,6 +760,7 @@ fi
%dir %{_localstatedir}/lib/openqa/cache
# own one pool - to create the others is task of the admin
%dir %{_localstatedir}/lib/openqa/pool/1
%{_prefix}/lib/sysctl.d/01-openqa-reload-worker-auto-restart.conf
# Note: remote workers are required to mount /var/lib/openqa/share
# shared with the server.
@ -622,9 +771,20 @@ fi
%config %{_sysconfdir}/httpd/conf.d/openqa.conf.template
%config %{_sysconfdir}/httpd/conf.d/openqa-common.inc
%config %{_sysconfdir}/httpd/conf.d/openqa-ssl.conf.template
# nginx vhost
%dir %{_sysconfdir}/nginx
%dir %{_sysconfdir}/nginx/conf.d
%config %{_sysconfdir}/nginx/conf.d/openqa.conf.template
%config %{_sysconfdir}/nginx/conf.d/openqa-llm.conf.template
%config(noreplace) %{_sysconfdir}/nginx/conf.d/openqa-assets.inc
%config(noreplace) %{_sysconfdir}/nginx/conf.d/openqa-endpoints.inc
%config(noreplace) %{_sysconfdir}/nginx/conf.d/openqa-locations.inc
%config(noreplace) %{_sysconfdir}/nginx/conf.d/openqa-upstreams.inc
%files client
%dir %{_datadir}/openqa
%dir %{_datadir}/openqa/client
%{_datadir}/openqa/client/openqa-cli.yaml
%dir %{_datadir}/openqa/script
%{_datadir}/openqa/script/client
%{_datadir}/openqa/script/clone_job.pl
@ -657,25 +817,174 @@ fi
%files local-db
%{_unitdir}/openqa-setup-db.service
%{_unitdir}/openqa-dump-db.service
%{_unitdir}/openqa-dump-db.timer
%{_unitdir}/openqa-gru.service.requires/postgresql.service
%{_unitdir}/openqa-scheduler.service.requires/postgresql.service
%{_unitdir}/openqa-websockets.service.requires/postgresql.service
%{_datadir}/openqa/script/setup-db
%{_datadir}/openqa/script/dump-db
%{_bindir}/openqa-setup-db
%{_bindir}/openqa-dump-db
%dir %attr(0755,postgres,root) %{_localstatedir}/lib/openqa/backup
%files single-instance
%files single-instance-nginx
%files bootstrap
%{_datadir}/openqa/script/openqa-bootstrap
%{_datadir}/openqa/script/openqa-bootstrap-container
%files munin
%defattr(-,root,root)
%doc contrib/munin/config/minion.config
%dir %{_datadir}/openqa/script
%dir %{_sysconfdir}/munin
%dir %{_sysconfdir}/munin/plugin-conf.d
%{_datadir}/munin/plugins/openqa_minion_
%{_datadir}/openqa/script/munin-mail
%config(noreplace) %{_sysconfdir}/munin/plugin-conf.d/openqa-minion
%files plugin-fedora-messaging
%{_datadir}/openqa/lib/OpenQA/WebAPI/Plugin/FedoraMessaging.pm
%files plugin-fedoraupdaterestart
%{_datadir}/openqa/lib/OpenQA/WebAPI/Plugin/FedoraUpdateRestart.pm
%files llm-server
%dir %{_datadir}/containers
%dir %{_datadir}/containers/systemd
%{_datadir}/containers/systemd/openqa-llm-server.container
%changelog
* Mon Jul 20 2026 Andrew Lukoshko <alukoshko@almalinux.org> - 5^20260604git6376095-1
- Update to openQA 5^20260604git6376095 to match Fedora
- Sync spec with Fedora: refresh Fedora messaging/update-restart plugins,
configs, and the pre-generated asset cache for the new snapshot
- Carry Fedora backports: skip tests_dependencies.t earlier and support
invent.kde.org/work_items in bug URLs
- Pairs with os-autoinst 5 (the worker no longer caps os-autoinst < 5)
* Thu Jun 18 2026 Adam Williamson <awilliam@redhat.com> - 5^20260604git6376095-3
- Fix a couple of incorrect -devel package deps
* Mon Jun 15 2026 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 5^20260604git6376095-2
- Drop call to %%sysusers_create_compat
* Fri Jun 05 2026 Adam Williamson <awilliam@redhat.com> - 5^20260604git6376095-1
- Bump to latest git, re-sync spec, backport a couple of patches
* Wed Mar 11 2026 Adam Williamson <awilliam@redhat.com> - 5^20260126git19189f0-3
- Drop shfmt from -devel dependencies (it was retired)
* Mon Jan 26 2026 Adam Williamson <awilliam@redhat.com> - 5^20260126git19189f0-1
- Update to latest upstream git
- Drop merged patches
* Fri Jan 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 5^20250711git28a0214-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Fri Sep 05 2025 Adam Williamson <awilliam@redhat.com> - 5^20250711git28a0214-3
- Backport PR #6719 to include failed modules in job.done messages
* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 5^20250711git28a0214-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Fri Jul 11 2025 Adam Williamson <awilliam@redhat.com> - 5^20250711git28a0214-1
- Update to latest upstream git (fix timestamps on overview page)
* Thu Jul 10 2025 Adam Williamson <awilliam@redhat.com> - 5^20250710git2f1c94d-1
- Update to latest upstream git
- Drop merged patch
* Wed Jul 09 2025 Adam Williamson <awilliam@redhat.com> - 5^20250709git371ad64-1
- Update to latest upstream git
- Drop merged patches
* Mon Jul 07 2025 Adam Williamson <awilliam@redhat.com> - 5^20250522git6deeb26-2
- Backport PR #6578 to fix tap worker dbus quota issue
* Thu May 22 2025 Adam Williamson <awilliam@redhat.com> - 5^20250522git6deeb26-1
- Update to latest upstream git
- Drop merged patches
- Backport new git config fixes (PR #6472)
* Fri May 16 2025 Adam Williamson <awilliam@redhat.com> - 5^20250430git10b1e43-4
- Update bundled dependency metadata
* Wed May 14 2025 Adam Williamson <awilliam@redhat.com> - 5^20250430git10b1e43-3
- Backport PR #6455 to fix --clean with YAML templates
- Update #6446 patches
- Fix group memberships harder
* Tue May 13 2025 Adam Williamson <awilliam@redhat.com> - 5^20250430git10b1e43-2
- Backport PR #6446 to fix template dump/load issues
- Fix group memberships
* Wed Apr 30 2025 Adam Williamson <awilliam@redhat.com> - 5^20250430git10b1e43-1
- Update to latest upstream git
- Backport PR #6414 to fix configuration of automatic git operations
* Thu Mar 27 2025 Adam Williamson <awilliam@redhat.com> - 4.6^20240729gitd5cf789-6
- Backport some OAuth2 fixes we need
* Wed Feb 12 2025 Adam Williamson <awilliam@redhat.com> - 4.6^20240729gitd5cf789-5
- Exclude our custom plugins from the main package
* Thu Jan 23 2025 Adam Williamson <awilliam@redhat.com> - 4.6^20240729gitd5cf789-4
- Fix an eternal loop issue in the Fedora messaging plugin
* Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20240729gitd5cf789-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Mon Jul 29 2024 Adam Williamson <awilliam@redhat.com> - 4.6^20240729gitd5cf789-1
- Update to latest upstream git
- Backport #5797 to avoid retrying obsoleted jobs
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20240712git52b44bf-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Fri Jul 12 2024 Adam Williamson <awilliam@redhat.com> - 4.6^20240712git52b44bf-1
- Update to latest upstream git, resync spec, update licenses
* Thu Feb 08 2024 Adam Williamson <awilliam@redhat.com> - 4.6^20240208git46cfab2-1
- Update to latest upstream git, resync spec
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20231222gitb96c049-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20231222gitb96c049-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Tue Jan 02 2024 Adam Williamson <awilliam@redhat.com> - 4.6^20231222gitb96c049-1
- Update to recent upstream git, resync spec
* Mon Nov 27 2023 Adam Williamson <awilliam@redhat.com> - 4.6^20231125git872b397-1
- Update to recent upstream git, resync spec, drop merged patch
* Tue Oct 31 2023 Adam Williamson <awilliam@redhat.com> - 4.6^20231024gitc944acc-1
- Update to a recent upstream git snapshot, resync spec
- Backport PR #5349 to fix a test skipping problem
* Thu Oct 19 2023 Adam Williamson <awilliam@redhat.com> - 4.6^20230525git0864455-3
- Backport PR #5337 to add the gitlab fedora flatpak repo for bugrefs
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20230525git0864455-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri May 26 2023 Adam Williamson <awilliam@redhat.com> - 4.6^20230525git0864455-1
- Update to latest git, drop merged patch, re-sync spec
* Mon Apr 24 2023 Adam Williamson <awilliam@redhat.com> - 4.6^20230424gitf229f6d-1
- Update to latest git, re-sync spec, rebase patch
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.6^20221123gitb93eb7f-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Mon Dec 19 2022 Adam Williamson <awilliam@redhat.com> - 4.6^20221123gitb93eb7f-3
- Backport #4498 (slightly rediffed) to solve a problem with retrying grouped tests
* Thu Dec 01 2022 Adam Williamson <awilliam@redhat.com> - 4.6^20221123gitb93eb7f-2
- FedoraMessaging: handle chunked ADVISORY_NVRS_N settings