summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/tlpkg/etc/dev.allow-disabling-formats-and-maps-in-local-cfg-file.patch224
1 files changed, 224 insertions, 0 deletions
diff --git a/Master/tlpkg/etc/dev.allow-disabling-formats-and-maps-in-local-cfg-file.patch b/Master/tlpkg/etc/dev.allow-disabling-formats-and-maps-in-local-cfg-file.patch
new file mode 100644
index 00000000000..0e919f7af2a
--- /dev/null
+++ b/Master/tlpkg/etc/dev.allow-disabling-formats-and-maps-in-local-cfg-file.patch
@@ -0,0 +1,224 @@
+Index: tlpkg/TeXLive/TLPDB.pm
+===================================================================
+--- tlpkg/TeXLive/TLPDB.pm (revision 14688)
++++ tlpkg/TeXLive/TLPDB.pm (working copy)
+@@ -1221,6 +1221,9 @@
+ The function C<fmtutil_cnf_lines> returns the list of a fmtutil.cnf file
+ containing only those formats present in the installation.
+
++Every format listed in the tlpdb but listed in the arguments
++will not be included in the list of lines returned.
++
+ =cut
+ sub fmtutil_cnf_lines {
+ my $self = shift;
+@@ -1228,16 +1231,19 @@
+ foreach my $p ($self->list_packages) {
+ my $obj = $self->get_package ($p);
+ die "$0: No TeX Live package named $p, strange" if ! $obj;
+- push @lines, $obj->fmtutil_cnf_lines;
++ push @lines, $obj->fmtutil_cnf_lines(@_);
+ }
+ return(@lines);
+ }
+
+-=item C<< $tlpdb->updmap_cfg_lines >>
++=item C<< $tlpdb->updmap_cfg_lines ( [@disabled_maps] ) >>
+
+ The function C<updmap_cfg_lines> returns the list of a updmap.cfg file
+ containing only those maps present in the installation.
+
++A map file mentioned in the tlpdb but listed in the arguments will not
++be included in the list of lines returned.
++
+ =cut
+ sub updmap_cfg_lines {
+ my $self = shift;
+@@ -1245,16 +1251,19 @@
+ foreach my $p ($self->list_packages) {
+ my $obj = $self->get_package ($p);
+ die "$0: No TeX Live package named $p, strange" if ! $obj;
+- push @lines, $obj->updmap_cfg_lines;
++ push @lines, $obj->updmap_cfg_lines(@_);
+ }
+ return(@lines);
+ }
+
+-=item C<< $tlpdb->language_dat_lines >>
++=item C<< $tlpdb->language_dat_lines ( [@disabled_hyphen_names] )>>
+
+ The function C<language_dat_lines> returns the list of all
+ lines for language.dat that can be generated from the tlpdb.
+
++Every hyphenation pattern listed in the tlpdb but listed in the arguments
++will not be included in the list of lines returned.
++
+ =cut
+
+ sub language_dat_lines {
+@@ -1263,16 +1272,19 @@
+ foreach my $p ($self->list_packages) {
+ my $obj = $self->get_package ($p);
+ die "$0: No TeX Live package named $p, strange" if ! $obj;
+- push @lines, $obj->language_dat_lines;
++ push @lines, $obj->language_dat_lines(@_);
+ }
+ return(@lines);
+ }
+
+-=item C<< $tlpdb->language_def_lines >>
++=item C<< $tlpdb->language_def_lines ( [@disabled_hyphen_names] )>>
+
+ The function C<language_def_lines> returns the list of all
+ lines for language.def that can be generated from the tlpdb.
+
++Every hyphenation pattern listed in the tlpdb but listed in the arguments
++will not be included in the list of lines returned.
++
+ =cut
+
+ sub language_def_lines {
+@@ -1281,7 +1293,7 @@
+ foreach my $p ($self->list_packages) {
+ my $obj = $self->get_package ($p);
+ die "$0: No TeX Live package named $p, strange" if ! $obj;
+- push @lines, $obj->language_def_lines;
++ push @lines, $obj->language_def_lines(@_);
+ }
+ return(@lines);
+ }
+Index: tlpkg/TeXLive/TLPOBJ.pm
+===================================================================
+--- tlpkg/TeXLive/TLPOBJ.pm (revision 14688)
++++ tlpkg/TeXLive/TLPOBJ.pm (working copy)
+@@ -938,6 +938,7 @@
+ #
+ sub fmtutil_cnf_lines {
+ my $obj = shift;
++ my @disabled = @_;
+ my @fmtlines = ();
+ my $first = 1;
+ my $pkg = $obj->name;
+@@ -952,6 +953,7 @@
+ $first = 0;
+ }
+ my $mode = ($r{"mode"} ? "" : "#! ");
++ $mode = "#! " if TeXLive::TLUtils::member ($r{'name'}, @disabled);
+ push @fmtlines, "$mode$r{'name'} $r{'engine'} $r{'patterns'} $r{'options'}\n";
+ }
+ }
+@@ -961,6 +963,7 @@
+
+ sub updmap_cfg_lines {
+ my $obj = shift;
++ my @disabled = @_;
+ my %maps;
+ foreach my $e ($obj->executes) {
+ if ($e =~ m/addMap (.*)$/) {
+@@ -972,6 +975,7 @@
+ }
+ my @updmaplines;
+ foreach (sort keys %maps) {
++ next if TeXLive::TLUtils::member($_, @disabled);
+ if ($maps{$_} == 2) {
+ push @updmaplines, "MixedMap $_\n";
+ } else {
+@@ -983,24 +987,29 @@
+
+
+ sub language_dat_lines {
++ my $self = shift;
++ local @disabled = @_;
+ sub make_dat_lines {
+ my ($name, $lhm, $rhm, $file, @syn) = @_;
+ my @ret;
++ return if TeXLive::TLUtils::member($name, @disabled);
+ push @ret, "$name $file\n";
+ foreach (@syn) {
+ push @ret, "=$_\n";
+ }
+ return(@ret);
+ }
+- my $self = shift;
+ my @lines = $self->_parse_hyphen_execute(\&make_dat_lines);
+ return(@lines);
+ }
+
+
+ sub language_def_lines {
++ my $self = shift;
++ local @disabled = @_;
+ sub make_def_lines {
+ my ($name, $lhm, $rhm, $file, @syn) = @_;
++ return if TeXLive::TLUtils::member($name, @disabled);
+ my $exc = "";
+ my @ret;
+ push @ret, "\\addlanguage\{$name\}\{$file\}\{$exc\}\{$lhm\}\{$rhm\}\n";
+@@ -1011,7 +1020,6 @@
+ }
+ return(@ret);
+ }
+- my $self = shift;
+ my @lines = $self->_parse_hyphen_execute(\&make_def_lines);
+ return(@lines);
+ }
+Index: tlpkg/TeXLive/TLUtils.pm
+===================================================================
+--- tlpkg/TeXLive/TLUtils.pm (revision 14688)
++++ tlpkg/TeXLive/TLUtils.pm (working copy)
+@@ -2297,22 +2297,45 @@
+
+ =cut
+
++#
++# get_disabled_local_configs
++# returns the list of disabled formats/hyphenpatterns/maps
++# disabling is done by putting
++# #!NAME
++# into the respective XXXX-local.cnf/cfg file
++#
++# WARNING this is only supported for updmap.cfg and fmtutil.cnf, since
++# WARNING those files use # as comment char and have line oriented structure
++#
++sub get_disabled_local_configs {
++ my $localconf = shift;
++ if (-r "$localconf") {
++ open FOO, "<$localconf"
++ or die "strange, -r ok but cannot open $localconf: $!";
++ my @tmp = <FOO>;
++ close(FOO) || warn("Closing $localconf did not succeed: $!");
++ my @disabled = map { if (m/^#!(\S+)\s*$/) { $1 } else { }} @tmp;
++ return @disabled;
++ }
++}
++
+ sub create_fmtutil {
+ my ($tlpdb,$dest,$localconf) = @_;
+- my @lines = $tlpdb->fmtutil_cnf_lines;
++ my @lines = $tlpdb->fmtutil_cnf_lines(get_disabled_local_configs($localconf));
+ _create_config_files($tlpdb, "texmf/web2c/fmtutil-hdr.cnf", $dest,
+ $localconf, 0, '#', \@lines);
+ }
+
+ sub create_updmap {
+ my ($tlpdb,$dest,$localconf) = @_;
+- my @lines = $tlpdb->updmap_cfg_lines;
++ my @lines = $tlpdb->updmap_cfg_lines(get_disabled_local_configs($localconf));
+ _create_config_files($tlpdb, "texmf/web2c/updmap-hdr.cfg", $dest,
+ $localconf, 0, '#', \@lines);
+ }
+
+ sub create_language_dat {
+ my ($tlpdb,$dest,$localconf) = @_;
++ # no checking for disabled stuff for language.dat and .def
+ my @lines = $tlpdb->language_dat_lines;
+ _create_config_files($tlpdb, "texmf/tex/generic/config/language.us", $dest,
+ $localconf, 0, '%', \@lines);
+@@ -2320,6 +2343,7 @@
+
+ sub create_language_def {
+ my ($tlpdb,$dest,$localconf) = @_;
++ # no checking for disabled stuff for language.dat and .def
+ my @lines = $tlpdb->language_def_lines;
+ my @postlines;
+ push @postlines, "%%% No changes may be made beyond this point.\n";