summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Vignaud <thierry.vignaud@gmail.com>2020-04-28 10:55:48 +0200
committerThierry Vignaud <thierry.vignaud@gmail.com>2020-04-29 14:47:51 +0200
commit70942e1fef37d8661b0a0f4d4ed1612dc6574455 (patch)
treed58ba834b9ea48afade391a4cf1b6160b60f5828
parent34c3f9d61ef86a46e3b774130fe3877f4ec0ea32 (diff)
downloadurpmi-70942e1fef37d8661b0a0f4d4ed1612dc6574455.tar
urpmi-70942e1fef37d8661b0a0f4d4ed1612dc6574455.tar.gz
urpmi-70942e1fef37d8661b0a0f4d4ed1612dc6574455.tar.bz2
urpmi-70942e1fef37d8661b0a0f4d4ed1612dc6574455.tar.xz
urpmi-70942e1fef37d8661b0a0f4d4ed1612dc6574455.zip
silent rpm --version during installation/removal
Calling "LC_ALL=C rpm --version" from urpm::install::install_logger() sometimes causes the following to be displayed when using --urpmi-root: "shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory" Typically, we run into: chdir("/") = 0 chroot("/home/tv/mga/pkgs/RPM/perl-URPM/mga7/") = 0 (...) clone() execve("/bin/sh", ["sh", "-c", "LC_ALL=C rpm --version"], ... getcwd("(unreachable)/", 4095) = 15 So just caches the rpm version prior to the first transaction and voila
-rw-r--r--NEWS3
-rw-r--r--urpm/install.pm5
2 files changed, 6 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index 66be375d..d6a060fa 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,9 @@
o try harder to find genhdlist2 in uninstalled CPAN modules
o work without glibc-static-devel
o workaround %find_lang sometimes failing on FreeBSD
+- library:
+ o fix rpm version check causing strange warning messages:
+ "shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory"
- testsuite:
o add more extensive tests
o describe it more
diff --git a/urpm/install.pm b/urpm/install.pm
index 0e4cd81b..174291c7 100644
--- a/urpm/install.pm
+++ b/urpm/install.pm
@@ -94,7 +94,7 @@ See L<URPM> for parameters
=cut
# install logger callback
-my ($erase_logger, $index, $total_pkg, $uninst_count, $current_pkg);
+my ($erase_logger, $index, $total_pkg, $uninst_count, $current_pkg, $rpm_version);
sub install_logger {
my ($urpm, $type, undef, $subtype, $amount, $total) = @_;
local $| = 1;
@@ -121,7 +121,7 @@ sub install_logger {
$cnt = $pname ? $urpm->{logger_count} : '-';
}
require urpm::select;
- $index++ if urpm::select::_rpm_version() lt 4.13.0;
+ $index++ if $rpm_version lt 4.13.0;
my $s = sprintf("%9s: %-22s", $cnt . "/" . $total_pkg, $pname);
print $s;
$s =~ / $/ or printf "\n%9s %-22s", '', '';
@@ -377,6 +377,7 @@ sub install {
} elsif (!$options{noorder} && (@errors = $trans->order(%options))) {
} else {
$urpm->{readmes} = {};
+ $rpm_version ||= urpm::select::_rpm_version();
_get_callbacks($urpm, $db, $trans, \%options, $install, $upgrade, scalar @trans_pkgs);