#!/usr/bin/perl -w use strict; use File::Temp qw(tempfile); use Youri::Package::RPM::Updater; use LWP::UserAgent; use MDK::Common; use Cwd; use List::Util qw(shuffle); my $status_page = 'http://pkgsubmit.mageia.org/'; my $svn_root = 'svn+ssh://svn.mageia.org/svn/packages/cauldron/'; my $commit_msg = 'Mass Rebuild - https://wiki.mageia.org/en/Feature:Mageia3MassRebuild'; my $bs_max_todo_queue = 5; my $updater = Youri::Package::RPM::Updater->new; my ($ci_fh, $ci_fname) = tempfile(UNLINK => 1); print $ci_fh $commit_msg; close $ci_fh; sub list_from_file { shuffle(chomp_(cat_($_[0]))); } sub get_bs_queue_todo() { my $ua = LWP::UserAgent->new; my $req = HTTP::Request->new(HEAD => $status_page); my $res = $ua->request($req); return $res->is_success ? $res->header('X-BS-Queue-Todo') : 9999; } sub bump_release { my ($pkgname) = @_; print STDOUT "== Bumping release for $pkgname\n"; my $oldcwd = getcwd(); my $tmpdir = File::Temp->newdir; chdir $tmpdir->dirname; system('svn', 'co', "${svn_root}/${pkgname}/current"); chdir 'current'; $updater->update_from_spec(glob('SPECS/*.spec')); system('svn', 'ci', '--file', $ci_fname); chdir $oldcwd; } sub submit_package { my ($pkgname) = @_; print STDOUT "== Submitting $pkgname\n"; while (get_bs_queue_todo() > $bs_max_todo_queue) { sleep 20; } system('mgarepo', 'submit', $pkgname); } my @packages_list = list_from_file($ARGV[0]); foreach (@packages_list) { eval { bump_release($_); submit_package($_); } }