summaryrefslogtreecommitdiff
path: root/Build/source
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-10-07 21:41:12 +0000
committerKarl Berry <karl@freefriends.org>2023-10-07 21:41:12 +0000
commit369ca3e8a42eaab06d3eed4e383fd91c1da72875 (patch)
treec7f4f922a7e3a28eab7ea5f88836c49b28b9ae05 /Build/source
parentb2afc04099553daa27e39000bb03b93947cda8a5 (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.pm75
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 {
&copy
&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: #