aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Iurt
diff options
context:
space:
mode:
authorPascal Terjan <pterjan@mageia.org>2024-12-20 19:33:16 +0000
committerPascal Terjan <pterjan@mageia.org>2024-12-20 20:07:06 +0000
commit066bc31b8884cdfcd32266621f7ede174cb1f502 (patch)
tree033c68c872be2017502a7c76bbfbf24a0c91a839 /lib/Iurt
parent72463db81d937c8aab0cccddbd721b7d40b22b9b (diff)
downloadiurt-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.pm48
-rw-r--r--lib/Iurt/Util.pm17
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