From f13e41ed86059006cd386ce1e9cb47e19e785f08 Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Apr 30 2020 22:58:20 +0000 Subject: Bump to latest git again, backport a PR, resync spec --- diff --git a/.gitignore b/.gitignore index 53d41ab..30f21f1 100644 --- a/.gitignore +++ b/.gitignore @@ -88,3 +88,5 @@ /openQA-12cea51da8e77ae1553de81741392e299cae4005.tar.gz /openQA-7160d88d931d9706ba1e55d66fd9f0ea5d9377b0.tar.gz /assetcache-7160d88d931d9706ba1e55d66fd9f0ea5d9377b0.tar.xz +/openQA-46234f90c3852646b7f80b88dcb9d8e5dca07f10.tar.gz +/assetcache-46234f90c3852646b7f80b88dcb9d8e5dca07f10.tar.xz diff --git a/0001-Fix-load_templates-clean-to-wipe-more-than-one-entry.patch b/0001-Fix-load_templates-clean-to-wipe-more-than-one-entry.patch deleted file mode 100644 index 97f04c7..0000000 --- a/0001-Fix-load_templates-clean-to-wipe-more-than-one-entry.patch +++ /dev/null @@ -1,157 +0,0 @@ -From edbef94836b6bfbc796819a0c3f59ae89de5f675 Mon Sep 17 00:00:00 2001 -From: Adam Williamson -Date: Sat, 18 Apr 2020 11:38:37 -0700 -Subject: [PATCH] Fix load_templates --clean to wipe more than one entry per - table - -1400d8a8dd inverted the logic here - instead of exiting the loop -on a *failure* we now exit it on *success*. So each time --clean -is run it will only wipe one entry per table. This obviously -breaks things badly (the clean phase doesn't clean things right -at all, so the subsequent load phase fails because we try to add -entries that already exist, and you wind up with a mess). - -This flips the logic back, and adds a test. - -Signed-off-by: Adam Williamson ---- - script/load_templates | 2 +- - t/01-compile-check-all.t | 3 ++- - t/40-script_load_templates.t | 32 ++++++++++++++++++++++++------- - t/data/40-templates-more.pl | 37 ++++++++++++++++++++++++++++++++++++ - 4 files changed, 65 insertions(+), 9 deletions(-) - create mode 100644 t/data/40-templates-more.pl - -diff --git a/script/load_templates b/script/load_templates -index 724a404f3..da089347c 100755 ---- a/script/load_templates -+++ b/script/load_templates -@@ -241,7 +241,7 @@ if ($options{'clean'}) { - my $id = $result->{$table}->[$i]->{id}; - my $table_url_id = $url->clone->path($options{'apibase'} . '/' . decamelize($table) . "/$id"); - $res = $client->delete($table_url_id)->res; -- last if $res->is_success; -+ last unless $res->is_success; - } - } - -diff --git a/t/01-compile-check-all.t b/t/01-compile-check-all.t -index 5b620e3d5..b6cebd48e 100644 ---- a/t/01-compile-check-all.t -+++ b/t/01-compile-check-all.t -@@ -27,8 +27,9 @@ $Test::Strict::TEST_WARNINGS = 1; - $Test::Strict::TEST_SKIP = [ - # skip test module which would require test API from os-autoinst to be present - 't/data/openqa/share/tests/opensuse/tests/installation/installer_timezone.pm', -- # Skip data file which is supposed to resemble generated output which has no 'use' statements -+ # Skip data files which are supposed to resemble generated output which has no 'use' statements - 't/data/40-templates.pl', -+ 't/data/40-templates-more.pl', - 't/data/openqa-trigger-from-obs/Proj2::appliances/empty.txt', - 't/data/openqa-trigger-from-obs/Proj3::standard/empty.txt', - ]; -diff --git a/t/40-script_load_templates.t b/t/40-script_load_templates.t -index 8be3e0c53..51f67e135 100644 ---- a/t/40-script_load_templates.t -+++ b/t/40-script_load_templates.t -@@ -46,9 +46,10 @@ sub decode { Cpanel::JSON::XS->new->relaxed->decode(path(shift)->slurp); } - test_once '--help', qr/Usage:/, 'help text shown', 1, 'load_templates with no arguments shows usage'; - test_once '--host', qr/Option host requires an argument/, 'host argument error shown', 1, 'required arguments missing'; - --my $host = 'testhost:1234'; --my $filename = 't/data/40-templates.pl'; --my $args = "--host $host $filename"; -+my $host = 'testhost:1234'; -+my $filename = 't/data/40-templates.pl'; -+my $morefilename = 't/data/40-templates-more.pl'; -+my $args = "--host $host $filename"; - test_once $args, qr/unknown error code - host $host unreachable?/, 'invalid host error', 22, 'error on invalid host'; - - $ENV{MOJO_LOG_LEVEL} = 'fatal'; -@@ -71,19 +72,36 @@ test_once $args, $expected, 'Admin may load templates', 0, 'successfully loaded - test_once $args, qr/group with existing name/, 'Duplicate job group', 255, 'failed on duplicate job group'; - - my $fh; --($fh, $filename) = tempfile(UNLINK => 1, SUFFIX => '.json'); --$args = "--host $host --apikey $apikey --apisecret $apisecret --json > $filename"; -+my $tempfilename; -+($fh, $tempfilename) = tempfile(UNLINK => 1, SUFFIX => '.json'); -+$args = "--host $host --apikey $apikey --apisecret $apisecret --json > $tempfilename"; - $expected = qr/^$/; - dump_templates $args, $expected, 'dumped fixtures'; - # Clear the data in relevant tables - $schema->resultset($_)->delete for qw(Machines TestSuites Products JobTemplates JobGroups); --$args = "--host $host --apikey $apikey --apisecret $apisecret $filename"; -+$args = "--host $host --apikey $apikey --apisecret $apisecret $tempfilename"; - $expected = qr/JobGroups.+=> \{ added => 3, of => 3 \}/; - test_once $args, $expected, 're-imported fixtures'; - my ($rh, $reference) = tempfile(UNLINK => 1, SUFFIX => '.json'); - $args = "--host $host --apikey $apikey --apisecret $apisecret --json > $reference"; - $expected = qr/^$/; - dump_templates $args, $expected, 're-dumped fixtures'; --is_deeply decode($filename), decode($reference), 'both dumps match'; -+is_deeply decode($tempfilename), decode($reference), 'both dumps match'; -+ -+# Clear the data in relevant tables again -+$schema->resultset($_)->delete for qw(Machines TestSuites Products JobTemplates JobGroups); -+# load the templates file with 2 machines -+$args = "--host $host --apikey $apikey --apisecret $apisecret $morefilename"; -+$expected = qr/Machines.+=> \{ added => 2, of => 2 \}/; -+test_once $args, $expected, 'imported MOAR fixtures'; -+# wipe jobgroups manually as --clean explicitly skips it -+$schema->resultset("JobGroups")->delete; -+# now load the templates file with only 1 machine, with --clean -+$args = "--host $host --apikey $apikey --apisecret $apisecret --clean $filename"; -+$expected = qr/Machines.+=> \{ added => 1, of => 1 \}/; -+test_once $args, $expected, 'imported original fixtures'; -+is $schema->resultset('Machines')->count, 1, "only one machine is loaded"; -+my $machine = $schema->resultset('Machines')->first; -+is $machine->name, "32bit", "correct machine is loaded"; - - done_testing; -diff --git a/t/data/40-templates-more.pl b/t/data/40-templates-more.pl -new file mode 100644 -index 000000000..79f5fbb1e ---- /dev/null -+++ b/t/data/40-templates-more.pl -@@ -0,0 +1,37 @@ -+{ -+ JobGroups => [ -+ { -+ group_name => "openSUSE Leap 42.3 Updates", -+ template => "scenarios: {}\nproducts: {}\n", -+ }, -+ ], -+ JobTemplates => [], -+ Machines => [ -+ { -+ backend => "qemu", -+ name => "32bit", -+ settings => [], -+ }, -+ { -+ backend => "qemu", -+ name => "64bit", -+ settings => [], -+ }, -+ ], -+ Products => [ -+ { -+ arch => "x86_64", -+ distri => "opensuse", -+ flavor => "DVD", -+ settings => [], -+ version => 42.2, -+ }, -+ ], -+ TestSuites => [ -+ { -+ name => "uefi", -+ settings => -+ [{key => "DESKTOP", value => "kde"}, {key => "INSTALLONLY", value => 1}, {key => "UEFI", value => 1},], -+ }, -+ ], -+} --- -2.26.1 - diff --git a/0001-Fix-missing_assets-to-ignore-repos-not-hidden-assets.patch b/0001-Fix-missing_assets-to-ignore-repos-not-hidden-assets.patch new file mode 100644 index 0000000..f27d9de --- /dev/null +++ b/0001-Fix-missing_assets-to-ignore-repos-not-hidden-assets.patch @@ -0,0 +1,53 @@ +From 4a09dedd5f1a09b2f5df817a3c097a968f8e1b5a Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Wed, 29 Apr 2020 12:50:35 -0700 +Subject: [PATCH] Fix missing_assets to ignore repos, not 'hidden assets' + +As discussed in +https://github.com/os-autoinst/openQA/pull/2676#issuecomment-615951653 +and follow-ups, this check misunderstands the "hidden" attribute. +The code assumes that "hidden" assets are the same thing as +"assets we don't really want to copy down when cloning jobs", +but they are not. The "hidden" attribute was written (by me) to +mean "asset types not to be shown for downloading in the web UI". + +For SUSE, it happens to be the case that ["repo"] would be the +right array of both "not-to-be-shown-in-the-web-ui assets" and +"non-clonable assets", so this bug wasn't apparent, as SUSE +deployments leave the `hide_asset_types` config setting at its +default value of just 'repo'. But on Fedora deployments, this +setting is changed to 'repo iso hdd' (because we don't want to +show those asset types for download in the web UI), so this code +also ignored ISO and HDD assets when checking for "missing" +assets, which we don't want. + +As discussed in the pull request we could potentially make this +a configurable attribute and have the clone_job script use it +too, but doing that is a bit harder, and I don't think for now +anyone wants a different definition of "non-clonable assets", so +it doesn't seem really necessary. + +Signed-off-by: Adam Williamson +--- + lib/OpenQA/Schema/Result/Jobs.pm | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/lib/OpenQA/Schema/Result/Jobs.pm b/lib/OpenQA/Schema/Result/Jobs.pm +index 8ae786659..5bbf0cb41 100644 +--- a/lib/OpenQA/Schema/Result/Jobs.pm ++++ b/lib/OpenQA/Schema/Result/Jobs.pm +@@ -572,8 +572,10 @@ sub missing_assets { + delete $assets->{UEFI_PFLASH_VARS}; + + my $parent_job_ids = $self->_parent_job_ids; ++ # ignore repos, as they're not really clonable: see ++ # https://github.com/os-autoinst/openQA/pull/2676#issuecomment-616312026 + my @relevant_assets +- = grep { $_->{name} ne '' && !OpenQA::Schema::Result::Assets::is_type_hidden($_->{type}) } values %$assets; ++ = grep { $_->{name} ne '' && $_->{type} ne 'repo' } values %$assets; + my @assets_query = map { + { + type => $_->{type}, +-- +2.26.2 + diff --git a/openqa.spec b/openqa.spec index fc38091..4666a4b 100644 --- a/openqa.spec +++ b/openqa.spec @@ -23,9 +23,9 @@ %global github_owner os-autoinst %global github_name openQA %global github_version 4.6 -%global github_commit 7160d88d931d9706ba1e55d66fd9f0ea5d9377b0 +%global github_commit 46234f90c3852646b7f80b88dcb9d8e5dca07f10 # if set, will be a post-release snapshot build, otherwise a 'normal' build -%global github_date 20200415 +%global github_date 20200429 %global shortcommit %(c=%{github_commit}; echo ${c:0:7}) # can't use linebreaks here! @@ -39,34 +39,50 @@ %endif %define python_scripts_requires python3-requests python3-future -%define assetpack_requires perl(Mojolicious::Plugin::AssetPack) >= 2.01, perl(CSS::Minifier::XS) perl(JavaScript::Minifier::XS) -%define common_requires perl(Archive::Extract) perl(Config::IniFiles) perl(Cpanel::JSON::XS) perl(Cwd) perl(Data::Dump) perl(Data::Dumper) perl(Digest::MD5) perl(Getopt::Long) perl(Minion) >= 10.04, perl(Mojolicious) >= 8.24, perl(Try::Tiny) perl(Regexp::Common), perl(Storable) + +# 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 +# The following line is generated from dependencies.yaml (upstream) +%define common_requires perl(Archive::Extract) > 0.7 perl(Config::IniFiles) perl(Cpanel::JSON::XS) perl(Cwd) perl(Data::Dump) perl(Data::Dumper) perl(Digest::MD5) perl(Getopt::Long) perl(Minion) >= 10.04 perl(Mojolicious) >= 8.24 perl(Regexp::Common) perl(Storable) perl(Try::Tiny) # runtime requirements for the main package that are not required by other sub-packages -# diff from suse: we need perl(Time::Seconds) and perl(Time::Piece) -# here, do not lose them when copying from suse -%define main_requires %assetpack_requires git-core perl(Carp::Always) perl(Date::Format) perl(DateTime::Format::Pg) 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::Schema::Config) perl(DBIx::Class::Storage::Statistics) perl(DBIx::Class::OptimisticLocking) perl(File::Copy::Recursive) perl(Net::OpenID::Consumer) perl(Module::Pluggable) perl(aliased) perl(Config::Tiny) perl(Text::Diff) perl(CommonMark) perl(JSON::Validator) perl(IPC::Run) perl(Time::ParseDate) perl(Sort::Versions) perl(BSD::Resource) perl(Pod::POM) perl(Mojo::Pg) perl(Mojo::RabbitMQ::Client) >= 0.2, perl(SQL::Translator) perl(YAML::PP) perl(YAML::XS) >= 0.67, perl(LWP::UserAgent) perl(Getopt::Long::Descriptive) perl(Time::Seconds) perl(Time::Piece) -%define client_requires curl jq git-core perl(IO::Socket::SSL) >= 2.009, perl(JSON::Validator) perl(LWP::UserAgent) perl(LWP::Protocol::https) perl(IPC::Run) perl(YAML::PP) >= 0.020 perl(YAML::XS) -%define worker_requires os-autoinst < 5, perl(Mojo::IOLoop::ReadWriteProcess) > 0.19, perl(Minion::Backend::SQLite) perl(Mojo::SQLite) openqa-client optipng -%define build_requires rubygem(sass) %assetpack_requires +# The following line is generated from dependencies.yaml (upstream) +%define main_requires %assetpack_requires git-core perl(BSD::Resource) perl(Carp) perl(Carp::Always) 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.020 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(IO::Socket::SSL) >= 2.009 perl(IPC::Run) perl(JSON::Validator) perl(LWP::Protocol::https) perl(LWP::UserAgent) perl(YAML::PP) >= 0.020 perl(YAML::XS) +# diff from SUSE: case (they have openQA-client, we have openqa-client) +# The following line is generated from dependencies.yaml (upstream) +%define worker_requires openqa-client optipng os-autoinst < 5 perl(Minion::Backend::SQLite) perl(Mojo::IOLoop::ReadWriteProcess) >= 0.20 perl(Mojo::SQLite) +# The following line is generated from dependencies.yaml (upstream) +%define build_requires %assetpack_requires rubygem(sass) # All requirements needed by the tests executed during build-time. # Do not require on this in individual sub-packages except for the devel # package. # Diff from SUSE: Selenium requirements dropped as not available in Fedora, -# perl(Perl::Critic::Freenode) dropped as not available in Fedora (and -# doesn't seem to hurt if it's missing) -%define test_requires %common_requires %main_requires %python_scripts_requires %worker_requires perl(App::cpanminus) perl(Module::Load::Conditional) perl(Perl::Critic) perl(Test::Mojo) perl(Test::More) perl(Test::Strict) perl(Test::Fatal) perl(Test::MockModule) perl(Test::MockObject) perl(Test::Output) perl(Test::Pod) perl(Test::Warnings) perl(Test::Exception) ShellCheck os-autoinst-devel postgresql-server curl jq +# critic and (python) yamllint requirements dropped (except Perl::Critic +# itself as the compile-check-all test fails on the in-tree critic module +# if we leave that out) as we don't run those checks in our package build +# (SUSE runs them in theirs), Test::MockObject and Test::Exception added as +# upstream is missing them - https://github.com/os-autoinst/openQA/pull/3018 +# 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(Perl::Critic) perl(Test::Exception) perl(Test::Fatal) perl(Test::MockModule) perl(Test::MockObject) perl(Test::Mojo) perl(Test::More) perl(Test::Output) perl(Test::Pod) perl(Test::Strict) perl(Test::Warnings) postgresql-server +%ifarch x86_64 +%define qemu qemu qemu-kvm +%else +%define qemu qemu +%endif # diff from SUSE: perl(Devel::Cover::Report::Codecov) 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 # chromedriver dropped as we don't package it -%define devel_requires %build_requires %test_requires rsync curl postgresql-devel qemu qemu-kvm tar sudo perl(Devel::Cover) perl(Perl::Tidy) +# The following line is generated from dependencies.yaml +%define devel_requires %build_requires %qemu %test_requires curl perl(Devel::Cover) perl(Perl::Tidy) postgresql-devel rsync sudo tar Name: openqa Version: %{github_version} -Release: 48%{?github_date:.%{github_date}git%{shortcommit}}%{?dist} +Release: 49%{?github_date:.%{github_date}git%{shortcommit}}%{?dist} Summary: OS-level automated testing framework License: GPLv2+ Url: http://os-autoinst.github.io/openQA/ @@ -88,9 +104,11 @@ Source3: FedoraMessaging.pm # tests for the fedora-messaging publishing plugin Source4: 23-fedora-messaging.t -# https://github.com/os-autoinst/openQA/pull/2955 -# Fix a logic error in `load_templates --clean` that breaks it -Patch0: 0001-Fix-load_templates-clean-to-wipe-more-than-one-entry.patch +# https://github.com/os-autoinst/openQA/pull/3017 +# Missing asset check shouldn't use 'hidden' attribute as it doesn't +# mean what the author thought it meant, made the check ignore most +# assets on Fedora +Patch0: 0001-Fix-missing_assets-to-ignore-repos-not-hidden-assets.patch BuildRequires: %{python_scripts_requires} BuildRequires: perl-generators @@ -305,6 +323,7 @@ ln -s %{_sysconfdir}/openqa/openqa.ini %{buildroot}%{_datadir}/openqa/etc/openqa 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 ln -s %{_datadir}/openqa/script/openqa-clone-job %{buildroot}%{_bindir}/openqa-clone-job ln -s %{_datadir}/openqa/script/dump_templates %{buildroot}%{_bindir}/openqa-dump-templates ln -s %{_datadir}/openqa/script/load_templates %{buildroot}%{_bindir}/openqa-load-templates @@ -337,7 +356,10 @@ 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 +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 +# this test expects a 'not connected' error that it gets with unshare +# but with mock we get 'Connection refused', so just wipe it +sed -i -e '/fails without network/d' t/32-openqa_client-script.t # Skip tests not working currently, or flaky rm t/25-cache-service.t t/17-labels_carry_over.t @@ -436,7 +458,6 @@ fi %{_datadir}/openqa/dbicdh %{_datadir}/openqa/assets %dir %{_datadir}/openqa/script -%{_datadir}/openqa/script/check_dependencies %{_datadir}/openqa/script/create_admin %{_datadir}/openqa/script/fetchneedles %{_datadir}/openqa/script/initdb @@ -541,6 +562,7 @@ fi %{_datadir}/openqa/script/clone_job.pl %{_datadir}/openqa/script/dump_templates %{_datadir}/openqa/script/load_templates +%{_datadir}/openqa/script/openqa-cli %{_datadir}/openqa/script/openqa-clone-job %{_datadir}/openqa/script/openqa-clone-custom-git-refspec %{_datadir}/openqa/script/openqa-validate-yaml @@ -550,6 +572,7 @@ fi %{_datadir}/openqa/lib/OpenQA/Client %{_datadir}/openqa/lib/OpenQA/UserAgent.pm %{_bindir}/openqa-client +%{_bindir}/openqa-cli %{_bindir}/openqa-clone-job %{_bindir}/openqa-dump-templates %{_bindir}/openqa-load-templates @@ -579,6 +602,11 @@ fi %{_datadir}/openqa/lib/OpenQA/WebAPI/Plugin/FedoraUpdateRestart.pm %changelog +* Wed Apr 29 2020 Adam Williamson - 4.6-49.20200429git46234f9 +- Bump to latest git +- Resync spec with upstream +- Backport PR #3017: missing asset check shouldn't use 'hidden' asset attribute + * Sat Apr 18 2020 Adam Williamson - 4.6-48.20200415git7160d88 - Backport PR #2955 to fix broken load_templates --clean diff --git a/sources b/sources index 7806994..04f7ca5 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (openQA-7160d88d931d9706ba1e55d66fd9f0ea5d9377b0.tar.gz) = 55c75bbf148b0cc1360f1ec5cd3d7eeb520d171b79a47c31b5e943495dd5607ed0b4d72f694933f435b8c026a11083ff2f6ec229d4f45db77be3aa197d014f6c -SHA512 (assetcache-7160d88d931d9706ba1e55d66fd9f0ea5d9377b0.tar.xz) = 75711f1242f2bba05d3625f90c4403fd85e04265814b72e58db542875d5e4eecbd10a374f4d4f5f232ef05dec15ff7bd7436c132372119d49fed0a8e03bffda8 +SHA512 (openQA-46234f90c3852646b7f80b88dcb9d8e5dca07f10.tar.gz) = 8674b1555f070596d3dc5a55388a212758c89627c9d1f037ca9845705ec3d419209c378d5dba880fc2c184c9877c4cbc67fba2e468f3b8fbad93e0d45c9b2086 +SHA512 (assetcache-46234f90c3852646b7f80b88dcb9d8e5dca07f10.tar.xz) = 01d51e33c1eb59898fdc9b8e7dd52a11146a302af441b61512bafe03b4a80806d7224d22c663a1c9c2d13fd74f30430cb837de2584790dd12b5c9bf45a772503