Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openQA for openSUSE:Factory checked in at 2025-09-22 16:38:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.27445 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Mon Sep 22 16:38:55 2025 rev:752 rq:1306177 version:5.1758307053.75367131 Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2025-09-19 19:52:03.424036680 +0200 +++ /work/SRC/openSUSE:Factory/.openQA.new.27445/openQA.changes 2025-09-22 16:39:17.912448859 +0200 @@ -1,0 +2,7 @@ +Sat Sep 20 20:13:19 UTC 2025 - [email protected] + +- Update to version 5.1758307053.75367131: + * docs: Fix shell syntax in development setup + * Replace argument assignment with signatures on ObsRsync + +------------------------------------------------------------------- Old: ---- openQA-5.1758276230.9cef0ea3.obscpio New: ---- openQA-5.1758307053.75367131.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.VIyIKC/_old 2025-09-22 16:39:20.812570885 +0200 +++ /var/tmp/diff_new_pack.VIyIKC/_new 2025-09-22 16:39:20.824571390 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 5.1758276230.9cef0ea3 +Version: 5.1758307053.75367131 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.VIyIKC/_old 2025-09-22 16:39:21.048580815 +0200 +++ /var/tmp/diff_new_pack.VIyIKC/_new 2025-09-22 16:39:21.060581320 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 5.1758276230.9cef0ea3 +Version: 5.1758307053.75367131 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.VIyIKC/_old 2025-09-22 16:39:21.376594617 +0200 +++ /var/tmp/diff_new_pack.VIyIKC/_new 2025-09-22 16:39:21.396595459 +0200 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 5.1758276230.9cef0ea3 +Version: 5.1758307053.75367131 Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.VIyIKC/_old 2025-09-22 16:39:21.656606399 +0200 +++ /var/tmp/diff_new_pack.VIyIKC/_new 2025-09-22 16:39:21.676607241 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 5.1758276230.9cef0ea3 +Version: 5.1758307053.75367131 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.VIyIKC/_old 2025-09-22 16:39:22.036622389 +0200 +++ /var/tmp/diff_new_pack.VIyIKC/_new 2025-09-22 16:39:22.048622893 +0200 @@ -99,7 +99,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 5.1758276230.9cef0ea3 +Version: 5.1758307053.75367131 Release: 0 Summary: The openQA web-frontend, scheduler and tools License: GPL-2.0-or-later ++++++ openQA-5.1758276230.9cef0ea3.obscpio -> openQA-5.1758307053.75367131.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1758276230.9cef0ea3/docs/Contributing.asciidoc new/openQA-5.1758307053.75367131/docs/Contributing.asciidoc --- old/openQA-5.1758276230.9cef0ea3/docs/Contributing.asciidoc 2025-09-19 12:03:50.000000000 +0200 +++ new/openQA-5.1758307053.75367131/docs/Contributing.asciidoc 2025-09-19 20:37:33.000000000 +0200 @@ -646,18 +646,18 @@ [source,sh] ---- ### distrobox container ### -echo <<< EOM +cat >> $OPENQA_CONFIG/client.conf << EOM [localhost] key = 1234567890ABCDEF secret = 1234567890ABCDEF -EOM >> $OPENQA_CONFIG/client.conf +EOM -echo <<< EOM +cat >> $OPENQA_CONFIG/database.ini << EOM [production] dsn = dbi:Pg:dbname=openqa-local;host=127.0.0.1;port=5432 user = geekotest password = x -EOM >> $OPENQA_CONFIG/database.ini +EOM cp $OPENQA_REPOS/openQA/etc/openqa/workers.ini $OPENQA_CONFIG/workers.ini crudini --set $OPENQA_CONFIG/workers.ini global HOST http://localhost:9526 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1758276230.9cef0ea3/lib/OpenQA/WebAPI/Plugin/ObsRsync.pm new/openQA-5.1758307053.75367131/lib/OpenQA/WebAPI/Plugin/ObsRsync.pm --- old/openQA-5.1758276230.9cef0ea3/lib/OpenQA/WebAPI/Plugin/ObsRsync.pm 2025-09-19 12:03:50.000000000 +0200 +++ new/openQA-5.1758307053.75367131/lib/OpenQA/WebAPI/Plugin/ObsRsync.pm 2025-09-19 20:37:33.000000000 +0200 @@ -23,8 +23,7 @@ # non-privileged routes - will be accessible with curl without authentication # ensure_operator - privileged routes for using in UI # api_ensure_operator - privileged routes for API access -sub register_common_routes { - my ($self, $r, $suffix) = @_; +sub register_common_routes ($self, $r, $suffix = undef) { my $prefix = 'plugin_obs_rsync_'; $prefix .= $suffix . '_' if $suffix; @@ -35,8 +34,7 @@ ->to('Plugin::ObsRsync::Controller::Folders#test_result'); } -sub register { - my ($self, $app, $config) = @_; +sub register ($self, $app, $config) { my $plugin_r = $app->routes->find('ensure_operator'); my $plugin_api_r = $app->routes->find('api_ensure_operator'); @@ -85,8 +83,7 @@ $app->helper('obs_rsync.get_test_result' => \&_get_test_result); $app->helper('obs_rsync.get_run_last_info' => \&_get_run_last_info); $app->helper( - 'obs_rsync.get_fail_last_info' => sub { - my ($c, $project) = @_; + 'obs_rsync.get_fail_last_info' => sub ($c, $project) { return _get_last_failed_job($c, $project, 1); }); $app->helper('obs_rsync.get_api_repo' => \&_get_api_repo); @@ -175,8 +172,7 @@ # try to determine whether project is dirty # undef means status is unknown -sub _is_obs_project_status_dirty { - my ($self, $url, $project, $repo, $helper) = @_; +sub _is_obs_project_status_dirty ($self, $url, $project, $repo, $helper) { return undef unless $url; # Use only one UserAgent @@ -198,8 +194,7 @@ return _parse_obs_response_dirty($res, $repo); } -sub _parse_obs_response_dirty { - my ($res, $repo) = @_; +sub _parse_obs_response_dirty ($res, $repo = undef) { $repo = 'images' unless $repo; my $results = $res->dom('result'); @@ -222,8 +217,7 @@ # and returns pair ('projectname', 'repo') # if input doesn't have '::' character - # returned pair is ($project, '') -sub _split_repo { - my (undef, $alias) = @_; +sub _split_repo ($, $alias) { my ($project, $repo) = split(/::/, $alias, 2); $repo = '' unless $repo; return ($project, $repo); @@ -233,15 +227,13 @@ # and returns pair ('projectname', 'batchname') # if input doesn't have '|' character - # returned pair is ($project, '') -sub _split_alias { - my (undef, $alias) = @_; +sub _split_alias ($, $alias) { my ($project, $batch) = split(/\|/, $alias, 2); $batch = '' unless $batch; return ($project, $batch); } -sub _get_batches { - my ($c, $project, $only_first) = @_; +sub _get_batches ($c, $project, $only_first = undef) { my $home = $c->obs_rsync->home; my $batches = Mojo::File->new($home, $project)->list({dir => 1})->grep(sub { -d $_ })->map('basename'); return $batches->to_array() unless $only_first; @@ -253,8 +245,7 @@ # and return it in pair with split project name # otherwise it attempts to find first batch of project # and returns it in pair with unaltered input -sub _get_first_batch { - my ($c, $alias) = @_; +sub _get_first_batch ($c, $alias) { my $helper = $c->obs_rsync; my ($project, $batch) = $helper->split_alias($alias); return ($batch, $project) if $batch; @@ -265,8 +256,7 @@ # extract the job id returned by `job post` command as noted in openqa.cmd.log # returns empty string when log file doesn't exists or pattern didn't match # throws exception if OS error occurs -sub _get_last_test_id { - my ($c, $alias) = @_; +sub _get_last_test_id ($c, $alias) { my $home = $c->obs_rsync->home; # don't call get_first_batch: test info is not supported for batches yet @@ -288,14 +278,12 @@ return $res; } -sub _get_test_result { - my ($c, $id) = @_; +sub _get_test_result ($c, $id) { return 'unknown' unless my $job = $c->schema->resultset('Jobs')->find($id); return $job->result; } -sub _get_version_test_id { - my ($c, $project, $version) = @_; +sub _get_version_test_id ($c, $project, $version = undef) { return undef unless $version; my $home = $c->obs_rsync->home; my $runs = Mojo::File->new($home, $project)->list({dir => 1, hidden => 1})->map('basename')->grep(qr/\.run_.*/) @@ -308,8 +296,7 @@ # string in format %y%m%d_%H%M%S, which corresponds to location # used by openqa-trigger-from-obs to determine if any files changed # or rsync can be skipped. -sub _get_run_last_info { - my ($c, $alias) = @_; +sub _get_run_last_info ($c, $alias) { my $helper = $c->obs_rsync; my $home = $helper->home; my ($batch, $project) = $helper->get_first_batch($alias); @@ -331,8 +318,7 @@ return \%res; } -sub _get_first_line { - my ($file, $with_timestamp) = @_; +sub _get_first_line ($file, $with_timestamp = undef) { open(my $fh, '<', $file) or return ''; my $res = readline $fh; return '' unless $res; @@ -346,8 +332,7 @@ return $res; } -sub _write_to_file { - my ($file, $str) = @_; +sub _write_to_file ($file, $str) { if (open(my $fh, '>', $file)) { print $fh $str; close $fh; @@ -355,8 +340,7 @@ } # Dirty status file is updated from ObsRsync Gru tasks -sub _get_dirty_status { - my ($c, $alias) = @_; +sub _get_dirty_status ($c, $alias) { my $helper = $c->obs_rsync; # doesn't depend on batch, so just strip it out my ($project, undef) = $helper->split_alias($alias); @@ -367,8 +351,7 @@ } # Which repo on OBS should trigger sync -sub _get_api_repo { - my ($c, $alias) = @_; +sub _get_api_repo ($c, $alias) { my $helper = $c->obs_rsync; # doesn't depend on batch, so just strip it out my ($project, undef) = $helper->split_alias($alias); @@ -381,8 +364,7 @@ } # Which package on OBS should be checked for being published on obs -sub _get_api_package { - my ($c, $alias) = @_; +sub _get_api_package ($c, $alias) { my $helper = $c->obs_rsync; # doesn't depend on batch, so just strip it out my ($project, undef) = $helper->split_alias($alias); @@ -393,8 +375,7 @@ } # Build url to check dirty status for project -sub _get_api_dirty_status_url { - my ($c, $project) = @_; +sub _get_api_dirty_status_url ($c, $project) { my $helper = $c->obs_rsync; my $url_str = $helper->project_status_url; return '' unless $url_str; @@ -408,8 +389,7 @@ return $url->to_string; } -sub _get_builds_in_file { - my ($file, $seen) = @_; +sub _get_builds_in_file ($file, $seen) { open(my $fh, '<', $file) or return undef; while (my $row = <$fh>) { chomp $row; @@ -425,8 +405,7 @@ # Obs version is parsed from files_iso.lst for iso and hdd # and from Media*.lst, for repositories # these files are updated from ObsRsync Gru tasks -sub _get_builds_in_folder { - my ($folder) = @_; +sub _get_builds_in_folder ($folder) { my %seen; _get_builds_in_file(Mojo::File->new($folder, $files_iso_filename), \%seen); Mojo::File->new($folder)->list()->grep($files_media_filemask)->each( @@ -437,14 +416,12 @@ } # Obs builds are parsed from files_iso.lst, which is updated from ObsRsync Gru tasks -sub _get_obs_builds_text { - my ($c, $alias, $last) = @_; +sub _get_obs_builds_text ($c, $alias, $last = undef) { my $helper = $c->obs_rsync; my $home = $helper->home; my $subfolder = $last ? '.run_last' : ''; my %seen; - my $sub = sub { - my ($project, $batch) = @_; + my $sub = sub ($project, $batch) { my @builds = _get_builds_in_folder(Mojo::File->new($home, $project, $batch, $subfolder)); for my $build (@builds) { $seen{$build} = 1 if $build; @@ -458,53 +435,45 @@ return join ', ', @builds; } -sub _concurrency_guard { - my $app = shift->app; +sub _concurrency_guard ($c) { + my $app = $c->app; return $app->minion->guard('obs_rsync_run_guard', $lock_timeout, {limit => $app->obs_rsync->concurrency}); } -sub _guard { - my ($c, $project) = @_; +sub _guard ($c, $project) { return $c->app->minion->guard('obs_rsync_project_' . $project . '_lock', $lock_timeout); } -sub _lock { - my ($c, $project) = @_; +sub _lock ($c, $project) { return $c->app->minion->lock('obs_rsync_project_' . $project . '_lock', $lock_timeout); } -sub _unlock { - my ($c, $project) = @_; +sub _unlock ($c, $project) { return $c->app->minion->unlock('obs_rsync_project_' . $project . '_lock'); } -sub _log_job_id { - my ($c, $project, $job_id) = @_; +sub _log_job_id ($c, $project, $job_id) { my $home = $c->obs_rsync->home; return _write_to_file(Mojo::File->new($home, $project, '.job_id'), $job_id); } -sub _log_failure { - my ($c, $project, $job_id) = @_; +sub _log_failure ($c, $project, $job_id) { my $home = $c->obs_rsync->home; return _write_to_file(Mojo::File->new($home, $project, '.last_failed_job_id'), $job_id); } -sub _get_last_failed_job { - my ($c, $project, $with_timestamp) = @_; +sub _get_last_failed_job ($c, $project, $with_timestamp) { my $home = $c->obs_rsync->home; return _get_first_line(Mojo::File->new($home, $project, '.last_failed_job_id'), $with_timestamp); } -sub _check_and_render_error { - my ($c, @args) = @_; +sub _check_and_render_error ($c, @args) { my ($code, $message) = _check_error($c->obs_rsync->home, @args); $c->render(json => {error => $message}, status => $code) if $code; return $code; } -sub _check_error { - my ($home, $alias, $subfolder, $filename) = @_; +sub _check_error ($home, $alias, $subfolder = undef, $filename = undef) { return (405, 'Home directory is not set') unless $home; return (405, 'Home directory not found') unless -d $home; return (400, 'Project has invalid characters') if $alias && $alias =~ m!/!; @@ -518,8 +487,7 @@ return 0; } -sub _for_every_batch { - my ($c, $alias, $sub) = @_; +sub _for_every_batch ($c, $alias, $sub) { my $helper = $c->obs_rsync; my ($project, $batch) = $helper->split_alias($alias); ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.VIyIKC/_old 2025-09-22 16:39:35.609193472 +0200 +++ /var/tmp/diff_new_pack.VIyIKC/_new 2025-09-22 16:39:35.613193640 +0200 @@ -1,5 +1,5 @@ name: openQA -version: 5.1758276230.9cef0ea3 -mtime: 1758276230 -commit: 9cef0ea379237e2862b36f96f3a39b5effcd01bb +version: 5.1758307053.75367131 +mtime: 1758307053 +commit: 75367131d478f753cd146b6896a6344256e81f59
