diff options
author | Karl Berry <karl@freefriends.org> | 2009-08-16 23:33:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-08-16 23:33:14 +0000 |
commit | 1d678c9b24a56c664c9c27a350038656c8b49073 (patch) | |
tree | 56e390ac04c7958d1361e281649989f8355c6e06 /Master/tlpkg | |
parent | d0d7124586683746bbc2a57dc417b86eac77f341 (diff) |
support disabling of maps/formats/hyphenations in local conf files
git-svn-id: svn://tug.org/texlive/trunk@14715 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg')
-rw-r--r-- | Master/tlpkg/TeXLive/TLPDB.pm | 28 | ||||
-rw-r--r-- | Master/tlpkg/TeXLive/TLPOBJ.pm | 27 | ||||
-rw-r--r-- | Master/tlpkg/TeXLive/TLUtils.pm | 43 | ||||
-rw-r--r-- | Master/tlpkg/etc/dev.allow-disabling-formats-and-maps-in-local-cfg-file.patch | 231 |
4 files changed, 74 insertions, 255 deletions
diff --git a/Master/tlpkg/TeXLive/TLPDB.pm b/Master/tlpkg/TeXLive/TLPDB.pm index fabb05332b7..b069bae9d3c 100644 --- a/Master/tlpkg/TeXLive/TLPDB.pm +++ b/Master/tlpkg/TeXLive/TLPDB.pm @@ -1,6 +1,6 @@ # $Id$ # TeXLive::TLPDB.pm - module for using tlpdb files -# Copyright 2007, 2008 Norbert Preining +# Copyright 2007, 2008, 2009 Norbert Preining # # This file is licensed under the GNU General Public License version 2 # or any later version. @@ -1221,6 +1221,9 @@ sub format_definitions { 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 @@ sub fmtutil_cnf_lines { 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 @@ sub updmap_cfg_lines { 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 @@ sub language_dat_lines { 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 @@ sub language_def_lines { 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); } diff --git a/Master/tlpkg/TeXLive/TLPOBJ.pm b/Master/tlpkg/TeXLive/TLPOBJ.pm index a2a17e257b3..b05366dff24 100644 --- a/Master/tlpkg/TeXLive/TLPOBJ.pm +++ b/Master/tlpkg/TeXLive/TLPOBJ.pm @@ -938,6 +938,7 @@ sub format_definitions { # sub fmtutil_cnf_lines { my $obj = shift; + my @disabled = @_; my @fmtlines = (); my $first = 1; my $pkg = $obj->name; @@ -952,6 +953,7 @@ sub fmtutil_cnf_lines { $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 fmtutil_cnf_lines { sub updmap_cfg_lines { my $obj = shift; + my @disabled = @_; my %maps; foreach my $e ($obj->executes) { if ($e =~ m/addMap (.*)$/) { @@ -972,6 +975,7 @@ sub updmap_cfg_lines { } my @updmaplines; foreach (sort keys %maps) { + next if TeXLive::TLUtils::member($_, @disabled); if ($maps{$_} == 2) { push @updmaplines, "MixedMap $_\n"; } else { @@ -983,24 +987,33 @@ sub updmap_cfg_lines { sub language_dat_lines { + my $self = shift; + local @disabled = @_; # we use @disabled in the nested sub + my @lines = $self->_parse_hyphen_execute(\&make_dat_lines); + return @lines; + 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); + 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 = @_; # we use @disabled in the nested sub + my @lines = $self->_parse_hyphen_execute(\&make_def_lines); + return @lines; + 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"; @@ -1009,15 +1022,11 @@ sub language_def_lines { push @ret, "\\addlanguage\{$_\}\{$file\}\{$exc\}\{$lhm\}\{$rhm\}\n"; #debug("Ignoring synonym $_ for $name when creating language.def\n"); } - return(@ret); + return @ret; } - my $self = shift; - my @lines = $self->_parse_hyphen_execute(\&make_def_lines); - return(@lines); } - sub _parse_hyphen_execute { my ($obj, $coderef) = @_; my @langlines = (); diff --git a/Master/tlpkg/TeXLive/TLUtils.pm b/Master/tlpkg/TeXLive/TLUtils.pm index 01350f641aa..5a9568f0a1b 100644 --- a/Master/tlpkg/TeXLive/TLUtils.pm +++ b/Master/tlpkg/TeXLive/TLUtils.pm @@ -2291,36 +2291,65 @@ C<$TEXMFSYSVAR>). These functions merge the information present in the TLPDB C<$tlpdb> (formats, maps, hyphenations) with local configuration additions: C<$localconf>. -Currently the "merging" is done trivially by appending the content of -the local configuration files at the end of the file. This should be -improved (checking for duplicates). +Currently the merging is done by omitting disabled entries specified +in the local file, and then appending the content of the local +configuration files at the end of the file. We should also check for +duplicates, maybe even error checking. =cut +# +# get_disabled_local_configs +# returns the list of disabled formats/hyphenpatterns/maps +# disabling is done by putting +# #!NAME +# or +# %!NAME +# into the respective foo-local.cnf/cfg file +# +sub get_disabled_local_configs { + my $localconf = shift; + my $cc = 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/^$cc!(\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) = @_; - my @lines = $tlpdb->language_dat_lines; + # no checking for disabled stuff for language.dat and .def + my @lines = $tlpdb->language_dat_lines( + get_disabled_local_configs($localconf, '%')); _create_config_files($tlpdb, "texmf/tex/generic/config/language.us", $dest, $localconf, 0, '%', \@lines); } sub create_language_def { my ($tlpdb,$dest,$localconf) = @_; - my @lines = $tlpdb->language_def_lines; + # no checking for disabled stuff for language.dat and .def + my @lines = $tlpdb->language_def_lines( + get_disabled_local_configs($localconf, '%')); my @postlines; push @postlines, "%%% No changes may be made beyond this point.\n"; push @postlines, "\n"; 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 deleted file mode 100644 index ea770c0ea13..00000000000 --- a/Master/tlpkg/etc/dev.allow-disabling-formats-and-maps-in-local-cfg-file.patch +++ /dev/null @@ -1,231 +0,0 @@ -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,30 +2297,58 @@ - - =cut - -+# -+# get_disabled_local_configs -+# returns the list of disabled formats/hyphenpatterns/maps -+# disabling is done by putting -+# #!NAME -+# or -+# %!NAME -+# into the respective XXXX-local.cnf/cfg file -+# -+sub get_disabled_local_configs { -+ my $localconf = shift; -+ my $cc = 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/^$cc!(\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) = @_; -- my @lines = $tlpdb->language_dat_lines; -+ # no checking for disabled stuff for language.dat and .def -+ my @lines = $tlpdb->language_dat_lines( -+ get_disabled_local_configs($localconf, '%')); - _create_config_files($tlpdb, "texmf/tex/generic/config/language.us", $dest, - $localconf, 0, '%', \@lines); - } - - sub create_language_def { - my ($tlpdb,$dest,$localconf) = @_; -- my @lines = $tlpdb->language_def_lines; -+ # no checking for disabled stuff for language.dat and .def -+ my @lines = $tlpdb->language_def_lines( -+ get_disabled_local_configs($localconf, '%')); - my @postlines; - push @postlines, "%%% No changes may be made beyond this point.\n"; - push @postlines, "\n"; |