diff options
author | Pascal Terjan <pterjan@gmail.com> | 2016-01-23 18:47:25 +0000 |
---|---|---|
committer | Pascal Terjan <pterjan@gmail.com> | 2016-01-23 23:24:53 +0000 |
commit | 90dae21c83006471b2123e0ba138f260d6224466 (patch) | |
tree | dc7199347fbcbf2f26c986bb30c0e96e13db3616 /ulri | |
parent | 84174a38a9b094c3a5cbef07a48b84b9c65d5bf8 (diff) | |
download | iurt-90dae21c83006471b2123e0ba138f260d6224466.tar iurt-90dae21c83006471b2123e0ba138f260d6224466.tar.gz iurt-90dae21c83006471b2123e0ba138f260d6224466.tar.bz2 iurt-90dae21c83006471b2123e0ba138f260d6224466.tar.xz iurt-90dae21c83006471b2123e0ba138f260d6224466.zip |
Use a shared function to load the state of upload tree
Diffstat (limited to 'ulri')
-rwxr-xr-x | ulri | 99 |
1 files changed, 6 insertions, 93 deletions
@@ -35,7 +35,7 @@ use strict; use MDK::Common qw(any cat_ if_ find); use Iurt::Config qw(config_usage get_date config_init get_author_email check_arch check_noarch); use Iurt::Process qw(check_pid); -use Iurt::File qw(check_upload_tree cleanup_failed_build); +use Iurt::File qw(cleanup_failed_build get_upload_tree_state); use Iurt::Mail qw(sendmail); use Iurt::Util qw(plog_init plog ssh_setup ssh sout sget sput); use File::Copy 'move'; @@ -204,8 +204,6 @@ if ($df->{per} == 100) { ($fulldate, $daydate) = get_date(); -my %pkg_tree; - my $todo = "$config->{queue}/todo"; my $failure = "$config->{queue}/failure"; my $done = "$config->{queue}/done"; @@ -219,78 +217,7 @@ plog('MSG', "check uploads tree"); plog('DEBUG', "input queue is $todo"); -sub todo_func { - my ($todo, $f, $m, $s, $r) = @_; - - my $media = "$m/$s"; - - if ($r =~ /(\d{14}\.(\w+)\.\w+\.\d+)_(.*\.src\.rpm)$/) { - my ($prefix, $user, $srpm) = ($1, $2, $3); - - plog('DEBUG', "found srpm $srpm ($prefix)"); - $pkg_tree{$prefix}{media}{$media}{path} = "/$f/$m/$s"; - $pkg_tree{$prefix}{target} = $f; - $pkg_tree{$prefix}{user} = $user; - push @{$pkg_tree{$prefix}{srpms}} , $srpm; - my ($name) = $srpm =~ /(.*)-[^-]+-[^-]+\.src\.rpm$/; - - return $pkg_tree{$prefix}{srpm_name}{$name} = $srpm; - } - - if ($r =~ /(\d{14}\.\w+\.\w+\.\d+)_([\w-]+)\.(\w+)\.(\w+)\.(\d{14})\.(\d+)\.lock$/) { - my ($prefix, $arch, $bot, $host, $date, $pid) = ($1, $2, $3, $4, $5, $6); - - # Set path here too has we may have a lock without the src.rpm - $pkg_tree{$prefix}{media}{$media}{path} = "/$f/$m/$s"; - - $arch = $config->{arch_translation}{$arch} if $config->{arch_translation}{$arch}; - plog('DEBUG', "found lock on $host/$arch for $prefix"); - - if ($arch =~ /noarch/) { - plog('DEBUG', "... and $prefix is noarch"); - $pkg_tree{$prefix}{media}{$media}{arch}{noarch} = 1; - $arch =~ s/-.*//; - } - - # this should be in the cache, but waiting for a cache-clean option - $pkg_tree{$prefix}{media}{$media}{arch}{$arch} = 1; - - my $time = read_line("$todo/$f/$m/$s/$r"); - $time = (split ' ', $time)[2]; - push @{$pkg_tree{$prefix}{media}{$media}{bot}}, { - bot => $bot, - host => $host, - date => $date, - pid => $pid, - 'arch' => $arch, - 'time' => $time - }; - } - - if ($r =~ /(\d{14}\.\w+\.\w+\.\d+)_.*\.deps$/) { - my $prefix = $1; - my @deps = map { chomp(); $_ } cat_("$todo/$f/$m/$s/$r"); - plog('DEBUG', "Adding dependency $_ ($prefix)") foreach @deps; - - $pkg_tree{$prefix}{deps} = \@deps; - } -} - -sub done_func { - my ($_todo, $_f, $m, $s, $r) = @_; - - my $media = "$m/$s"; - - if ($r =~ /(\d{14}\.\w+\.\w+\.\d+)_(.*)\.(done|fail|excluded)$/) { - my ($prefix, $arch) = ($1, $2); - $arch = $config->{arch_translation}{$arch} if $config->{arch_translation}{$arch}; - $pkg_tree{$prefix}{media}{$media}{arch}{$arch} = 1; - } elsif ($r =~ /(\d{14}\.\w+\.\w+\.\d+)_(.*\.([^.]+)\.rpm)$/) { - my ($prefix, $rpm) = ($1, $2); - plog('DEBUG', "found already built rpm $rpm ($prefix)"); - push @{$pkg_tree{$prefix}{rpms}} , $rpm; - } -} +my %pkg_tree = get_upload_tree_state($config); sub exclude_machine { my ($config, $host) = @_; @@ -300,15 +227,8 @@ sub exclude_machine { } } -check_upload_tree($todo, \&todo_func); - -# getting already compiled packages -# The cache should not be needed if the .done file are removed as the same -# time as the src.rpm in the todo tree -check_upload_tree($done, \&done_func); - # Load bot status - +# foreach my $prefix (keys %pkg_tree) { my $ent = $pkg_tree{$prefix}; foreach my $media (keys %{$ent->{media}}) { @@ -586,9 +506,10 @@ foreach my $prefix (sort keys %pkg_tree) { foreach my $arch (@arch_list) { # Skip this arch if package is already building as noarch or for this arch - # + # or if it should not be built on this arch next if $pkg_tree{$prefix}{media}{$media}{arch}{noarch}; next if $pkg_tree{$prefix}{media}{$media}{arch}{$arch}; + next if $pkg_tree{$prefix}{media}{$media}{excluded_arch}{$arch}; # If all packages in a group are noarch, consider the entire group # as noarch @@ -603,6 +524,7 @@ foreach my $prefix (sort keys %pkg_tree) { plog('WARN', "excluding from $arch: $excluded"); create_file("$done_dir/${prefix}_$arch.excluded", "ulri $arch excluded"); + $pkg_tree{$prefix}{media}{$media}{excluded_arch}{$arch} = 1; next; } @@ -830,15 +752,6 @@ sub create_file { print $FILE "@contents"; } -sub read_line { - my $file = shift; - - open my $FILE, "<$file" or die "FATAL: can't open $file for reading"; - my $contents = <$FILE>; - - $contents; -} - sub check_file_timeout { my ($file, $time) = @_; |