diff options
author | Karl Berry <karl@freefriends.org> | 2023-10-07 21:41:12 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-10-07 21:41:12 +0000 |
commit | 369ca3e8a42eaab06d3eed4e383fd91c1da72875 (patch) | |
tree | c7f4f922a7e3a28eab7ea5f88836c49b28b9ae05 /Build/source | |
parent | b2afc04099553daa27e39000bb03b93947cda8a5 (diff) |
doc,sync
git-svn-id: svn://tug.org/texlive/trunk@68475 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source')
-rw-r--r-- | Build/source/texk/tests/TeXLive/TLUtils.pm | 75 |
1 files changed, 53 insertions, 22 deletions
diff --git a/Build/source/texk/tests/TeXLive/TLUtils.pm b/Build/source/texk/tests/TeXLive/TLUtils.pm index 9c0d5a80178..1f29ba9537f 100644 --- a/Build/source/texk/tests/TeXLive/TLUtils.pm +++ b/Build/source/texk/tests/TeXLive/TLUtils.pm @@ -7,7 +7,7 @@ use strict; use warnings; package TeXLive::TLUtils; -my $svnrev = '$Revision: 66420 $'; +my $svnrev = '$Revision: 68283 $'; my $_modulerevision = ($svnrev =~ m/: ([0-9]+) /) ? $1 : "unknown"; sub module_revision { return $_modulerevision; } @@ -58,6 +58,8 @@ C<TeXLive::TLUtils> - TeX Live infrastructure miscellany TeXLive::TLUtils::copy($file, $target_dir); TeXLive::TLUtils::touch(@files); TeXLive::TLUtils::collapse_dirs(@files); + TeXLive::TLUtils::all_dirs_and_removed_dirs(@files); + TeXLive::TLUtils::dirs_of_files(@files); TeXLive::TLUtils::removed_dirs(@files); TeXLive::TLUtils::download_file($path, $destination); TeXLive::TLUtils::setup_programs($bindir, $platform); @@ -209,6 +211,8 @@ BEGIN { © &touch &collapse_dirs + &all_dirs_and_removed_dirs + &dirs_of_files &removed_dirs &install_package &install_packages @@ -1613,30 +1617,14 @@ sub collapse_dirs { return @ret; } -=item C<removed_dirs(@files)> - -Returns all the directories from which all content will be removed. - -Here is the idea: - -=over 4 - -=item create a hashes by_dir listing all files that should be removed - by directory, i.e., key = dir, value is list of files - -=item for each of the dirs (keys of by_dir and ordered deepest first) - check that all actually contained files are removed - and all the contained dirs are in the removal list. If this is the - case put that directory into the removal list - -=item return this removal list +=item C<dirs_of_files(@files)> -=back +Returns all the directories in which at least one of the given +files reside. =cut -sub removed_dirs { +sub dirs_of_files { my (@files) = @_; - my %removed_dirs; my %by_dir; # construct hash of all directories mentioned, values are lists of the @@ -1662,6 +1650,21 @@ sub removed_dirs { $by_dir{$d} = \@a; } + return %by_dir; +} + +=item C<all_dirs_and_removed_dirs(@files)> + +Returns all the directories for files and those from which all +content will be removed. + +=cut + +sub all_dirs_and_removed_dirs { + my (@files) = @_; + my %removed_dirs; + my %by_dir = dirs_of_files(@files); + # for each of our directories, see if we are removing everything in # the directory. if so, return the directory; else return the # individual files. @@ -1697,9 +1700,37 @@ sub removed_dirs { $removed_dirs{$d} = 1; } } + return (%by_dir, %removed_dirs); +} + +=item C<removed_dirs(@files)> + +Returns all the directories from which all content will be removed. + +Here is the idea: + +=over 4 + +=item create a hashes by_dir listing all files that should be removed + by directory, i.e., key = dir, value is list of files + +=item for each of the dirs (keys of by_dir and ordered deepest first) + check that all actually contained files are removed + and all the contained dirs are in the removal list. If this is the + case put that directory into the removal list + +=item return this removal list + +=back +=cut + +sub removed_dirs { + my (@files) = @_; + my (%by_dir, %removed_dirs) = all_dirs_and_removed_dirs(@files); return keys %removed_dirs; } + =item C<time_estimate($totalsize, $donesize, $starttime)> Returns the current running time and the estimated total time @@ -5274,4 +5305,4 @@ GNU General Public License Version 2 or later. ### tab-width: 2 ### indent-tabs-mode: nil ### End: -# vim:set tabstop=2 expandtab: # +# vim:set tabstop=2 shiftwidth=2 expandtab: # |