diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Iurt/Chroot.pm | 32 | ||||
-rw-r--r-- | lib/Iurt/Urpmi.pm | 18 |
2 files changed, 49 insertions, 1 deletions
diff --git a/lib/Iurt/Chroot.pm b/lib/Iurt/Chroot.pm index c4b2f15..526263a 100644 --- a/lib/Iurt/Chroot.pm +++ b/lib/Iurt/Chroot.pm @@ -45,6 +45,12 @@ sub clean_chroot { if (-d $chroot && !$o_only_tar) { system("$sudo umount $chroot/proc &> /dev/null"); system("$sudo umount $chroot/dev/pts &> /dev/null"); + if ($run->{icecream}) { + system("$sudo umount $chroot/var/cache/icecream &> /dev/null"); + } + if (-d "$chroot/urpmi_medias/") { + system ("$sudo umount $chroot/urpmi_medias/*"); + } sudo($run, $config, '--rm', '-r', $chroot); } @@ -64,6 +70,26 @@ sub clean_chroot { dump_rpmmacros($run, $config, "$chroot/home/builder/.rpmmacros") or return; system("$sudo mount none -t proc $chroot/proc &>/dev/null") and return; system("$sudo mount none -t devpts $chroot/dev/pts &>/dev/null") and return; + if ($run->{icecream}) { + system("$sudo mkdir -p $chroot/var/cache/icecream"); + system("$sudo mount -o bind /var/cache/icecream $chroot/var/cache/icecream &>/dev/null") and return; + } + + my $count = 0; + foreach my $m (@{$run->{additional_media}}) { + if (($m =~ m/^(http:|ftp:)/)) { + next; + } + my $mount_point = "$chroot/urpmi_medias/$count"; + my $bind; + my ($url) = $m =~ s!^(http://|ftp://|file://)!!; + if (($m =~ m/^(file:)/)) { + $bind = "-o bind"; + } + system("$sudo mkdir -p $mount_point"); + system("$sudo mount $bind $url $mount_point") and return; + $count++; + } 1; } @@ -469,6 +495,12 @@ sub build_chroot { sudo($run, $config, "--rm", "$tmp_chroot/var/lib/rpm/__db*"); system("$sudo umount $tmp_chroot/proc &> /dev/null"); system("$sudo umount $tmp_chroot/dev/pts &> /dev/null"); + if ($run->{icecream}) { + system("$sudo umount $tmp_chroot/var/cache/icecream &> /dev/null"); + } + if (-d "$tmp_chroot/urpmi_medias/") { + system ("$sudo umount $tmp_chroot/urpmi_medias/*"); + } return !system($sudo, 'tar', 'czf', $chroot_tar, '-C', $tmp_chroot, '.'); } } diff --git a/lib/Iurt/Urpmi.pm b/lib/Iurt/Urpmi.pm index f4628ee..f774e48 100644 --- a/lib/Iurt/Urpmi.pm +++ b/lib/Iurt/Urpmi.pm @@ -110,7 +110,23 @@ sub urpmi_command { } } - if (-d "$local_media/hdlist.cz") { + my $count = 0; + foreach my $m (@{$run->{additional_media}}) { + my ($name) = $m =~ s![/:]!_!g; + my $url; + if (($m =~ m!^(http:|ftp:)!)) { + $url = $m; + } + else { + $url = "/urpmi_medias/$count"; + $count++; + } + if (!add_media($self, $chroot_tmp, $name, "$name $url")) { + plog("ERROR: Unable to add media $m"); + } + } + + if (-d "$local_media") { mkdir("$chroot_tmp/iurt_media/"); opendir my $dir, $local_media; my $next; |