diff options
author | Pascal Terjan <pterjan@mageia.org> | 2024-12-20 19:33:16 +0000 |
---|---|---|
committer | Pascal Terjan <pterjan@mageia.org> | 2024-12-20 20:07:06 +0000 |
commit | 066bc31b8884cdfcd32266621f7ede174cb1f502 (patch) | |
tree | 033c68c872be2017502a7c76bbfbf24a0c91a839 /lib/Iurt | |
parent | 72463db81d937c8aab0cccddbd721b7d40b22b9b (diff) | |
download | iurt-066bc31b8884cdfcd32266621f7ede174cb1f502.tar iurt-066bc31b8884cdfcd32266621f7ede174cb1f502.tar.gz iurt-066bc31b8884cdfcd32266621f7ede174cb1f502.tar.bz2 iurt-066bc31b8884cdfcd32266621f7ede174cb1f502.tar.xz iurt-066bc31b8884cdfcd32266621f7ede174cb1f502.zip |
Log recreate_srpm
This unifies logdir name too as some logs were in different
directories, and uses the same behaviour for all srpms.
Building a src.rpm with svn revision like "@42:foo-42-1.src.rpm"
used to use a directory "foo-42-1" while building "foo-42-1.src.rpm"
would use the directory "foo-42-1.src.rpm". In order to not break
Mageia's build system and UI the first one was picked and they
will now both use "foo-42-1".
Diffstat (limited to 'lib/Iurt')
-rw-r--r-- | lib/Iurt/Urpmi.pm | 48 | ||||
-rw-r--r-- | lib/Iurt/Util.pm | 17 |
2 files changed, 52 insertions, 13 deletions
diff --git a/lib/Iurt/Urpmi.pm b/lib/Iurt/Urpmi.pm index 2621478..6a4c172 100644 --- a/lib/Iurt/Urpmi.pm +++ b/lib/Iurt/Urpmi.pm @@ -3,13 +3,13 @@ package Iurt::Urpmi; use strict; use RPM4::Header; use File::Basename; -use File::Copy qw(copy); +use File::Copy qw(copy move); use MDV::Distribconf::Build; use MDK::Common qw(cat_); use Iurt::Chroot qw(add_local_user create_temp_chroot); use Iurt::Process qw(perform_command clean_process sudo); use Iurt::Config qw(get_package_prefix); -use Iurt::Util qw(plog); +use Iurt::Util qw(logdir plog); use urpm; sub new { @@ -383,10 +383,8 @@ sub install_packages { @to_install or return 1; - (my $log_dirname = $title) =~ s/^[^:]*:?([^:]*)\.(buildreqs\.nosrc|src).rpm/$1/; - + my $log_dirname = logdir($title); my $log_spool = "$local_spool/log/$log_dirname/"; - mkdir $log_spool; my @rpm = grep { !/src\.rpm$/ } @to_install; @@ -445,14 +443,32 @@ sub install_packages { sub get_srpm_name { my ($run, $config, $chroot_tmp, $srpm, $luser, $spec) = @_; + my $log_spool = "$run->{local_spool}/log/" . logdir($srpm); + my $log_spool_existed = 1; + if (! -d $log_spool) { + $log_spool_existed = 0; + mkdir $log_spool; + } if (!perform_command(qq(chroot $chroot_tmp su $luser -c "rpmspec -q --qf %{NVR}.src.rpm --srpm /home/$luser/rpmbuild/SPECS/$spec > /home/$luser/rpmbuild/SPECS/$spec.srpm_name"), $run, $config, use_iurt_root_command => 1, - hash => "identify_$srpm")) { + log => $log_spool, + logname => 'identify_srpm', + hash => 'identify_srpm')) { plog("ERROR: failed to get the name of the generated src.rpm"); return; } - return cat_("$chroot_tmp/home/$luser/rpmbuild/SPECS/$spec.srpm_name"); + my $new_srpm = cat_("$chroot_tmp/home/$luser/rpmbuild/SPECS/$spec.srpm_name"); + # Move the generated logs if needed + if ($srpm ne $new_srpm) { + my $logfile = "$log_spool/identify_srpm.$run->{my_arch}.$run->{run}.log"; + mkdir "$run->{local_spool}/log/" . logdir($new_srpm); + move("$logfile", "$run->{local_spool}/log/" . logdir($new_srpm)); + if (!$log_spool_existed) { + rmdir $log_spool; + } + } + return $new_srpm; } # return ("exit_code", srpm, spec) @@ -518,6 +534,15 @@ sub recreate_srpm { } } + my $new_srpm = get_srpm_name($run, $config, $chroot_tmp, $srpm, $luser, $spec); + if (!$new_srpm) { + plog("ERROR: failed to get the name of the generated src.rpm"); + return; + } + + my $log_spool = "$run->{local_spool}/log/" . logdir($new_srpm); + mkdir $log_spool; + # Delete old src.rpm, we will create it again sudo($config, '--rm', $oldsrpm) or die "$program_name: could not delete $oldsrpm ($!)"; @@ -529,18 +554,15 @@ sub recreate_srpm { mail => $config->{admin}, error => "[REBUILD] cannot create $srpm in $chroot_tmp", debug_mail => $run->{debug}, - hash => "create_$srpm" + hash => "create_$srpm", + log => $log_spool, + logname => 'recreate_srpm' ); # Return if we can't regenerate srpm # return 0 unless $ret; - my $new_srpm = get_srpm_name($run, $config, $chroot_tmp, $srpm, $luser, $spec); - if (!$new_srpm) { - plog("ERROR: failed to get the name of the generated src.rpm"); - return; - } my $file = "$chroot_tmp/home/$luser/rpmbuild/SRPMS/$new_srpm"; my $prefix = get_package_prefix($srpm); my $newfile = "$chroot_tmp/home/$luser/rpmbuild/SRPMS/$prefix$new_srpm"; diff --git a/lib/Iurt/Util.pm b/lib/Iurt/Util.pm index bf726d0..439e146 100644 --- a/lib/Iurt/Util.pm +++ b/lib/Iurt/Util.pm @@ -5,6 +5,7 @@ use Fcntl qw(:flock SEEK_END); use strict; our @EXPORT = qw( + logdir plog_init plog pdie @@ -121,6 +122,22 @@ sub pdie { die $@; } +=item logdir($srpm) + +Get the name of the log directory based on the src.rpm filename. + +=cut + +sub logdir { + my $srpm = shift; + (my $logdir = $srpm) =~ s/^(?:[^:]*:)?([^:]*)\.(buildreqs\.nosrc|src).rpm/$1/; + return $logdir; +} + +=back + +=cut + =head2 SSH HELPERS =over 8 |