diff options
author | Olivier Blin <oblin@mandriva.com> | 2008-03-20 01:17:08 +0000 |
---|---|---|
committer | Olivier Blin <oblin@mandriva.com> | 2008-03-20 01:17:08 +0000 |
commit | 440ffe22ded3de7604e00d6c98e24e1069ebf378 (patch) | |
tree | 169acc31381d5d8f8fbb216a42aa3148d0d52d59 /perl-install/fs | |
parent | 4f441032f26c8334c49969ac7eaa37752c1250ee (diff) | |
download | drakx-440ffe22ded3de7604e00d6c98e24e1069ebf378.tar drakx-440ffe22ded3de7604e00d6c98e24e1069ebf378.tar.gz drakx-440ffe22ded3de7604e00d6c98e24e1069ebf378.tar.bz2 drakx-440ffe22ded3de7604e00d6c98e24e1069ebf378.tar.xz drakx-440ffe22ded3de7604e00d6c98e24e1069ebf378.zip |
move functions to get available space from installer to drakxtools (to be used in draklive-install)
Diffstat (limited to 'perl-install/fs')
-rw-r--r-- | perl-install/fs/any.pm | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/perl-install/fs/any.pm b/perl-install/fs/any.pm index d523a6943..730252b40 100644 --- a/perl-install/fs/any.pm +++ b/perl-install/fs/any.pm @@ -104,4 +104,39 @@ sub prepare_minimal_root { } } +sub getAvailableSpace { + my ($fstab) = @_; + + #- make sure of this place to be available for installation, this could help a lot. + #- currently doing a very small install use 36Mb of postinstall-rpm, but installing + #- these packages may eat up to 90Mb (of course not all the server may be installed!). + #- 65mb may be a good choice to avoid almost all problem of insuficient space left... + my $minAvailableSize = 65 * sqr(1024); + + my $n = !$::testing && getAvailableSpace_mounted($::prefix) || + getAvailableSpace_raw($fstab) * 512 / 1.07; + $n - max(0.1 * $n, $minAvailableSize); +} + +sub getAvailableSpace_mounted { + my ($prefix) = @_; + my $dir = -d "$prefix/usr" ? "$prefix/usr" : $prefix; + my (undef, $free) = MDK::Common::System::df($dir) or return; + log::l("getAvailableSpace_mounted $free KB"); + $free * 1024 || 1; +} +sub getAvailableSpace_raw { + my ($fstab) = @_; + + do { $_->{mntpoint} eq '/usr' and return $_->{size} } foreach @$fstab; + do { $_->{mntpoint} eq '/' and return $_->{size} } foreach @$fstab; + + if ($::testing) { + my $nb = 450; + log::l("taking ${nb}MB for testing"); + return MB($nb); + } + die "missing root partition"; +} + 1; |