summaryrefslogtreecommitdiff
path: root/Master/install-tl
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2022-03-05 05:38:53 +0000
committerNorbert Preining <preining@logic.at>2022-03-05 05:38:53 +0000
commit98c1b86e2e2c19a50736c4d8ab61f4a1a4023548 (patch)
tree758809b135c56695de64a96be85aabf2341733f1 /Master/install-tl
parent79093820d39989d69d5eb9892ced337f4afe2143 (diff)
install-tl: if df is available, check for free disk space
git-svn-id: svn://tug.org/texlive/trunk@62426 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/install-tl')
-rwxr-xr-xMaster/install-tl31
1 files changed, 31 insertions, 0 deletions
diff --git a/Master/install-tl b/Master/install-tl
index a745f38e00d..493bcf8d377 100755
--- a/Master/install-tl
+++ b/Master/install-tl
@@ -937,6 +937,37 @@ sub do_installation {
if (win32()) {
TeXLive::TLWinGoo::maybe_make_ro ($vars{'TEXDIR'});
}
+ # If df is available, check for free disk space
+ if ($::progs{"df"}) {
+ # To ensure that GNU coreutil df returns POSIX style 512-blocks,
+ # it is necessary to set POSIXLY_CORRECT=1
+ # (GNU df defaults to 1024-block)
+ # https://en.wikipedia.org/wiki/POSIX#512-_vs_1024-byte_blocks
+ my $td = $vars{'TEXDIR'};
+ $td .= "/" if ($td !~ m!/$!);
+ debug("Checking for free diskspace in $td\n");
+ my ($output, $retval) =
+ TeXLive::TLUtils::run_cmd("df -P \"$vars{'TEXDIR'}\"",
+ POSIXLY_CORRECT => 1);
+ if ($retval == 0) {
+ # Output format should be this:
+ # Filesystem 512-blocks Used Available Capacity Mounted on
+ # /dev/sdb3 6099908248 3590818104 2406881416 60% /home
+ my ($h,$l) = split(/\n/, $output);
+ my ($fs, $nrb, $used, $avail, @rest) = split(' ', $l);
+ debug("disk space: used=$used (512-block), avail=$avail (512-block),",
+ " required=$vars{'total_size'} (Mb)\n");
+ # $vars{'total_size'} is number required in Mb (1024**2)
+ # $vars{'total_size'} =
+ # sprintf "%d", ($size * $TeXLive::TLConfig::BlockSize)/1024**2;
+ # $avail is in 512 blocks, so we need to device by 2 * 1024 to obtain Mb
+ # require that at least 100M remain free
+ my $reserve = 100;
+ if ( $avail / 2024 + $reserve < $vars{'total_size'}) {
+ die("DISK SPACE INSUFFICIENT!");
+ }
+ }
+ }
# now remove final slash from TEXDIR even if it is the root of a drive
$vars{'TEXDIR'} =~ s!/$!!;
# do the actual installation