From 84da58e035559e10b0e840c8bf3aed0fad2c77a3 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sat, 21 Feb 2009 11:58:03 +0000 Subject: update 2009.combined.patch and README to include lzma->xz switch git-svn-id: svn://tug.org/texlive/trunk@12199 c570f23f-e606-0410-a88d-b1316a301751 --- Master/tlpkg/etc/2009.combined.patch | 9720 ++++++++++++++++++++++++---------- 1 file changed, 6814 insertions(+), 2906 deletions(-) (limited to 'Master/tlpkg/etc/2009.combined.patch') diff --git a/Master/tlpkg/etc/2009.combined.patch b/Master/tlpkg/etc/2009.combined.patch index 02d55851362..2c4d108be3f 100644 --- a/Master/tlpkg/etc/2009.combined.patch +++ b/Master/tlpkg/etc/2009.combined.patch @@ -1,2980 +1,6779 @@ -Index: tlpkg/TeXLive/TLPDB.pm +Index: install-tl =================================================================== ---- tlpkg/TeXLive/TLPDB.pm (revision 12171) -+++ tlpkg/TeXLive/TLPDB.pm (working copy) -@@ -788,7 +788,7 @@ - read-only function; you cannot change the root of the TLPDB using this - function. - --See C<00texlive-installation.config.tlpsrc> for a description of the -+See C<00texlive.installation.tlpsrc> for a description of the - special value C<__MASTER>. - - =cut -@@ -1111,11 +1111,11 @@ - - sub _set_option_value { - my ($self,$key,$value) = @_; -- my $pkg = $self->{'tlps'}{'00texlive-installation.config'}; -+ my $pkg = $self->{'tlps'}{'00texlive.installation'}; - my @newdeps; - if (!defined($pkg)) { - $pkg = new TeXLive::TLPOBJ; -- $pkg->name("00texlive-installation.config"); -+ $pkg->name("00texlive.installation"); - $pkg->category("TLCore"); - push @newdeps, "$key:$value"; - } else { -@@ -1133,20 +1133,20 @@ - } - } - $pkg->depends(@newdeps); -- $self->{'tlps'}{'00texlive-installation.config'} = $pkg; -+ $self->{'tlps'}{'00texlive.installation'} = $pkg; - } - - sub _option_value { - my ($self,$key) = @_; -- if (defined($self->{'tlps'}{'00texlive-installation.config'})) { -- foreach my $d ($self->{'tlps'}{'00texlive-installation.config'}->depends) { -+ if (defined($self->{'tlps'}{'00texlive.installation'})) { -+ foreach my $d ($self->{'tlps'}{'00texlive.installation'}->depends) { - if ($d =~ m!^$key:(.*)$!) { - return "$1"; - } - } - return; - } -- tlwarn("00texlive-installation.config not found, cannot read option $key.\n"); -+ tlwarn("00texlive.installation not found, cannot read option $key.\n"); - return; +--- install-tl (revision 12198) ++++ install-tl (working copy) +@@ -82,7 +82,6 @@ + &add_menu_shortcut + &remove_desktop_shortcut + &remove_menu_shortcut +- &init_unshortbat + &create_uninstaller + )); } - -@@ -1179,6 +1179,11 @@ - if (@_) { $self->_set_option_value("opt_create_symlinks", shift); } - return $self->_option_value("opt_create_symlinks"); +@@ -121,7 +120,7 @@ + # + # The following values are taken from the remote tlpdb using the + # $tlpdb->option_XXXXX +-# settings (i.e., taken from tlpkg/tlpsrc/00texlive-installation.tlpsrc ++# settings (i.e., taken from tlpkg/tlpsrc/00texlive.installation.tlpsrc + # + # 'option_symlinks' => 0, + # 'sys_bin' => '/usr/local/bin', +@@ -380,6 +379,14 @@ + $vars{'doc_splitting_supported'} = $tlpdb->config_doc_container; } -+sub option_system_integration { -+ my $self = shift; -+ if (@_) { $self->_set_option_value("opt_system_integration", shift); } -+ return $self->_option_value("opt_system_integration"); + $texlive_release = $tlpdb->config_release; ++# if the release from the remote TLPDB does not agree with the ++# TLConfig::ReleaseYear in the first 4 places break out here. ++# Why only the first four places: some optional network distributions ++# might use ++# release/2009-foobar ++if ($texlive_release !~ m/^$TeXLive::TLConfig::ReleaseYear/) { ++ die "The release version of the installation source and\nthe installation media do not agree:\nsource: $texlive_release\nmedia: $TeXLive::TLConfig::ReleaseYear\nPlease report to tex-live\@tug.org"; +} - sub option_install_docfiles { - my $self = shift; - if (@_) { $self->_set_option_value("opt_install_docfiles", shift); } -@@ -1239,26 +1244,64 @@ - =cut - sub fmtutil_cnf_lines { - my $self = shift; -- my %fmtcnffiles; -- foreach my $p ($self->list_packages) { -- my $obj = $self->get_package ($p); -- die "$0: No TeX Live package named $p, strange" if ! $obj; -+ my @fmtlines = (); -+ -+ foreach my $pkg ($self->list_packages) { -+ my $obj = $self->get_package ($pkg); -+ die "No TeX Live package named $pkg, too strange" if ! $obj; -+ my $first = 1; - foreach my $e ($obj->executes) { -- if ($e =~ m/BuildFormat (.*)$/) { -- $fmtcnffiles{$1} = 1; -- } -- # others are ignored here -+ if ($e =~ m/AddFormat\s+(.*)\s*/) { -+ my $name; -+ my $engine; -+ my $patterns = "-"; -+ my $options = ""; -+ my $mode = ""; -+ if ($first) { -+ push @fmtlines, "# from $pkg:\n"; -+ $first = 0; -+ } -+ foreach my $p (&TeXLive::TLUtils::quotewords('\s+', 0, "$1")) { -+ # foreach my $p (split(' ', $1)) { -+ my ($a, $b); -+ if ($p =~ m/^(name|engine|mode|patterns|options)=(.*)$/) { -+ $a = $1; -+ $b = $2; -+ } else { -+ die "Unknown format directive in $pkg: $e"; -+ } -+ if ($a eq "name") { -+ die "AddFormat line needs name=something: $pkg, $e" unless $b; -+ $name = $b; next; -+ } -+ if ($a eq "engine") { -+ die "AddFormat line needs engine=something: $pkg, $e" unless $b; -+ $engine = $b; next; -+ } -+ if ($a eq "patterns") { -+ $patterns = ( $b ? $b : "-"); -+ next; -+ } -+ if ($a eq "mode") { -+ if ($b eq "disabled") { -+ $mode = "#! "; -+ } else { -+ $mode = ""; -+ } -+ next; -+ } -+ if ($a eq "options") { -+ $options = ( $b ? $b : ""); -+ next; -+ } -+ # should not be reached at all -+ die "Unknown language directive in $pkg: $e"; -+ } -+ push @fmtlines, "$mode$name $engine $patterns $options\n"; -+ } - } + set_platforms_supported(); + set_texlive_default_dirs(); + initialize_collections(); +@@ -491,7 +498,229 @@ + save_options_into_tlpdb(); + do_install_packages(); } -- my @formatlines; -- foreach my $f (sort keys %fmtcnffiles) { -- open(INFILE,"<$self->{'root'}/texmf/fmtutil/format.$f.cnf") -- or tlwarn("Cannot open $self->{'root'}/texmf/fmtutil/format.$f.cnf\nThe generated fmtutil.cnf file might be incomplete.\nError: $!\n"); -- @tmp = ; -- close(INFILE); -- push @formatlines, @tmp; -- } -- return(@formatlines); -+ return @fmtlines; - } - - =item C<< $tlpdb->updmap_cfg_lines >> -Index: tlpkg/TeXLive/TLConfig.pm -=================================================================== ---- tlpkg/TeXLive/TLConfig.pm (revision 12171) -+++ tlpkg/TeXLive/TLConfig.pm (working copy) -@@ -11,6 +11,7 @@ - use vars qw( @ISA @EXPORT_OK @EXPORT ); - @ISA = qw(Exporter); - @EXPORT_OK = qw( -+ $ReleaseYear - @MetaCategories - @NormalCategories - @Categories -@@ -28,10 +29,15 @@ - $WinSpecialUpdatePackagesRegexp - @CriticalPackagesList - @AllowedConfigOptions -+ $WindowsMainMenuName - ); - @EXPORT = @EXPORT_OK; - } - -+# the year of our release, will be used in the location of the -+# network packges, and in menu names, and probably many other places -+$ReleaseYear = 2009; ++ # now we save every scheme that is fully covered by the stuff we have ++ # installed to the $localtlpdb ++ foreach my $s ($tlpdb->schemes) { ++ my $stlp = $tlpdb->get_package($s); ++ die ("That cannot happen, $s not defined in tlpdb") unless defined($stlp); ++ my $incit = 1; ++ foreach my $d ($stlp->depends) { ++ if (!defined($localtlpdb->get_package($d))) { ++ $incit = 0; ++ last; ++ } ++ } ++ if ($incit) { ++ $localtlpdb->add_tlpobj($stlp); ++ } ++ } ++ $localtlpdb->save unless $vars{'from_dvd'}; ++ do_postinst_stuff(); ++} + - # Meta Categories do not ship files, but call only for other packages - our @MetaCategories = qw/Collection Scheme/; - our $MetaCategoriesRegexp = '(Collection|Scheme)'; -@@ -57,14 +63,14 @@ - - our $Archive = "archive"; - our $TeXLiveServerURL = "http://mirror.ctan.org"; --our $TeXLiveServerPath = "systems/texlive/tlnet/2008"; -+our $TeXLiveServerPath = "systems/texlive/tlnet/$ReleaseYear"; - our $TeXLiveURL = "$TeXLiveServerURL/$TeXLiveServerPath"; - - our $WinSpecialUpdatePackagesRegexp = - '^(texlive\.infra|luatex|bin-tlperl\.win32$|bin-texlive|bin-kpathsea)'; - - --our @CriticalPackagesList = qw/texlive.infra bin-texlive/; -+our @CriticalPackagesList = qw/texlive.infra/; - - our @AllowedConfigOptions = qw/ - available_architectures -@@ -82,6 +88,8 @@ - autobackup - /; - -+our $WindowsMainMenuName = "TeX Live $ReleaseYear"; ++# do_postinst_stuff has to fix up the texmf tree and install some missing ++# files. The things to do are taken from the install-live.sh installer ++# of former times, and should be critically checked. ++sub do_postinst_stuff { ++ my $TEXDIR="$vars{'TEXDIR'}"; ++ my $TEXDIRW="$vars{'TEXDIRW'}"; ++ my $TEXMFSYSVAR="$vars{'TEXMFSYSVAR'}"; ++ my $TEXMFSYSCONFIG="$vars{'TEXMFSYSCONFIG'}"; ++ my $TEXMFLOCAL="$vars{'TEXMFLOCAL'}"; ++ my $tmv; + - 1; - - -@@ -163,7 +171,7 @@ - - =item C<@TeXLive::TLConfig::AllowedConfigOptions> - --A list of a config options that can be set in 00texlive-installation.config. -+A list of a config options that can be set in 00texlive.installation. - - =back - -Index: tlpkg/TeXLive/TLPostActions.pm -=================================================================== ---- tlpkg/TeXLive/TLPostActions.pm (revision 12171) -+++ tlpkg/TeXLive/TLPostActions.pm (working copy) -@@ -20,48 +20,13 @@ - use TeXLive::TLUtils qw(win32 mkdirhier copy conv_to_w32_path log debug info - touch tlwarn); - use TeXLive::TLWinGoo; -+use TeXLive::TLConfig; - --my $mainmenu = "TeX Live 2008"; -+my $mainmenu = $TeXLive::TLConfig::WindowsMainMenuName; - - our %PostInstall; - our %PostRemove; - --# NOT ENABLED !!!!! --# context post install actions --sub do_install_bin_context { -- my ($texdir, $texdirw, $texmfsysvar) = @_; -- # set up texmfcnf.lua -- my $TMF = "$texdirw/texmf/web2c/texmfcnf.lua"; -- if (! -r $TMF) { -- open(TMF, ">$TMF") || die "open($TMF) failed: $!\n"; -- print TMF 'local conf = {}', "\n"; -- print TMF "conf.TEXMFCACHE = \"$texmfsysvar\"\n"; -- #print TMP "conf.CACHEINTDS = 't'\n"; -- print TMF "return conf\n"; -- close(TMF) || warn "close($TMF) failed: $!"; -- } -- # update the luatools cache -- system("luatools", "--generate"); -- # build the context formats based on luatex -- system("context", "--make", "--compile", "cont-en"); -- # update the font cache -- system("mtxrun", "--script", "fonts", "--reload"); --} --# --# That has to be sorted out and maybe changed at a later time, so do NOT --# enable that for now. --###$PostInstall{"bin-context"} = \&do_install_bin_context; -- -- --# ATM do the same for luatex as for context --sub do_install_luatex { -- do_install_bin_context(@_); --} --# --# SEE ABOVE --# $PostInstall{"luatex"} = \&do_install_luatex; -- -- - # xetex - # - sub do_install_xetex { -@@ -125,7 +90,7 @@ - } - } - foreach (@lines) { -- $_ =~ s!c:/Program Files/texlive/2008!$texdir!; -+ $_ =~ s!c:/Program Files/texlive/$TeXLive::TLConfig::ReleaseYear!$texdir!; - $_ =~ s!c:/windows/fonts!$winfontdir! if win32(); - # hack around fc-cache problem in from_dvd case: - #if (win32() and (uc($texdir) ne uc($texdirw)) and -@@ -149,136 +114,13 @@ - } - $PostInstall{"xetex"} = \&do_install_xetex; - --# --# bin-dviout.win32 --# --sub do_install_bin_dviout_win32 { -- my ($texdir, $texdirw) = @_; -- if (win32()) { -- my $texdir_bsl = conv_to_w32_path($texdir); -- add_menu_shortcut( -- $mainmenu, -- 'DVIOUT Dvi Viewer', -- $texdir.'/tlpkg/dviout/dviout.exe', # for the icon -- 'wscript', -- $texdir_bsl."\\bin\\win32\\dviout.vbs", -- '', -- ); -- } --} --sub do_remove_bin_dviout_win32 { -- my ($texdir) = @_; -- if (win32()) { -- remove_menu_shortcut($mainmenu, 'DVIOUT Dvi Viewer'); -- } --} --$PostInstall{'bin-dviout.win32'} = \&do_install_bin_dviout_win32; --$PostRemove{'bin-dviout.win32'} = \&do_remove_bin_dviout_win32; - -- - # --# bin-texdoc --# --sub do_install_bin_texdoc { -- my ($texdir, $texdirw) = @_; -- if (win32()) { -- #add_desktop_shortcut( -- # $texdirw, -- # 'TeXdoc GUI', -- # '', # $vars{'TEXDIR'}.'/tlpkg/doc/notes.ico', # the icon -- # $texdir.'/bin/win32/texdoctk.bat', -- # '', # no args -- # 'batgui', # any non-null value to hide command-prompt -- #); -- add_menu_shortcut( -- $mainmenu, -- 'TeXdoc GUI', -- '', # $vars{'TEXDIR'}.'/tlpkg/doc/notes.ico', # the icon -- $texdir.'/bin/win32/texdoctk.bat', -- '', # no args -- 'batgui', # any non-null value to hide command-prompt -- ); -- } --} --sub do_remove_bin_texdoc { -- my ($texdir) = @_; -- if (win32()) { -- # remove_desktop_shortcut('TeXdoc GUI'); -- remove_menu_shortcut($mainmenu, 'TeXdoc GUI'); -- } --} --$PostInstall{'bin-texdoc'} = \&do_install_bin_texdoc; --$PostRemove{'bin-texdoc'} = \&do_remove_bin_texdoc; -- --# --# bin-tlpsv.win32 --# --sub do_install_bin_tlpsv_win32 { -- my ($texdir, $texdirw) = @_; -- if (win32()) { -- add_desktop_shortcut( -- $texdirw, -- 'PS_View', -- $texdir.'/tlpkg/tlpsv/psv.exe', # icon, not prog! -- $texdir.'/bin/win32/psv.bat', -- '', # no args -- 'batgui', # any non-null value to hide command-prompt -- ); -- add_menu_shortcut( -- $mainmenu, -- 'PS_View', -- $texdir.'/tlpkg/tlpsv/psv.exe', # icon, not prog! -- $texdir.'/bin/win32/psv.bat', -- '', # no args -- 'batgui', # any non-null value to hide command-prompt -- ); -- #register_extension(".ps", "PostScript"); -- #register_extension(".eps", "PostScript"); -- ##register_file_type("PostScript", '"'.$texdir.'/bin/win32/psv.bat"'); -- #register_file_type("PostScript", -- # '"'.$texdir.'/tlpkg/tlpsv/gswxlua.exe" -g '. -- # '"'.$texdir.'/tlpkg/tlgs/bin/gsdll32.dll" -l '. -- # '"'.$texdir.'/tlpkg/tlpsv/psv.wx.lua" -p '. -- # '"'.$texdir.'/tlpkg/tlpsv/psv_view.ps" -sINPUT="%1"'); -- #update_assocs(); -- } --} --sub do_remove_bin_tlpsv_win32 { -- my ($texdir) = @_; -- if (win32()) { -- remove_desktop_shortcut('PS_View'); -- remove_menu_shortcut($mainmenu, 'PS_View'); -- #unregister_extension(".ps"); -- #unregister_extension(".eps"); -- #unregister_file_type("PostScript"); -- #update_assocs(); -- } --} --$PostRemove{'bin-tlpsv.win32'} = \&do_remove_bin_tlpsv_win32; --$PostInstall{'bin-tlpsv.win32'} = \&do_install_bin_tlpsv_win32; -- --# - # bin-texlive - # - sub do_install_bin_texlive { - my ($texdir, $texdirw) = @_; - if (win32()) { -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manager', -- '', # $texdir.'/tlpkg/doc/dummy.ico', -- $texdir.'/bin/win32/tlmgr.bat', -- 'gui', -- 'batgui', -- ); -- add_menu_shortcut( -- $mainmenu, -- 'Release notes', -- '', -- 'http://tug.org/texlive/windows.html', -- '', -- '', -- ); - if (uc(TeXLive::TLWinGoo::win_which_dir('tex.exe')) ne - uc($texdir.'/bin/win32') or - uc(TeXLive::TLWinGoo::win_which_dir('pdftex.exe')) ne -@@ -296,7 +138,6 @@ - '', - ); - add_desktop_shortcut( -- $texdirw, - 'TeX Live Prompt', - '', - $ENV{'COMSPEC'}, -@@ -309,8 +150,6 @@ - sub do_remove_bin_texlive { - my ($texdir) = @_; - if (win32()) { -- remove_menu_shortcut($mainmenu, 'TeX Live Manager'); -- remove_menu_shortcut($mainmenu, 'Release notes'); - remove_menu_shortcut($mainmenu, 'TeX Live Prompt'); - remove_desktop_shortcut('TeX Live Prompt'); - } -@@ -318,431 +157,6 @@ - $PostInstall{'bin-texlive'} = \&do_install_bin_texlive; - $PostRemove{'bin-texlive'} = \&do_remove_bin_texlive; - --# --# texlive.infra --# ships all the readme.html/readme.XX.html files, and the index of all --# documents --sub do_install_texlive_infra { -- my ($texdir) = @_; -- if (win32()) { -- if (!defined($texdir)) { -- tlwarn("do_install_texlive_infra: texdir not defined, returning\n"); -- return; -- } -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Toplevel Readme Index', -- '', # default pdf icon -- $texdir.'/index.html', -- '', -- '', -- ); -- } --} --sub do_remove_texlive_infra { -- my ($texdir) = @_; -- if (win32()) { -- remove_menu_shortcut($mainmenu,'TeX Live Toplevel Readme Index'); -- } --} --$PostInstall{'texlive.infra'} = \&do_install_texlive_infra; --$PostRemove{'texlive.infra'} = \&do_remove_texlive_infra; -- --# --# texlive-en --# --sub do_install_texlive_en { -- my ($texdir) = @_; -- if (win32()) { -- if (!defined($texdir)) { -- tlwarn("do_install_texlive_en: texdir not defined, returning\n"); -- return; -- } -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (en) (HTML)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/english/texlive-en/texlive-en.html', -- '', -- '', -- ); -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (en) (PDF)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/english/texlive-en/texlive-en.pdf', -- '', -- '', -- ); -- } --} --sub do_remove_texlive_en { -- my ($texdir) = @_; -- if (win32()) { -- remove_menu_shortcut($mainmenu,'TeX Live Manual (en) (HTML)'); -- remove_menu_shortcut($mainmenu,'TeX Live Manual (en) (PDF)'); -- } --} --$PostInstall{'texlive-en'} = \&do_install_texlive_en; --$PostRemove{'texlive-en'} = \&do_remove_texlive_en; -- --# --# texlive-cz --# --sub do_install_texlive_cz { -- my ($texdir) = @_; -- if (win32()) { -- if (!defined($texdir)) { -- tlwarn("do_install_texlive_cz: texdir not defined, returning\n"); -- return; -- } -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (cz) (PDF)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/czechslovak/texlive-cz/texlive-cz.pdf', -- '', -- '', -- ); -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (cz) (HTML)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/czechslovak/texlive-cz/texlive-cz.html', -- '', -- '', -- ); -- } --} --sub do_remove_texlive_cz { -- my ($texdir) = @_; -- if (win32()) { -- remove_menu_shortcut($mainmenu,'TeX Live Manual (cz) (PDF)'); -- remove_menu_shortcut($mainmenu,'TeX Live Manual (cz) (HTML)'); -- } --} --$PostInstall{'texlive-cz'} = \&do_install_texlive_cz; --$PostRemove{'texlive-cz'} = \&do_remove_texlive_cz; -- --# --# texlive-fr --# --sub do_install_texlive_fr { -- my ($texdir) = @_; -- if (win32()) { -- if (!defined($texdir)) { -- tlwarn("do_install_texlive_fr: texdir not defined, returning\n"); -- return; -- } -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (fr) (PDF)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/french/texlive-fr/texlive-fr.pdf', -- '', -- '', -- ); -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (fr) (HTML)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/french/texlive-fr/texlive-fr.html', -- '', -- '', -- ); -- } --} --sub do_remove_texlive_fr { -- my ($texdir) = @_; -- if (win32()) { -- remove_menu_shortcut($mainmenu,'TeX Live Manual (fr) (HTML)'); -- remove_menu_shortcut($mainmenu,'TeX Live Manual (fr) (PDF)'); -- } --} --$PostInstall{'texlive-fr'} = \&do_install_texlive_fr; --$PostRemove{'texlive-fr'} = \&do_remove_texlive_fr; -- --# --# texlive-de --# --sub do_install_texlive_de { -- my ($texdir) = @_; -- if (win32()) { -- if (!defined($texdir)) { -- tlwarn("do_install_texlive_de: texdir not defined, returning\n"); -- return; -- } -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (de) (PDF)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/german/texlive-de/texlive-de.pdf', -- '', -- '', -- ); -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (de) (HTML)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/german/texlive-de/texlive-de.html', -- '', -- '', -- ); -- } --} --sub do_remove_texlive_de { -- my ($texdir) = @_; -- if (win32()) { -- remove_menu_shortcut($mainmenu,'TeX Live Manual (de) (PDF)'); -- remove_menu_shortcut($mainmenu,'TeX Live Manual (de) (HTML)'); -- } --} --$PostInstall{'texlive-de'} = \&do_install_texlive_de; --$PostRemove{'texlive-de'} = \&do_remove_texlive_de; -- --# --# texlive-pl --# --sub do_install_texlive_pl { -- my ($texdir) = @_; -- if (win32()) { -- if (!defined($texdir)) { -- tlwarn("do_install_texlive_pl: texdir not defined, returning\n"); -- return; -- } -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (pl) (PDF)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/polish/texlive-pl/texlive-pl.pdf', -- '', -- '', -- ); -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (pl) (HTML)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/polish/texlive-pl/texlive-pl.html', -- '', -- '', -- ); -- } --} --sub do_remove_texlive_pl { -- my ($texdir) = @_; -- if (win32()) { -- remove_menu_shortcut($mainmenu,'TeX Live Manual (pl) (PDF)'); -- remove_menu_shortcut($mainmenu,'TeX Live Manual (pl) (HTML)'); -- } --} --$PostInstall{'texlive-pl'} = \&do_install_texlive_pl; --$PostRemove{'texlive-pl'} = \&do_remove_texlive_pl; -- --# --# texlive-ru --# --sub do_install_texlive_ru { -- my ($texdir) = @_; -- if (win32()) { -- if (!defined($texdir)) { -- tlwarn("do_install_texlive_ru: texdir not defined, returning\n"); -- return; -- } -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (ru) (PDF)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/russian/texlive-ru/texlive-ru.pdf', -- '', -- '', -- ); -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (ru) (HTML)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/russian/texlive-ru/texlive-ru.html', -- '', -- '', -- ); -- } --} --sub do_remove_texlive_ru { -- my ($texdir) = @_; -- if (win32()) { -- remove_menu_shortcut($mainmenu,'TeX Live Manual (ru) (HTML)'); -- remove_menu_shortcut($mainmenu,'TeX Live Manual (ru) (PDF)'); -- } --} --$PostInstall{'texlive-ru'} = \&do_install_texlive_ru; --$PostRemove{'texlive-ru'} = \&do_remove_texlive_ru; -- --# --# texlive-zh-cn --# --sub do_install_texlive_zh_cn { -- my ($texdir) = @_; -- if (win32()) { -- if (!defined($texdir)) { -- tlwarn("do_install_texlive_zh_cn: texdir not defined, returning\n"); -- return; -- } -- add_menu_shortcut( -- $mainmenu, -- 'TeX Live Manual (zh-cn)', -- '', # default pdf icon -- $texdir.'/texmf-doc/doc/chinese/texlive-zh-cn/texlive-zh-cn.pdf', -- '', -- '', -- ); -- } --} --sub do_remove_texlive_zh_cn { -- my ($texdir) = @_; -- if (win32()) { -- remove_menu_shortcut($mainmenu,'TeX Live Manual (zh-cn)'); -- } --} --$PostInstall{'texlive-zh-cn'} = \&do_install_texlive_zh_cn; --$PostRemove{'texlive-zh-cn'} = \&do_remove_texlive_zh_cn; -- -- --# --# FROM HERE ON ONLY DISABLED POST INSTALL AND REMOVE ACTIONS!!!!!!! --# -- --# disabled --sub do_bin_xdvi { -- my ($TEXDIR, $TEXMFSYSVAR) = @_; -- if (!defined($TEXMFSYSVAR)) { -- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; -- chomp($TEXMFSYSVAR); -- } -- copy ("$TEXDIR/texmf/xdvi/XDvi", "$TEXMFSYSVAR/xdvi"); --} --# $PostInstall{"bin-xdvi"} = \&do_bin_xdvi; -- -- --# disabled --sub do_plain { -- my ($TEXDIR, $TEXMFSYSVAR) = @_; -- if (!defined($TEXMFSYSVAR)) { -- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; -- chomp($TEXMFSYSVAR); -- } -- # install some copies from texmf(-dist) into texmf-var -- copy ("$TEXDIR/texmf-dist/tex/generic/config/language.def", -- "$TEXMFSYSVAR/tex/generic/config"); --} --# $PostInstall{"plain"} = \&do_plain; -- -- --# disabled --sub do_bin_dvipsk { -- my ($TEXDIR, $TEXMFSYSVAR) = @_; -- if (!defined($TEXMFSYSVAR)) { -- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; -- chomp($TEXMFSYSVAR); -- } -- # those files must exist -- copy ("$TEXDIR/texmf/dvips/config/config.ps", -- "$TEXMFSYSVAR/dvips/config"); --} --# $PostInstall{"bin-dvipsk"} = \&do_bin_dvipsk; -- --# disabled --sub do_bin_dvipdfm { -- my ($TEXDIR, $TEXMFSYSVAR) = @_; -- if (!defined($TEXMFSYSVAR)) { -- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; -- chomp($TEXMFSYSVAR); -- } -- # fix up dvipdfm config file to contain the right # piping command -- mkdirhier("$TEXMFSYSVAR/dvipdfm/config"); -- open(DVIPDFMCONFIGDIST, "<$TEXDIR/texmf/dvipdfm/config/config") -- or die("Cannot open $TEXDIR/texmf/dvipdfm/config/config"); -- open(DVIPDFMCONFIGINST, ">$TEXMFSYSVAR/dvipdfm/config/config") -- or die("Cannot open $TEXMFSYSVAR/dvipdfm/config/config"); -- while () { -- if (m/^D /) { -- print DVIPDFMCONFIGINST 'D "epstopdf --outfile=%o --nocompress %i"', "\n"; -- } else { -- print DVIPDFMCONFIGINST; -- } -- } -- close(DVIPDFMCONFIGDIST); -- close(DVIPDFMCONFIGINST); --} --# $PostInstall{"bin-dvipdfm"} = \&do_bin_dvipdfm; -- --# disabled --sub do_bin_dvipdfmx { -- my ($TEXDIR, $TEXMFSYSVAR) = @_; -- if (!defined($TEXMFSYSVAR)) { -- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; -- chomp($TEXMFSYSVAR); -- } -- # dvipdfmx.cfg -- open(DVIPDFMCONFIGDIST, "<$TEXDIR/texmf/dvipdfmx/dvipdfmx.cfg") -- or die("Cannot open $TEXDIR/texmf/dvipdfmx/dvipdfmx.cfg"); -- open(DVIPDFMCONFIGINST, ">$TEXMFSYSVAR/dvipdfmx/dvipdfmx.cfg") -- or die("Cannot open $TEXMFSYSVAR/dvipdfmx/dvipdfmx.cfg"); -- while () { -- # current dvipdfmx.cfg already contains the right rungs incantation -- # so do just copy the file to texmf-var -- #if (m/^D /) { -- # print DVIPDFMCONFIGINST "%$_"; -- # print DVIPDFMCONFIGINST "\n%% GhostScript (TeX Live (Unix and Win32)):\n"; -- # print DVIPDFMCONFIGINST 'D "rungs -q -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile=%o %i -c quit"', "\n\n"; -- #} else { -- print DVIPDFMCONFIGINST; -- #} -- } -- close(DVIPDFMCONFIGDIST); -- close(DVIPDFMCONFIGINST); --} --# $PostInstall{"bin-dvipdfmx"} = \&do_bin_dvipdfmx; -- -- --# disabled --sub do_bin_kpathsea { -- my ($TEXDIR, $TEXMFSYSVAR) = @_; -- if (!defined($TEXMFSYSVAR)) { -- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; -- chomp($TEXMFSYSVAR); -- } -- copy ("$TEXDIR/texmf/web2c/mktex.cnf", -- "$TEXMFSYSVAR/web2c"); --} --# $PostInstall{"bin-kpathsea"} = \&do_bin_kpathsea; -- --# disabled --sub do_bin_pdftex { -- my ($TEXDIR, $TEXMFSYSVAR) = @_; -- if (!defined($TEXMFSYSVAR)) { -- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; -- chomp($TEXMFSYSVAR); -- } -- # the old installer copied from CDDIR, but shouldn't this be installed -- # in ANY case since it is in bin-pdftex??? -- copy ("$TEXDIR/texmf/tex/generic/config/pdftexconfig.tex", -- "$TEXMFSYSVAR/tex/generic/config"); --} --# $PostInstall{"bin-pdftex"} = \&do_bin_pdftex; -- --# disabled --sub do_context { -- my ($TEXDIR, $TEXMFSYSVAR) = @_; -- if (!defined($TEXMFSYSVAR)) { -- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; -- chomp($TEXMFSYSVAR); -- } -- # old installer did this, should we do this, TOO???? -- copy ("$TEXDIR/texmf-dist/tex/context/config/cont-usr.tex", -- "$TEXMFSYSVAR/tex/context/config"); --} --# $PostInstall{"context"} = \&do_context; -- -- - 1; - - -Index: tlpkg/TeXLive/TLPSRC.pm -=================================================================== ---- tlpkg/TeXLive/TLPSRC.pm (revision 12171) -+++ tlpkg/TeXLive/TLPSRC.pm (working copy) -@@ -30,6 +30,7 @@ - srcpatterns => $params{'srcpatterns'}, - docpatterns => $params{'docpatterns'}, - binpatterns => $params{'binpatterns'}, -+ postactions => $params{'postactions'}, - executes => defined($params{'executes'}) ? $params{'executes'} : [], - depends => defined($params{'depends'}) ? $params{'depends'} : [], - }; -@@ -67,6 +68,7 @@ - my $catalogue = ""; - my (@executes, @depends); - my (@runpatterns, @docpatterns, @binpatterns, @srcpatterns); -+ my (@postactions); - my $started = 0; - my $finished = 0; - my $savedline = ""; -@@ -132,6 +134,9 @@ - } elsif ($line =~ /^depend\s+(.*)\s*$/) { - push @depends, $1 if ($1 ne ""); - next; -+ } elsif ($line =~ /^postaction\s+(.*)\s*$/) { -+ push @postactions, $1 if ($1 ne ""); -+ next; - } else { - tlwarn("$srcfile:$.: unknown tlpsrc directive, please fix: $line\n"); - } -@@ -149,6 +154,7 @@ - $self->docpatterns(@docpatterns) if @docpatterns; - $self->executes(@executes) if @executes; - $self->depends(@depends) if @depends; -+ $self->postactions(@postactions) if @postactions; - } - - -@@ -175,6 +181,11 @@ - print $fd "execute $_\n"; - } - } -+ if (defined($self->{'postactions'})) { -+ foreach (@{$self->{'postactions'}}) { -+ print $fd "postaction $_\n"; -+ } -+ } - if (defined($self->{'srcpatterns'}) && (@{$self->{'srcpatterns'}})) { - foreach (sort @{$self->{'srcpatterns'}}) { - print $fd "srcpattern $_\n"; -@@ -213,6 +224,7 @@ - $tlp->longdesc($self->{'longdesc'}) if (defined($self->{'longdesc'})); - $tlp->catalogue($self->{'catalogue'}) if (defined($self->{'catalogue'})); - $tlp->executes(@{$self->{'executes'}}) if (defined($self->{'executes'})); -+ $tlp->postactions(@{$self->{'postactions'}}) if (defined($self->{'postactions'})); - $tlp->depends(@{$self->{'depends'}}) if (defined($self->{'depends'})); - $tlp->revision(0); - my $filemax; -@@ -540,6 +552,11 @@ - if (@_) { @{ $self->{'executes'} } = @_ } - return @{ $self->{'executes'} }; - } -+sub postactions { -+ my $self = shift; -+ if (@_) { @{ $self->{'postactions'} } = @_ } -+ return @{ $self->{'postactions'} }; -+} - - format multilineformat = - longdesc ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~ -@@ -580,7 +597,7 @@ - - where I can be C, C, C, C, - C, C, C, C, C, --C, or C. -+C, C, or C. - - Continuation lines are supported via a trailing backslash. That is, if - the C<.tlpsrc> file contains two physical lines like this: -@@ -638,7 +655,7 @@ - is only "lzma", which generates .tar.lzma files. zip can be supported. - release/NNNN specifies the release number as used in the installer. - --=item B<00texlive-installation.config> -+=item B<00texlive.installation> - - This package serves a double purpose: - -@@ -737,12 +754,49 @@ - C, C (both integers), and C (a - comma-separated list of alias names for that hyphenation). - --=item C I -+=item C engine=I [I...]> - --build the format I, as specified in the C file. -+activates the format with name I based on the engine I. The -+additional variables I are: -+C which can only be equal to C in which case the format -+will only be mentioned but disabled (prefixed with C<#!>; -+C which gives the patterns file, if not present C<-> is used; -+C which gives the additional options for the C file. - - =back - -+=item -+ -+gives a free from entry of post install and removal actions to be -+executed. The difference to the C statement is that -+C is concerned with system integration, i.e., adjusting -+things outside the installation directory, while C touches -+only things within the installation. -+ -+Currently the following Cs are understood: -+ -+=over 4 -+ -+=item C type=menu|desktop icon=I cmd=I args=I hide=0|1> -+ -+On W32 creates a shortcut either in the main TeX Live menu or on the -+desktop. Please see the documentation of TeXLive::TLWinGoo for details -+on the parameters. -+ -+=item C cmd=I> -+ -+On W32 associates the file type I with the command I. -+ -+=item C filetype=I> -+ -+On W32 declares files with the extenstion I<.ext> of file type I. -+ -+=item C> -+ -+TODO TODO I don't know how we want to do that -+ -+=back -+ - =item C<(src|run|doc|bin)pattern> I - - adds a pattern (next section) to the respective list of patterns. -Index: tlpkg/TeXLive/TLPOBJ.pm -=================================================================== ---- tlpkg/TeXLive/TLPOBJ.pm (revision 12171) -+++ tlpkg/TeXLive/TLPOBJ.pm (working copy) -@@ -29,6 +29,7 @@ - docfiles => defined($params{'docfiles'}) ? $params{'docfiles'} : [], - docsize => $params{'docsize'}, - executes => defined($params{'executes'}) ? $params{'executes'} : [], -+ postactions => defined($params{'postactions'}) ? $params{'postactions'} : [], - # note that binfiles is a HASH with keys of $arch! - binfiles => defined($params{'binfiles'}) ? $params{'binfiles'} : {}, - binsize => defined($params{'binsize'}) ? $params{'binsize'} : {}, -@@ -92,6 +93,7 @@ - ($lastcmd eq "docfiles") || - ($lastcmd eq "srcfiles") || - ($lastcmd eq "executes") || -+ ($lastcmd eq "postaction") || - ($lastcmd eq "depend") ) { - $line =~ s/^ /${lastcmd}continued /; - } else { -@@ -216,6 +218,10 @@ - push @{$self->{'executes'}}, "$2" unless "$2" eq ""; - $lastcmd = "execute"; - next; -+ } elsif ($line =~ /^postaction(continued)?\s*(.*)\s*/o) { -+ push @{$self->{'postactions'}}, "$2" unless "$2" eq ""; -+ $lastcmd = "postaction"; -+ next; - } elsif ($line =~ /^depend(continued)?\s*(.*)\s*/o) { - push @{$self->{'depends'}}, "$2" unless "$2" eq ""; - $lastcmd = "depend"; -@@ -316,6 +322,11 @@ - print $fd "execute $_\n"; - } - } -+ if (defined($self->{'postactions'})) { -+ foreach (@{$self->{'postactions'}}) { -+ print $fd "postaction $_\n"; -+ } -+ } - if (defined($self->{'containersize'})) { - print $fd "containersize $self->{'containersize'}\n"; - } -@@ -388,6 +399,11 @@ - print $fd "execute $_\n"; - } - } -+ if (defined($self->{'postactions'})) { -+ foreach (@{$self->{'postactions'}}) { -+ print $fd "postaction $_\n"; -+ } -+ } - if (defined($self->{'docfiles'}) && (@{$self->{'docfiles'}})) { - print $fd "docfiles\n"; - foreach (sort @{$self->{'docfiles'}}) { -@@ -837,7 +853,7 @@ - } else { - push @maps, "disable $3"; - } -- } elsif ($e =~ m/^BuildFormat\s+([^\s]+)\s*$/) { -+ } elsif ($e =~ m/^AddFormat\s+([^\s]+)\s*$/) { - push @formats, $1; - } elsif ($e =~ m/^AddHyphen\s+(.*)\s*$/) { - push @dats, $1; -@@ -1026,6 +1042,11 @@ - if (@_) { $self->{'executes'} = [ @_ ] } - return @{ $self->{'executes'} }; - } -+sub postactions { -+ my $self = shift; -+ if (@_) { $self->{'postactions'} = [ @_ ] } -+ return @{ $self->{'postactions'} }; -+} - sub containerdir { - my @self = shift; - if (@_) { $_containerdir = $_[0] } -Index: tlpkg/TeXLive/TLMedia.pm -=================================================================== ---- tlpkg/TeXLive/TLMedia.pm (revision 12171) -+++ tlpkg/TeXLive/TLMedia.pm (working copy) -@@ -208,6 +208,9 @@ - info("running post install action for $pkg\n"); - &{$PostInstall{$pkg}}($totlpdb->root); - } -+ # -+ # Run the post installation code in the postaction tlpsrc entries -+ &TeXLive::TLUtils::do_postaction_code("install", $tlpobj); - } - return \%ret; - } -Index: tlpkg/TeXLive/TLUtils.pm -=================================================================== ---- tlpkg/TeXLive/TLUtils.pm (revision 12171) -+++ tlpkg/TeXLive/TLUtils.pm (working copy) -@@ -56,6 +56,7 @@ - TeXLive::TLUtils::create_language_def($tlpdb,$dest,$localconf); - TeXLive::TLUtils::install_packages($from_tlpdb,$media,$to_tlpdb,$what,$opt_src, $opt_doc)>); - TeXLive::TLUtils::install_package($what, $filelistref, $target, $platform); -+ TeXLive::TLUtils::do_postaction_code($how, $tlpobj); - - =head2 Miscellaneous - -@@ -1224,7 +1225,111 @@ - return 1; - } - -+=item C - -+Evaluates the C code in the C<$tlpobj> -+MISSING DOCUMENTATION TODO TODO -+ -+Returns 1 on success, and 0 on failure. -+ -+=cut -+ -+sub do_postaction_code { -+ my ($how, $tlpobj) = @_; -+ my $ret = 1; -+ if (!defined($tlpobj)) { -+ tlwarn("do_postaction_code: didn't get a tlpobj\n"); -+ return 0; -+ } -+ debug("running postaction $how code for " . $tlpobj->name . "\n") -+ if $tlpobj->postactions; -+ for my $pa ($tlpobj->postactions) { -+ if ($pa =~ m/^\s*shortcut\s+(.*)\s*$/) { -+ $ret &&= _do_postaction_shortcut($how, $tlpobj, $1); -+ } elsif ($pa =~ m/\s*filetype\s+(.*)\s*$/) { -+ $ret &&= _do_postaction_filetype($how, $tlpobj, $1); -+ } elsif ($pa =~ m/\s*fileassoc\s+(.*)\s*$/) { -+ $ret &&= _do_postaction_fileassoc($how, $tlpobj, $1); -+ } elsif ($pa =~ m/\s*code\s+(.*)\s*$/) { -+ $ret &&= _do_postaction_code($how, $tlpobj, $1); -+ } else { -+ tlwarn("do_postaction_code: don't know how to do $pa\n"); -+ $ret = 0; -+ } -+ } -+ # nothing to do -+ return $ret; -+} -+ -+sub _do_postaction_shortcut { -+ my ($how, $tlpobj, $pa) = @_; -+ return 1 unless win32(); -+ my @words = quotewords('\s+', 0, "$pa"); -+ my $type; -+ my $icon = ''; -+ my $cmd = ''; -+ my $args = ''; -+ my $name; -+ my $hide = '0'; -+ while (@words) { -+ $_ = shift @words; -+ if (/^type=(.*)$/) { -+ $type = $1; -+ if (($type ne "menu") && ($type ne "desktop")) { -+ tlwarn("type of shortcut postaction $type is unknown (menu, desktop)\n"); -+ return 0; -+ } -+ } elsif (/^name=(.*)$/) { -+ $name = $1; -+ } elsif (/^icon=(.*)$/) { -+ $icon = $1; -+ } elsif (/^cmd=(.*)$/) { -+ $cmd = $1; -+ } elsif (/^args=(.*)$/) { -+ $args = $1; -+ } elsif (/^hide=(.*)$/) { -+ $hide = $1; -+ if (($hide ne "0") && ($hide ne "1")) { -+ tlwarn("hide of shortcut postaction $hide is unknown (0, 1)\n"); -+ return 0; -+ } -+ } else { -+ tlwarn("Unknown tag for postaction shortcut $pa: $_\n"); -+ return 0; -+ } -+ } -+ if ($how eq "install") { -+ my $texdir = `kpsewhich -var-value=SELFAUTOPARENT`; -+ chomp($texdir); -+ my $texdir_bsl = conv_to_w32_path($texdir); -+ $icon =~ s!^TEXDIR/!$texdir/!; -+ $args =~ s!^TEXDIR/!$texdir/!; -+ $args = conv_to_w32_path($args); -+ if ($type eq "menu") { -+ add_menu_shortcut($TeXLive::TLConfig::WindowsMainMenuName, -+ $name, $icon, $cmd, $args, $hide); -+ } elsif ($type eq "desktop") { -+ add_desktop_shortcut($name, $icon, $cmd, $args, $hide); -+ } else { -+ tlwarn("Unknown type of shortcut: $type\n"); -+ return 0; -+ } -+ } elsif ($how eq "remove") { -+ if ($type eq "menu") { -+ remove_menu_shortcut($TeXLive::TLConfig::WindowsMainMenuName, $name); -+ } elsif ($type eq "desktop") { -+ remove_desktop_shortcut($name); -+ } else { -+ tlwarn("Unknown type of shortcut: $type\n"); -+ return 0; -+ } -+ } else { -+ tlwarn("Unknown mode $how\n"); -+ return 0; -+ } -+ return 1; -+} -+ - =item C - - Unpacked C<$tarfile> in C<$targetdir> (changing directories to -Index: tlpkg/TeXLive/TLWinGoo.pm -=================================================================== ---- tlpkg/TeXLive/TLWinGoo.pm (revision 12171) -+++ tlpkg/TeXLive/TLWinGoo.pm (working copy) -@@ -58,7 +58,6 @@ - $prog, $args, $batgui); - TeXLive::TLWinGoo::add_menu_shortcut($place, $name, $icon, - $prog, $args, $batgui); -- TeXLive::TLWinGoo::init_unshortbat($texdir); - TeXLive::TLWinGoo::remove_desktop_shortcut($name); - TeXLive::TLWinGoo::remove_menu_shortcut($place, $name); - -@@ -104,7 +103,6 @@ - &add_menu_shortcut - &remove_desktop_shortcut - &remove_menu_shortcut -- &init_unshortbat - &create_uninstaller - &unregister_uninstaller - ); -@@ -862,8 +860,7 @@ - - =pod - --=item C -+=item C - - Add a desktop shortcut, with name $name and icon $icon, pointing to - program $prog with parameters $args (a string). Use a non-null -@@ -871,14 +868,10 @@ - batchfile. Then the inevitable command prompt will be hidden - rightaway, leaving only the gui program visible. - --The parameter $texdir is merely used to locate the batchfile --unshort.bat for uninstalling desktop shortcuts, which needs to be --updated. -- - =cut - - sub add_desktop_shortcut { -- my ($texdir, $name, $icon, $prog, $args, $batgui) = @_; -+ my ($name, $icon, $prog, $args, $batgui) = @_; - - # create shortcut - my ($shc, $shpath, $shfile); -@@ -889,15 +882,6 @@ - $shc->{'ShowCmd'} = $batgui ? SW_SHOWMINNOACTIVE : SW_SHOWNORMAL; - $shfile = desktop_path().'/'.$name.'.lnk'; - $shc->Save($shfile); -- -- # update batchfile for uninstalling shortcuts -- if (open UNSHORT, ">>$texdir/tlpkg/installer/unshort.bat") { -- $shfile =~ s!/!\\!g; -- print UNSHORT 'del "'.$shfile."\" 2>nul\n"; -- close UNSHORT; -- } else { -- warn "Cannot open $texdir/tlpkg/installer/unshort.bat for appending: $!"; -- } - } - - =pod -@@ -937,39 +921,16 @@ - - =pod - --=item C -- --Reinitialize unshort.bat, the shortcuts uninstaller. -- --=cut -- --sub init_unshortbat { -- my $texdirw = shift; -- my $menupath = menu_path(); -- $menupath =~ s!/!\\!g; -- -- # batchfile for uninstalling shortcuts -- if (open UNSHORT, ">$texdirw/tlpkg/installer/unshort.bat") { -- print UNSHORT 'rmdir /s /q "'.$menupath."\\TeX Live 2008\" 2>nul\n"; -- close UNSHORT; -- } else { -- warn "Cannot create $texdirw/tlpkg/installer/unshort.bat: $!"; -- } --} -- --=pod -- - =item C - --For uninstallation of an individual package. We leave unshort.bat --alone because redundant entries are no big deal. -+For uninstallation of an individual package. - - =cut - - sub remove_desktop_shortcut { - my $name = shift; - unlink desktop_path().'/'.$name.'.lnk'; --} -+} - - =pod - -@@ -1040,7 +1001,6 @@ - set PERL5LIB= - \"$td\\tlpkg\\tlperl\\bin\\perl.exe\" \"$td\\texmf\\scripts\\texlive\\uninstall-win32.pl\" - if errorlevel 1 exit --call \"$tdw\\tlpkg\\installer\\unshort.bat\" - copy \"$tdw\\tlpkg\\installer\\uninst2.bat\" \"\%TEMP\%\" - rem pause - \"\%TEMP\%\\uninst2.bat\" -Index: tlpkg/installer/install-menu-perltk.pl -=================================================================== ---- tlpkg/installer/install-menu-perltk.pl (revision 12171) -+++ tlpkg/installer/install-menu-perltk.pl (working copy) -@@ -62,7 +62,6 @@ - my $texmfhometext; - my $texdirtext; - my $langcoltext; --my $symlinktext; - my $optletterstate; - my $optfmtstate; - my $optsrcstate; -@@ -70,6 +69,7 @@ - my $letteryesno = ( $vars{'option_letter'} ? $text{'yes'} : $text{'no'} ); - my $fmtyesno = ( $vars{'option_fmt'} ? $text{'yes'} : $text{'no'} ); - my $srcyesno = ( $vars{'option_src'} ? $text{'yes'} : $text{'no'} ); -+my $sysintyesno = ( $vars{'option_sysint'} ? $text{'yes'} : $text{'no'} ); - my $docyesno = ( $vars{'option_doc'} ? $text{'yes'} : $text{'no'} ); - - $::run_menu = \&run_menu_perltk; -@@ -258,15 +258,13 @@ - $fr->Button(-text => $text{'toggle'}, -command => sub { toggle_and_set_opt_variable(\$vars{'option_src'}, \$srcyesno); })->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - } - -+ $row++; -+ $fr->Label(-text => $labels{'sysint'}, -anchor => 'w')->grid(-row => $row, -column => 1, -sticky => 'w'); -+ $fr->Label(-anchor => 'w', -textvariable => \$sysintyesno)->grid(-row => $row, -column => 2, -padx => "2m"); - if (unix()) { -- $row++; -- # Symlinks -- $fr->Label(-text => "------- $text{'sysint'} -------")->grid(-row => $row, -column => 1,-columnspan => 3); -- -- $row++; -- $fr->Label(-text => $labels{'symlink'}, -anchor => 'w')->grid(-row => $row, -column => 1, -sticky => 'w'); -- $symlinktext = $fr->Label(-anchor => 'w')->grid(-row => $row, -column => 2, -padx => "2m"); - $fr->Button(-text => $text{'change'}, -command => sub { menu_select_symlink(); })->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); -+ } else { -+ $fr->Button(-text => $text{'toggle'}, -command => sub { toggle_and_set_opt_variable(\$vars{'option_sysint'}, \$sysintyesno); })->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); - } - - # install/cancel buttons -@@ -596,7 +594,7 @@ - - sub menu_select_symlink { - our ($lbin,$lman,$linfo); -- our $osym = $vars{'option_symlinks'}; -+ our $osym = $vars{'option_sysint'}; - our ($binlab,$binb,$manlab,$manb,$infolab,$infob); - sub set_unset_buttons { - $lbin = ($osym ? $vars{'sys_bin'} : ''); -@@ -630,8 +628,8 @@ - $vars{'sys_info'} = $linfo; - $vars{'sys_man'} = $lman; - } -- $vars{'option_symlinks'} = $osym; -- menu_update_texts(); -+ $vars{'option_sysint'} = $osym; -+ toggle_and_set_opt_variable(\$vars{'option_sysint'}, \$sysintyesno); - } - my $sw = $mainwindow->Toplevel(-title => $labels{'symlink'}); - $sw->transient($mainwindow); -@@ -695,10 +693,6 @@ - $w->configure(-text => $t, @_); - } - --sub menu_set_symlink_text { -- menu_set_text($symlinktext, (($vars{'option_symlinks'})?$text{'yes'}:$text{'no'})); --} -- - sub menu_set_schemebutton_text { - menu_set_text($schemebutton, "$vars{'selected_scheme'}"); - } -@@ -762,7 +756,6 @@ - $optfmtstate = ($vars{'option_fmt'} ? $text{'yes'} : $text{'no'}); - $optsrcstate = ($vars{'option_src'} ? $text{'yes'} : $text{'no'}); - $optdocstate = ($vars{'option_doc'} ? $text{'yes'} : $text{'no'}); -- if (unix()) { menu_set_symlink_text; }; - } - - sub callback_select_scheme { -Index: tlpkg/installer/install-translations.pl -=================================================================== ---- tlpkg/installer/install-translations.pl (revision 12171) -+++ tlpkg/installer/install-translations.pl (working copy) -@@ -52,7 +52,7 @@ - } - - --our %text = (title => 'TeX Live 2008 Installation', -+our %text = (title => 'TeX Live 2009 Installation', - basicinfo => 'Basic Information', - custom => 'Further Customization', - dirsetup => "Directory setup", -@@ -93,7 +93,7 @@ - welcome => 'Welcome to TeX Live!', - next => 'Next >', - prev => '< Back', -- wizhello => "Welcome to the installation of TeX Live 2008\n" -+ wizhello => "Welcome to the installation of TeX Live 2009\n" - . "http://tug.org/texlive\n\n" - . "This wizard will guide you through the installation.\n\n" - . "For an advanced, customizable installation, please consult\n" -@@ -101,7 +101,7 @@ - destfolder => 'Destination folder:', - advcustom => 'Advanced customization', - pathinfo => "The destination folder will contain the installation.\nIt is strongly recommended to keep the year as the last component.", -- readyinst => "We are ready to install TeX Live 2008.\nThe following settings will be used.\nIf you want to change something please go back,\notherwise press the \"Install\" button.", -+ readyinst => "We are ready to install TeX Live 2009.\nThe following settings will be used.\nIf you want to change something please go back,\notherwise press the \"Install\" button.", - instshort => 'Install', - wizard => 'Go to Wizard', - ); -@@ -121,6 +121,7 @@ - optdoc => 'Install font/macro doc tree', - optsrc => 'Install font/macro source tree', - symlink => 'Create symlinks in system directories', -+ sysint => 'System integration', - ); - - if (($::lang ne "en") && ($::lang ne "C")) { -Index: tlpkg/installer/install-menu-text.pl -=================================================================== ---- tlpkg/installer/install-menu-text.pl (revision 12171) -+++ tlpkg/installer/install-menu-text.pl (working copy) -@@ -675,7 +675,7 @@ - - - sub options_menu { -- my $b_symlinks=button($vars{'option_symlinks'}); -+ my $b_sysint=button($vars{'option_sysint'}); - my $b_doc=button($vars{'option_doc'}); - my $b_src=button($vars{'option_src'}); - my $b_fmt=button($vars{'option_fmt'}); -@@ -685,9 +685,9 @@ - my $sys_man=$vars{'sys_man'}; - my $sys_info=$vars{'sys_info'}; - -- my $t_sys_bin=($vars{'option_symlinks'})? $vars{'sys_bin'}:''; -- my $t_sys_man=($vars{'option_symlinks'})? $vars{'sys_man'}:''; -- my $t_sys_info=($vars{'option_symlinks'})? $vars{'sys_info'}:''; -+ my $t_sys_bin=($vars{'option_sysint'})? $vars{'sys_bin'}:''; -+ my $t_sys_man=($vars{'option_sysint'})? $vars{'sys_man'}:''; -+ my $t_sys_info=($vars{'option_sysint'})? $vars{'sys_info'}:''; - - my %command=( - 'self' => \&options_menu, -@@ -709,14 +709,21 @@ - if ($vars{'src_splitting_supported'} and !$vars{'from_dvd'}) { - print " install font/macro source tree: $b_src\n"; - } -- if (unix() && !$vars{'from_dvd'}) { -- print <<"EOF"; -- create symlinks in standard directories: $b_symlinks -+ if (!$vars{'from_dvd'}) { -+ if (unix()) { -+ print <<"EOF"; -+ create symlinks in standard directories: $b_sysint - binaries to: $t_sys_bin - manpages to: $t_sys_man - info to: $t_sys_info - EOF - ; -+ } else { -+ print <<"EOF"; -+ do system integration: $b_sysint -+EOF -+; -+ } - } - other_options qw(R Q diskspace); - my $answer = prompt 'Enter command'; -@@ -726,8 +733,8 @@ - my $home = getenv('HOME'); - $home = getenv('USERPROFILE') if (win32()); - $home ||= '~'; -- toggle 'option_symlinks'; -- if ($vars{'option_symlinks'}) { -+ toggle 'option_sysint'; -+ if ($vars{'option_sysint'}) { - print "New value for binary directory [$sys_bin]: "; - chomp($answer=); - $vars{'sys_bin'} = "$answer" if (length $answer); -@@ -751,8 +758,15 @@ - } - return $command{'self'}; - } -+ } else { -+ if (("\u$answer" eq 'L') and !$vars{'from_dvd'}) { -+ my $home = getenv('HOME'); -+ $home = getenv('USERPROFILE') if (win32()); -+ $home ||= '~'; -+ toggle 'option_sysint'; -+ return $command{'self'}; -+ } - } -- - if ("\u$answer" eq 'P') { - toggle 'option_letter'; - return $command{'self'}; -@@ -802,7 +816,7 @@ - sub main_menu { - my $this_platform=platform_desc($vars{'this_platform'}); - -- my $b_symlinks=button($vars{'option_symlinks'}); -+ my $b_sysint=button($vars{'option_sysint'}); - my $b_doc=button($vars{'option_doc'}); - my $b_src=button($vars{'option_src'}); - my $b_fmt=button($vars{'option_fmt'}); -@@ -913,9 +927,7 @@ - if ($vars{'src_splitting_supported'}) { - print " $b_src install macro/font source tree\n"; - } -- if (unix()) { -- print " $b_symlinks create symlinks in standard directories\n"; -- } -+ print " $b_sysint system integration\n"; - } - - if ($vars{'from_dvd'}) { -Index: tlpkg/tlpsrc/bin-tex.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-tex.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-tex.tlpsrc (working copy) -@@ -1,7 +1,6 @@ - name bin-tex - category TLCore - depend bin-kpathsea --execute BuildFormat tex --runpattern f texmf/fmtutil/format.tex.cnf -+execute AddFormat name=tex engine=tex options="tex.ini" - docpattern f texmf/doc/man/man1/tex.* - binpattern f bin/${ARCH}/tex -Index: tlpkg/tlpsrc/bin-mex.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-mex.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-mex.tlpsrc (working copy) -@@ -2,10 +2,9 @@ - category TLCore - depend pdftex - depend bin-tex --execute BuildFormat mex --execute BuildFormat utf8mex --runpattern f texmf/fmtutil/format.mex.cnf --runpattern f texmf/fmtutil/format.utf8mex.cnf -+execute AddFormat name=mex engine=pdftex patterns=mexconf.tex options="-translate-file=cp227.tcx *mex.ini" -+execute AddFormat name=pdfmex engine=pdftex patterns=mexconf.tex options="-translate-file=cp227.tcx *pdfmex.ini" -+execute AddFormat name=utf8mex engine=pdftex patterns=mexconf.tex options="-enc *utf8mex.ini" - binpattern f bin/${ARCH}/mex - binpattern f bin/${ARCH}/pdfmex - binpattern f bin/${ARCH}/utf8mex -Index: tlpkg/tlpsrc/texlive-de.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/texlive-de.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/texlive-de.tlpsrc (working copy) -@@ -1,2 +1,4 @@ - name texlive-de - category Documentation -+postaction shortcut type=menu name="TeX Live Manual (de) (PDF)" cmd=TEXDIR/texmf-doc/doc/german/texlive-de/texlive-de.pdf -+postaction shortcut type=menu name="TeX Live Manual (de) (HTML)" cmd=TEXDIR/texmf-doc/doc/german/texlive-de/texlive-de.html -Index: tlpkg/tlpsrc/00texlive.installer.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/00texlive.installer.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/00texlive.installer.tlpsrc (working copy) -@@ -7,7 +7,7 @@ - longdesc used *except* to build the installer archives, so it's ok. - longdesc - longdesc For information on the 00texlive prefix see --longdesc 00texlive-installation.config(.tlpsrc) -+longdesc 00texlive.installation(.tlpsrc) - category TLCore - runpattern f install-tl - runpattern f tlpkg/installer/install-tl.html -Index: tlpkg/tlpsrc/pdftex.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/pdftex.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/pdftex.tlpsrc (working copy) -@@ -1,8 +1,9 @@ - name pdftex - category TLCore - depend bin-kpathsea --execute BuildFormat pdftex --runpattern f texmf/fmtutil/format.pdftex.cnf -+execute AddFormat name=etex engine=pdftex patterns=language.def options="-translate-file=cp227.tcx *etex.ini" -+execute AddFormat name=pdfetex engine=pdftex patterns=language.def options="-translate-file=cp227.tcx *pdfetex.ini" -+execute AddFormat name=pdftex engine=pdftex patterns=language.def options="-translate-file=cp227.tcx *pdfetex.ini" - runpattern f texmf/fonts/map/pdftex/updmap/* - runpattern f texmf/tex/generic/config/pdftex*.tex - runpattern f texmf/tex/generic/pdftex/* -Index: tlpkg/tlpsrc/bin-csplain.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-csplain.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-csplain.tlpsrc (working copy) -@@ -1,7 +1,7 @@ - name bin-csplain - category TLCore - depend bin-tex --execute BuildFormat csplain --runpattern f texmf/fmtutil/format.csplain.cnf -+execute AddFormat name=csplain engine=pdftex options="-etex -translate-file=cp227.tcx csplain.ini" -+execute AddFormat name=pdfcsplain engine=pdftex options="-etex -translate-file=cp227.tcx csplain.ini" - binpattern f bin/${ARCH}/csplain - binpattern f bin/${ARCH}/pdfcsplain -Index: tlpkg/tlpsrc/bin-metapost.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-metapost.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-metapost.tlpsrc (working copy) -@@ -1,8 +1,8 @@ - name bin-metapost - category TLCore - depend bin-kpathsea --execute BuildFormat metapost --runpattern f texmf/fmtutil/format.metapost.cnf -+execute AddFormat name=mpost engine=mpost options="-translate-file=cp227.tcx mpost.mp" -+execute AddFormat name=mfplain engine=mpost options="-translate-file=cp227.tcx mfplain.ini" - docpattern f texmf/doc/man/man1/dmp.* - docpattern f texmf/doc/man/man1/dvitomp.* - docpattern f texmf/doc/man/man1/makempx.* -Index: tlpkg/tlpsrc/00texlive.config.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/00texlive.config.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/00texlive.config.tlpsrc (working copy) -@@ -9,8 +9,8 @@ - longdesc is only "lzma", which generates .tar.lzma files. zip can be supported. - longdesc release/NNNN specifies the release number as used in the installer. - longdesc For information on the 00texlive prefix see --longdesc 00texlive-installation.config(.tlpsrc) -+longdesc 00texlive.installation(.tlpsrc) - depend container_split_src_files - depend container_split_doc_files - depend container_format/lzma --depend release/2008 -+depend release/2009 -Index: tlpkg/tlpsrc/texlive-fr.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/texlive-fr.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/texlive-fr.tlpsrc (working copy) -@@ -1,2 +1,4 @@ - name texlive-fr - category Documentation -+postaction shortcut type=menu name="TeX Live Manual (fr) (PDF)" cmd=TEXDIR/texmf-doc/doc/french/texlive-fr/texlive-fr.pdf -+postaction shortcut type=menu name="TeX Live Manual (fr) (HTML)" cmd=TEXDIR/texmf-doc/doc/french/texlive-fr/texlive-fr.html -Index: tlpkg/tlpsrc/texlive-zh-cn.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/texlive-zh-cn.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/texlive-zh-cn.tlpsrc (working copy) -@@ -1,2 +1,3 @@ - name texlive-zh-cn - category Documentation -+postaction shortcut type=menu name="TeX Live Manual (zh-cn) (PDF)" cmd=TEXDIR/texmf-doc/doc/chinese/texlive-zh-cn/texlive-zh-cn.pdf -Index: tlpkg/tlpsrc/bin-dviout.win32.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-dviout.win32.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-dviout.win32.tlpsrc (working copy) -@@ -2,3 +2,4 @@ - category TLCore - binpattern d/win32 tlpkg/dviout - binpattern f bin/win32/dviout.vbs -+postaction shortcut type=menu name="DVIOUT Dvi Viewer" cmd=wscript args=TEXDIR/bin/win32/dviout.vbs hide=1 -Index: tlpkg/tlpsrc/bin-context.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-context.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-context.tlpsrc (working copy) -@@ -1,9 +1,15 @@ - name bin-context - category TLCore - depend pdftex --execute BuildFormat context -+execute AddFormat name=cont-en engine=pdftex patterns=cont-usr.tex options="-8bit *cont-en.ini" -+execute AddFormat name=cont-cz mode=disabled engine=pdftex patterns=cont-usr.tex options="-8bit *cont-cz.ini" -+execute AddFormat name=cont-de mode=disabled engine=pdftex patterns=cont-usr.tex options="-8bit *cont-de.ini" -+execute AddFormat name=cont-nl mode=disabled engine=pdftex patterns=cont-usr.tex options="-8bit *cont-nl.ini" -+execute AddFormat name=cont-uk mode=disabled engine=pdftex patterns=cont-usr.tex options="-8bit *cont-uk.ini" -+execute AddFormat name=cont-en engine=xetex patterns=cont-usr.tex options="-8bit *cont-en.ini" -+execute AddFormat name=mptopdf engine=pdftex options="-translate-file=cp227.tcx mptopdf.tex" -+execute AddFormat name=metafun engine=mpost options="-translate-file=cp227.tcx metafun.mp" - runpattern f texmf-dist/tex/mptopdf/config/mptopdf.ini --runpattern f texmf/fmtutil/format.context.cnf - docpattern f texmf/doc/man/man1/ctxtools.* - docpattern f texmf/doc/man/man1/makempy.* - docpattern f texmf/doc/man/man1/mptopdf.* -Index: tlpkg/tlpsrc/bin-mltex.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-mltex.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-mltex.tlpsrc (working copy) -@@ -1,7 +1,7 @@ - name bin-mltex - category TLCore - depend bin-latex --execute BuildFormat mltex --runpattern f texmf/fmtutil/format.mltex.cnf -+execute AddFormat name=mltex engine=pdftex options="-translate-file=cp227.tcx -mltex mltex.ini" -+execute AddFormat name=mllatex engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx -mltex mllatex.ini" - binpattern f bin/${ARCH}/mllatex - binpattern f bin/${ARCH}/mltex -Index: tlpkg/tlpsrc/luatex.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/luatex.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/luatex.tlpsrc (working copy) -@@ -1,8 +1,8 @@ - name luatex - category TLCore --execute BuildFormat luatex -+execute AddFormat name=luatex engine=luatex options="luatex.ini" -+execute AddFormat name=pdfluatex engine=luatex options="pdfluatex.ini" - docpattern d texmf-dist/doc/luatex --runpattern f texmf/fmtutil/format.luatex.cnf - binpattern f/!hppa-hpux bin/${ARCH}/luatex - binpattern f/!hppa-hpux bin/${ARCH}/pdfluatex - binpattern f/!hppa-hpux bin/${ARCH}/texlua -Index: tlpkg/tlpsrc/bin-cslatex.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-cslatex.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-cslatex.tlpsrc (working copy) -@@ -1,7 +1,7 @@ - name bin-cslatex - category TLCore - depend bin-latex --execute BuildFormat cslatex --runpattern f texmf/fmtutil/format.cslatex.cnf -+execute AddFormat name=cslatex engine=pdftex options="-etex -translate-file=cp227.tcx cslatex.ini" -+execute AddFormat name=pdfcslatex engine=pdftex options="-etex -translate-file=cp227.tcx cslatex.ini" - binpattern f bin/${ARCH}/cslatex - binpattern f bin/${ARCH}/pdfcslatex -Index: tlpkg/tlpsrc/bin-texdoc.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-texdoc.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-texdoc.tlpsrc (working copy) -@@ -12,3 +12,4 @@ - binpattern f bin/${ARCH}/texdoctk - binpattern f bin/win32/texdocc - binpattern f bin/win32/tl-w32-texdoc-wrapper.texlua -+postaction shortcut type=menu name="TeXdoc GUI" cmd="TEXDIR/bin/win32/texdoctk.bat" hide=1 -Index: tlpkg/tlpsrc/bin-latex.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-latex.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-latex.tlpsrc (working copy) -@@ -4,12 +4,14 @@ - depend pdftex - depend latexconfig - depend latex-fonts --execute BuildFormat latex -+execute AddFormat name=latex engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *latex.ini" -+execute AddFormat name=pdflatex engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *pdflatex.ini" -+execute AddFormat name=lualatex engine=luatex patterns=language.dat options="lualatex.ini" -+execute AddFormat name=pdflualatex engine=luatex patterns=language.dat options="pdflualatex.ini" - binpattern f bin/${ARCH}/latex - binpattern f/!hppa-hpux bin/${ARCH}/lualatex - binpattern f bin/${ARCH}/pdflatex - binpattern f/!hppa-hpux bin/${ARCH}/pdflualatex - docpattern f texmf/doc/man/man1/latex.* - docpattern f texmf/doc/man/man1/pdflatex.* --runpattern f texmf/fmtutil/format.latex.cnf - runpattern d texmf/tex/latex/config -Index: tlpkg/tlpsrc/bin-omega.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-omega.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-omega.tlpsrc (working copy) -@@ -1,7 +1,7 @@ - name bin-omega - category TLCore --execute BuildFormat omega --runpattern f texmf/fmtutil/format.omega.cnf -+execute AddFormat name=omega engine=omega options="omega.ini" -+execute AddFormat name=lambda engine=omega patterns=language.dat options="lambda.ini" - docpattern f texmf/doc/man/man1/lambda.* - docpattern f texmf/doc/man/man1/omega.* - binpattern f bin/${ARCH}/lambda -Index: tlpkg/tlpsrc/bin-tlpsv.win32.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-tlpsv.win32.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-tlpsv.win32.tlpsrc (working copy) -@@ -5,3 +5,5 @@ - runpattern f bin/win32/psv.bat - runpattern f texmf/scripts/texlive/psv.tlu - runpattern d tlpkg/tlpsv -+postaction shortcut type=menu name="PS_View" icon=TEXDIR/tlpkg/tlpsv/psv.exe cmd=TEXDIR/bin/win32/psv.bat hide=1 -+postaction shortcut type=desktop name="PS_View" icon=TEXDIR/tlpkg/tlpsv/psv.exe cmd=TEXDIR/bin/win32/psv.bat hide=1 -Index: tlpkg/tlpsrc/bin-xmltex.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-xmltex.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-xmltex.tlpsrc (working copy) -@@ -2,7 +2,7 @@ - category TLCore - depend pdftex - depend bin-tex --execute BuildFormat xmltex --runpattern f texmf/fmtutil/format.xmltex.cnf -+execute AddFormat name=xmltex engine=pdftex patterns=language.dat options="&latex xmltex.ini" -+execute AddFormat name=pdfxmltex engine=pdftex patterns=language.dat options="&pdflatex pdfxmltex.ini" - binpattern f bin/${ARCH}/pdfxmltex - binpattern f bin/${ARCH}/xmltex -Index: tlpkg/tlpsrc/texlive-ru.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/texlive-ru.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/texlive-ru.tlpsrc (working copy) -@@ -1,2 +1,4 @@ - name texlive-ru - category Documentation -+postaction shortcut type=menu name="TeX Live Manual (ru) (PDF)" cmd=TEXDIR/texmf-doc/doc/russian/texlive-ru/texlive-ru.pdf -+postaction shortcut type=menu name="TeX Live Manual (ru) (HTML)" cmd=TEXDIR/texmf-doc/doc/russian/texlive-ru/texlive-ru.html -Index: tlpkg/tlpsrc/bin-texlive.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-texlive.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-texlive.tlpsrc (working copy) -@@ -1,27 +1,11 @@ - name bin-texlive - category TLCore - shortdesc executables and files maintained as part of TeX Live --longdesc This packages contains the binaries of the TeX Live tools (notably --longdesc tlmgr). Together with texlive.infra, it provides all the basic TeX --longdesc Live infrastructure. -+longdesc This packages contains the binaries of the TeX Live tools. - depend texlive.infra --runpattern f texmf/fmtutil/fmtutil-hdr.cnf - runpattern d texmf/scripts/texlive/lua --runpattern d texmf/scripts/texlive/tlmgrgui --runpattern !f texmf/scripts/texlive/tlmgrgui/tlmgrgui1.pl --runpattern !f texmf/scripts/texlive/tlmgrgui/gui-config1.pl --runpattern !f texmf/scripts/texlive/tlmgrgui/gui-arch1.pl --runpattern !f texmf/scripts/texlive/tlmgrgui/tlmgrgui-real.pl - runpattern f texmf/scripts/texlive/rungs.tlu - runpattern f texmf/scripts/texlive/test-tlpdb.tlu - runpattern f texmf/scripts/texlive/texconf.tlu --runpattern f texmf/scripts/texlive/tlmgr.pl --runpattern !f texmf/scripts/texlive/tlmgr1.pl --runpattern f texmf/scripts/texlive/uninstall-win32.pl --runpattern f texmf/web2c/updmap-hdr.cfg --docpattern f texmf/doc/man/man1/tlmgr.* --binpattern f bin/${ARCH}/tlmgr - binpattern f bin/${ARCH}/rungs --binpattern f bin/win32/tl-w32-wrapper.texlua - binpattern f bin/win32/symlinks4cygwin.sh --binpattern f/win32 texmf/scripts/texlive/updater-w32.bat -Index: tlpkg/tlpsrc/t2.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/t2.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/t2.tlpsrc (working copy) -@@ -1,5 +1,5 @@ - name t2 - category Package --execute BuildFormat cyramstex --execute BuildFormat cyrtex --execute BuildFormat cyrtexinfo -+execute AddFormat name=cyramstex mode=disabled engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *cyramstx.ini" -+execute AddFormat name=cyrtex mode=disabled engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *cyrtex.ini" -+execute AddFormat name=cyrtexinfo mode=disabled engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *cyrtxinf.ini" -Index: tlpkg/tlpsrc/bin-texsis.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-texsis.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-texsis.tlpsrc (working copy) -@@ -1,6 +1,5 @@ - name bin-texsis - category TLCore - depend bin-tex --execute BuildFormat texsis --runpattern f texmf/fmtutil/format.texsis.cnf -+execute AddFormat name=texsis engine=pdftex options="-translate-file=cp227.tcx texsis.ini" - binpattern f bin/${ARCH}/texsis -Index: tlpkg/tlpsrc/texlive-en.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/texlive-en.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/texlive-en.tlpsrc (working copy) -@@ -1,2 +1,4 @@ - name texlive-en - category Documentation -+postaction shortcut type=menu name="TeX Live Manual (en) (PDF)" cmd=TEXDIR/texmf-doc/doc/english/texlive-en/texlive-en.pdf -+postaction shortcut type=menu name="TeX Live Manual (en) (HTML)" cmd=TEXDIR/texmf-doc/doc/english/texlive-en/texlive-en.html -Index: tlpkg/tlpsrc/bin-physe.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-physe.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-physe.tlpsrc (working copy) -@@ -1,6 +1,5 @@ - name bin-physe - category TLCore - depend bin-tex --execute BuildFormat physe --runpattern f texmf/fmtutil/format.physe.cnf -+execute AddFormat name=physe engine=pdftex options="physe.ini" - binpattern f bin/${ARCH}/physe -Index: tlpkg/tlpsrc/bin-phyzzx.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-phyzzx.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-phyzzx.tlpsrc (working copy) -@@ -1,6 +1,5 @@ - name bin-phyzzx - category TLCore - depend bin-tex --execute BuildFormat phyzzx --runpattern f texmf/fmtutil/format.phyzzx.cnf -+execute AddFormat name=phyzzx engine=pdftex options="physe.ini" - binpattern f bin/${ARCH}/phyzzx -Index: tlpkg/tlpsrc/bin-eplain.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-eplain.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-eplain.tlpsrc (working copy) -@@ -1,8 +1,7 @@ - name bin-eplain - category TLCore - depend pdftex --execute BuildFormat eplain --runpattern f texmf/fmtutil/format.eplain.cnf -+execute AddFormat name=eplain engine=pdftex options="-translate-file=cp227.tcx *eplain.ini" - docpattern f texmf/doc/info/eplain.info - docpattern f texmf/doc/man/man1/eplain.* - binpattern f bin/${ARCH}/eplain -Index: tlpkg/tlpsrc/texlive-cz.tlpsrc ++ do_texmf_cnf() unless ($opt_portable); ++ ++ ++ # final program execution ++ # we have to do several things: ++ # - clean the environment from spurious TEXMF related variables ++ # - add the bin dir to the PATH ++ # - select perl interpreter and set the correct perllib ++ # - run the programs ++ ++ # Step 1: Clean the environment ++ my @TMFVARS0=qw(VARTEXFONTS ++ TEXMF SYSTEXMF VARTEXFONTS ++ TEXMFDBS WEB2C TEXINPUTS TEXFORMATS MFBASES MPMEMS TEXPOOL MFPOOL MPPOOL ++ PSHEADERS TEXFONTMAPS TEXPSHEADERS TEXCONFIG TEXMFCNF); ++ my @TMFVARS1=qw(TEXMFMAIN TEXMFDIST TEXMFLOCAL TEXMFSYSVAR TEXMFSYSCONFIG ++ TEXMFHOME TEXMFVAR TEXMFCONFIG); ++ ++ if (defined($ENV{'TEXMFCNF'}) and !$vars{'from_dvd'} and !$opt_portable) { ++ print "WARNING: environment variable TEXMFCNF is set. ++You should know what you are doing. ++We will remove that for the post install actions, but all further ++operations might be disturbed.\n\n"; ++ } ++ foreach $tmv (@TMFVARS0) { ++ delete $ENV{$tmv} if (defined($ENV{$tmv})); ++ } ++ if (!$opt_portable) { ++ foreach $tmv (@TMFVARS1) { ++ delete $ENV{$tmv} if (defined($ENV{$tmv})); ++ } ++ } ++ $ENV{'TEXMFSYSVAR'} = $vars{'TEXMFSYSVAR'} if $vars{'from_dvd'}; ++ ++ # Step 2: Setup the PATH, switch to the new Perl ++ ++ my $pathsep=(win32)? ';' : ':'; ++ my $plat_bindir="$TEXDIR/bin/$vars{'this_platform'}"; ++ my $perl_bindir="$TEXDIR/tlpkg/tlperl/bin"; ++ my $perl_libdir="$TEXDIR/tlpkg/tlperl/lib"; ++ ++## This won't do any good; ++## have to remove other tex directories in calling batchfile ++# if (win32) { ++# debug("Removing other TeXs from path\n"); ++# my @newpt = (); ++# foreach my $d (split (';', $ENV{'PATH'})) { ++# push @newpt, $d unless TeXLive::TLWinGoo::is_a_texdir($d); ++# } ++# $ENV{'PATH'} = join($pathsep, @newpt); ++# debug("Path after removals(s):\n $ENV{'PATH'}\n"); ++# } ++ ++ debug("Prepending $plat_bindir to PATH\n"); ++ ++ $ENV{'PATH'}="$plat_bindir" . "$pathsep" . "$ENV{'PATH'}"; ++ ++ if (win32) { ++ debug("Prepending $perl_bindir to PATH\n"); ++ $ENV{'PATH'}="$perl_bindir" . "$pathsep" . "$ENV{'PATH'}"; ++ $ENV{'PATH'} =~ s!/!\\!g; ++ } ++ ++ debug("\nNew PATH is now:\n"); ++ foreach my $dir (split $pathsep, $ENV{'PATH'}) { ++ debug(" $dir\n"); ++ } ++ debug("\n"); ++ ++ if (win32) { ++ $ENV{'PERL5LIB'}="$perl_libdir"; ++ } ++ ++ # ++ # post install actions ++ # ++ ++ # in case we are running from DVD we use the tlpdb from the DVD, otherwise ++ # the one we have locally created, for all the further actions ++ my $usedtlpdb = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; ++ ++ + if (win32()) { ++ debug "Actual environment:\n".`set`."\n\n"; ++ debug 'Effective TEXMFCNF: '.`kpsewhich -expand-path=\$TEXMFCNF`."\n"; ++ } ++ ++ # TODO: can the following two clauses be merged? ++ if (win32()) { ++ create_uninstaller($vars{'TEXDIR'}, $vars{'TEXDIRW'}, ++ $vars{'TEXMFSYSVAR'}, $vars{'TEXMFSYSCONFIG'}); ++ } ++ # (re-)initialize batchfile for uninstalling shortcuts ++ if (win32() and !$opt_portable) { ++ mkdirhier("$TEXDIRW/tlpkg/installer") if $vars{'from_dvd'}; ++ } ++ ++ # Step 4: run the programs ++ ++ if (!$opt_portable and !$vars{'from_dvd'}) { ++ info("running mktexlsr $TEXDIR/texmf-dist $TEXDIR/texmf\n"); ++ system('mktexlsr', "$TEXDIR/texmf-dist", "$TEXDIR/texmf"); ++ } ++ ++ # we have to generate the various config file. That could be done with ++ # texconfig generate * but Win32 does not have texconfig. But we have ++ # $localtlpdb and this is simple code, so do it directly, i.e., duplicate ++ # the code from the various generate-*.pl scripts ++ ++ info("writing fmtutil.cnf data to $TEXMFSYSVAR/web2c/fmtutil.cnf\n"); ++ TeXLive::TLUtils::create_fmtutil($usedtlpdb, ++ "$TEXMFSYSVAR/web2c/fmtutil.cnf", ++ "$TEXMFLOCAL/web2c/fmtutil-local.cnf"); ++ ++ mkdirhier "$vars{'TEXMFSYSCONFIG'}/web2c"; ++ info("writing updmap.cfg to $TEXMFSYSCONFIG/web2c/updmap.cfg\n"); ++ TeXLive::TLUtils::create_updmap ($usedtlpdb, ++ "$TEXMFSYSCONFIG/web2c/updmap.cfg", ++ "$TEXMFLOCAL/web2c/updmap-local.cfg"); ++ ++ info("writing language.dat data to $TEXMFSYSVAR/tex/generic/config/language.dat\n"); ++ TeXLive::TLUtils::create_language_dat($usedtlpdb, ++ "$TEXMFSYSVAR/tex/generic/config/language.dat", ++ "$TEXMFLOCAL/tex/generic/config/language-local.dat"); ++ ++ info("writing language.def data to $TEXMFSYSVAR/tex/generic/config/language.def\n"); ++ TeXLive::TLUtils::create_language_def($usedtlpdb, ++ "$TEXMFSYSVAR/tex/generic/config/language.def", ++ "$TEXMFLOCAL/tex/generic/config/language-local.def"); ++ ++ info("running mktexlsr $TEXMFSYSVAR\n"); ++ system('mktexlsr', "$TEXMFSYSVAR"); ++ ++ info("running updmap-sys... "); ++ # system('updmap-sys', '--nohash'); ++ log(`updmap-sys --nohash 2>&1`); ++ info("done\n"); ++ ++ info("re-running mktexlsr $TEXMFSYSVAR\n"); ++ system('mktexlsr', "$TEXMFSYSVAR"); ++ ++ # now work through the options if specified at all ++ ++ # letter instead of a4 ++ if ($vars{'option_letter'}) { ++ info("Setting default paper size to letter\n"); ++ system("tlmgr", "paper", "letter"); ++ } ++ ++ # all formats option ++ if ($vars{'option_fmt'}) { ++ info("pre-generating all format files (fmtutil-sys --all), be patient..."); ++ log(`fmtutil-sys --all 2>&1`); ++ info("done\n"); ++ } ++ ++ # TODO: Should/can this be moved into the do_system_integration part? ++ # it looks like it does not do anything outside the texlive tree, so it ++ # would be fine if we do it anyway ... ++ # $opt_portable: no %install but we still want xetex postinstall ++ &{$PostInstall{'xetex'}}($TEXDIR, $TEXDIRW, $TEXMFSYSVAR, $TEXMFLOCAL) ++ if $opt_portable; ++ ++ # no do the system integration: ++ # on unix this means setting up symlinks ++ # on w32 this means adding to path, settting registry values ++ # on both, we run the TLPostActions and the postaction directives of the tlp ++ do_system_integration() if $vars{'option_sysint'}; ++} ++ ++sub do_system_integration { ++ # Run the post installation code in TLPostAction.pm ++ foreach my $package (sort keys %install) { ++ if ($install{$package} && defined($PostInstall{$package})) { ++ info("running post install action for $package\n"); ++ &{$PostInstall{$package}}($vars{'TEXDIR'}, $vars{'TEXDIRW'}, ++ $vars{'TEXMFSYSVAR'}, $vars{'TEXMFLOCAL'}); ++ } ++ } ++ # Run the post installation code in the postaction tlpsrc entries ++ my $usedtlpdb = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; ++ foreach my $package (sort keys %install) { ++ if ($install{$package}) { ++ &TeXLive::TLUtils::do_postaction_code("install", ++ $usedtlpdb->get_package($package)); ++ } ++ } ++ info ("finished with package specific postactions\n"); ++ ++ if (win32()) { ++ update_assocs(); ++ + my $path = TeXLive::TLWinGoo::get_system_env() -> {'/Path'}; + $path =~ s/[\s\x00]+$//; + log("Old system path: $path\n"); +@@ -516,29 +745,97 @@ + # setenv_reg('TEXMFSYSVAR', $vars{'TEXMFSYSVAR'}) if $vars{'from_dvd'}; + setenv_reg('TEXMFCNF', $vars{'TEXMFSYSVAR'}.'/web2c') if $vars{'from_dvd'}; + broadcast_env(); +- create_uninstaller($vars{'TEXDIR'}, $vars{'TEXDIRW'}, +- $vars{'TEXMFSYSVAR'}, $vars{'TEXMFSYSCONFIG'}); ++ } else { ++ $localtlpdb->add_symlinks() + } +- do_postinst_stuff(); +- # now we save every scheme that is fully covered by the stuff we have +- # installed to the $localtlpdb +- foreach my $s ($tlpdb->schemes) { +- my $stlp = $tlpdb->get_package($s); +- die ("That cannot happen, $s not defined in tlpdb") unless defined($stlp); +- my $incit = 1; +- foreach my $d ($stlp->depends) { +- if (!defined($localtlpdb->get_package($d))) { +- $incit = 0; +- last; ++} ++ ++ ++# we have to adjust the texmf.cnf file to the paths set in the configuration! ++sub do_texmf_cnf { ++ open(TMF,"<$vars{'TEXDIR'}/texmf/web2c/texmf.cnf") ++ or die "$vars{'TEXDIR'}/texmf/web2c/texmf.cnf not found: $!"; ++ my @texmfcnflines = ; ++ close(TMF); ++ my @newtmf; ++ my @changedtmf; ++ # we have to find TEXMFLOCAL TEXMFSYSVAR and TEXMFHOME ++ foreach my $line (@texmfcnflines) { ++ if ($line =~ m/^TEXMFLOCAL/) { ++ # by default TEXMFLOCAL = TEXDIR/../texmf-local, if this is the case ++ # we don't have to change anything from the default ++ my $deftmlocal = dirname($vars{'TEXDIR'}); ++ $deftmlocal .= "/texmf-local"; ++ if ("$vars{'TEXMFLOCAL'}" eq "$deftmlocal") { ++ push @newtmf, $line; ++ } else { ++ push @newtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; ++ push @changedtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; + } ++ } elsif ($line =~ m/^TEXMFSYSVAR/) { ++ # by default TEXMFSYSVAR = TEXDIR/texmf-var, if this is the case ++ # we don't have to change anything from the default ++ if ("$vars{'TEXMFSYSVAR'}" eq "$vars{'TEXDIR'}/texmf-var") { ++ push @newtmf, $line; ++ } else { ++ push @newtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; ++ push @changedtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; ++ } ++ } elsif ($line =~ m/^TEXMFSYSCONFIG/) { ++ # by default TEXMFSYSCONFIG = TEXDIR/texmf-config, if this is the case ++ # we don't have to change anything from the default ++ if ("$vars{'TEXMFSYSCONFIG'}" eq "$vars{'TEXDIR'}/texmf-config") { ++ push @newtmf, $line; ++ } else { ++ push @newtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; ++ push @changedtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; ++ } ++ } elsif ($line =~ m/^TEXMFHOME/) { ++ # kpse now expands ~ to USERPROFILE, so we don't treat win32 and ++ # unix differently ++ push @newtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; ++ if ("$vars{'TEXMFHOME'}" ne "~/texmf") { ++ push @changedtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; ++ } ++ } elsif ($line =~ m/^OSFONTDIR/) { ++ if (win32()) { ++ push @newtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; ++ push @changedtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; ++ } else { ++ push @newtmf, $line; ++ } ++ } else { ++ push @newtmf, $line; + } +- if ($incit) { +- $localtlpdb->add_tlpobj($stlp); +- } + } +- $localtlpdb->save unless $vars{'from_dvd'}; ++ my $TMF; ++ if (!$vars{'from_dvd'}) { ++ $TMF = ">$vars{'TEXDIR'}/texmf.cnf"; ++ open(TMF, $TMF) || die "open($TMF) failed: $!"; ++ print TMF <option_create_formats; + $vars{'option_letter'} = defined($tlpdb->option_paper) + && ($tlpdb->option_paper eq "letter" ? 1 : 0); +- $vars{'option_symlinks'} = $tlpdb->option_create_symlinks; ++ $vars{'option_sysint'} = $tlpdb->option_system_integration; ++ if (win32()) { ++ $vars{'option_sysint'} = 1; ++ } + $vars{'sys_bin'} = $tlpdb->option_sys_bin; + $vars{'sys_man'} = $tlpdb->option_sys_man; + $vars{'sys_info'} = $tlpdb->option_sys_info; +@@ -850,8 +1150,8 @@ + print $fh "$key $vars{$key}\n" if $key=~/^option_doc/; + print $fh "$key $vars{$key}\n" if $key=~/^option_fmt/; + print $fh "$key $vars{$key}\n" if $key=~/^option_src/; +- print $fh "$key $vars{$key}\n" if $key=~/^option_symlinks/; +- if ($vars{'option_symlinks'}) { ++ print $fh "$key $vars{$key}\n" if $key=~/^option_sysint/; ++ if ($vars{'option_sysint'} && unix()) { + print $fh "sys_bin ", $vars{'sys_bin'}, "\n" if $key =~ /^sys_bin/; + print $fh "sys_man ", $vars{'sys_man'}, "\n" if $key =~ /^sys_man/; + print $fh "sys_info ", $vars{'sys_info'}, "\n" if $key =~ /^sys_info/; +@@ -948,7 +1248,7 @@ + $localtlpdb->option_location($location); + $localtlpdb->option_paper($vars{'option_letter'} ? "letter" : "a4"); + $localtlpdb->option_create_formats($vars{'option_fmt'} ? "1" : "0"); +- $localtlpdb->option_create_symlinks($vars{'option_symlinks'} ? "1" : "0"); ++ $localtlpdb->option_system_integration($vars{'option_sysint'} ? "1" : "0"); + $localtlpdb->option_sys_bin($vars{'sys_bin'}); + $localtlpdb->option_sys_info($vars{'sys_info'}); + $localtlpdb->option_sys_man($vars{'sys_man'}); +@@ -964,320 +1264,6 @@ + $localtlpdb->save() unless $vars{'from_dvd'}; + } + +-# do_postinst_stuff has to fix up the texmf tree and install some missing +-# files. The things to do are taken from the install-live.sh installer +-# of former times, and should be critically checked. +-sub do_postinst_stuff { +- my $TEXDIR="$vars{'TEXDIR'}"; +- my $TEXDIRW="$vars{'TEXDIRW'}"; +- my $TEXMFSYSVAR="$vars{'TEXMFSYSVAR'}"; +- my $TEXMFSYSCONFIG="$vars{'TEXMFSYSCONFIG'}"; +- my $TEXMFLOCAL="$vars{'TEXMFLOCAL'}"; +- my $tmv; +- +- do_texmf_cnf() unless ($opt_portable); +- +- +- # final program execution +- # we have to do several things: +- # - clean the environment from spurious TEXMF related variables +- # - add the bin dir to the PATH +- # - select perl interpreter and set the correct perllib +- # - run the programs +- +- # Step 1: Clean the environment +- my @TMFVARS0=qw(VARTEXFONTS +- TEXMF SYSTEXMF VARTEXFONTS +- TEXMFDBS WEB2C TEXINPUTS TEXFORMATS MFBASES MPMEMS TEXPOOL MFPOOL MPPOOL +- PSHEADERS TEXFONTMAPS TEXPSHEADERS TEXCONFIG TEXMFCNF); +- my @TMFVARS1=qw(TEXMFMAIN TEXMFDIST TEXMFLOCAL TEXMFSYSVAR TEXMFSYSCONFIG +- TEXMFHOME TEXMFVAR TEXMFCONFIG); +- +- if (defined($ENV{'TEXMFCNF'}) and !$vars{'from_dvd'} and !$opt_portable) { +- print "WARNING: environment variable TEXMFCNF is set. +-You should know what you are doing. +-We will remove that for the post install actions, but all further +-operations might be disturbed.\n\n"; +- } +- foreach $tmv (@TMFVARS0) { +- delete $ENV{$tmv} if (defined($ENV{$tmv})); +- } +- if (!$opt_portable) { +- foreach $tmv (@TMFVARS1) { +- delete $ENV{$tmv} if (defined($ENV{$tmv})); +- } +- } +- $ENV{'TEXMFSYSVAR'} = $vars{'TEXMFSYSVAR'} if $vars{'from_dvd'}; +- +- # Step 2: Setup the PATH, switch to the new Perl +- +- my $pathsep=(win32)? ';' : ':'; +- my $plat_bindir="$TEXDIR/bin/$vars{'this_platform'}"; +- my $perl_bindir="$TEXDIR/tlpkg/tlperl/bin"; +- my $perl_libdir="$TEXDIR/tlpkg/tlperl/lib"; +- +-## This won't do any good; +-## have to remove other tex directories in calling batchfile +-# if (win32) { +-# debug("Removing other TeXs from path\n"); +-# my @newpt = (); +-# foreach my $d (split (';', $ENV{'PATH'})) { +-# push @newpt, $d unless TeXLive::TLWinGoo::is_a_texdir($d); +-# } +-# $ENV{'PATH'} = join($pathsep, @newpt); +-# debug("Path after removals(s):\n $ENV{'PATH'}\n"); +-# } +- +- debug("Prepending $plat_bindir to PATH\n"); +- +- $ENV{'PATH'}="$plat_bindir" . "$pathsep" . "$ENV{'PATH'}"; +- +- if (win32) { +- debug("Prepending $perl_bindir to PATH\n"); +- $ENV{'PATH'}="$perl_bindir" . "$pathsep" . "$ENV{'PATH'}"; +- $ENV{'PATH'} =~ s!/!\\!g; +- } +- +- debug("\nNew PATH is now:\n"); +- foreach my $dir (split $pathsep, $ENV{'PATH'}) { +- debug(" $dir\n"); +- } +- debug("\n"); +- +- if (win32) { +- $ENV{'PERL5LIB'}="$perl_libdir"; +- } +- +- # +- # post install actions +- # +- +- if (win32()) { +- debug "Actual environment:\n".`set`."\n\n"; +- debug 'Effective TEXMFCNF: '.`kpsewhich -expand-path=\$TEXMFCNF`."\n"; +- } +- +- # (re-)initialize batchfile for uninstalling shortcuts +- if (win32() and !$opt_portable) { +- mkdirhier("$TEXDIRW/tlpkg/installer") if $vars{'from_dvd'}; +- init_unshortbat($TEXDIRW); +- } +- +- foreach my $package (sort keys %install) { +- if ($install{$package} && defined($PostInstall{$package})) { +- info("running post install action for $package\n"); +- &{$PostInstall{$package}}($TEXDIR, $TEXDIRW, $TEXMFSYSVAR, $TEXMFLOCAL); +- } +- } +- # $opt_portable: no %install but we still want xetex postinstall +- &{$PostInstall{'xetex'}}($TEXDIR, $TEXDIRW, $TEXMFSYSVAR, $TEXMFLOCAL) +- if $opt_portable; +- update_assocs() if win32(); +- +- # Step 4: run the programs +- +- if (!$opt_portable and !$vars{'from_dvd'}) { +- info("running mktexlsr $TEXDIR/texmf-dist $TEXDIR/texmf\n"); +- system('mktexlsr', "$TEXDIR/texmf-dist", "$TEXDIR/texmf"); +- } +- +- # we have to generate the various config file. That could be done with +- # texconfig generate * but Win32 does not have texconfig. But we have +- # $localtlpdb and this is simple code, so do it directly, i.e., duplicate +- # the code from the various generate-*.pl scripts +- info("writing fmtutil.cnf data to $TEXMFSYSVAR/web2c/fmtutil.cnf\n"); +- my $tlp = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; +- TeXLive::TLUtils::create_fmtutil($tlp, #$localtlpdb, +- "$TEXMFSYSVAR/web2c/fmtutil.cnf", +- "$TEXMFLOCAL/web2c/fmtutil-local.cnf"); +- +- mkdirhier "$vars{'TEXMFSYSCONFIG'}/web2c"; +- info("writing updmap.cfg to $TEXMFSYSCONFIG/web2c/updmap.cfg\n"); +- TeXLive::TLUtils::create_updmap ($tlp, #$localtlpdb, +- "$TEXMFSYSCONFIG/web2c/updmap.cfg", +- "$TEXMFLOCAL/web2c/updmap-local.cfg"); +- +- info("writing language.dat data to $TEXMFSYSVAR/tex/generic/config/language.dat\n"); +- TeXLive::TLUtils::create_language_dat($tlp, #$localtlpdb, +- "$TEXMFSYSVAR/tex/generic/config/language.dat", +- "$TEXMFLOCAL/tex/generic/config/language-local.dat"); +- +- info("writing language.def data to $TEXMFSYSVAR/tex/generic/config/language.def\n"); +- TeXLive::TLUtils::create_language_def($tlp, #$localtlpdb, +- "$TEXMFSYSVAR/tex/generic/config/language.def", +- "$TEXMFLOCAL/tex/generic/config/language-local.def"); +- +- info("running mktexlsr $TEXMFSYSVAR\n"); +- system('mktexlsr', "$TEXMFSYSVAR"); +- +- info("running updmap-sys... "); +- # system('updmap-sys', '--nohash'); +- log(`updmap-sys --nohash 2>&1`); +- info("done\n"); +- +- info("re-running mktexlsr $TEXMFSYSVAR\n"); +- system('mktexlsr', "$TEXMFSYSVAR"); +- +- # now work through the options if specified at all +- +- # letter instead of a4 +- if ($vars{'option_letter'}) { +- info("Setting default paper size to letter\n"); +- if (platform() eq "hppa-hpux") { +- # we didn't get a texlua binary for hppa-hpux, so try texconfig +- system("texconfig", "paper", "letter"); +- } else { +- system("texlua", "$TEXDIR/texmf/scripts/texlive/texconf.tlu", "--sys", "--noformat", "paper", "letter"); +- } +- } +- +- # all formats option +- if ($vars{'option_fmt'}) { +- info("pre-generating all format files (fmtutil-sys --all), be patient..."); +- #system('fmtutil-sys', '--all'); +- # try to capture that output +- log(`fmtutil-sys --all 2>&1`); +- info("done\n"); +- } +- +- # option_links +- if ($vars{'option_symlinks'}) { +- # bin files +- my @files; +- mkdirhier $vars{'sys_bin'}; +- if (-w $vars{'sys_bin'}) { +- info("linking binaries to $vars{'sys_bin'}\n"); +- @files = `ls $plat_bindir`; +- chomp(@files); +- `cd "$vars{'sys_bin'}" && rm -f @files`; +- `ln -s "$plat_bindir/"* "$vars{'sys_bin'}"`; +- } else { +- info("destination of bin symlink $vars{'sys_bin'} not writable, " +- . "no linking of bin files done.\n"); +- } +- if ($vars{'option_doc'}) { +- # info files +- mkdirhier $vars{'sys_info'}; +- if (-w $vars{'sys_info'}) { +- info("linking info pages to $vars{'sys_info'}\n"); +- @files = `ls "$TEXDIR/texmf/doc/info"`; +- chomp(@files); +- `cd "$vars{'sys_info'}" && rm -f @files`; +- `ln -s "$TEXDIR/texmf/doc/info/"*info* "$vars{'sys_info'}"`; +- } else { +- info("destination of info symlink $vars{'sys_info'} not writable, " +- . "no linking of info files done.\n"); +- } +- # man files +- mkdirhier $vars{'sys_man'}; +- if (-w $vars{'sys_man'}) { +- info("linking man pages to $vars{'sys_man'}\n"); +- my $foo = `(cd "$TEXDIR/texmf/doc/man" && echo *)`; +- my @mans = split ' ', $foo; +- chomp(@mans); +- foreach my $m (@mans) { +- my $mandir = "$TEXDIR/texmf/doc/man/$m"; +- next unless -d $mandir; +- mkdirhier "$vars{'sys_man'}/$m"; +- next unless -w "$vars{'sys_man'}/$m"; +- @files = `ls "$mandir"`; +- chomp(@files); +- `cd "$vars{'sys_man'}/$m" && rm -f @files`; +- `ln -s "$mandir/"* "$vars{'sys_man'}/$m"`; +- } +- } else { +- info("destination of man symlink $vars{'sys_man'} not writable, " +- . "no linking of man files done.\n"); +- } +- } +- } +-} +- +- +-# we have to adjust the texmf.cnf file to the paths set in the configuration! +-sub do_texmf_cnf { +- open(TMF,"<$vars{'TEXDIR'}/texmf/web2c/texmf.cnf") +- or die "$vars{'TEXDIR'}/texmf/web2c/texmf.cnf not found: $!"; +- my @texmfcnflines = ; +- close(TMF); +- my @newtmf; +- my @changedtmf; +- # we have to find TEXMFLOCAL TEXMFSYSVAR and TEXMFHOME +- foreach my $line (@texmfcnflines) { +- if ($line =~ m/^TEXMFLOCAL/) { +- # by default TEXMFLOCAL = TEXDIR/../texmf-local, if this is the case +- # we don't have to change anything from the default +- my $deftmlocal = dirname($vars{'TEXDIR'}); +- $deftmlocal .= "/texmf-local"; +- if ("$vars{'TEXMFLOCAL'}" eq "$deftmlocal") { +- push @newtmf, $line; +- } else { +- push @newtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; +- push @changedtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; +- } +- } elsif ($line =~ m/^TEXMFSYSVAR/) { +- # by default TEXMFSYSVAR = TEXDIR/texmf-var, if this is the case +- # we don't have to change anything from the default +- if ("$vars{'TEXMFSYSVAR'}" eq "$vars{'TEXDIR'}/texmf-var") { +- push @newtmf, $line; +- } else { +- push @newtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; +- push @changedtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; +- } +- } elsif ($line =~ m/^TEXMFSYSCONFIG/) { +- # by default TEXMFSYSCONFIG = TEXDIR/texmf-config, if this is the case +- # we don't have to change anything from the default +- if ("$vars{'TEXMFSYSCONFIG'}" eq "$vars{'TEXDIR'}/texmf-config") { +- push @newtmf, $line; +- } else { +- push @newtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; +- push @changedtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; +- } +- } elsif ($line =~ m/^TEXMFHOME/) { +- # kpse now expands ~ to USERPROFILE, so we don't treat win32 and +- # unix differently +- push @newtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; +- if ("$vars{'TEXMFHOME'}" ne "~/texmf") { +- push @changedtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; +- } +- } elsif ($line =~ m/^OSFONTDIR/) { +- if (win32()) { +- push @newtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; +- push @changedtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; +- } else { +- push @newtmf, $line; +- } +- } else { +- push @newtmf, $line; +- } +- } +- my $TMF; +- if (!$vars{'from_dvd'}) { +- $TMF = ">$vars{'TEXDIR'}/texmf.cnf"; +- open(TMF, $TMF) || die "open($TMF) failed: $!"; +- print TMF <$tlpdbfile_quote")) { +- debug("un-lzmaing $lzmafile failed, tryin gplain file\n"); +- # to be sure we unlink the lzma file and the tlpdbfile +- unlink($lzmafile); ++ if (system("$::progs{'xzdec'} <$xzfile_quote >$tlpdbfile_quote")) { ++ debug("un-xzing $xzfile failed, tryin gplain file\n"); ++ # to be sure we unlink the xz file and the tlpdbfile ++ unlink($xzfile); + unlink($tlpdbfile); + } else { +- unlink($lzmafile); ++ unlink($xzfile); + open($retfh, "<$tlpdbfile") || die "$0: open($tlpdbfile) failed: $!"; +- debug("found the uncompressed lzma file\n"); ++ debug("found the uncompressed xz file\n"); + } + } + } else { +- debug("no lzmadec defined, not trying tlpdb.lzma ...\n"); ++ debug("no xzdec defined, not trying tlpdb.xz ...\n"); + } + if (!defined($retfh)) { +- debug("TLPDB: downloading $path.lzma didn't succeed, try $path\n"); +- # lzma did not succeed, so try the normal file ++ debug("TLPDB: downloading $path.xz didn't succeed, try $path\n"); ++ # xz did not succeed, so try the normal file + $retfh = TeXLive::TLUtils::download_file($path, "|"); + if (!$retfh) { + die "open tlpdb($path) failed: $!"; +@@ -277,7 +277,7 @@ + } + } until (!$ret); + tlwarn("unusable location $path, could not load any packages\n") if (!$found); +- # remove the un-lzma-ed tlpdb file from temp dir ++ # remove the un-xz-ed tlpdb file from temp dir + # THAT IS RACY!!! we should fix that in some better way with tempfile + unlink($tlpdbfile) if $tlpdbfile; + return($found); +@@ -394,13 +394,13 @@ + $container .= ".zip"; + $unpackprog="unzip"; + $args="-o -qq $container -d $dest"; +- } elsif (-r "$container.lzma") { +- $container .= ".lzma"; ++ } elsif (-r "$container.xz") { ++ $container .= ".xz"; + $unpackprog="NO_IDEA_HOW_TO_UNPACK_LZMA"; + $args="NO IDEA WHAT ARGS IT NEEDS"; +- die "$0: lzma checked for but not implemented, maybe update TLPDB.pm"; ++ die "$0: xz checked for but not implemented, maybe update TLPDB.pm"; + } else { +- die "$0: No package $container (.zip or .lzma) in $ziplocation"; ++ die "$0: No package $container (.zip or .xz) in $ziplocation"; + } + tlwarn("Huuu, this needs testing and error checking!\n"); + tlwarn("Should we use -a -- adapt line endings etc?\n"); +@@ -788,7 +788,7 @@ + read-only function; you cannot change the root of the TLPDB using this + function. + +-See C<00texlive-installation.config.tlpsrc> for a description of the ++See C<00texlive.installation.tlpsrc> for a description of the + special value C<__MASTER>. + + =cut +@@ -1111,11 +1111,11 @@ + + sub _set_option_value { + my ($self,$key,$value) = @_; +- my $pkg = $self->{'tlps'}{'00texlive-installation.config'}; ++ my $pkg = $self->{'tlps'}{'00texlive.installation'}; + my @newdeps; + if (!defined($pkg)) { + $pkg = new TeXLive::TLPOBJ; +- $pkg->name("00texlive-installation.config"); ++ $pkg->name("00texlive.installation"); + $pkg->category("TLCore"); + push @newdeps, "$key:$value"; + } else { +@@ -1133,20 +1133,20 @@ + } + } + $pkg->depends(@newdeps); +- $self->{'tlps'}{'00texlive-installation.config'} = $pkg; ++ $self->{'tlps'}{'00texlive.installation'} = $pkg; + } + + sub _option_value { + my ($self,$key) = @_; +- if (defined($self->{'tlps'}{'00texlive-installation.config'})) { +- foreach my $d ($self->{'tlps'}{'00texlive-installation.config'}->depends) { ++ if (defined($self->{'tlps'}{'00texlive.installation'})) { ++ foreach my $d ($self->{'tlps'}{'00texlive.installation'}->depends) { + if ($d =~ m!^$key:(.*)$!) { + return "$1"; + } + } + return; + } +- tlwarn("00texlive-installation.config not found, cannot read option $key.\n"); ++ tlwarn("00texlive.installation not found, cannot read option $key.\n"); + return; + } + +@@ -1179,6 +1179,11 @@ + if (@_) { $self->_set_option_value("opt_create_symlinks", shift); } + return $self->_option_value("opt_create_symlinks"); + } ++sub option_system_integration { ++ my $self = shift; ++ if (@_) { $self->_set_option_value("opt_system_integration", shift); } ++ return $self->_option_value("opt_system_integration"); ++} + sub option_install_docfiles { + my $self = shift; + if (@_) { $self->_set_option_value("opt_install_docfiles", shift); } +@@ -1239,26 +1244,64 @@ + =cut + sub fmtutil_cnf_lines { + my $self = shift; +- my %fmtcnffiles; +- foreach my $p ($self->list_packages) { +- my $obj = $self->get_package ($p); +- die "$0: No TeX Live package named $p, strange" if ! $obj; ++ my @fmtlines = (); ++ ++ foreach my $pkg ($self->list_packages) { ++ my $obj = $self->get_package ($pkg); ++ die "No TeX Live package named $pkg, too strange" if ! $obj; ++ my $first = 1; + foreach my $e ($obj->executes) { +- if ($e =~ m/BuildFormat (.*)$/) { +- $fmtcnffiles{$1} = 1; +- } +- # others are ignored here ++ if ($e =~ m/AddFormat\s+(.*)\s*/) { ++ my $name; ++ my $engine; ++ my $patterns = "-"; ++ my $options = ""; ++ my $mode = ""; ++ if ($first) { ++ push @fmtlines, "# from $pkg:\n"; ++ $first = 0; ++ } ++ foreach my $p (&TeXLive::TLUtils::quotewords('\s+', 0, "$1")) { ++ # foreach my $p (split(' ', $1)) { ++ my ($a, $b); ++ if ($p =~ m/^(name|engine|mode|patterns|options)=(.*)$/) { ++ $a = $1; ++ $b = $2; ++ } else { ++ die "Unknown format directive in $pkg: $e"; ++ } ++ if ($a eq "name") { ++ die "AddFormat line needs name=something: $pkg, $e" unless $b; ++ $name = $b; next; ++ } ++ if ($a eq "engine") { ++ die "AddFormat line needs engine=something: $pkg, $e" unless $b; ++ $engine = $b; next; ++ } ++ if ($a eq "patterns") { ++ $patterns = ( $b ? $b : "-"); ++ next; ++ } ++ if ($a eq "mode") { ++ if ($b eq "disabled") { ++ $mode = "#! "; ++ } else { ++ $mode = ""; ++ } ++ next; ++ } ++ if ($a eq "options") { ++ $options = ( $b ? $b : ""); ++ next; ++ } ++ # should not be reached at all ++ die "Unknown language directive in $pkg: $e"; ++ } ++ push @fmtlines, "$mode$name $engine $patterns $options\n"; ++ } + } + } +- my @formatlines; +- foreach my $f (sort keys %fmtcnffiles) { +- open(INFILE,"<$self->{'root'}/texmf/fmtutil/format.$f.cnf") +- or tlwarn("Cannot open $self->{'root'}/texmf/fmtutil/format.$f.cnf\nThe generated fmtutil.cnf file might be incomplete.\nError: $!\n"); +- @tmp = ; +- close(INFILE); +- push @formatlines, @tmp; +- } +- return(@formatlines); ++ return @fmtlines; + } + + =item C<< $tlpdb->updmap_cfg_lines >> +@@ -1420,7 +1463,7 @@ + =item C> + + This option specifies a format for containers. The currently supported +-formats are C and C. But note that C is untested. ++formats are C and C. But note that C is untested. + + =back + +Index: tlpkg/TeXLive/TLConfig.pm =================================================================== ---- tlpkg/tlpsrc/bin-jadetex.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-jadetex.tlpsrc (working copy) -@@ -2,7 +2,7 @@ - category TLCore - depend pdftex - depend bin-tex --execute BuildFormat jadetex --runpattern f texmf/fmtutil/format.jadetex.cnf -+execute AddFormat name=jadetex engine=pdftex patterns=language.dat options="&latex jadetex.ini" -+execute AddFormat name=pdfjadetex engine=pdftex patterns=language.dat options="&pdflatex pdfjadetex.ini" - binpattern f bin/${ARCH}/jadetex - binpattern f bin/${ARCH}/pdfjadetex -Index: tlpkg/tlpsrc/00texlive-installation.config.tlpsrc +--- tlpkg/TeXLive/TLConfig.pm (revision 12198) ++++ tlpkg/TeXLive/TLConfig.pm (working copy) +@@ -11,6 +11,7 @@ + use vars qw( @ISA @EXPORT_OK @EXPORT ); + @ISA = qw(Exporter); + @EXPORT_OK = qw( ++ $ReleaseYear + @MetaCategories + @NormalCategories + @Categories +@@ -28,10 +29,15 @@ + $WinSpecialUpdatePackagesRegexp + @CriticalPackagesList + @AllowedConfigOptions ++ $WindowsMainMenuName + ); + @EXPORT = @EXPORT_OK; + } + ++# the year of our release, will be used in the location of the ++# network packges, and in menu names, and probably many other places ++$ReleaseYear = 2009; ++ + # Meta Categories do not ship files, but call only for other packages + our @MetaCategories = qw/Collection Scheme/; + our $MetaCategoriesRegexp = '(Collection|Scheme)'; +@@ -53,18 +59,18 @@ + our $BlockSize = 4096; + + # the way we package things on the web +-our $DefaultContainerExtension = "tar.lzma"; ++our $DefaultContainerExtension = "tar.xz"; + + our $Archive = "archive"; + our $TeXLiveServerURL = "http://mirror.ctan.org"; +-our $TeXLiveServerPath = "systems/texlive/tlnet/2008"; ++our $TeXLiveServerPath = "systems/texlive/tlnet/$ReleaseYear"; + our $TeXLiveURL = "$TeXLiveServerURL/$TeXLiveServerPath"; + + our $WinSpecialUpdatePackagesRegexp = + '^(texlive\.infra|luatex|bin-tlperl\.win32$|bin-texlive|bin-kpathsea)'; + + +-our @CriticalPackagesList = qw/texlive.infra bin-texlive/; ++our @CriticalPackagesList = qw/texlive.infra/; + + our @AllowedConfigOptions = qw/ + available_architectures +@@ -82,6 +88,8 @@ + autobackup + /; + ++our $WindowsMainMenuName = "TeX Live $ReleaseYear"; ++ + 1; + + +@@ -163,7 +171,7 @@ + + =item C<@TeXLive::TLConfig::AllowedConfigOptions> + +-A list of a config options that can be set in 00texlive-installation.config. ++A list of a config options that can be set in 00texlive.installation. + + =back + +Index: tlpkg/TeXLive/TLPostActions.pm =================================================================== ---- tlpkg/tlpsrc/00texlive-installation.config.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/00texlive-installation.config.tlpsrc (working copy) -@@ -1,30 +0,0 @@ --name 00texlive-installation.config --category TLCore --longdesc This package serves two purposes: --longdesc --longdesc 1. at installation time the present values are taken as default for --longdesc the installer --longdesc --longdesc 2. on an installed system it serves as a configuration file. --longdesc We have to remember these settings for additional package --longdesc installation, removal, etc. --longdesc --longdesc The value of __MASTER__ for the location field tells the --longdesc installer to use the present directory itself. For example, --longdesc the DVD can be mounted anywhere and we want the installer to work. --longdesc --longdesc Concerning the 00* names: --longdesc All packages starting with 00texlive are considered virtual packages --longdesc in the sense that no containers are generated and these packages --longdesc are never split into .src and .doc sub-packages in the tlpdb. +--- tlpkg/TeXLive/TLPostActions.pm (revision 12198) ++++ tlpkg/TeXLive/TLPostActions.pm (working copy) +@@ -20,48 +20,13 @@ + use TeXLive::TLUtils qw(win32 mkdirhier copy conv_to_w32_path log debug info + touch tlwarn); + use TeXLive::TLWinGoo; ++use TeXLive::TLConfig; + +-my $mainmenu = "TeX Live 2008"; ++my $mainmenu = $TeXLive::TLConfig::WindowsMainMenuName; + + our %PostInstall; + our %PostRemove; + +-# NOT ENABLED !!!!! +-# context post install actions +-sub do_install_bin_context { +- my ($texdir, $texdirw, $texmfsysvar) = @_; +- # set up texmfcnf.lua +- my $TMF = "$texdirw/texmf/web2c/texmfcnf.lua"; +- if (! -r $TMF) { +- open(TMF, ">$TMF") || die "open($TMF) failed: $!\n"; +- print TMF 'local conf = {}', "\n"; +- print TMF "conf.TEXMFCACHE = \"$texmfsysvar\"\n"; +- #print TMP "conf.CACHEINTDS = 't'\n"; +- print TMF "return conf\n"; +- close(TMF) || warn "close($TMF) failed: $!"; +- } +- # update the luatools cache +- system("luatools", "--generate"); +- # build the context formats based on luatex +- system("context", "--make", "--compile", "cont-en"); +- # update the font cache +- system("mtxrun", "--script", "fonts", "--reload"); +-} +-# +-# That has to be sorted out and maybe changed at a later time, so do NOT +-# enable that for now. +-###$PostInstall{"bin-context"} = \&do_install_bin_context; +- +- +-# ATM do the same for luatex as for context +-sub do_install_luatex { +- do_install_bin_context(@_); +-} +-# +-# SEE ABOVE +-# $PostInstall{"luatex"} = \&do_install_luatex; +- +- + # xetex + # + sub do_install_xetex { +@@ -125,7 +90,7 @@ + } + } + foreach (@lines) { +- $_ =~ s!c:/Program Files/texlive/2008!$texdir!; ++ $_ =~ s!c:/Program Files/texlive/$TeXLive::TLConfig::ReleaseYear!$texdir!; + $_ =~ s!c:/windows/fonts!$winfontdir! if win32(); + # hack around fc-cache problem in from_dvd case: + #if (win32() and (uc($texdir) ne uc($texdirw)) and +@@ -149,136 +114,13 @@ + } + $PostInstall{"xetex"} = \&do_install_xetex; + +-# +-# bin-dviout.win32 +-# +-sub do_install_bin_dviout_win32 { +- my ($texdir, $texdirw) = @_; +- if (win32()) { +- my $texdir_bsl = conv_to_w32_path($texdir); +- add_menu_shortcut( +- $mainmenu, +- 'DVIOUT Dvi Viewer', +- $texdir.'/tlpkg/dviout/dviout.exe', # for the icon +- 'wscript', +- $texdir_bsl."\\bin\\win32\\dviout.vbs", +- '', +- ); +- } +-} +-sub do_remove_bin_dviout_win32 { +- my ($texdir) = @_; +- if (win32()) { +- remove_menu_shortcut($mainmenu, 'DVIOUT Dvi Viewer'); +- } +-} +-$PostInstall{'bin-dviout.win32'} = \&do_install_bin_dviout_win32; +-$PostRemove{'bin-dviout.win32'} = \&do_remove_bin_dviout_win32; + +- + # +-# bin-texdoc +-# +-sub do_install_bin_texdoc { +- my ($texdir, $texdirw) = @_; +- if (win32()) { +- #add_desktop_shortcut( +- # $texdirw, +- # 'TeXdoc GUI', +- # '', # $vars{'TEXDIR'}.'/tlpkg/doc/notes.ico', # the icon +- # $texdir.'/bin/win32/texdoctk.bat', +- # '', # no args +- # 'batgui', # any non-null value to hide command-prompt +- #); +- add_menu_shortcut( +- $mainmenu, +- 'TeXdoc GUI', +- '', # $vars{'TEXDIR'}.'/tlpkg/doc/notes.ico', # the icon +- $texdir.'/bin/win32/texdoctk.bat', +- '', # no args +- 'batgui', # any non-null value to hide command-prompt +- ); +- } +-} +-sub do_remove_bin_texdoc { +- my ($texdir) = @_; +- if (win32()) { +- # remove_desktop_shortcut('TeXdoc GUI'); +- remove_menu_shortcut($mainmenu, 'TeXdoc GUI'); +- } +-} +-$PostInstall{'bin-texdoc'} = \&do_install_bin_texdoc; +-$PostRemove{'bin-texdoc'} = \&do_remove_bin_texdoc; +- +-# +-# bin-tlpsv.win32 +-# +-sub do_install_bin_tlpsv_win32 { +- my ($texdir, $texdirw) = @_; +- if (win32()) { +- add_desktop_shortcut( +- $texdirw, +- 'PS_View', +- $texdir.'/tlpkg/tlpsv/psv.exe', # icon, not prog! +- $texdir.'/bin/win32/psv.bat', +- '', # no args +- 'batgui', # any non-null value to hide command-prompt +- ); +- add_menu_shortcut( +- $mainmenu, +- 'PS_View', +- $texdir.'/tlpkg/tlpsv/psv.exe', # icon, not prog! +- $texdir.'/bin/win32/psv.bat', +- '', # no args +- 'batgui', # any non-null value to hide command-prompt +- ); +- #register_extension(".ps", "PostScript"); +- #register_extension(".eps", "PostScript"); +- ##register_file_type("PostScript", '"'.$texdir.'/bin/win32/psv.bat"'); +- #register_file_type("PostScript", +- # '"'.$texdir.'/tlpkg/tlpsv/gswxlua.exe" -g '. +- # '"'.$texdir.'/tlpkg/tlgs/bin/gsdll32.dll" -l '. +- # '"'.$texdir.'/tlpkg/tlpsv/psv.wx.lua" -p '. +- # '"'.$texdir.'/tlpkg/tlpsv/psv_view.ps" -sINPUT="%1"'); +- #update_assocs(); +- } +-} +-sub do_remove_bin_tlpsv_win32 { +- my ($texdir) = @_; +- if (win32()) { +- remove_desktop_shortcut('PS_View'); +- remove_menu_shortcut($mainmenu, 'PS_View'); +- #unregister_extension(".ps"); +- #unregister_extension(".eps"); +- #unregister_file_type("PostScript"); +- #update_assocs(); +- } +-} +-$PostRemove{'bin-tlpsv.win32'} = \&do_remove_bin_tlpsv_win32; +-$PostInstall{'bin-tlpsv.win32'} = \&do_install_bin_tlpsv_win32; +- +-# + # bin-texlive + # + sub do_install_bin_texlive { + my ($texdir, $texdirw) = @_; + if (win32()) { +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manager', +- '', # $texdir.'/tlpkg/doc/dummy.ico', +- $texdir.'/bin/win32/tlmgr.bat', +- 'gui', +- 'batgui', +- ); +- add_menu_shortcut( +- $mainmenu, +- 'Release notes', +- '', +- 'http://tug.org/texlive/windows.html', +- '', +- '', +- ); + if (uc(TeXLive::TLWinGoo::win_which_dir('tex.exe')) ne + uc($texdir.'/bin/win32') or + uc(TeXLive::TLWinGoo::win_which_dir('pdftex.exe')) ne +@@ -296,7 +138,6 @@ + '', + ); + add_desktop_shortcut( +- $texdirw, + 'TeX Live Prompt', + '', + $ENV{'COMSPEC'}, +@@ -309,8 +150,6 @@ + sub do_remove_bin_texlive { + my ($texdir) = @_; + if (win32()) { +- remove_menu_shortcut($mainmenu, 'TeX Live Manager'); +- remove_menu_shortcut($mainmenu, 'Release notes'); + remove_menu_shortcut($mainmenu, 'TeX Live Prompt'); + remove_desktop_shortcut('TeX Live Prompt'); + } +@@ -318,431 +157,6 @@ + $PostInstall{'bin-texlive'} = \&do_install_bin_texlive; + $PostRemove{'bin-texlive'} = \&do_remove_bin_texlive; + +-# +-# texlive.infra +-# ships all the readme.html/readme.XX.html files, and the index of all +-# documents +-sub do_install_texlive_infra { +- my ($texdir) = @_; +- if (win32()) { +- if (!defined($texdir)) { +- tlwarn("do_install_texlive_infra: texdir not defined, returning\n"); +- return; +- } +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Toplevel Readme Index', +- '', # default pdf icon +- $texdir.'/index.html', +- '', +- '', +- ); +- } +-} +-sub do_remove_texlive_infra { +- my ($texdir) = @_; +- if (win32()) { +- remove_menu_shortcut($mainmenu,'TeX Live Toplevel Readme Index'); +- } +-} +-$PostInstall{'texlive.infra'} = \&do_install_texlive_infra; +-$PostRemove{'texlive.infra'} = \&do_remove_texlive_infra; +- +-# +-# texlive-en +-# +-sub do_install_texlive_en { +- my ($texdir) = @_; +- if (win32()) { +- if (!defined($texdir)) { +- tlwarn("do_install_texlive_en: texdir not defined, returning\n"); +- return; +- } +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (en) (HTML)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/english/texlive-en/texlive-en.html', +- '', +- '', +- ); +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (en) (PDF)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/english/texlive-en/texlive-en.pdf', +- '', +- '', +- ); +- } +-} +-sub do_remove_texlive_en { +- my ($texdir) = @_; +- if (win32()) { +- remove_menu_shortcut($mainmenu,'TeX Live Manual (en) (HTML)'); +- remove_menu_shortcut($mainmenu,'TeX Live Manual (en) (PDF)'); +- } +-} +-$PostInstall{'texlive-en'} = \&do_install_texlive_en; +-$PostRemove{'texlive-en'} = \&do_remove_texlive_en; +- +-# +-# texlive-cz +-# +-sub do_install_texlive_cz { +- my ($texdir) = @_; +- if (win32()) { +- if (!defined($texdir)) { +- tlwarn("do_install_texlive_cz: texdir not defined, returning\n"); +- return; +- } +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (cz) (PDF)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/czechslovak/texlive-cz/texlive-cz.pdf', +- '', +- '', +- ); +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (cz) (HTML)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/czechslovak/texlive-cz/texlive-cz.html', +- '', +- '', +- ); +- } +-} +-sub do_remove_texlive_cz { +- my ($texdir) = @_; +- if (win32()) { +- remove_menu_shortcut($mainmenu,'TeX Live Manual (cz) (PDF)'); +- remove_menu_shortcut($mainmenu,'TeX Live Manual (cz) (HTML)'); +- } +-} +-$PostInstall{'texlive-cz'} = \&do_install_texlive_cz; +-$PostRemove{'texlive-cz'} = \&do_remove_texlive_cz; +- +-# +-# texlive-fr +-# +-sub do_install_texlive_fr { +- my ($texdir) = @_; +- if (win32()) { +- if (!defined($texdir)) { +- tlwarn("do_install_texlive_fr: texdir not defined, returning\n"); +- return; +- } +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (fr) (PDF)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/french/texlive-fr/texlive-fr.pdf', +- '', +- '', +- ); +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (fr) (HTML)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/french/texlive-fr/texlive-fr.html', +- '', +- '', +- ); +- } +-} +-sub do_remove_texlive_fr { +- my ($texdir) = @_; +- if (win32()) { +- remove_menu_shortcut($mainmenu,'TeX Live Manual (fr) (HTML)'); +- remove_menu_shortcut($mainmenu,'TeX Live Manual (fr) (PDF)'); +- } +-} +-$PostInstall{'texlive-fr'} = \&do_install_texlive_fr; +-$PostRemove{'texlive-fr'} = \&do_remove_texlive_fr; +- +-# +-# texlive-de +-# +-sub do_install_texlive_de { +- my ($texdir) = @_; +- if (win32()) { +- if (!defined($texdir)) { +- tlwarn("do_install_texlive_de: texdir not defined, returning\n"); +- return; +- } +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (de) (PDF)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/german/texlive-de/texlive-de.pdf', +- '', +- '', +- ); +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (de) (HTML)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/german/texlive-de/texlive-de.html', +- '', +- '', +- ); +- } +-} +-sub do_remove_texlive_de { +- my ($texdir) = @_; +- if (win32()) { +- remove_menu_shortcut($mainmenu,'TeX Live Manual (de) (PDF)'); +- remove_menu_shortcut($mainmenu,'TeX Live Manual (de) (HTML)'); +- } +-} +-$PostInstall{'texlive-de'} = \&do_install_texlive_de; +-$PostRemove{'texlive-de'} = \&do_remove_texlive_de; +- +-# +-# texlive-pl +-# +-sub do_install_texlive_pl { +- my ($texdir) = @_; +- if (win32()) { +- if (!defined($texdir)) { +- tlwarn("do_install_texlive_pl: texdir not defined, returning\n"); +- return; +- } +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (pl) (PDF)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/polish/texlive-pl/texlive-pl.pdf', +- '', +- '', +- ); +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (pl) (HTML)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/polish/texlive-pl/texlive-pl.html', +- '', +- '', +- ); +- } +-} +-sub do_remove_texlive_pl { +- my ($texdir) = @_; +- if (win32()) { +- remove_menu_shortcut($mainmenu,'TeX Live Manual (pl) (PDF)'); +- remove_menu_shortcut($mainmenu,'TeX Live Manual (pl) (HTML)'); +- } +-} +-$PostInstall{'texlive-pl'} = \&do_install_texlive_pl; +-$PostRemove{'texlive-pl'} = \&do_remove_texlive_pl; +- +-# +-# texlive-ru +-# +-sub do_install_texlive_ru { +- my ($texdir) = @_; +- if (win32()) { +- if (!defined($texdir)) { +- tlwarn("do_install_texlive_ru: texdir not defined, returning\n"); +- return; +- } +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (ru) (PDF)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/russian/texlive-ru/texlive-ru.pdf', +- '', +- '', +- ); +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (ru) (HTML)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/russian/texlive-ru/texlive-ru.html', +- '', +- '', +- ); +- } +-} +-sub do_remove_texlive_ru { +- my ($texdir) = @_; +- if (win32()) { +- remove_menu_shortcut($mainmenu,'TeX Live Manual (ru) (HTML)'); +- remove_menu_shortcut($mainmenu,'TeX Live Manual (ru) (PDF)'); +- } +-} +-$PostInstall{'texlive-ru'} = \&do_install_texlive_ru; +-$PostRemove{'texlive-ru'} = \&do_remove_texlive_ru; +- +-# +-# texlive-zh-cn +-# +-sub do_install_texlive_zh_cn { +- my ($texdir) = @_; +- if (win32()) { +- if (!defined($texdir)) { +- tlwarn("do_install_texlive_zh_cn: texdir not defined, returning\n"); +- return; +- } +- add_menu_shortcut( +- $mainmenu, +- 'TeX Live Manual (zh-cn)', +- '', # default pdf icon +- $texdir.'/texmf-doc/doc/chinese/texlive-zh-cn/texlive-zh-cn.pdf', +- '', +- '', +- ); +- } +-} +-sub do_remove_texlive_zh_cn { +- my ($texdir) = @_; +- if (win32()) { +- remove_menu_shortcut($mainmenu,'TeX Live Manual (zh-cn)'); +- } +-} +-$PostInstall{'texlive-zh-cn'} = \&do_install_texlive_zh_cn; +-$PostRemove{'texlive-zh-cn'} = \&do_remove_texlive_zh_cn; +- +- +-# +-# FROM HERE ON ONLY DISABLED POST INSTALL AND REMOVE ACTIONS!!!!!!! +-# +- +-# disabled +-sub do_bin_xdvi { +- my ($TEXDIR, $TEXMFSYSVAR) = @_; +- if (!defined($TEXMFSYSVAR)) { +- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; +- chomp($TEXMFSYSVAR); +- } +- copy ("$TEXDIR/texmf/xdvi/XDvi", "$TEXMFSYSVAR/xdvi"); +-} +-# $PostInstall{"bin-xdvi"} = \&do_bin_xdvi; +- +- +-# disabled +-sub do_plain { +- my ($TEXDIR, $TEXMFSYSVAR) = @_; +- if (!defined($TEXMFSYSVAR)) { +- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; +- chomp($TEXMFSYSVAR); +- } +- # install some copies from texmf(-dist) into texmf-var +- copy ("$TEXDIR/texmf-dist/tex/generic/config/language.def", +- "$TEXMFSYSVAR/tex/generic/config"); +-} +-# $PostInstall{"plain"} = \&do_plain; +- +- +-# disabled +-sub do_bin_dvipsk { +- my ($TEXDIR, $TEXMFSYSVAR) = @_; +- if (!defined($TEXMFSYSVAR)) { +- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; +- chomp($TEXMFSYSVAR); +- } +- # those files must exist +- copy ("$TEXDIR/texmf/dvips/config/config.ps", +- "$TEXMFSYSVAR/dvips/config"); +-} +-# $PostInstall{"bin-dvipsk"} = \&do_bin_dvipsk; +- +-# disabled +-sub do_bin_dvipdfm { +- my ($TEXDIR, $TEXMFSYSVAR) = @_; +- if (!defined($TEXMFSYSVAR)) { +- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; +- chomp($TEXMFSYSVAR); +- } +- # fix up dvipdfm config file to contain the right # piping command +- mkdirhier("$TEXMFSYSVAR/dvipdfm/config"); +- open(DVIPDFMCONFIGDIST, "<$TEXDIR/texmf/dvipdfm/config/config") +- or die("Cannot open $TEXDIR/texmf/dvipdfm/config/config"); +- open(DVIPDFMCONFIGINST, ">$TEXMFSYSVAR/dvipdfm/config/config") +- or die("Cannot open $TEXMFSYSVAR/dvipdfm/config/config"); +- while () { +- if (m/^D /) { +- print DVIPDFMCONFIGINST 'D "epstopdf --outfile=%o --nocompress %i"', "\n"; +- } else { +- print DVIPDFMCONFIGINST; +- } +- } +- close(DVIPDFMCONFIGDIST); +- close(DVIPDFMCONFIGINST); +-} +-# $PostInstall{"bin-dvipdfm"} = \&do_bin_dvipdfm; +- +-# disabled +-sub do_bin_dvipdfmx { +- my ($TEXDIR, $TEXMFSYSVAR) = @_; +- if (!defined($TEXMFSYSVAR)) { +- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; +- chomp($TEXMFSYSVAR); +- } +- # dvipdfmx.cfg +- open(DVIPDFMCONFIGDIST, "<$TEXDIR/texmf/dvipdfmx/dvipdfmx.cfg") +- or die("Cannot open $TEXDIR/texmf/dvipdfmx/dvipdfmx.cfg"); +- open(DVIPDFMCONFIGINST, ">$TEXMFSYSVAR/dvipdfmx/dvipdfmx.cfg") +- or die("Cannot open $TEXMFSYSVAR/dvipdfmx/dvipdfmx.cfg"); +- while () { +- # current dvipdfmx.cfg already contains the right rungs incantation +- # so do just copy the file to texmf-var +- #if (m/^D /) { +- # print DVIPDFMCONFIGINST "%$_"; +- # print DVIPDFMCONFIGINST "\n%% GhostScript (TeX Live (Unix and Win32)):\n"; +- # print DVIPDFMCONFIGINST 'D "rungs -q -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile=%o %i -c quit"', "\n\n"; +- #} else { +- print DVIPDFMCONFIGINST; +- #} +- } +- close(DVIPDFMCONFIGDIST); +- close(DVIPDFMCONFIGINST); +-} +-# $PostInstall{"bin-dvipdfmx"} = \&do_bin_dvipdfmx; - --depend platform: --depend location:__MASTER__ --depend opt_paper:a4 --depend opt_create_formats:1 --depend opt_create_symlinks:0 --depend opt_sys_bin:/usr/local/bin --depend opt_sys_info:/usr/local/info --depend opt_sys_man:/usr/local/man --depend opt_install_docfiles:1 --depend opt_install_srcfiles:1 -Index: tlpkg/tlpsrc/texlive-pl.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/texlive-pl.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/texlive-pl.tlpsrc (working copy) -@@ -1,2 +1,4 @@ - name texlive-pl - category Documentation -+postaction shortcut type=menu name="TeX Live Manual (pl) (PDF)" cmd=TEXDIR/texmf-doc/doc/polish/texlive-pl/texlive-pl.pdf -+postaction shortcut type=menu name="TeX Live Manual (pl) (HTML)" cmd=TEXDIR/texmf-doc/doc/polish/texlive-pl/texlive-pl.html -Index: tlpkg/tlpsrc/bin-amstex.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-amstex.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-amstex.tlpsrc (working copy) -@@ -1,7 +1,7 @@ - name bin-amstex - category TLCore - depend bin-tex --execute BuildFormat amstex --runpattern f texmf/fmtutil/format.amstex.cnf -+execute AddFormat name=amstex engine=pdftex options="-translate-file=cp227.tcx *amstex.ini" -+execute AddFormat name=pdfamstex mode=disabled engine=pdftex options="-translate-file=cp227.tcx *pdfamstex.ini" - docpattern f texmf/doc/man/man1/amstex.* - binpattern f bin/${ARCH}/amstex -Index: tlpkg/tlpsrc/bin-aleph.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-aleph.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-aleph.tlpsrc (working copy) -@@ -1,7 +1,7 @@ - name bin-aleph - category TLCore - depend bin-omega --execute BuildFormat aleph --runpattern f texmf/fmtutil/format.aleph.cnf -+execute AddFormat name=aleph engine=aleph options=*aleph.ini -+execute AddFormat name=lamed engine=aleph patterns=language.dat options=*lambda.ini - binpattern f bin/${ARCH}/aleph - binpattern f bin/${ARCH}/lamed -Index: tlpkg/tlpsrc/00texlive.installation.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/00texlive.installation.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/00texlive.installation.tlpsrc (working copy) -@@ -1,4 +1,4 @@ --name 00texlive-installation.config -+name 00texlive.installation - category TLCore - longdesc This package serves two purposes: - longdesc -@@ -22,7 +22,7 @@ - depend location:__MASTER__ - depend opt_paper:a4 - depend opt_create_formats:1 --depend opt_create_symlinks:0 -+depend opt_system_integration:0 - depend opt_sys_bin:/usr/local/bin - depend opt_sys_info:/usr/local/info - depend opt_sys_man:/usr/local/man - -Property changes on: tlpkg/tlpsrc/00texlive.installation.tlpsrc -___________________________________________________________________ -Added: svn:mergeinfo - -Index: tlpkg/tlpsrc/00texlive.core.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/00texlive.core.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/00texlive.core.tlpsrc (working copy) -@@ -6,7 +6,7 @@ - longdesc and containers are not built; they exist only in the - longdesc full DVD image. - longdesc For information on the 00texlive prefix see --longdesc 00texlive-installation.config(.tlpsrc) -+longdesc 00texlive.installation(.tlpsrc) - runpattern d tlpkg/archive - runpattern d tlpkg/doc - runpattern d tlpkg/libexec -Index: tlpkg/tlpsrc/bin-metafont.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/bin-metafont.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/bin-metafont.tlpsrc (working copy) -@@ -1,8 +1,7 @@ - name bin-metafont - category TLCore - depend bin-kpathsea --execute BuildFormat metafont --runpattern f texmf/fmtutil/format.metafont.cnf -+execute AddFormat name=mf engine=mf-nowin options="-translate-file=cp227.tcx mf.ini" - docpattern f texmf/doc/man/man1/mf-nowin.* - docpattern f texmf/doc/man/man1/mf.* - binpattern f bin/${ARCH}/mf -Index: tlpkg/tlpsrc/texlive.infra.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/texlive.infra.tlpsrc (revision 12171) -+++ tlpkg/tlpsrc/texlive.infra.tlpsrc (working copy) -@@ -36,3 +36,17 @@ - binpattern f/!i386-solaris,i386-linux,mips-irix,sparc-linux,alpha-linux,\ - powerpc-linux,i386-freebsd,x86_64-linux \ - tlpkg/installer/wget/wget.${ARCH} -+# former tlmgr stuff -+runpattern f texmf/fmtutil/fmtutil-hdr.cnf -+runpattern d texmf/scripts/texlive/tlmgrgui -+runpattern f texmf/scripts/texlive/tlmgr.pl -+runpattern f texmf/scripts/texlive/uninstall-win32.pl -+runpattern f texmf/web2c/updmap-hdr.cfg -+docpattern f texmf/doc/man/man1/tlmgr.* -+binpattern f bin/${ARCH}/tlmgr -+binpattern f bin/win32/tl-w32-wrapper.texlua -+binpattern f/win32 texmf/scripts/texlive/updater-w32.bat -+# post actions -+postaction shortcut type=menu name="TeX Live Toplevel Readme Index" cmd=TEXDIR/index.html -+postaction shortcut type=menu name="TeX Live Manager" cmd=TEXDIR/bin/win32/tlmgr.bat args=gui hide=1 -+postaction shortcut type=menu name="Release notes" cmd="http://tug.org/texlive/windows.html" -Index: tlpkg/bin/tl-update-tlcritical -=================================================================== ---- tlpkg/bin/tl-update-tlcritical (revision 12171) -+++ tlpkg/bin/tl-update-tlcritical (working copy) -@@ -34,7 +34,7 @@ - # update normal containers. - echo "$0: running tl-update-containers (for critical packages)..." - tl-update-containers -location $tlcrit -all \ -- 00texlive-installation.config 00texlive.config bin-texlive texlive.infra -+ 00texlive.installation 00texlive.config texlive.infra +- +-# disabled +-sub do_bin_kpathsea { +- my ($TEXDIR, $TEXMFSYSVAR) = @_; +- if (!defined($TEXMFSYSVAR)) { +- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; +- chomp($TEXMFSYSVAR); +- } +- copy ("$TEXDIR/texmf/web2c/mktex.cnf", +- "$TEXMFSYSVAR/web2c"); +-} +-# $PostInstall{"bin-kpathsea"} = \&do_bin_kpathsea; +- +-# disabled +-sub do_bin_pdftex { +- my ($TEXDIR, $TEXMFSYSVAR) = @_; +- if (!defined($TEXMFSYSVAR)) { +- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; +- chomp($TEXMFSYSVAR); +- } +- # the old installer copied from CDDIR, but shouldn't this be installed +- # in ANY case since it is in bin-pdftex??? +- copy ("$TEXDIR/texmf/tex/generic/config/pdftexconfig.tex", +- "$TEXMFSYSVAR/tex/generic/config"); +-} +-# $PostInstall{"bin-pdftex"} = \&do_bin_pdftex; +- +-# disabled +-sub do_context { +- my ($TEXDIR, $TEXMFSYSVAR) = @_; +- if (!defined($TEXMFSYSVAR)) { +- $TEXMFSYSVAR = `kpsewhich -var-value=TEXMFSYSVAR`; +- chomp($TEXMFSYSVAR); +- } +- # old installer did this, should we do this, TOO???? +- copy ("$TEXDIR/texmf-dist/tex/context/config/cont-usr.tex", +- "$TEXMFSYSVAR/tex/context/config"); +-} +-# $PostInstall{"context"} = \&do_context; +- +- + 1; - # update Unix disaster recovery. - echo "$0: running tl-makeself-from-tlnet..." -Index: tlpkg/bin/tl-update-containers + +Index: tlpkg/TeXLive/TLPSRC.pm =================================================================== ---- tlpkg/bin/tl-update-containers (revision 12171) -+++ tlpkg/bin/tl-update-containers (working copy) -@@ -24,7 +24,7 @@ - use File::Path; - - # packages matching these re's will not be updated without --all. --my @critical_pkg_list = qw/bin-texlive texlive\.infra/; -+my @critical_pkg_list = qw/texlive\.infra/; +--- tlpkg/TeXLive/TLPSRC.pm (revision 12198) ++++ tlpkg/TeXLive/TLPSRC.pm (working copy) +@@ -30,6 +30,7 @@ + srcpatterns => $params{'srcpatterns'}, + docpatterns => $params{'docpatterns'}, + binpatterns => $params{'binpatterns'}, ++ postactions => $params{'postactions'}, + executes => defined($params{'executes'}) ? $params{'executes'} : [], + depends => defined($params{'depends'}) ? $params{'depends'} : [], + }; +@@ -67,6 +68,7 @@ + my $catalogue = ""; + my (@executes, @depends); + my (@runpatterns, @docpatterns, @binpatterns, @srcpatterns); ++ my (@postactions); + my $started = 0; + my $finished = 0; + my $savedline = ""; +@@ -132,6 +134,9 @@ + } elsif ($line =~ /^depend\s+(.*)\s*$/) { + push @depends, $1 if ($1 ne ""); + next; ++ } elsif ($line =~ /^postaction\s+(.*)\s*$/) { ++ push @postactions, $1 if ($1 ne ""); ++ next; + } else { + tlwarn("$srcfile:$.: unknown tlpsrc directive, please fix: $line\n"); + } +@@ -149,6 +154,7 @@ + $self->docpatterns(@docpatterns) if @docpatterns; + $self->executes(@executes) if @executes; + $self->depends(@depends) if @depends; ++ $self->postactions(@postactions) if @postactions; + } - our ($mydir, $vc_id); - my $opt_all = 0; -@@ -176,12 +176,12 @@ + +@@ -175,6 +181,11 @@ + print $fd "execute $_\n"; } } - -- # The two packages 00texlive.config and 00texlive-installation.config -+ # The two packages 00texlive.config and 00texlive.installation - # are essential and have to be included in each and every case. - # So add them ... - my $tlpconfig = $tlpdb->get_package("00texlive.config"); - $nettlpdb->add_tlpobj($tlpconfig); -- my $tlpinstconfig = $tlpdb->get_package("00texlive-installation.config"); -+ my $tlpinstconfig = $tlpdb->get_package("00texlive.installation"); - $nettlpdb->add_tlpobj($tlpinstconfig); - - # set up the programs. -@@ -392,7 +392,7 @@ - =item B<-all|-a> - - Include packages deemed critical in the update, currently --C and C. (That is, C itself needs -+C. (That is, C itself needs - testing before updating, so we don't do it by default.) ++ if (defined($self->{'postactions'})) { ++ foreach (@{$self->{'postactions'}}) { ++ print $fd "postaction $_\n"; ++ } ++ } + if (defined($self->{'srcpatterns'}) && (@{$self->{'srcpatterns'}})) { + foreach (sort @{$self->{'srcpatterns'}}) { + print $fd "srcpattern $_\n"; +@@ -213,6 +224,7 @@ + $tlp->longdesc($self->{'longdesc'}) if (defined($self->{'longdesc'})); + $tlp->catalogue($self->{'catalogue'}) if (defined($self->{'catalogue'})); + $tlp->executes(@{$self->{'executes'}}) if (defined($self->{'executes'})); ++ $tlp->postactions(@{$self->{'postactions'}}) if (defined($self->{'postactions'})); + $tlp->depends(@{$self->{'depends'}}) if (defined($self->{'depends'})); + $tlp->revision(0); + my $filemax; +@@ -540,6 +552,11 @@ + if (@_) { @{ $self->{'executes'} } = @_ } + return @{ $self->{'executes'} }; + } ++sub postactions { ++ my $self = shift; ++ if (@_) { @{ $self->{'postactions'} } = @_ } ++ return @{ $self->{'postactions'} }; ++} - =item B<-no-setup> -Index: tlpkg/bin/tl-makeself-from-tlnet -=================================================================== ---- tlpkg/bin/tl-makeself-from-tlnet (revision 12171) -+++ tlpkg/bin/tl-makeself-from-tlnet (working copy) -@@ -4,7 +4,7 @@ - # This file is licensed under the GNU General Public License version 2 - # or any later version. - # --# Creates a .run file for updating the texlive.infra and bin-texlive -+# Creates a .run file for updating the texlive.infra - # packages on Unix, similar to the .exe we create for Windows. Both are - # created in the nightly cron from tl-update-tlcritical. + format multilineformat = + longdesc ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~ +@@ -580,7 +597,7 @@ -@@ -28,9 +28,8 @@ - mkdir master - cd master + where I can be C, C, C, C, + C, C, C, C, C, +-C, or C. ++C, C, or C. --# unpack texlive.infra and bin-texlive archives for all platforms, --# except w32. --for pkg in texlive.infra bin-texlive; do -+# unpack texlive.infra archives for all platforms, except w32. -+for pkg in texlive.infra; do - for i in $ARCHIVE/$pkg*.tar.lzma ; do - case "$i" in - *win32*) ;; -@@ -69,13 +68,12 @@ - mkdir -p $t_instdir/wget + Continuation lines are supported via a trailing backslash. That is, if + the C<.tlpsrc> file contains two physical lines like this: +@@ -631,14 +648,14 @@ - # start the list of tlpobjs we will install -- tlpobjs="$t_objdir/bin-texlive.tlpobj $t_objdir/texlive.infra.tlpobj" -+ tlpobjs="$t_objdir/texlive.infra.tlpobj" - for a in $ROOT/bin/*; do - test -d "$a" || continue # skip any cruft files - b=`basename $a` # just the architecture name - - # add the tlpobjs for this platform t the list. -- tlpobjs="$tlpobjs $t_objdir/bin-texlive.$b.tlpobj" - tlpobjs="$tlpobjs $t_objdir/texlive.infra.$b.tlpobj" + This package contains configuration options for the TeX Live archive. + If container_split_{doc,src}_files occurs in the depend lines the +-{doc,src} files are split into separate containers (.tar.lzma) ++{doc,src} files are split into separate containers (.tar.xz) + during container build time. Note that this has NO effect on the + appearance within the texlive.tlpdb. It is only on container level. + The container_format/XXXXX specifies the format, currently allowed +-is only "lzma", which generates .tar.lzma files. zip can be supported. ++is only "xz", which generates .tar.xz files. zip can be supported. + release/NNNN specifies the release number as used in the installer. - # install the bin dir for this platform. -Index: tlpkg/bin/tl-update-nsis -=================================================================== ---- tlpkg/bin/tl-update-nsis (revision 12171) -+++ tlpkg/bin/tl-update-nsis (working copy) -@@ -1,6 +1,6 @@ - #!/usr/bin/env perl - # $Id$ --# Copyright 2008 Norbert Preining -+# Copyright 2008, 2009 Norbert Preining - # This file is licensed under the GNU General Public License version 2 - # or any later version. - # -@@ -40,13 +40,9 @@ - chomp (my $Master = `cd $mydir/../.. && pwd`); - my $tlpdb = TeXLive::TLPDB->new ("root" => $Master); - die("Cannot find tlpdb in $Master\n") unless defined($tlpdb); -- my $bintexlive = $tlpdb->get_package("bin-texlive"); -- my $bintexlivew32 = $tlpdb->get_package("bin-texlive.win32"); - my $texliveinfra = $tlpdb->get_package("texlive.infra"); - my $texliveinfraw32 = $tlpdb->get_package("texlive.infra.win32"); - my @allfiles = (); -- push @allfiles, $bintexlive->all_files; -- push @allfiles, $bintexlivew32->all_files if defined $bintexlivew32; - push @allfiles, $texliveinfra->all_files; - push @allfiles, $texliveinfraw32->all_files if defined $texliveinfraw32; - -@@ -58,7 +54,7 @@ - $removetlpobjdir = 1; - } - my $rev = 0; # we want the highest rev all these packages. -- for my $p ($bintexlive, $bintexlivew32, $texliveinfra, $texliveinfraw32) { -+ for my $p ($texliveinfra, $texliveinfraw32) { - if (defined $p) { - if ($p->revision > $rev) { - $rev = $p->revision; -@@ -95,7 +91,7 @@ +-=item B<00texlive-installation.config> ++=item B<00texlive.installation> - Name "TeX Live Manager Update ${REV}" - OutFile "update-tlmgr-${REV}.exe" --InstallDir "$PROGRAMFILES\texlive\2008" -+InstallDir "$PROGRAMFILES\texlive\$TeXLive::TLConfig::ReleaseYear" + This package serves a double purpose: - RequestExecutionLevel "user" +@@ -737,12 +754,49 @@ + C, C (both integers), and C (a + comma-separated list of alias names for that hyphenation). -@@ -135,7 +131,7 @@ - } - } - print " ExecWait \'\"\$INSTDIR\\bin\\win32\\tlmgr.bat\" _include_tlpobj"; -- for my $p ($bintexlive, $bintexlivew32, $texliveinfra, $texliveinfraw32) { -+ for my $p ($texliveinfra, $texliveinfraw32) { - if (defined $p) { - print " \"\$INSTDIR\\tlpkg\\tlpobj\\", $p->name, ".tlpobj\""; - } -Index: install-tl -=================================================================== ---- install-tl (revision 12171) -+++ install-tl (working copy) -@@ -82,7 +82,6 @@ - &add_menu_shortcut - &remove_desktop_shortcut - &remove_menu_shortcut -- &init_unshortbat - &create_uninstaller - )); - } -@@ -121,7 +120,7 @@ - # - # The following values are taken from the remote tlpdb using the - # $tlpdb->option_XXXXX --# settings (i.e., taken from tlpkg/tlpsrc/00texlive-installation.tlpsrc -+# settings (i.e., taken from tlpkg/tlpsrc/00texlive.installation.tlpsrc - # - # 'option_symlinks' => 0, - # 'sys_bin' => '/usr/local/bin', -@@ -380,6 +379,14 @@ - $vars{'doc_splitting_supported'} = $tlpdb->config_doc_container; - } - $texlive_release = $tlpdb->config_release; -+# if the release from the remote TLPDB does not agree with the -+# TLConfig::ReleaseYear in the first 4 places break out here. -+# Why only the first four places: some optional network distributions -+# might use -+# release/2009-foobar -+if ($texlive_release !~ m/^$TeXLive::TLConfig::ReleaseYear/) { -+ die "The release version of the installation source and\nthe installation media do not agree:\nsource: $texlive_release\nmedia: $TeXLive::TLConfig::ReleaseYear\nPlease report to tex-live\@tug.org"; -+} - set_platforms_supported(); - set_texlive_default_dirs(); - initialize_collections(); -@@ -491,7 +498,229 @@ - save_options_into_tlpdb(); - do_install_packages(); - } -+ # now we save every scheme that is fully covered by the stuff we have -+ # installed to the $localtlpdb -+ foreach my $s ($tlpdb->schemes) { -+ my $stlp = $tlpdb->get_package($s); -+ die ("That cannot happen, $s not defined in tlpdb") unless defined($stlp); -+ my $incit = 1; -+ foreach my $d ($stlp->depends) { -+ if (!defined($localtlpdb->get_package($d))) { -+ $incit = 0; -+ last; -+ } -+ } -+ if ($incit) { -+ $localtlpdb->add_tlpobj($stlp); -+ } -+ } -+ $localtlpdb->save unless $vars{'from_dvd'}; -+ do_postinst_stuff(); -+} -+ -+# do_postinst_stuff has to fix up the texmf tree and install some missing -+# files. The things to do are taken from the install-live.sh installer -+# of former times, and should be critically checked. -+sub do_postinst_stuff { -+ my $TEXDIR="$vars{'TEXDIR'}"; -+ my $TEXDIRW="$vars{'TEXDIRW'}"; -+ my $TEXMFSYSVAR="$vars{'TEXMFSYSVAR'}"; -+ my $TEXMFSYSCONFIG="$vars{'TEXMFSYSCONFIG'}"; -+ my $TEXMFLOCAL="$vars{'TEXMFLOCAL'}"; -+ my $tmv; -+ -+ do_texmf_cnf() unless ($opt_portable); -+ -+ -+ # final program execution -+ # we have to do several things: -+ # - clean the environment from spurious TEXMF related variables -+ # - add the bin dir to the PATH -+ # - select perl interpreter and set the correct perllib -+ # - run the programs -+ -+ # Step 1: Clean the environment -+ my @TMFVARS0=qw(VARTEXFONTS -+ TEXMF SYSTEXMF VARTEXFONTS -+ TEXMFDBS WEB2C TEXINPUTS TEXFORMATS MFBASES MPMEMS TEXPOOL MFPOOL MPPOOL -+ PSHEADERS TEXFONTMAPS TEXPSHEADERS TEXCONFIG TEXMFCNF); -+ my @TMFVARS1=qw(TEXMFMAIN TEXMFDIST TEXMFLOCAL TEXMFSYSVAR TEXMFSYSCONFIG -+ TEXMFHOME TEXMFVAR TEXMFCONFIG); -+ -+ if (defined($ENV{'TEXMFCNF'}) and !$vars{'from_dvd'} and !$opt_portable) { -+ print "WARNING: environment variable TEXMFCNF is set. -+You should know what you are doing. -+We will remove that for the post install actions, but all further -+operations might be disturbed.\n\n"; -+ } -+ foreach $tmv (@TMFVARS0) { -+ delete $ENV{$tmv} if (defined($ENV{$tmv})); -+ } -+ if (!$opt_portable) { -+ foreach $tmv (@TMFVARS1) { -+ delete $ENV{$tmv} if (defined($ENV{$tmv})); -+ } -+ } -+ $ENV{'TEXMFSYSVAR'} = $vars{'TEXMFSYSVAR'} if $vars{'from_dvd'}; -+ -+ # Step 2: Setup the PATH, switch to the new Perl -+ -+ my $pathsep=(win32)? ';' : ':'; -+ my $plat_bindir="$TEXDIR/bin/$vars{'this_platform'}"; -+ my $perl_bindir="$TEXDIR/tlpkg/tlperl/bin"; -+ my $perl_libdir="$TEXDIR/tlpkg/tlperl/lib"; -+ -+## This won't do any good; -+## have to remove other tex directories in calling batchfile -+# if (win32) { -+# debug("Removing other TeXs from path\n"); -+# my @newpt = (); -+# foreach my $d (split (';', $ENV{'PATH'})) { -+# push @newpt, $d unless TeXLive::TLWinGoo::is_a_texdir($d); -+# } -+# $ENV{'PATH'} = join($pathsep, @newpt); -+# debug("Path after removals(s):\n $ENV{'PATH'}\n"); -+# } -+ -+ debug("Prepending $plat_bindir to PATH\n"); -+ -+ $ENV{'PATH'}="$plat_bindir" . "$pathsep" . "$ENV{'PATH'}"; -+ -+ if (win32) { -+ debug("Prepending $perl_bindir to PATH\n"); -+ $ENV{'PATH'}="$perl_bindir" . "$pathsep" . "$ENV{'PATH'}"; -+ $ENV{'PATH'} =~ s!/!\\!g; -+ } -+ -+ debug("\nNew PATH is now:\n"); -+ foreach my $dir (split $pathsep, $ENV{'PATH'}) { -+ debug(" $dir\n"); -+ } -+ debug("\n"); -+ -+ if (win32) { -+ $ENV{'PERL5LIB'}="$perl_libdir"; -+ } -+ -+ # -+ # post install actions -+ # -+ -+ # in case we are running from DVD we use the tlpdb from the DVD, otherwise -+ # the one we have locally created, for all the further actions -+ my $usedtlpdb = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; -+ -+ - if (win32()) { -+ debug "Actual environment:\n".`set`."\n\n"; -+ debug 'Effective TEXMFCNF: '.`kpsewhich -expand-path=\$TEXMFCNF`."\n"; -+ } -+ -+ # TODO: can the following two clauses be merged? -+ if (win32()) { -+ create_uninstaller($vars{'TEXDIR'}, $vars{'TEXDIRW'}, -+ $vars{'TEXMFSYSVAR'}, $vars{'TEXMFSYSCONFIG'}); -+ } -+ # (re-)initialize batchfile for uninstalling shortcuts -+ if (win32() and !$opt_portable) { -+ mkdirhier("$TEXDIRW/tlpkg/installer") if $vars{'from_dvd'}; -+ } +-=item C I ++=item C engine=I [I...]> + +-build the format I, as specified in the C file. ++activates the format with name I based on the engine I. The ++additional variables I are: ++C which can only be equal to C in which case the format ++will only be mentioned but disabled (prefixed with C<#!>; ++C which gives the patterns file, if not present C<-> is used; ++C which gives the additional options for the C file. + + =back + ++=item + -+ # Step 4: run the programs ++gives a free from entry of post install and removal actions to be ++executed. The difference to the C statement is that ++C is concerned with system integration, i.e., adjusting ++things outside the installation directory, while C touches ++only things within the installation. + -+ if (!$opt_portable and !$vars{'from_dvd'}) { -+ info("running mktexlsr $TEXDIR/texmf-dist $TEXDIR/texmf\n"); -+ system('mktexlsr', "$TEXDIR/texmf-dist", "$TEXDIR/texmf"); -+ } ++Currently the following Cs are understood: + -+ # we have to generate the various config file. That could be done with -+ # texconfig generate * but Win32 does not have texconfig. But we have -+ # $localtlpdb and this is simple code, so do it directly, i.e., duplicate -+ # the code from the various generate-*.pl scripts ++=over 4 + -+ info("writing fmtutil.cnf data to $TEXMFSYSVAR/web2c/fmtutil.cnf\n"); -+ TeXLive::TLUtils::create_fmtutil($usedtlpdb, -+ "$TEXMFSYSVAR/web2c/fmtutil.cnf", -+ "$TEXMFLOCAL/web2c/fmtutil-local.cnf"); ++=item C type=menu|desktop icon=I cmd=I args=I hide=0|1> + -+ mkdirhier "$vars{'TEXMFSYSCONFIG'}/web2c"; -+ info("writing updmap.cfg to $TEXMFSYSCONFIG/web2c/updmap.cfg\n"); -+ TeXLive::TLUtils::create_updmap ($usedtlpdb, -+ "$TEXMFSYSCONFIG/web2c/updmap.cfg", -+ "$TEXMFLOCAL/web2c/updmap-local.cfg"); ++On W32 creates a shortcut either in the main TeX Live menu or on the ++desktop. Please see the documentation of TeXLive::TLWinGoo for details ++on the parameters. + -+ info("writing language.dat data to $TEXMFSYSVAR/tex/generic/config/language.dat\n"); -+ TeXLive::TLUtils::create_language_dat($usedtlpdb, -+ "$TEXMFSYSVAR/tex/generic/config/language.dat", -+ "$TEXMFLOCAL/tex/generic/config/language-local.dat"); ++=item C cmd=I> + -+ info("writing language.def data to $TEXMFSYSVAR/tex/generic/config/language.def\n"); -+ TeXLive::TLUtils::create_language_def($usedtlpdb, -+ "$TEXMFSYSVAR/tex/generic/config/language.def", -+ "$TEXMFLOCAL/tex/generic/config/language-local.def"); ++On W32 associates the file type I with the command I. + -+ info("running mktexlsr $TEXMFSYSVAR\n"); -+ system('mktexlsr', "$TEXMFSYSVAR"); ++=item C filetype=I> + -+ info("running updmap-sys... "); -+ # system('updmap-sys', '--nohash'); -+ log(`updmap-sys --nohash 2>&1`); -+ info("done\n"); ++On W32 declares files with the extenstion I<.ext> of file type I. + -+ info("re-running mktexlsr $TEXMFSYSVAR\n"); -+ system('mktexlsr', "$TEXMFSYSVAR"); ++=item C> + -+ # now work through the options if specified at all ++TODO TODO I don't know how we want to do that + -+ # letter instead of a4 -+ if ($vars{'option_letter'}) { -+ info("Setting default paper size to letter\n"); -+ system("tlmgr", "paper", "letter"); -+ } ++=back + -+ # all formats option -+ if ($vars{'option_fmt'}) { -+ info("pre-generating all format files (fmtutil-sys --all), be patient..."); -+ log(`fmtutil-sys --all 2>&1`); -+ info("done\n"); + =item C<(src|run|doc|bin)pattern> I + + adds a pattern (next section) to the respective list of patterns. +Index: tlpkg/TeXLive/TLPOBJ.pm +=================================================================== +--- tlpkg/TeXLive/TLPOBJ.pm (revision 12198) ++++ tlpkg/TeXLive/TLPOBJ.pm (working copy) +@@ -29,6 +29,7 @@ + docfiles => defined($params{'docfiles'}) ? $params{'docfiles'} : [], + docsize => $params{'docsize'}, + executes => defined($params{'executes'}) ? $params{'executes'} : [], ++ postactions => defined($params{'postactions'}) ? $params{'postactions'} : [], + # note that binfiles is a HASH with keys of $arch! + binfiles => defined($params{'binfiles'}) ? $params{'binfiles'} : {}, + binsize => defined($params{'binsize'}) ? $params{'binsize'} : {}, +@@ -92,6 +93,7 @@ + ($lastcmd eq "docfiles") || + ($lastcmd eq "srcfiles") || + ($lastcmd eq "executes") || ++ ($lastcmd eq "postaction") || + ($lastcmd eq "depend") ) { + $line =~ s/^ /${lastcmd}continued /; + } else { +@@ -216,6 +218,10 @@ + push @{$self->{'executes'}}, "$2" unless "$2" eq ""; + $lastcmd = "execute"; + next; ++ } elsif ($line =~ /^postaction(continued)?\s*(.*)\s*/o) { ++ push @{$self->{'postactions'}}, "$2" unless "$2" eq ""; ++ $lastcmd = "postaction"; ++ next; + } elsif ($line =~ /^depend(continued)?\s*(.*)\s*/o) { + push @{$self->{'depends'}}, "$2" unless "$2" eq ""; + $lastcmd = "depend"; +@@ -316,6 +322,11 @@ + print $fd "execute $_\n"; + } + } ++ if (defined($self->{'postactions'})) { ++ foreach (@{$self->{'postactions'}}) { ++ print $fd "postaction $_\n"; ++ } ++ } + if (defined($self->{'containersize'})) { + print $fd "containersize $self->{'containersize'}\n"; + } +@@ -388,6 +399,11 @@ + print $fd "execute $_\n"; + } + } ++ if (defined($self->{'postactions'})) { ++ foreach (@{$self->{'postactions'}}) { ++ print $fd "postaction $_\n"; ++ } + } + if (defined($self->{'docfiles'}) && (@{$self->{'docfiles'}})) { + print $fd "docfiles\n"; + foreach (sort @{$self->{'docfiles'}}) { +@@ -419,8 +435,8 @@ + + sub make_container { + my ($self,$type,$instroot,$destdir,$containername,$relative) = @_; +- if (($type ne "lzma") && ($type ne "tar")) { +- die "$0: TLPOBJ supports tar and lzma containers, not $type"; ++ if (($type ne "xz") && ($type ne "tar")) { ++ die "$0: TLPOBJ supports tar and xz containers, not $type"; + } + if (!defined($containername)) { + $containername = $self->name; +@@ -484,21 +500,21 @@ + if ($type eq "tar") { + $containername = $tarname; + } else { +- $containername = "$tarname.lzma"; ++ $containername = "$tarname.xz"; + } + + # start the fun + my $tar = $::progs{'tar'}; +- my $lzma; ++ my $xz; + if (!defined($tar)) { + tlwarn("$0: programs not set up, trying \"tar\".\n"); + $tar = "tar"; + } +- if ($type eq "lzma") { +- $lzma = $::progs{'lzma'}; +- if (!defined($lzma)) { +- tlwarn("$0: programs not set up, trying \"lzma\".\n"); +- $lzma = "lzma"; ++ if ($type eq "xz") { ++ $xz = $::progs{'xz'}; ++ if (!defined($xz)) { ++ tlwarn("$0: programs not set up, trying \"xz\".\n"); ++ $xz = "xz"; + } + } + +@@ -564,11 +580,11 @@ + xsystem(@cmdline); + + # compress it. +- if ($type eq "lzma") { ++ if ($type eq "xz") { + if (-r "$destdir/$tarname") { +- system($lzma, "--force", "-z", "$destdir/$tarname"); ++ system($xz, "--force", "-z", "$destdir/$tarname"); + } else { +- tlwarn("$0: Couldn't find $destdir/$tarname to run $lzma\n"); ++ tlwarn("$0: Couldn't find $destdir/$tarname to run $xz\n"); + return (0, 0, ""); + } + } +@@ -837,7 +853,7 @@ + } else { + push @maps, "disable $3"; + } +- } elsif ($e =~ m/^BuildFormat\s+([^\s]+)\s*$/) { ++ } elsif ($e =~ m/^AddFormat\s+([^\s]+)\s*$/) { + push @formats, $1; + } elsif ($e =~ m/^AddHyphen\s+(.*)\s*$/) { + push @dats, $1; +@@ -1026,6 +1042,11 @@ + if (@_) { $self->{'executes'} = [ @_ ] } + return @{ $self->{'executes'} }; + } ++sub postactions { ++ my $self = shift; ++ if (@_) { $self->{'postactions'} = [ @_ ] } ++ return @{ $self->{'postactions'} }; ++} + sub containerdir { + my @self = shift; + if (@_) { $_containerdir = $_[0] } +@@ -1187,7 +1208,7 @@ + architectures as keys, similar to the C functions (see above). + + Futhermore, if the tlpobj is contained ina tlpdb which describes a media +-where the files are distributed in packed format (usually as .tar.lzma), ++where the files are distributed in packed format (usually as .tar.xz), + there are 6 more possible keys: + + $tlpobj->containersize +@@ -1249,11 +1270,11 @@ + in C<$destdir> (if not defined then C<< TLPOBJ->containerdir >> is used). + + The C<$type> variable specifies the type of container to be used. +-Currently only C or C are allowed, and are generating +-zip files and tar.lzma files, respectively. ++Currently only C or C are allowed, and are generating ++zip files and tar.xz files, respectively. + + The file name of the created container file is C<$containername.extension>, +-where extension is either C<.zip> or C<.tar.lzma>, depending on the ++where extension is either C<.zip> or C<.tar.xz>, depending on the + setting of C<$type>. If no C<$containername> is specified the package name + is used. + +Index: tlpkg/TeXLive/TLMedia.pm +=================================================================== +--- tlpkg/TeXLive/TLMedia.pm (revision 12198) ++++ tlpkg/TeXLive/TLMedia.pm (working copy) +@@ -146,10 +146,10 @@ + } elsif ($media eq 'CD') { + if (-r "$location/$Archive/$pkg.zip") { + $container = "$location/$Archive/$pkg.zip"; +- } elsif (-r "$location/$Archive/$pkg.tar.lzma") { +- $container = "$location/$Archive/$pkg.tar.lzma"; ++ } elsif (-r "$location/$Archive/$pkg.tar.xz") { ++ $container = "$location/$Archive/$pkg.tar.xz"; + } else { +- tlwarn("Cannot find a package $pkg (.zip or .lzma) in $location/$Archive\n"); ++ tlwarn("Cannot find a package $pkg (.zip or .xz) in $location/$Archive\n"); + next; + } + } elsif (&media eq 'NET') { +@@ -164,20 +164,20 @@ + # - src/doc files should be installed + # (- the package is not already a split one (like .i386-linux)) + # the above test has been removed because it would mean that +- # texlive.infra.doc.tar.lzma ++ # texlive.infra.doc.tar.xz + # will never be installed, and we do already check that there + # are at all src/doc files, which in split packages of the form + # foo.ARCH are not present. And if they are present, than that is fine, +- # too (bin-foobar.win32.doc.tar.lzma) ++ # too (bin-foobar.win32.doc.tar.xz) + # - there are actually src/doc files present + if ($container_src_split && $opt_src && $tlpobj->srcfiles) { + my $srccontainer = $container; +- $srccontainer =~ s/(\.tar\.lzma|\.zip)$/.source$1/; ++ $srccontainer =~ s/(\.tar\.xz|\.zip)$/.source$1/; + $self->_install_package($srccontainer,\@installfiles,$totlpdb) || return(0); + } + if ($container_doc_split && $real_opt_doc && $tlpobj->docfiles) { + my $doccontainer = $container; +- $doccontainer =~ s/(\.tar\.lzma|\.zip)$/.doc$1/; ++ $doccontainer =~ s/(\.tar\.xz|\.zip)$/.doc$1/; + $self->_install_package($doccontainer,\@installfiles,$totlpdb) || return(0); + } + } +@@ -190,7 +190,7 @@ + $tlpobj->clear_docfiles; + } + # we have to write out the tlpobj file since it is contained in the +- # archives (.tar.lzma) but at DVD install time we don't have them ++ # archives (.tar.xz) but at DVD install time we don't have them + my $tlpod = $totlpdb->root . "/tlpkg/tlpobj"; + mkdirhier( $tlpod ); + open(TMP,">$tlpod/".$tlpobj->name.".tlpobj") or +@@ -208,6 +208,9 @@ + info("running post install action for $pkg\n"); + &{$PostInstall{$pkg}}($totlpdb->root); + } ++ # ++ # Run the post installation code in the postaction tlpsrc entries ++ &TeXLive::TLUtils::do_postaction_code("install", $tlpobj); + } + return \%ret; + } +@@ -228,8 +231,8 @@ + + # we assume that $::progs has been set up! + my $wget = $::progs{'wget'}; +- my $lzmadec = $::progs{'lzmadec'}; +- if (!defined($wget) || !defined($lzmadec)) { ++ my $xzdec = $::progs{'xzdec'}; ++ if (!defined($wget) || !defined($xzdec)) { + tlwarn("_install_package: programs not set up properly, strange.\n"); + return(0); + } +@@ -246,27 +249,27 @@ + } + # we always assume that copy will work + return(1); +- } elsif ($what =~ m,\.tar(\.lzma)?$,) { +- my $type = defined($1) ? "lzma" : "tar"; ++ } elsif ($what =~ m,\.tar(\.xz)?$,) { ++ my $type = defined($1) ? "xz" : "tar"; + + # this is the case when we install from CD or the NET, or a backup + # +- # in all other cases we create temp files .tar.lzma (or use the present +- # one), lzmadec them, and then call tar ++ # in all other cases we create temp files .tar.xz (or use the present ++ # one), xzdec them, and then call tar + + my $fn = basename($what); + mkdirhier("$target/temp"); + my $tarfile; + my $remove_tarfile = 1; +- if ($type eq "lzma") { +- my $lzmafile = "$target/temp/$fn"; +- $tarfile = "$target/temp/$fn"; $tarfile =~ s/\.lzma$//; +- my $lzmafile_quote = $lzmafile; ++ if ($type eq "xz") { ++ my $xzfile = "$target/temp/$fn"; ++ $tarfile = "$target/temp/$fn"; $tarfile =~ s/\.xz$//; ++ my $xzfile_quote = $xzfile; + my $tarfile_quote = $tarfile; + my $target_quote = $target; + if (win32()) { +- $lzmafile =~ s!/!\\!g; +- $lzmafile_quote = "\"$lzmafile\""; ++ $xzfile =~ s!/!\\!g; ++ $xzfile_quote = "\"$xzfile\""; + $tarfile =~ s!/!\\!g; + $tarfile_quote = "\"$tarfile\""; + $target =~ s!/!\\!g; +@@ -275,11 +278,11 @@ + if ($what =~ m,http://|ftp://,) { + # we are installing from the NET + # download the file and put it into temp +- if (!download_file($what, $lzmafile) || (! -r $lzmafile)) { ++ if (!download_file($what, $xzfile) || (! -r $xzfile)) { + tlwarn("Downloading \n"); + tlwarn(" $what\n"); + tlwarn("did not succeed, please retry.\n"); +- unlink($tarfile, $lzmafile); ++ unlink($tarfile, $xzfile); + return(0); + } + } else { +@@ -287,14 +290,14 @@ + # copy it to temp + copy($what, "$target/temp"); + } +- debug("un-lzmaing $lzmafile to $tarfile\n"); +- system("$lzmadec < $lzmafile_quote > $tarfile_quote"); ++ debug("un-xzing $xzfile to $tarfile\n"); ++ system("$xzdec < $xzfile_quote > $tarfile_quote"); + if (! -f $tarfile) { +- tlwarn("_install_package: Unpacking $lzmafile failed, please retry.\n"); +- unlink($tarfile, $lzmafile); ++ tlwarn("_install_package: Unpacking $xzfile failed, please retry.\n"); ++ unlink($tarfile, $xzfile); + return(0); + } +- unlink($lzmafile); ++ unlink($xzfile); + } else { + $tarfile = "$target/temp/$fn"; + if ($what =~ m,http://|ftp://,) { +Index: tlpkg/TeXLive/TLUtils.pm +=================================================================== +--- tlpkg/TeXLive/TLUtils.pm (revision 12198) ++++ tlpkg/TeXLive/TLUtils.pm (working copy) +@@ -56,6 +56,7 @@ + TeXLive::TLUtils::create_language_def($tlpdb,$dest,$localconf); + TeXLive::TLUtils::install_packages($from_tlpdb,$media,$to_tlpdb,$what,$opt_src, $opt_doc)>); + TeXLive::TLUtils::install_package($what, $filelistref, $target, $platform); ++ TeXLive::TLUtils::do_postaction_code($how, $tlpobj); + + =head2 Miscellaneous + +@@ -1006,10 +1007,10 @@ + } elsif ($media eq 'CD') { + if (-r "$root/$Archive/$package.zip") { + $container = "$root/$Archive/$package.zip"; +- } elsif (-r "$root/$Archive/$package.tar.lzma") { +- $container = "$root/$Archive/$package.tar.lzma"; ++ } elsif (-r "$root/$Archive/$package.tar.xz") { ++ $container = "$root/$Archive/$package.tar.xz"; + } else { +- tlwarn("No package $package (.zip or .lzma) in $root/$Archive\n"); ++ tlwarn("No package $package (.zip or .xz) in $root/$Archive\n"); + next; + } + } elsif ($media eq 'NET') { +@@ -1036,7 +1037,7 @@ + # - there are actually src/doc files present + if ($container_src_split && $opt_src && $tlpobj->srcfiles) { + my $srccontainer = $container; +- $srccontainer =~ s/(\.tar\.lzma|\.zip)$/.source$1/; ++ $srccontainer =~ s/(\.tar\.xz|\.zip)$/.source$1/; + if (!install_package($srccontainer, $tlpobj->srccontainersize, + $tlpobj->srccontainermd5, \@installfiles, + $totlpdb->root, $vars{'this_platform'})) { +@@ -1045,7 +1046,7 @@ + } + if ($container_doc_split && $real_opt_doc && $tlpobj->docfiles) { + my $doccontainer = $container; +- $doccontainer =~ s/(\.tar\.lzma|\.zip)$/.doc$1/; ++ $doccontainer =~ s/(\.tar\.xz|\.zip)$/.doc$1/; + if (!install_package($doccontainer, + $tlpobj->doccontainersize, + $tlpobj->doccontainermd5, \@installfiles, +@@ -1064,7 +1065,7 @@ + } + $totlpdb->add_tlpobj($tlpobj); + # we have to write out the tlpobj file since it is contained in the +- # archives (.tar.lzma) but at DVD install time we don't have them ++ # archives (.tar.xz) but at DVD install time we don't have them + my $tlpod = $totlpdb->root . "/tlpkg/tlpobj"; + mkdirhier( $tlpod ); + open(TMP,">$tlpod/".$tlpobj->name.".tlpobj") || +@@ -1097,11 +1098,11 @@ + account. + + If C<$what> starts with C or C then C<$what> is +-downloaded from the net and piped through C and C. ++downloaded from the net and piped through C and C. + +-If $what ends with C<.tar.lzma> (but does not start with C or ++If $what ends with C<.tar.xz> (but does not start with C or + C, but possibly with C) it is assumed to be a readable +-file on the system and is likewise piped through C and C. ++file on the system and is likewise piped through C and C. + + In both of these cases currently the list C<$@filelistref> currently + is not taken into account (should be fixed!). +@@ -1117,9 +1118,9 @@ + + # we assume that $::progs has been set up! + my $wget = $::progs{'wget'}; +- my $lzmadec = $::progs{'lzmadec'}; +- if (!defined($wget) || !defined($lzmadec)) { +- tlwarn("install_package: wget/lzmadec programs not set up properly.\n"); ++ my $xzdec = $::progs{'xzdec'}; ++ if (!defined($wget) || !defined($xzdec)) { ++ tlwarn("install_package: wget/xzdec programs not set up properly.\n"); + return 0; + } + if (ref $what) { +@@ -1132,35 +1133,35 @@ + mkdirhier("$target/$dn"); + copy "$root/$file", "$target/$dn"; + } +- } elsif ($what =~ m,\.tar.lzma$,) { ++ } elsif ($what =~ m,\.tar.xz$,) { + # this is the case when we install from CD or the NET + # +- # in all other cases we create temp files .tar.lzma (or use the present +- # one), lzmadec them, and then call tar ++ # in all other cases we create temp files .tar.xz (or use the present ++ # one), xzdec them, and then call tar + + my $fn = basename($what); + mkdirhier("$target/temp"); +- my $lzmafile = "$target/temp/$fn"; +- my $tarfile = "$target/temp/$fn"; $tarfile =~ s/\.lzma$//; +- my $lzmafile_quote = $lzmafile; ++ my $xzfile = "$target/temp/$fn"; ++ my $tarfile = "$target/temp/$fn"; $tarfile =~ s/\.xz$//; ++ my $xzfile_quote = $xzfile; + my $tarfile_quote = $tarfile; + if (win32()) { +- $lzmafile =~ s!/!\\!g; ++ $xzfile =~ s!/!\\!g; + $tarfile =~ s!/!\\!g; + $target =~ s!/!\\!g; + } +- $lzmafile_quote = "\"$lzmafile\""; ++ $xzfile_quote = "\"$xzfile\""; + $tarfile_quote = "\"$tarfile\""; + my $gotfiledone = 0; +- if (-r $lzmafile) { ++ if (-r $xzfile) { + # check that the downloaded file is not partial + if ($whatsize >= 0) { + # we have the size given, so check that first +- my $size = (stat $lzmafile)[7]; ++ my $size = (stat $xzfile)[7]; + if ($size == $whatsize) { + # we want to check also the md5sum if we have it present + if ($whatmd5) { +- if (tlmd5($lzmafile) eq $whatmd5) { ++ if (tlmd5($xzfile) eq $whatmd5) { + $gotfiledone = 1; + } else { + tlwarn("Downloaded $what, size equal, but md5sum differs;\n", +@@ -1174,12 +1175,12 @@ + } + } else { + tlwarn("Partial download of $what found, removing it.\n"); +- unlink($tarfile, $lzmafile); ++ unlink($tarfile, $xzfile); + } + } else { + # ok no size information, hopefully we have md5 sums + if ($whatmd5) { +- if (tlmd5($lzmafile) eq $whatmd5) { ++ if (tlmd5($xzfile) eq $whatmd5) { + $gotfiledone = 1; + } else { + tlwarn("Downloaded file, but md5sum differs, removing it.\n"); +@@ -1190,14 +1191,14 @@ + $gotfiledone = 1; + } + } +- debug("Reusing already downloaded container $lzmafile\n") ++ debug("Reusing already downloaded container $xzfile\n") + if ($gotfiledone); + } + if (!$gotfiledone) { + if ($what =~ m,http://|ftp://,) { + # we are installing from the NET + # download the file and put it into temp +- if (!download_file($what, $lzmafile) || (! -r $lzmafile)) { ++ if (!download_file($what, $xzfile) || (! -r $xzfile)) { + tlwarn("Downloading $what did not succeed.\n"); + return 0; + } +@@ -1207,10 +1208,10 @@ + copy($what, "$target/temp"); + } + } +- debug("un-lzmaing $lzmafile to $tarfile\n"); +- system("$lzmadec < $lzmafile_quote > $tarfile_quote"); ++ debug("un-xzing $xzfile to $tarfile\n"); ++ system("$xzdec < $xzfile_quote > $tarfile_quote"); + if (! -f $tarfile) { +- tlwarn("Unpacking $lzmafile did not succeed.\n"); ++ tlwarn("Unpacking $xzfile did not succeed.\n"); + return 0; + } + if (!TeXLive::TLUtils::untar($tarfile, $target, 1)) { +@@ -1224,7 +1225,111 @@ + return 1; + } + ++=item C + ++Evaluates the C code in the C<$tlpobj> ++MISSING DOCUMENTATION TODO TODO + -+ # TODO: Should/can this be moved into the do_system_integration part? -+ # it looks like it does not do anything outside the texlive tree, so it -+ # would be fine if we do it anyway ... -+ # $opt_portable: no %install but we still want xetex postinstall -+ &{$PostInstall{'xetex'}}($TEXDIR, $TEXDIRW, $TEXMFSYSVAR, $TEXMFLOCAL) -+ if $opt_portable; ++Returns 1 on success, and 0 on failure. + -+ # no do the system integration: -+ # on unix this means setting up symlinks -+ # on w32 this means adding to path, settting registry values -+ # on both, we run the TLPostActions and the postaction directives of the tlp -+ do_system_integration() if $vars{'option_sysint'}; -+} ++=cut + -+sub do_system_integration { -+ # Run the post installation code in TLPostAction.pm -+ foreach my $package (sort keys %install) { -+ if ($install{$package} && defined($PostInstall{$package})) { -+ info("running post install action for $package\n"); -+ &{$PostInstall{$package}}($vars{'TEXDIR'}, $vars{'TEXDIRW'}, -+ $vars{'TEXMFSYSVAR'}, $vars{'TEXMFLOCAL'}); -+ } ++sub do_postaction_code { ++ my ($how, $tlpobj) = @_; ++ my $ret = 1; ++ if (!defined($tlpobj)) { ++ tlwarn("do_postaction_code: didn't get a tlpobj\n"); ++ return 0; + } -+ # Run the post installation code in the postaction tlpsrc entries -+ my $usedtlpdb = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; -+ foreach my $package (sort keys %install) { -+ if ($install{$package}) { -+ &TeXLive::TLUtils::do_postaction_code("install", -+ $usedtlpdb->get_package($package)); ++ debug("running postaction $how code for " . $tlpobj->name . "\n") ++ if $tlpobj->postactions; ++ for my $pa ($tlpobj->postactions) { ++ if ($pa =~ m/^\s*shortcut\s+(.*)\s*$/) { ++ $ret &&= _do_postaction_shortcut($how, $tlpobj, $1); ++ } elsif ($pa =~ m/\s*filetype\s+(.*)\s*$/) { ++ $ret &&= _do_postaction_filetype($how, $tlpobj, $1); ++ } elsif ($pa =~ m/\s*fileassoc\s+(.*)\s*$/) { ++ $ret &&= _do_postaction_fileassoc($how, $tlpobj, $1); ++ } elsif ($pa =~ m/\s*code\s+(.*)\s*$/) { ++ $ret &&= _do_postaction_code($how, $tlpobj, $1); ++ } else { ++ tlwarn("do_postaction_code: don't know how to do $pa\n"); ++ $ret = 0; + } + } -+ info ("finished with package specific postactions\n"); -+ -+ if (win32()) { -+ update_assocs(); -+ - my $path = TeXLive::TLWinGoo::get_system_env() -> {'/Path'}; - $path =~ s/[\s\x00]+$//; - log("Old system path: $path\n"); -@@ -516,29 +745,97 @@ - # setenv_reg('TEXMFSYSVAR', $vars{'TEXMFSYSVAR'}) if $vars{'from_dvd'}; - setenv_reg('TEXMFCNF', $vars{'TEXMFSYSVAR'}.'/web2c') if $vars{'from_dvd'}; - broadcast_env(); -- create_uninstaller($vars{'TEXDIR'}, $vars{'TEXDIRW'}, -- $vars{'TEXMFSYSVAR'}, $vars{'TEXMFSYSCONFIG'}); -+ } else { -+ $localtlpdb->add_symlinks() - } -- do_postinst_stuff(); -- # now we save every scheme that is fully covered by the stuff we have -- # installed to the $localtlpdb -- foreach my $s ($tlpdb->schemes) { -- my $stlp = $tlpdb->get_package($s); -- die ("That cannot happen, $s not defined in tlpdb") unless defined($stlp); -- my $incit = 1; -- foreach my $d ($stlp->depends) { -- if (!defined($localtlpdb->get_package($d))) { -- $incit = 0; -- last; ++ # nothing to do ++ return $ret; +} + -+ -+# we have to adjust the texmf.cnf file to the paths set in the configuration! -+sub do_texmf_cnf { -+ open(TMF,"<$vars{'TEXDIR'}/texmf/web2c/texmf.cnf") -+ or die "$vars{'TEXDIR'}/texmf/web2c/texmf.cnf not found: $!"; -+ my @texmfcnflines = ; -+ close(TMF); -+ my @newtmf; -+ my @changedtmf; -+ # we have to find TEXMFLOCAL TEXMFSYSVAR and TEXMFHOME -+ foreach my $line (@texmfcnflines) { -+ if ($line =~ m/^TEXMFLOCAL/) { -+ # by default TEXMFLOCAL = TEXDIR/../texmf-local, if this is the case -+ # we don't have to change anything from the default -+ my $deftmlocal = dirname($vars{'TEXDIR'}); -+ $deftmlocal .= "/texmf-local"; -+ if ("$vars{'TEXMFLOCAL'}" eq "$deftmlocal") { -+ push @newtmf, $line; -+ } else { -+ push @newtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; -+ push @changedtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; - } -+ } elsif ($line =~ m/^TEXMFSYSVAR/) { -+ # by default TEXMFSYSVAR = TEXDIR/texmf-var, if this is the case -+ # we don't have to change anything from the default -+ if ("$vars{'TEXMFSYSVAR'}" eq "$vars{'TEXDIR'}/texmf-var") { -+ push @newtmf, $line; -+ } else { -+ push @newtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; -+ push @changedtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; -+ } -+ } elsif ($line =~ m/^TEXMFSYSCONFIG/) { -+ # by default TEXMFSYSCONFIG = TEXDIR/texmf-config, if this is the case -+ # we don't have to change anything from the default -+ if ("$vars{'TEXMFSYSCONFIG'}" eq "$vars{'TEXDIR'}/texmf-config") { -+ push @newtmf, $line; -+ } else { -+ push @newtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; -+ push @changedtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; -+ } -+ } elsif ($line =~ m/^TEXMFHOME/) { -+ # kpse now expands ~ to USERPROFILE, so we don't treat win32 and -+ # unix differently -+ push @newtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; -+ if ("$vars{'TEXMFHOME'}" ne "~/texmf") { -+ push @changedtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; ++sub _do_postaction_shortcut { ++ my ($how, $tlpobj, $pa) = @_; ++ return 1 unless win32(); ++ my @words = quotewords('\s+', 0, "$pa"); ++ my $type; ++ my $icon = ''; ++ my $cmd = ''; ++ my $args = ''; ++ my $name; ++ my $hide = '0'; ++ while (@words) { ++ $_ = shift @words; ++ if (/^type=(.*)$/) { ++ $type = $1; ++ if (($type ne "menu") && ($type ne "desktop")) { ++ tlwarn("type of shortcut postaction $type is unknown (menu, desktop)\n"); ++ return 0; + } -+ } elsif ($line =~ m/^OSFONTDIR/) { -+ if (win32()) { -+ push @newtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; -+ push @changedtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; -+ } else { -+ push @newtmf, $line; ++ } elsif (/^name=(.*)$/) { ++ $name = $1; ++ } elsif (/^icon=(.*)$/) { ++ $icon = $1; ++ } elsif (/^cmd=(.*)$/) { ++ $cmd = $1; ++ } elsif (/^args=(.*)$/) { ++ $args = $1; ++ } elsif (/^hide=(.*)$/) { ++ $hide = $1; ++ if (($hide ne "0") && ($hide ne "1")) { ++ tlwarn("hide of shortcut postaction $hide is unknown (0, 1)\n"); ++ return 0; + } + } else { -+ push @newtmf, $line; - } -- if ($incit) { -- $localtlpdb->add_tlpobj($stlp); -- } - } -- $localtlpdb->save unless $vars{'from_dvd'}; -+ my $TMF; -+ if (!$vars{'from_dvd'}) { -+ $TMF = ">$vars{'TEXDIR'}/texmf.cnf"; -+ open(TMF, $TMF) || die "open($TMF) failed: $!"; -+ print TMF <option_create_formats; - $vars{'option_letter'} = defined($tlpdb->option_paper) - && ($tlpdb->option_paper eq "letter" ? 1 : 0); -- $vars{'option_symlinks'} = $tlpdb->option_create_symlinks; -+ $vars{'option_sysint'} = $tlpdb->option_system_integration; -+ if (win32()) { -+ $vars{'option_sysint'} = 1; -+ } - $vars{'sys_bin'} = $tlpdb->option_sys_bin; - $vars{'sys_man'} = $tlpdb->option_sys_man; - $vars{'sys_info'} = $tlpdb->option_sys_info; -@@ -850,8 +1150,8 @@ - print $fh "$key $vars{$key}\n" if $key=~/^option_doc/; - print $fh "$key $vars{$key}\n" if $key=~/^option_fmt/; - print $fh "$key $vars{$key}\n" if $key=~/^option_src/; -- print $fh "$key $vars{$key}\n" if $key=~/^option_symlinks/; -- if ($vars{'option_symlinks'}) { -+ print $fh "$key $vars{$key}\n" if $key=~/^option_sysint/; -+ if ($vars{'option_sysint'} && unix()) { - print $fh "sys_bin ", $vars{'sys_bin'}, "\n" if $key =~ /^sys_bin/; - print $fh "sys_man ", $vars{'sys_man'}, "\n" if $key =~ /^sys_man/; - print $fh "sys_info ", $vars{'sys_info'}, "\n" if $key =~ /^sys_info/; -@@ -948,7 +1248,7 @@ - $localtlpdb->option_location($location); - $localtlpdb->option_paper($vars{'option_letter'} ? "letter" : "a4"); - $localtlpdb->option_create_formats($vars{'option_fmt'} ? "1" : "0"); -- $localtlpdb->option_create_symlinks($vars{'option_symlinks'} ? "1" : "0"); -+ $localtlpdb->option_system_integration($vars{'option_sysint'} ? "1" : "0"); - $localtlpdb->option_sys_bin($vars{'sys_bin'}); - $localtlpdb->option_sys_info($vars{'sys_info'}); - $localtlpdb->option_sys_man($vars{'sys_man'}); -@@ -964,320 +1264,6 @@ - $localtlpdb->save() unless $vars{'from_dvd'}; - } + =item C + + Unpacked C<$tarfile> in C<$targetdir> (changing directories to +@@ -1268,8 +1373,8 @@ + =item C + + Populate the global C<$::progs> hash containing the paths to the +-programs C, C, C. The C<$bindir> argument specifies +-the path to the location of the C binaries, the C<$platform> ++programs C, C, C. The C<$bindir> argument specifies ++the path to the location of the C binaries, the C<$platform> + gives the TeX Live platform name, used as the extension on our + executables. If a program is not present in the TeX Live tree, we also + check along PATH (without the platform extension.) +@@ -1283,17 +1388,17 @@ + my $ok = 1; + + $::progs{'wget'} = "wget"; +- $::progs{'lzmadec'} = "lzmadec"; +- $::progs{'lzma'} = "lzma"; ++ $::progs{'xzdec'} = "xzdec"; ++ $::progs{'xz'} = "xz"; + $::progs{'tar'} = "tar"; + + if ($^O =~ /^MSWin(32|64)$/i) { + $::progs{'wget'} = conv_to_w32_path("$bindir/wget/wget.exe"); + $::progs{'tar'} = conv_to_w32_path("$bindir/tar.exe"); +- $::progs{'lzmadec'} = conv_to_w32_path("$bindir/lzma/lzmadec.win32.exe"); +- $::progs{'lzma'} = conv_to_w32_path("$bindir/lzma/lzma.exe"); +- for my $prog ("lzmadec", "wget") { +- my $opt = $prog eq "lzmadec" ? "--help" : "--version"; ++ $::progs{'xzdec'} = conv_to_w32_path("$bindir/xz/xzdec.win32.exe"); ++ $::progs{'xz'} = conv_to_w32_path("$bindir/xz/xz.exe"); ++ for my $prog ("xzdec", "wget") { ++ my $opt = $prog eq "xzdec" ? "--help" : "--version"; + my $ret = system("$::progs{$prog} $opt >nul 2>&1"); # on windows + if ($ret != 0) { + warn "TeXLive::TLUtils::setup_programs (w32) failed"; # no nl for perl +@@ -1315,8 +1420,8 @@ + } + my $s = 0; + $s += setup_unix_one('wget', "$bindir/wget/wget.$platform", "--version"); +- $s += setup_unix_one('lzmadec',"$bindir/lzma/lzmadec.$platform","--help"); +- $s += setup_unix_one('lzma', "$bindir/lzma/lzma.$platform", "notest"); ++ $s += setup_unix_one('xzdec',"$bindir/xz/xzdec.$platform","--help"); ++ $s += setup_unix_one('xz', "$bindir/xz/xz.$platform", "notest"); + $ok = ($s == 3); # failure return unless all are present. + } + +Index: tlpkg/TeXLive/TLWinGoo.pm +=================================================================== +--- tlpkg/TeXLive/TLWinGoo.pm (revision 12198) ++++ tlpkg/TeXLive/TLWinGoo.pm (working copy) +@@ -58,7 +58,6 @@ + $prog, $args, $batgui); + TeXLive::TLWinGoo::add_menu_shortcut($place, $name, $icon, + $prog, $args, $batgui); +- TeXLive::TLWinGoo::init_unshortbat($texdir); + TeXLive::TLWinGoo::remove_desktop_shortcut($name); + TeXLive::TLWinGoo::remove_menu_shortcut($place, $name); + +@@ -104,7 +103,6 @@ + &add_menu_shortcut + &remove_desktop_shortcut + &remove_menu_shortcut +- &init_unshortbat + &create_uninstaller + &unregister_uninstaller + ); +@@ -862,8 +860,7 @@ --# do_postinst_stuff has to fix up the texmf tree and install some missing --# files. The things to do are taken from the install-live.sh installer --# of former times, and should be critically checked. --sub do_postinst_stuff { -- my $TEXDIR="$vars{'TEXDIR'}"; -- my $TEXDIRW="$vars{'TEXDIRW'}"; -- my $TEXMFSYSVAR="$vars{'TEXMFSYSVAR'}"; -- my $TEXMFSYSCONFIG="$vars{'TEXMFSYSCONFIG'}"; -- my $TEXMFLOCAL="$vars{'TEXMFLOCAL'}"; -- my $tmv; -- -- do_texmf_cnf() unless ($opt_portable); -- -- -- # final program execution -- # we have to do several things: -- # - clean the environment from spurious TEXMF related variables -- # - add the bin dir to the PATH -- # - select perl interpreter and set the correct perllib -- # - run the programs -- -- # Step 1: Clean the environment -- my @TMFVARS0=qw(VARTEXFONTS -- TEXMF SYSTEXMF VARTEXFONTS -- TEXMFDBS WEB2C TEXINPUTS TEXFORMATS MFBASES MPMEMS TEXPOOL MFPOOL MPPOOL -- PSHEADERS TEXFONTMAPS TEXPSHEADERS TEXCONFIG TEXMFCNF); -- my @TMFVARS1=qw(TEXMFMAIN TEXMFDIST TEXMFLOCAL TEXMFSYSVAR TEXMFSYSCONFIG -- TEXMFHOME TEXMFVAR TEXMFCONFIG); -- -- if (defined($ENV{'TEXMFCNF'}) and !$vars{'from_dvd'} and !$opt_portable) { -- print "WARNING: environment variable TEXMFCNF is set. --You should know what you are doing. --We will remove that for the post install actions, but all further --operations might be disturbed.\n\n"; -- } -- foreach $tmv (@TMFVARS0) { -- delete $ENV{$tmv} if (defined($ENV{$tmv})); -- } -- if (!$opt_portable) { -- foreach $tmv (@TMFVARS1) { -- delete $ENV{$tmv} if (defined($ENV{$tmv})); -- } -- } -- $ENV{'TEXMFSYSVAR'} = $vars{'TEXMFSYSVAR'} if $vars{'from_dvd'}; -- -- # Step 2: Setup the PATH, switch to the new Perl -- -- my $pathsep=(win32)? ';' : ':'; -- my $plat_bindir="$TEXDIR/bin/$vars{'this_platform'}"; -- my $perl_bindir="$TEXDIR/tlpkg/tlperl/bin"; -- my $perl_libdir="$TEXDIR/tlpkg/tlperl/lib"; -- --## This won't do any good; --## have to remove other tex directories in calling batchfile --# if (win32) { --# debug("Removing other TeXs from path\n"); --# my @newpt = (); --# foreach my $d (split (';', $ENV{'PATH'})) { --# push @newpt, $d unless TeXLive::TLWinGoo::is_a_texdir($d); --# } --# $ENV{'PATH'} = join($pathsep, @newpt); --# debug("Path after removals(s):\n $ENV{'PATH'}\n"); --# } -- -- debug("Prepending $plat_bindir to PATH\n"); -- -- $ENV{'PATH'}="$plat_bindir" . "$pathsep" . "$ENV{'PATH'}"; -- -- if (win32) { -- debug("Prepending $perl_bindir to PATH\n"); -- $ENV{'PATH'}="$perl_bindir" . "$pathsep" . "$ENV{'PATH'}"; -- $ENV{'PATH'} =~ s!/!\\!g; -- } -- -- debug("\nNew PATH is now:\n"); -- foreach my $dir (split $pathsep, $ENV{'PATH'}) { -- debug(" $dir\n"); -- } -- debug("\n"); -- -- if (win32) { -- $ENV{'PERL5LIB'}="$perl_libdir"; -- } + =pod + +-=item C ++=item C + + Add a desktop shortcut, with name $name and icon $icon, pointing to + program $prog with parameters $args (a string). Use a non-null +@@ -871,14 +868,10 @@ + batchfile. Then the inevitable command prompt will be hidden + rightaway, leaving only the gui program visible. + +-The parameter $texdir is merely used to locate the batchfile +-unshort.bat for uninstalling desktop shortcuts, which needs to be +-updated. - -- # -- # post install actions -- # + =cut + + sub add_desktop_shortcut { +- my ($texdir, $name, $icon, $prog, $args, $batgui) = @_; ++ my ($name, $icon, $prog, $args, $batgui) = @_; + + # create shortcut + my ($shc, $shpath, $shfile); +@@ -889,15 +882,6 @@ + $shc->{'ShowCmd'} = $batgui ? SW_SHOWMINNOACTIVE : SW_SHOWNORMAL; + $shfile = desktop_path().'/'.$name.'.lnk'; + $shc->Save($shfile); - -- if (win32()) { -- debug "Actual environment:\n".`set`."\n\n"; -- debug 'Effective TEXMFCNF: '.`kpsewhich -expand-path=\$TEXMFCNF`."\n"; +- # update batchfile for uninstalling shortcuts +- if (open UNSHORT, ">>$texdir/tlpkg/installer/unshort.bat") { +- $shfile =~ s!/!\\!g; +- print UNSHORT 'del "'.$shfile."\" 2>nul\n"; +- close UNSHORT; +- } else { +- warn "Cannot open $texdir/tlpkg/installer/unshort.bat for appending: $!"; - } + } + + =pod +@@ -937,39 +921,16 @@ + + =pod + +-=item C - -- # (re-)initialize batchfile for uninstalling shortcuts -- if (win32() and !$opt_portable) { -- mkdirhier("$TEXDIRW/tlpkg/installer") if $vars{'from_dvd'}; -- init_unshortbat($TEXDIRW); -- } +-Reinitialize unshort.bat, the shortcuts uninstaller. - -- foreach my $package (sort keys %install) { -- if ($install{$package} && defined($PostInstall{$package})) { -- info("running post install action for $package\n"); -- &{$PostInstall{$package}}($TEXDIR, $TEXDIRW, $TEXMFSYSVAR, $TEXMFLOCAL); -- } -- } -- # $opt_portable: no %install but we still want xetex postinstall -- &{$PostInstall{'xetex'}}($TEXDIR, $TEXDIRW, $TEXMFSYSVAR, $TEXMFLOCAL) -- if $opt_portable; -- update_assocs() if win32(); +-=cut - -- # Step 4: run the programs +-sub init_unshortbat { +- my $texdirw = shift; +- my $menupath = menu_path(); +- $menupath =~ s!/!\\!g; - -- if (!$opt_portable and !$vars{'from_dvd'}) { -- info("running mktexlsr $TEXDIR/texmf-dist $TEXDIR/texmf\n"); -- system('mktexlsr', "$TEXDIR/texmf-dist", "$TEXDIR/texmf"); +- # batchfile for uninstalling shortcuts +- if (open UNSHORT, ">$texdirw/tlpkg/installer/unshort.bat") { +- print UNSHORT 'rmdir /s /q "'.$menupath."\\TeX Live 2008\" 2>nul\n"; +- close UNSHORT; +- } else { +- warn "Cannot create $texdirw/tlpkg/installer/unshort.bat: $!"; - } +-} - -- # we have to generate the various config file. That could be done with -- # texconfig generate * but Win32 does not have texconfig. But we have -- # $localtlpdb and this is simple code, so do it directly, i.e., duplicate -- # the code from the various generate-*.pl scripts -- info("writing fmtutil.cnf data to $TEXMFSYSVAR/web2c/fmtutil.cnf\n"); -- my $tlp = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; -- TeXLive::TLUtils::create_fmtutil($tlp, #$localtlpdb, -- "$TEXMFSYSVAR/web2c/fmtutil.cnf", -- "$TEXMFLOCAL/web2c/fmtutil-local.cnf"); -- -- mkdirhier "$vars{'TEXMFSYSCONFIG'}/web2c"; -- info("writing updmap.cfg to $TEXMFSYSCONFIG/web2c/updmap.cfg\n"); -- TeXLive::TLUtils::create_updmap ($tlp, #$localtlpdb, -- "$TEXMFSYSCONFIG/web2c/updmap.cfg", -- "$TEXMFLOCAL/web2c/updmap-local.cfg"); -- -- info("writing language.dat data to $TEXMFSYSVAR/tex/generic/config/language.dat\n"); -- TeXLive::TLUtils::create_language_dat($tlp, #$localtlpdb, -- "$TEXMFSYSVAR/tex/generic/config/language.dat", -- "$TEXMFLOCAL/tex/generic/config/language-local.dat"); -- -- info("writing language.def data to $TEXMFSYSVAR/tex/generic/config/language.def\n"); -- TeXLive::TLUtils::create_language_def($tlp, #$localtlpdb, -- "$TEXMFSYSVAR/tex/generic/config/language.def", -- "$TEXMFLOCAL/tex/generic/config/language-local.def"); -- -- info("running mktexlsr $TEXMFSYSVAR\n"); -- system('mktexlsr', "$TEXMFSYSVAR"); -- -- info("running updmap-sys... "); -- # system('updmap-sys', '--nohash'); -- log(`updmap-sys --nohash 2>&1`); -- info("done\n"); -- -- info("re-running mktexlsr $TEXMFSYSVAR\n"); -- system('mktexlsr', "$TEXMFSYSVAR"); +-=pod - -- # now work through the options if specified at all + =item C + +-For uninstallation of an individual package. We leave unshort.bat +-alone because redundant entries are no big deal. ++For uninstallation of an individual package. + + =cut + + sub remove_desktop_shortcut { + my $name = shift; + unlink desktop_path().'/'.$name.'.lnk'; +-} ++} + + =pod + +@@ -1040,7 +1001,6 @@ + set PERL5LIB= + \"$td\\tlpkg\\tlperl\\bin\\perl.exe\" \"$td\\texmf\\scripts\\texlive\\uninstall-win32.pl\" + if errorlevel 1 exit +-call \"$tdw\\tlpkg\\installer\\unshort.bat\" + copy \"$tdw\\tlpkg\\installer\\uninst2.bat\" \"\%TEMP\%\" + rem pause + \"\%TEMP\%\\uninst2.bat\" +Index: tlpkg/installer/install-menu-perltk.pl +=================================================================== +--- tlpkg/installer/install-menu-perltk.pl (revision 12198) ++++ tlpkg/installer/install-menu-perltk.pl (working copy) +@@ -62,7 +62,6 @@ + my $texmfhometext; + my $texdirtext; + my $langcoltext; +-my $symlinktext; + my $optletterstate; + my $optfmtstate; + my $optsrcstate; +@@ -70,6 +69,7 @@ + my $letteryesno = ( $vars{'option_letter'} ? $text{'yes'} : $text{'no'} ); + my $fmtyesno = ( $vars{'option_fmt'} ? $text{'yes'} : $text{'no'} ); + my $srcyesno = ( $vars{'option_src'} ? $text{'yes'} : $text{'no'} ); ++my $sysintyesno = ( $vars{'option_sysint'} ? $text{'yes'} : $text{'no'} ); + my $docyesno = ( $vars{'option_doc'} ? $text{'yes'} : $text{'no'} ); + + $::run_menu = \&run_menu_perltk; +@@ -258,15 +258,13 @@ + $fr->Button(-text => $text{'toggle'}, -command => sub { toggle_and_set_opt_variable(\$vars{'option_src'}, \$srcyesno); })->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); + } + ++ $row++; ++ $fr->Label(-text => $labels{'sysint'}, -anchor => 'w')->grid(-row => $row, -column => 1, -sticky => 'w'); ++ $fr->Label(-anchor => 'w', -textvariable => \$sysintyesno)->grid(-row => $row, -column => 2, -padx => "2m"); + if (unix()) { +- $row++; +- # Symlinks +- $fr->Label(-text => "------- $text{'sysint'} -------")->grid(-row => $row, -column => 1,-columnspan => 3); - -- # letter instead of a4 -- if ($vars{'option_letter'}) { -- info("Setting default paper size to letter\n"); -- if (platform() eq "hppa-hpux") { -- # we didn't get a texlua binary for hppa-hpux, so try texconfig -- system("texconfig", "paper", "letter"); -- } else { -- system("texlua", "$TEXDIR/texmf/scripts/texlive/texconf.tlu", "--sys", "--noformat", "paper", "letter"); -- } -- } +- $row++; +- $fr->Label(-text => $labels{'symlink'}, -anchor => 'w')->grid(-row => $row, -column => 1, -sticky => 'w'); +- $symlinktext = $fr->Label(-anchor => 'w')->grid(-row => $row, -column => 2, -padx => "2m"); + $fr->Button(-text => $text{'change'}, -command => sub { menu_select_symlink(); })->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); ++ } else { ++ $fr->Button(-text => $text{'toggle'}, -command => sub { toggle_and_set_opt_variable(\$vars{'option_sysint'}, \$sysintyesno); })->grid(-row => $row, -column => 3, -sticky => "ew", -padx => "2m"); + } + + # install/cancel buttons +@@ -596,7 +594,7 @@ + + sub menu_select_symlink { + our ($lbin,$lman,$linfo); +- our $osym = $vars{'option_symlinks'}; ++ our $osym = $vars{'option_sysint'}; + our ($binlab,$binb,$manlab,$manb,$infolab,$infob); + sub set_unset_buttons { + $lbin = ($osym ? $vars{'sys_bin'} : ''); +@@ -630,8 +628,8 @@ + $vars{'sys_info'} = $linfo; + $vars{'sys_man'} = $lman; + } +- $vars{'option_symlinks'} = $osym; +- menu_update_texts(); ++ $vars{'option_sysint'} = $osym; ++ toggle_and_set_opt_variable(\$vars{'option_sysint'}, \$sysintyesno); + } + my $sw = $mainwindow->Toplevel(-title => $labels{'symlink'}); + $sw->transient($mainwindow); +@@ -695,10 +693,6 @@ + $w->configure(-text => $t, @_); + } + +-sub menu_set_symlink_text { +- menu_set_text($symlinktext, (($vars{'option_symlinks'})?$text{'yes'}:$text{'no'})); +-} - -- # all formats option -- if ($vars{'option_fmt'}) { -- info("pre-generating all format files (fmtutil-sys --all), be patient..."); -- #system('fmtutil-sys', '--all'); -- # try to capture that output -- log(`fmtutil-sys --all 2>&1`); -- info("done\n"); -- } + sub menu_set_schemebutton_text { + menu_set_text($schemebutton, "$vars{'selected_scheme'}"); + } +@@ -762,7 +756,6 @@ + $optfmtstate = ($vars{'option_fmt'} ? $text{'yes'} : $text{'no'}); + $optsrcstate = ($vars{'option_src'} ? $text{'yes'} : $text{'no'}); + $optdocstate = ($vars{'option_doc'} ? $text{'yes'} : $text{'no'}); +- if (unix()) { menu_set_symlink_text; }; + } + + sub callback_select_scheme { +Index: tlpkg/installer/install-translations.pl +=================================================================== +--- tlpkg/installer/install-translations.pl (revision 12198) ++++ tlpkg/installer/install-translations.pl (working copy) +@@ -52,7 +52,7 @@ + } + + +-our %text = (title => 'TeX Live 2008 Installation', ++our %text = (title => 'TeX Live 2009 Installation', + basicinfo => 'Basic Information', + custom => 'Further Customization', + dirsetup => "Directory setup", +@@ -93,7 +93,7 @@ + welcome => 'Welcome to TeX Live!', + next => 'Next >', + prev => '< Back', +- wizhello => "Welcome to the installation of TeX Live 2008\n" ++ wizhello => "Welcome to the installation of TeX Live 2009\n" + . "http://tug.org/texlive\n\n" + . "This wizard will guide you through the installation.\n\n" + . "For an advanced, customizable installation, please consult\n" +@@ -101,7 +101,7 @@ + destfolder => 'Destination folder:', + advcustom => 'Advanced customization', + pathinfo => "The destination folder will contain the installation.\nIt is strongly recommended to keep the year as the last component.", +- readyinst => "We are ready to install TeX Live 2008.\nThe following settings will be used.\nIf you want to change something please go back,\notherwise press the \"Install\" button.", ++ readyinst => "We are ready to install TeX Live 2009.\nThe following settings will be used.\nIf you want to change something please go back,\notherwise press the \"Install\" button.", + instshort => 'Install', + wizard => 'Go to Wizard', + ); +@@ -121,6 +121,7 @@ + optdoc => 'Install font/macro doc tree', + optsrc => 'Install font/macro source tree', + symlink => 'Create symlinks in system directories', ++ sysint => 'System integration', + ); + + if (($::lang ne "en") && ($::lang ne "C")) { +Index: tlpkg/installer/install-menu-text.pl +=================================================================== +--- tlpkg/installer/install-menu-text.pl (revision 12198) ++++ tlpkg/installer/install-menu-text.pl (working copy) +@@ -675,7 +675,7 @@ + + + sub options_menu { +- my $b_symlinks=button($vars{'option_symlinks'}); ++ my $b_sysint=button($vars{'option_sysint'}); + my $b_doc=button($vars{'option_doc'}); + my $b_src=button($vars{'option_src'}); + my $b_fmt=button($vars{'option_fmt'}); +@@ -685,9 +685,9 @@ + my $sys_man=$vars{'sys_man'}; + my $sys_info=$vars{'sys_info'}; + +- my $t_sys_bin=($vars{'option_symlinks'})? $vars{'sys_bin'}:''; +- my $t_sys_man=($vars{'option_symlinks'})? $vars{'sys_man'}:''; +- my $t_sys_info=($vars{'option_symlinks'})? $vars{'sys_info'}:''; ++ my $t_sys_bin=($vars{'option_sysint'})? $vars{'sys_bin'}:''; ++ my $t_sys_man=($vars{'option_sysint'})? $vars{'sys_man'}:''; ++ my $t_sys_info=($vars{'option_sysint'})? $vars{'sys_info'}:''; + + my %command=( + 'self' => \&options_menu, +@@ -709,14 +709,21 @@ + if ($vars{'src_splitting_supported'} and !$vars{'from_dvd'}) { + print " install font/macro source tree: $b_src\n"; + } +- if (unix() && !$vars{'from_dvd'}) { +- print <<"EOF"; +- create symlinks in standard directories: $b_symlinks ++ if (!$vars{'from_dvd'}) { ++ if (unix()) { ++ print <<"EOF"; ++ create symlinks in standard directories: $b_sysint + binaries to: $t_sys_bin + manpages to: $t_sys_man + info to: $t_sys_info + EOF + ; ++ } else { ++ print <<"EOF"; ++ do system integration: $b_sysint ++EOF ++; ++ } + } + other_options qw(R Q diskspace); + my $answer = prompt 'Enter command'; +@@ -726,8 +733,8 @@ + my $home = getenv('HOME'); + $home = getenv('USERPROFILE') if (win32()); + $home ||= '~'; +- toggle 'option_symlinks'; +- if ($vars{'option_symlinks'}) { ++ toggle 'option_sysint'; ++ if ($vars{'option_sysint'}) { + print "New value for binary directory [$sys_bin]: "; + chomp($answer=); + $vars{'sys_bin'} = "$answer" if (length $answer); +@@ -751,8 +758,15 @@ + } + return $command{'self'}; + } ++ } else { ++ if (("\u$answer" eq 'L') and !$vars{'from_dvd'}) { ++ my $home = getenv('HOME'); ++ $home = getenv('USERPROFILE') if (win32()); ++ $home ||= '~'; ++ toggle 'option_sysint'; ++ return $command{'self'}; ++ } + } - -- # option_links -- if ($vars{'option_symlinks'}) { -- # bin files -- my @files; -- mkdirhier $vars{'sys_bin'}; -- if (-w $vars{'sys_bin'}) { -- info("linking binaries to $vars{'sys_bin'}\n"); -- @files = `ls $plat_bindir`; -- chomp(@files); -- `cd "$vars{'sys_bin'}" && rm -f @files`; -- `ln -s "$plat_bindir/"* "$vars{'sys_bin'}"`; -- } else { -- info("destination of bin symlink $vars{'sys_bin'} not writable, " -- . "no linking of bin files done.\n"); -- } -- if ($vars{'option_doc'}) { -- # info files -- mkdirhier $vars{'sys_info'}; -- if (-w $vars{'sys_info'}) { -- info("linking info pages to $vars{'sys_info'}\n"); -- @files = `ls "$TEXDIR/texmf/doc/info"`; -- chomp(@files); -- `cd "$vars{'sys_info'}" && rm -f @files`; -- `ln -s "$TEXDIR/texmf/doc/info/"*info* "$vars{'sys_info'}"`; -- } else { -- info("destination of info symlink $vars{'sys_info'} not writable, " -- . "no linking of info files done.\n"); -- } -- # man files -- mkdirhier $vars{'sys_man'}; -- if (-w $vars{'sys_man'}) { -- info("linking man pages to $vars{'sys_man'}\n"); -- my $foo = `(cd "$TEXDIR/texmf/doc/man" && echo *)`; -- my @mans = split ' ', $foo; -- chomp(@mans); -- foreach my $m (@mans) { -- my $mandir = "$TEXDIR/texmf/doc/man/$m"; -- next unless -d $mandir; -- mkdirhier "$vars{'sys_man'}/$m"; -- next unless -w "$vars{'sys_man'}/$m"; -- @files = `ls "$mandir"`; -- chomp(@files); -- `cd "$vars{'sys_man'}/$m" && rm -f @files`; -- `ln -s "$mandir/"* "$vars{'sys_man'}/$m"`; -- } -- } else { -- info("destination of man symlink $vars{'sys_man'} not writable, " -- . "no linking of man files done.\n"); -- } + if ("\u$answer" eq 'P') { + toggle 'option_letter'; + return $command{'self'}; +@@ -802,7 +816,7 @@ + sub main_menu { + my $this_platform=platform_desc($vars{'this_platform'}); + +- my $b_symlinks=button($vars{'option_symlinks'}); ++ my $b_sysint=button($vars{'option_sysint'}); + my $b_doc=button($vars{'option_doc'}); + my $b_src=button($vars{'option_src'}); + my $b_fmt=button($vars{'option_fmt'}); +@@ -913,9 +927,7 @@ + if ($vars{'src_splitting_supported'}) { + print " $b_src install macro/font source tree\n"; + } +- if (unix()) { +- print " $b_symlinks create symlinks in standard directories\n"; - } -- } --} ++ print " $b_sysint system integration\n"; + } + + if ($vars{'from_dvd'}) { +Index: tlpkg/tlpsrc/bin-tex.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-tex.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-tex.tlpsrc (working copy) +@@ -1,7 +1,6 @@ + name bin-tex + category TLCore + depend bin-kpathsea +-execute BuildFormat tex +-runpattern f texmf/fmtutil/format.tex.cnf ++execute AddFormat name=tex engine=tex options="tex.ini" + docpattern f texmf/doc/man/man1/tex.* + binpattern f bin/${ARCH}/tex +Index: tlpkg/tlpsrc/bin-mex.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-mex.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-mex.tlpsrc (working copy) +@@ -2,10 +2,9 @@ + category TLCore + depend pdftex + depend bin-tex +-execute BuildFormat mex +-execute BuildFormat utf8mex +-runpattern f texmf/fmtutil/format.mex.cnf +-runpattern f texmf/fmtutil/format.utf8mex.cnf ++execute AddFormat name=mex engine=pdftex patterns=mexconf.tex options="-translate-file=cp227.tcx *mex.ini" ++execute AddFormat name=pdfmex engine=pdftex patterns=mexconf.tex options="-translate-file=cp227.tcx *pdfmex.ini" ++execute AddFormat name=utf8mex engine=pdftex patterns=mexconf.tex options="-enc *utf8mex.ini" + binpattern f bin/${ARCH}/mex + binpattern f bin/${ARCH}/pdfmex + binpattern f bin/${ARCH}/utf8mex +Index: tlpkg/tlpsrc/texlive-de.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/texlive-de.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/texlive-de.tlpsrc (working copy) +@@ -1,2 +1,4 @@ + name texlive-de + category Documentation ++postaction shortcut type=menu name="TeX Live Manual (de) (PDF)" cmd=TEXDIR/texmf-doc/doc/german/texlive-de/texlive-de.pdf ++postaction shortcut type=menu name="TeX Live Manual (de) (HTML)" cmd=TEXDIR/texmf-doc/doc/german/texlive-de/texlive-de.html +Index: tlpkg/tlpsrc/00texlive.installer.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/00texlive.installer.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/00texlive.installer.tlpsrc (working copy) +@@ -7,7 +7,7 @@ + longdesc used *except* to build the installer archives, so it's ok. + longdesc + longdesc For information on the 00texlive prefix see +-longdesc 00texlive-installation.config(.tlpsrc) ++longdesc 00texlive.installation(.tlpsrc) + category TLCore + runpattern f install-tl + runpattern f tlpkg/installer/install-tl.html +@@ -16,8 +16,8 @@ + #runpattern d tlpkg/TeXLive + runpattern d tlpkg/installer + # +-# but no lzma binaries +-runpattern !d tlpkg/installer/lzma ++# but no xz binaries ++runpattern !d tlpkg/installer/xz + runpattern !d tlpkg/installer/wget + # + # and no perl lib +@@ -35,8 +35,8 @@ + # shouldn't be in the installer packages + # binpattern f/win32 tl-portable.bat + binpattern f/win32 install-tl.bat.manifest +-binpattern f/!win32 tlpkg/installer/lzma/lzmadec.${ARCH} ++binpattern f/!win32 tlpkg/installer/xz/xzdec.${ARCH} + binpattern f/!win32,i386-solaris,i386-linux,mips-irix,sparc-linux,alpha-linux,powerpc-linux,i386-freebsd,x86_64-linux tlpkg/installer/wget/wget.${ARCH} + binpattern f/win32 tlpkg/installer/wget/wget.exe + # why the above does not catch that one I don't know ... so add it +-binpattern f/win32 tlpkg/installer/lzma/lzmadec.win32.exe ++binpattern f/win32 tlpkg/installer/xz/xzdec.win32.exe +Index: tlpkg/tlpsrc/pdftex.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/pdftex.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/pdftex.tlpsrc (working copy) +@@ -1,8 +1,9 @@ + name pdftex + category TLCore + depend bin-kpathsea +-execute BuildFormat pdftex +-runpattern f texmf/fmtutil/format.pdftex.cnf ++execute AddFormat name=etex engine=pdftex patterns=language.def options="-translate-file=cp227.tcx *etex.ini" ++execute AddFormat name=pdfetex engine=pdftex patterns=language.def options="-translate-file=cp227.tcx *pdfetex.ini" ++execute AddFormat name=pdftex engine=pdftex patterns=language.def options="-translate-file=cp227.tcx *pdfetex.ini" + runpattern f texmf/fonts/map/pdftex/updmap/* + runpattern f texmf/tex/generic/config/pdftex*.tex + runpattern f texmf/tex/generic/pdftex/* +Index: tlpkg/tlpsrc/bin-csplain.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-csplain.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-csplain.tlpsrc (working copy) +@@ -1,7 +1,7 @@ + name bin-csplain + category TLCore + depend bin-tex +-execute BuildFormat csplain +-runpattern f texmf/fmtutil/format.csplain.cnf ++execute AddFormat name=csplain engine=pdftex options="-etex -translate-file=cp227.tcx csplain.ini" ++execute AddFormat name=pdfcsplain engine=pdftex options="-etex -translate-file=cp227.tcx csplain.ini" + binpattern f bin/${ARCH}/csplain + binpattern f bin/${ARCH}/pdfcsplain +Index: tlpkg/tlpsrc/bin-metapost.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-metapost.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-metapost.tlpsrc (working copy) +@@ -1,8 +1,8 @@ + name bin-metapost + category TLCore + depend bin-kpathsea +-execute BuildFormat metapost +-runpattern f texmf/fmtutil/format.metapost.cnf ++execute AddFormat name=mpost engine=mpost options="-translate-file=cp227.tcx mpost.mp" ++execute AddFormat name=mfplain engine=mpost options="-translate-file=cp227.tcx mfplain.ini" + docpattern f texmf/doc/man/man1/dmp.* + docpattern f texmf/doc/man/man1/dvitomp.* + docpattern f texmf/doc/man/man1/makempx.* +Index: tlpkg/tlpsrc/00texlive.config.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/00texlive.config.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/00texlive.config.tlpsrc (working copy) +@@ -2,15 +2,15 @@ + category TLCore + longdesc This package contains configuration options for the TeX Live archive + longdesc If container_split_{doc,src}_files occurs in the depend lines the +-longdesc {doc,src} files are split into separate containers (.tar.lzma) ++longdesc {doc,src} files are split into separate containers (.tar.xz) + longdesc during container build time. Note that this has NO effect on the + longdesc appearance within the texlive.tlpdb. It is only on container level. + longdesc The container_format/XXXXX specifies the format, currently allowed +-longdesc is only "lzma", which generates .tar.lzma files. zip can be supported. ++longdesc is only "xz", which generates .tar.xz files. zip can be supported. + longdesc release/NNNN specifies the release number as used in the installer. + longdesc For information on the 00texlive prefix see +-longdesc 00texlive-installation.config(.tlpsrc) ++longdesc 00texlive.installation(.tlpsrc) + depend container_split_src_files + depend container_split_doc_files +-depend container_format/lzma +-depend release/2008 ++depend container_format/xz ++depend release/2009 +Index: tlpkg/tlpsrc/texlive-fr.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/texlive-fr.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/texlive-fr.tlpsrc (working copy) +@@ -1,2 +1,4 @@ + name texlive-fr + category Documentation ++postaction shortcut type=menu name="TeX Live Manual (fr) (PDF)" cmd=TEXDIR/texmf-doc/doc/french/texlive-fr/texlive-fr.pdf ++postaction shortcut type=menu name="TeX Live Manual (fr) (HTML)" cmd=TEXDIR/texmf-doc/doc/french/texlive-fr/texlive-fr.html +Index: tlpkg/tlpsrc/texlive-zh-cn.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/texlive-zh-cn.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/texlive-zh-cn.tlpsrc (working copy) +@@ -1,2 +1,3 @@ + name texlive-zh-cn + category Documentation ++postaction shortcut type=menu name="TeX Live Manual (zh-cn) (PDF)" cmd=TEXDIR/texmf-doc/doc/chinese/texlive-zh-cn/texlive-zh-cn.pdf +Index: tlpkg/tlpsrc/bin-dviout.win32.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-dviout.win32.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-dviout.win32.tlpsrc (working copy) +@@ -2,3 +2,4 @@ + category TLCore + binpattern d/win32 tlpkg/dviout + binpattern f bin/win32/dviout.vbs ++postaction shortcut type=menu name="DVIOUT Dvi Viewer" cmd=wscript args=TEXDIR/bin/win32/dviout.vbs hide=1 +Index: tlpkg/tlpsrc/bin-context.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-context.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-context.tlpsrc (working copy) +@@ -1,9 +1,15 @@ + name bin-context + category TLCore + depend pdftex +-execute BuildFormat context ++execute AddFormat name=cont-en engine=pdftex patterns=cont-usr.tex options="-8bit *cont-en.ini" ++execute AddFormat name=cont-cz mode=disabled engine=pdftex patterns=cont-usr.tex options="-8bit *cont-cz.ini" ++execute AddFormat name=cont-de mode=disabled engine=pdftex patterns=cont-usr.tex options="-8bit *cont-de.ini" ++execute AddFormat name=cont-nl mode=disabled engine=pdftex patterns=cont-usr.tex options="-8bit *cont-nl.ini" ++execute AddFormat name=cont-uk mode=disabled engine=pdftex patterns=cont-usr.tex options="-8bit *cont-uk.ini" ++execute AddFormat name=cont-en engine=xetex patterns=cont-usr.tex options="-8bit *cont-en.ini" ++execute AddFormat name=mptopdf engine=pdftex options="-translate-file=cp227.tcx mptopdf.tex" ++execute AddFormat name=metafun engine=mpost options="-translate-file=cp227.tcx metafun.mp" + runpattern f texmf-dist/tex/mptopdf/config/mptopdf.ini +-runpattern f texmf/fmtutil/format.context.cnf + docpattern f texmf/doc/man/man1/ctxtools.* + docpattern f texmf/doc/man/man1/makempy.* + docpattern f texmf/doc/man/man1/mptopdf.* +Index: tlpkg/tlpsrc/bin-mltex.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-mltex.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-mltex.tlpsrc (working copy) +@@ -1,7 +1,7 @@ + name bin-mltex + category TLCore + depend bin-latex +-execute BuildFormat mltex +-runpattern f texmf/fmtutil/format.mltex.cnf ++execute AddFormat name=mltex engine=pdftex options="-translate-file=cp227.tcx -mltex mltex.ini" ++execute AddFormat name=mllatex engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx -mltex mllatex.ini" + binpattern f bin/${ARCH}/mllatex + binpattern f bin/${ARCH}/mltex +Index: tlpkg/tlpsrc/luatex.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/luatex.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/luatex.tlpsrc (working copy) +@@ -1,8 +1,8 @@ + name luatex + category TLCore +-execute BuildFormat luatex ++execute AddFormat name=luatex engine=luatex options="luatex.ini" ++execute AddFormat name=pdfluatex engine=luatex options="pdfluatex.ini" + docpattern d texmf-dist/doc/luatex +-runpattern f texmf/fmtutil/format.luatex.cnf + binpattern f/!hppa-hpux bin/${ARCH}/luatex + binpattern f/!hppa-hpux bin/${ARCH}/pdfluatex + binpattern f/!hppa-hpux bin/${ARCH}/texlua +Index: tlpkg/tlpsrc/bin-cslatex.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-cslatex.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-cslatex.tlpsrc (working copy) +@@ -1,7 +1,7 @@ + name bin-cslatex + category TLCore + depend bin-latex +-execute BuildFormat cslatex +-runpattern f texmf/fmtutil/format.cslatex.cnf ++execute AddFormat name=cslatex engine=pdftex options="-etex -translate-file=cp227.tcx cslatex.ini" ++execute AddFormat name=pdfcslatex engine=pdftex options="-etex -translate-file=cp227.tcx cslatex.ini" + binpattern f bin/${ARCH}/cslatex + binpattern f bin/${ARCH}/pdfcslatex +Index: tlpkg/tlpsrc/bin-texdoc.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-texdoc.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-texdoc.tlpsrc (working copy) +@@ -12,3 +12,4 @@ + binpattern f bin/${ARCH}/texdoctk + binpattern f bin/win32/texdocc + binpattern f bin/win32/tl-w32-texdoc-wrapper.texlua ++postaction shortcut type=menu name="TeXdoc GUI" cmd="TEXDIR/bin/win32/texdoctk.bat" hide=1 +Index: tlpkg/tlpsrc/bin-latex.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-latex.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-latex.tlpsrc (working copy) +@@ -4,12 +4,14 @@ + depend pdftex + depend latexconfig + depend latex-fonts +-execute BuildFormat latex ++execute AddFormat name=latex engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *latex.ini" ++execute AddFormat name=pdflatex engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *pdflatex.ini" ++execute AddFormat name=lualatex engine=luatex patterns=language.dat options="lualatex.ini" ++execute AddFormat name=pdflualatex engine=luatex patterns=language.dat options="pdflualatex.ini" + binpattern f bin/${ARCH}/latex + binpattern f/!hppa-hpux bin/${ARCH}/lualatex + binpattern f bin/${ARCH}/pdflatex + binpattern f/!hppa-hpux bin/${ARCH}/pdflualatex + docpattern f texmf/doc/man/man1/latex.* + docpattern f texmf/doc/man/man1/pdflatex.* +-runpattern f texmf/fmtutil/format.latex.cnf + runpattern d texmf/tex/latex/config +Index: tlpkg/tlpsrc/bin-omega.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-omega.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-omega.tlpsrc (working copy) +@@ -1,7 +1,7 @@ + name bin-omega + category TLCore +-execute BuildFormat omega +-runpattern f texmf/fmtutil/format.omega.cnf ++execute AddFormat name=omega engine=omega options="omega.ini" ++execute AddFormat name=lambda engine=omega patterns=language.dat options="lambda.ini" + docpattern f texmf/doc/man/man1/lambda.* + docpattern f texmf/doc/man/man1/omega.* + binpattern f bin/${ARCH}/lambda +Index: tlpkg/tlpsrc/bin-tlpsv.win32.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-tlpsv.win32.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-tlpsv.win32.tlpsrc (working copy) +@@ -5,3 +5,5 @@ + runpattern f bin/win32/psv.bat + runpattern f texmf/scripts/texlive/psv.tlu + runpattern d tlpkg/tlpsv ++postaction shortcut type=menu name="PS_View" icon=TEXDIR/tlpkg/tlpsv/psv.exe cmd=TEXDIR/bin/win32/psv.bat hide=1 ++postaction shortcut type=desktop name="PS_View" icon=TEXDIR/tlpkg/tlpsv/psv.exe cmd=TEXDIR/bin/win32/psv.bat hide=1 +Index: tlpkg/tlpsrc/bin-xmltex.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-xmltex.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-xmltex.tlpsrc (working copy) +@@ -2,7 +2,7 @@ + category TLCore + depend pdftex + depend bin-tex +-execute BuildFormat xmltex +-runpattern f texmf/fmtutil/format.xmltex.cnf ++execute AddFormat name=xmltex engine=pdftex patterns=language.dat options="&latex xmltex.ini" ++execute AddFormat name=pdfxmltex engine=pdftex patterns=language.dat options="&pdflatex pdfxmltex.ini" + binpattern f bin/${ARCH}/pdfxmltex + binpattern f bin/${ARCH}/xmltex +Index: tlpkg/tlpsrc/texlive-ru.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/texlive-ru.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/texlive-ru.tlpsrc (working copy) +@@ -1,2 +1,4 @@ + name texlive-ru + category Documentation ++postaction shortcut type=menu name="TeX Live Manual (ru) (PDF)" cmd=TEXDIR/texmf-doc/doc/russian/texlive-ru/texlive-ru.pdf ++postaction shortcut type=menu name="TeX Live Manual (ru) (HTML)" cmd=TEXDIR/texmf-doc/doc/russian/texlive-ru/texlive-ru.html +Index: tlpkg/tlpsrc/bin-texlive.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-texlive.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-texlive.tlpsrc (working copy) +@@ -1,27 +1,11 @@ + name bin-texlive + category TLCore + shortdesc executables and files maintained as part of TeX Live +-longdesc This packages contains the binaries of the TeX Live tools (notably +-longdesc tlmgr). Together with texlive.infra, it provides all the basic TeX +-longdesc Live infrastructure. ++longdesc This packages contains the binaries of the TeX Live tools. + depend texlive.infra +-runpattern f texmf/fmtutil/fmtutil-hdr.cnf + runpattern d texmf/scripts/texlive/lua +-runpattern d texmf/scripts/texlive/tlmgrgui +-runpattern !f texmf/scripts/texlive/tlmgrgui/tlmgrgui1.pl +-runpattern !f texmf/scripts/texlive/tlmgrgui/gui-config1.pl +-runpattern !f texmf/scripts/texlive/tlmgrgui/gui-arch1.pl +-runpattern !f texmf/scripts/texlive/tlmgrgui/tlmgrgui-real.pl + runpattern f texmf/scripts/texlive/rungs.tlu + runpattern f texmf/scripts/texlive/test-tlpdb.tlu + runpattern f texmf/scripts/texlive/texconf.tlu +-runpattern f texmf/scripts/texlive/tlmgr.pl +-runpattern !f texmf/scripts/texlive/tlmgr1.pl +-runpattern f texmf/scripts/texlive/uninstall-win32.pl +-runpattern f texmf/web2c/updmap-hdr.cfg +-docpattern f texmf/doc/man/man1/tlmgr.* +-binpattern f bin/${ARCH}/tlmgr + binpattern f bin/${ARCH}/rungs +-binpattern f bin/win32/tl-w32-wrapper.texlua + binpattern f bin/win32/symlinks4cygwin.sh +-binpattern f/win32 texmf/scripts/texlive/updater-w32.bat +Index: tlpkg/tlpsrc/t2.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/t2.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/t2.tlpsrc (working copy) +@@ -1,5 +1,5 @@ + name t2 + category Package +-execute BuildFormat cyramstex +-execute BuildFormat cyrtex +-execute BuildFormat cyrtexinfo ++execute AddFormat name=cyramstex mode=disabled engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *cyramstx.ini" ++execute AddFormat name=cyrtex mode=disabled engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *cyrtex.ini" ++execute AddFormat name=cyrtexinfo mode=disabled engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *cyrtxinf.ini" +Index: tlpkg/tlpsrc/bin-texsis.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-texsis.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-texsis.tlpsrc (working copy) +@@ -1,6 +1,5 @@ + name bin-texsis + category TLCore + depend bin-tex +-execute BuildFormat texsis +-runpattern f texmf/fmtutil/format.texsis.cnf ++execute AddFormat name=texsis engine=pdftex options="-translate-file=cp227.tcx texsis.ini" + binpattern f bin/${ARCH}/texsis +Index: tlpkg/tlpsrc/texlive-en.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/texlive-en.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/texlive-en.tlpsrc (working copy) +@@ -1,2 +1,4 @@ + name texlive-en + category Documentation ++postaction shortcut type=menu name="TeX Live Manual (en) (PDF)" cmd=TEXDIR/texmf-doc/doc/english/texlive-en/texlive-en.pdf ++postaction shortcut type=menu name="TeX Live Manual (en) (HTML)" cmd=TEXDIR/texmf-doc/doc/english/texlive-en/texlive-en.html +Index: tlpkg/tlpsrc/bin-physe.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-physe.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-physe.tlpsrc (working copy) +@@ -1,6 +1,5 @@ + name bin-physe + category TLCore + depend bin-tex +-execute BuildFormat physe +-runpattern f texmf/fmtutil/format.physe.cnf ++execute AddFormat name=physe engine=pdftex options="physe.ini" + binpattern f bin/${ARCH}/physe +Index: tlpkg/tlpsrc/bin-phyzzx.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-phyzzx.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-phyzzx.tlpsrc (working copy) +@@ -1,6 +1,5 @@ + name bin-phyzzx + category TLCore + depend bin-tex +-execute BuildFormat phyzzx +-runpattern f texmf/fmtutil/format.phyzzx.cnf ++execute AddFormat name=phyzzx engine=pdftex options="physe.ini" + binpattern f bin/${ARCH}/phyzzx +Index: tlpkg/tlpsrc/bin-eplain.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-eplain.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-eplain.tlpsrc (working copy) +@@ -1,8 +1,7 @@ + name bin-eplain + category TLCore + depend pdftex +-execute BuildFormat eplain +-runpattern f texmf/fmtutil/format.eplain.cnf ++execute AddFormat name=eplain engine=pdftex options="-translate-file=cp227.tcx *eplain.ini" + docpattern f texmf/doc/info/eplain.info + docpattern f texmf/doc/man/man1/eplain.* + binpattern f bin/${ARCH}/eplain +Index: tlpkg/tlpsrc/texlive-cz.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/texlive-cz.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/texlive-cz.tlpsrc (working copy) +@@ -1,2 +1,4 @@ + name texlive-cz + category Documentation ++postaction shortcut type=menu name="TeX Live Manual (cz) (PDF)" cmd=TEXDIR/texmf-doc/doc/czechslovak/texlive-cz/texlive-cz.pdf ++postaction shortcut type=menu name="TeX Live Manual (cz) (HTML)" cmd=TEXDIR/texmf-doc/doc/czechslovak/texlive-cz/texlive-cz.html +Index: tlpkg/tlpsrc/bin-jadetex.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-jadetex.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-jadetex.tlpsrc (working copy) +@@ -2,7 +2,7 @@ + category TLCore + depend pdftex + depend bin-tex +-execute BuildFormat jadetex +-runpattern f texmf/fmtutil/format.jadetex.cnf ++execute AddFormat name=jadetex engine=pdftex patterns=language.dat options="&latex jadetex.ini" ++execute AddFormat name=pdfjadetex engine=pdftex patterns=language.dat options="&pdflatex pdfjadetex.ini" + binpattern f bin/${ARCH}/jadetex + binpattern f bin/${ARCH}/pdfjadetex +Index: tlpkg/tlpsrc/00texlive-installation.config.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/00texlive-installation.config.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/00texlive-installation.config.tlpsrc (working copy) +@@ -1,30 +0,0 @@ +-name 00texlive-installation.config +-category TLCore +-longdesc This package serves two purposes: +-longdesc +-longdesc 1. at installation time the present values are taken as default for +-longdesc the installer +-longdesc +-longdesc 2. on an installed system it serves as a configuration file. +-longdesc We have to remember these settings for additional package +-longdesc installation, removal, etc. +-longdesc +-longdesc The value of __MASTER__ for the location field tells the +-longdesc installer to use the present directory itself. For example, +-longdesc the DVD can be mounted anywhere and we want the installer to work. +-longdesc +-longdesc Concerning the 00* names: +-longdesc All packages starting with 00texlive are considered virtual packages +-longdesc in the sense that no containers are generated and these packages +-longdesc are never split into .src and .doc sub-packages in the tlpdb. - +-depend platform: +-depend location:__MASTER__ +-depend opt_paper:a4 +-depend opt_create_formats:1 +-depend opt_create_symlinks:0 +-depend opt_sys_bin:/usr/local/bin +-depend opt_sys_info:/usr/local/info +-depend opt_sys_man:/usr/local/man +-depend opt_install_docfiles:1 +-depend opt_install_srcfiles:1 +Index: tlpkg/tlpsrc/texlive-pl.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/texlive-pl.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/texlive-pl.tlpsrc (working copy) +@@ -1,2 +1,4 @@ + name texlive-pl + category Documentation ++postaction shortcut type=menu name="TeX Live Manual (pl) (PDF)" cmd=TEXDIR/texmf-doc/doc/polish/texlive-pl/texlive-pl.pdf ++postaction shortcut type=menu name="TeX Live Manual (pl) (HTML)" cmd=TEXDIR/texmf-doc/doc/polish/texlive-pl/texlive-pl.html +Index: tlpkg/tlpsrc/bin-amstex.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-amstex.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-amstex.tlpsrc (working copy) +@@ -1,7 +1,7 @@ + name bin-amstex + category TLCore + depend bin-tex +-execute BuildFormat amstex +-runpattern f texmf/fmtutil/format.amstex.cnf ++execute AddFormat name=amstex engine=pdftex options="-translate-file=cp227.tcx *amstex.ini" ++execute AddFormat name=pdfamstex mode=disabled engine=pdftex options="-translate-file=cp227.tcx *pdfamstex.ini" + docpattern f texmf/doc/man/man1/amstex.* + binpattern f bin/${ARCH}/amstex +Index: tlpkg/tlpsrc/bin-aleph.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-aleph.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-aleph.tlpsrc (working copy) +@@ -1,7 +1,7 @@ + name bin-aleph + category TLCore + depend bin-omega +-execute BuildFormat aleph +-runpattern f texmf/fmtutil/format.aleph.cnf ++execute AddFormat name=aleph engine=aleph options=*aleph.ini ++execute AddFormat name=lamed engine=aleph patterns=language.dat options=*lambda.ini + binpattern f bin/${ARCH}/aleph + binpattern f bin/${ARCH}/lamed +Index: tlpkg/tlpsrc/00texlive.installation.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/00texlive.installation.tlpsrc (revision 0) ++++ tlpkg/tlpsrc/00texlive.installation.tlpsrc (revision 0) +@@ -0,0 +1,30 @@ ++name 00texlive.installation ++category TLCore ++longdesc This package serves two purposes: ++longdesc ++longdesc 1. at installation time the present values are taken as default for ++longdesc the installer ++longdesc ++longdesc 2. on an installed system it serves as a configuration file. ++longdesc We have to remember these settings for additional package ++longdesc installation, removal, etc. ++longdesc ++longdesc The value of __MASTER__ for the location field tells the ++longdesc installer to use the present directory itself. For example, ++longdesc the DVD can be mounted anywhere and we want the installer to work. ++longdesc ++longdesc Concerning the 00* names: ++longdesc All packages starting with 00texlive are considered virtual packages ++longdesc in the sense that no containers are generated and these packages ++longdesc are never split into .src and .doc sub-packages in the tlpdb. ++ ++depend platform: ++depend location:__MASTER__ ++depend opt_paper:a4 ++depend opt_create_formats:1 ++depend opt_system_integration:0 ++depend opt_sys_bin:/usr/local/bin ++depend opt_sys_info:/usr/local/info ++depend opt_sys_man:/usr/local/man ++depend opt_install_docfiles:1 ++depend opt_install_srcfiles:1 +Index: tlpkg/tlpsrc/00texlive.core.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/00texlive.core.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/00texlive.core.tlpsrc (working copy) +@@ -6,7 +6,7 @@ + longdesc and containers are not built; they exist only in the + longdesc full DVD image. + longdesc For information on the 00texlive prefix see +-longdesc 00texlive-installation.config(.tlpsrc) ++longdesc 00texlive.installation(.tlpsrc) + runpattern d tlpkg/archive + runpattern d tlpkg/doc + runpattern d tlpkg/libexec +Index: tlpkg/tlpsrc/bin-metafont.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/bin-metafont.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/bin-metafont.tlpsrc (working copy) +@@ -1,8 +1,7 @@ + name bin-metafont + category TLCore + depend bin-kpathsea +-execute BuildFormat metafont +-runpattern f texmf/fmtutil/format.metafont.cnf ++execute AddFormat name=mf engine=mf-nowin options="-translate-file=cp227.tcx mf.ini" + docpattern f texmf/doc/man/man1/mf-nowin.* + docpattern f texmf/doc/man/man1/mf.* + binpattern f bin/${ARCH}/mf +Index: tlpkg/tlpsrc/texlive.infra.tlpsrc +=================================================================== +--- tlpkg/tlpsrc/texlive.infra.tlpsrc (revision 12198) ++++ tlpkg/tlpsrc/texlive.infra.tlpsrc (working copy) +@@ -3,7 +3,7 @@ + shortdesc basic TeX Live infrastructure + longdesc This package contains the files needed to get the TeX Live + longdesc tools (notably tlmgr) running. That comprises the perl modules, +-longdesc documentation, and the lzma binaries, plus tar and wget, sometimes. ++longdesc documentation, and the xz binaries, plus tar and wget, sometimes. + longdesc These files end up in the install packages. + # + # Until TL'09, reduce installed doc to just this file (which was present +@@ -27,12 +27,26 @@ + runpattern f release-texlive.txt + # + binpattern f/win32 tlpkg/installer/tar.exe +-binpattern f/win32 tlpkg/installer/lzma/lzmadec.win32.exe +-binpattern f/win32 tlpkg/installer/lzma/lzma.exe ++binpattern f/win32 tlpkg/installer/xz/xzdec.win32.exe ++binpattern f/win32 tlpkg/installer/xz/xz.exe + binpattern f/win32 tlpkg/installer/wget/wget.exe +-binpattern f tlpkg/installer/lzma/lzmadec.${ARCH} +-binpattern f tlpkg/installer/lzma/lzma.${ARCH} ++binpattern f tlpkg/installer/xz/xzdec.${ARCH} ++binpattern f tlpkg/installer/xz/xz.${ARCH} + # we count on lots of platforms providing their own wget. + binpattern f/!i386-solaris,i386-linux,mips-irix,sparc-linux,alpha-linux,\ + powerpc-linux,i386-freebsd,x86_64-linux \ + tlpkg/installer/wget/wget.${ARCH} ++# former tlmgr stuff ++runpattern f texmf/fmtutil/fmtutil-hdr.cnf ++runpattern d texmf/scripts/texlive/tlmgrgui ++runpattern f texmf/scripts/texlive/tlmgr.pl ++runpattern f texmf/scripts/texlive/uninstall-win32.pl ++runpattern f texmf/web2c/updmap-hdr.cfg ++docpattern f texmf/doc/man/man1/tlmgr.* ++binpattern f bin/${ARCH}/tlmgr ++binpattern f bin/win32/tl-w32-wrapper.texlua ++binpattern f/win32 texmf/scripts/texlive/updater-w32.bat ++# post actions ++postaction shortcut type=menu name="TeX Live Toplevel Readme Index" cmd=TEXDIR/index.html ++postaction shortcut type=menu name="TeX Live Manager" cmd=TEXDIR/bin/win32/tlmgr.bat args=gui hide=1 ++postaction shortcut type=menu name="Release notes" cmd="http://tug.org/texlive/windows.html" +Index: tlpkg/bin/tl-update-tlcritical +=================================================================== +--- tlpkg/bin/tl-update-tlcritical (revision 12198) ++++ tlpkg/bin/tl-update-tlcritical (working copy) +@@ -34,7 +34,7 @@ + # update normal containers. + echo "$0: running tl-update-containers (for critical packages)..." + tl-update-containers -location $tlcrit -all \ +- 00texlive-installation.config 00texlive.config bin-texlive texlive.infra ++ 00texlive.installation 00texlive.config texlive.infra + + # update Unix disaster recovery. + echo "$0: running tl-makeself-from-tlnet..." +Index: tlpkg/bin/tl-fix-container-infos +=================================================================== +--- tlpkg/bin/tl-fix-container-infos (revision 12198) ++++ tlpkg/bin/tl-fix-container-infos (working copy) +@@ -64,13 +64,13 @@ + # set up the programs. + if ($opt_nosetup) { + # do a minimal setup +- $::progs{'lzma'} = "lzma"; ++ $::progs{'xz'} = "xz"; + $::progs{'tar'} = "tar"; + } else { + # do a full setup + my $ret = &TeXLive::TLUtils::setup_programs("$Master/tlpkg/installer"); + if ($ret == -1) { +- tlwarn("$0: no lzmadec for $::_platform_, aborting.\n"); ++ tlwarn("$0: no xzdec for $::_platform_, aborting.\n"); + exit 1; + } + if (!$ret) { +@@ -93,7 +93,7 @@ + $tlpdb->add_tlpobj($obj); + } + $tlpdb->save; +- system("lzma --force -k -z $opt_location/tlpkg/texlive.tlpdb"); ++ system("xz --force -k -z $opt_location/tlpkg/texlive.tlpdb"); + + return 0; + } +@@ -102,16 +102,16 @@ + sub do_containers { + my ($obj, $dosrc, $dodoc) = @_; + my $fbase = "$opt_location/archive/" . $obj->name; +- my ($a, $b) = do_size_md ("${fbase}.tar.lzma"); ++ my ($a, $b) = do_size_md ("${fbase}.tar.xz"); + $obj->containersize($a); + $obj->containermd5($b); + if ($dosrc && $obj->srcfiles) { +- ($a, $b) = do_size_md ("${fbase}.source.tar.lzma"); ++ ($a, $b) = do_size_md ("${fbase}.source.tar.xz"); + $obj->srccontainersize($a); + $obj->srccontainermd5($b); + } + if ($dodoc && $obj->docfiles) { +- ($a, $b) = do_size_md ("${fbase}.doc.tar.lzma"); ++ ($a, $b) = do_size_md ("${fbase}.doc.tar.xz"); + $obj->doccontainersize($a); + $obj->doccontainermd5($b); + } +@@ -146,7 +146,7 @@ + + =item B<-no-setup> + +-Does not try to setup the various programs, but uses I and I ++Does not try to setup the various programs, but uses I and I + from the current path. + + =item B<-help> +Index: tlpkg/bin/check-tlnet-consistency +=================================================================== +--- tlpkg/bin/check-tlnet-consistency (revision 12198) ++++ tlpkg/bin/check-tlnet-consistency (working copy) +@@ -49,13 +49,13 @@ + # set up the programs ... + if ($opt_nosetup) { + # do a minimal setup +- $::progs{'lzma'} = "lzma"; ++ $::progs{'xz'} = "xz"; + $::progs{'tar'} = "tar"; + } else { + # do a full setup + my $ret = &TeXLive::TLUtils::setup_programs("$Master/tlpkg/installer"); + if ($ret == -1) { +- tlwarn("no binary of lzmadec for $::_platform_ detected, aborting.\n"); ++ tlwarn("no binary of xzdec for $::_platform_ detected, aborting.\n"); + exit 1; + } + if (!$ret) { +@@ -82,16 +82,16 @@ + my %filedifferrors; + foreach my $pkg ($tlpdb->list_packages()) { + next if ($pkg =~ m/^00texlive/); +- my $cont = "$opt_location/archive/$pkg.tar.lzma"; +- my $srccont = "$opt_location/archive/$pkg.source.tar.lzma"; +- my $doccont = "$opt_location/archive/$pkg.doc.tar.lzma"; ++ my $cont = "$opt_location/archive/$pkg.tar.xz"; ++ my $srccont = "$opt_location/archive/$pkg.source.tar.xz"; ++ my $doccont = "$opt_location/archive/$pkg.doc.tar.xz"; + my $tlpdbtlpobj = $tlpdb->get_package($pkg); + my $dodoc = ($tlpdb->config_doc_container && $tlpdbtlpobj->docfiles); + my $dosrc = ($tlpdb->config_src_container && $tlpdbtlpobj->srcfiles); + if ($opt_filelists) { +- system("cat $cont | $::progs{lzmadec} | $::progs{tar} -C \"$temp\" -xf - "); ++ system("cat $cont | $::progs{xzdec} | $::progs{tar} -C \"$temp\" -xf - "); + } else { +- system("cat $cont | $::progs{lzmadec} | $::progs{tar} -C \"$temp\" -xf - tlpkg/tlpobj"); ++ system("cat $cont | $::progs{xzdec} | $::progs{tar} -C \"$temp\" -xf - tlpkg/tlpobj"); + } + if (! -r "$temp/tlpkg/tlpobj/$pkg.tlpobj") { + push @notlpobj, $pkg; +@@ -101,7 +101,7 @@ + die "Cannot load tlpobj from $temp/$pkg.tlpobj: $!" unless defined($tartlpobj); + # get the src and doc containers unpacked and add the respective files + if ($dosrc) { +- system("cat $srccont | $::progs{lzmadec} | $::progs{tar} -C \"$temp\" -xf - tlpkg/tlpobj"); ++ system("cat $srccont | $::progs{xzdec} | $::progs{tar} -C \"$temp\" -xf - tlpkg/tlpobj"); + if (! -r "$temp/tlpkg/tlpobj/$pkg.source.tlpobj") { + push @missingsrccontainer, $pkg; + } else { +@@ -112,7 +112,7 @@ + } + } + if ($dodoc) { +- system("cat $doccont | $::progs{lzmadec} | $::progs{tar} -C \"$temp\" -xf - tlpkg/tlpobj"); ++ system("cat $doccont | $::progs{xzdec} | $::progs{tar} -C \"$temp\" -xf - tlpkg/tlpobj"); + if (! -r "$temp/tlpkg/tlpobj/$pkg.doc.tlpobj") { + push @missingdoccontainer, $pkg; + } else { +@@ -268,7 +268,7 @@ + + =item B<-no-setup> + +-Does not try to setup the various programs, but uses I and I ++Does not try to setup the various programs, but uses I and I + from path. + + =item B<-help> +Index: tlpkg/bin/tlpkg-by-size +=================================================================== +--- tlpkg/bin/tlpkg-by-size (revision 12198) ++++ tlpkg/bin/tlpkg-by-size (working copy) +@@ -5,9 +5,9 @@ + + test $# -eq 0 && set - /home/ftp/texlive/tlnet/2008/archive + cd "$1" || exit 1 +-for pkgtar in `ls *.tar.lzma | egrep -v '\..*\.tar\.lzma$'`; do +- pkg=`echo $pkgtar | sed 's/\.tar\.lzma$//'` +- size=`cat $pkg.*tar.lzma | wc -c` ++for pkgtar in `ls *.tar.xz | egrep -v '\..*\.tar\.xz$'`; do ++ pkg=`echo $pkgtar | sed 's/\.tar\.xz$//'` ++ size=`cat $pkg.*tar.xz | wc -c` + size=`expr $size / 1024` + printf "%6d %s\n" $size "$pkg" + done | sort -nr +Index: tlpkg/bin/tl-update-containers +=================================================================== +--- tlpkg/bin/tl-update-containers (revision 12198) ++++ tlpkg/bin/tl-update-containers (working copy) +@@ -24,7 +24,7 @@ + use File::Path; + + # packages matching these re's will not be updated without --all. +-my @critical_pkg_list = qw/bin-texlive texlive\.infra/; ++my @critical_pkg_list = qw/texlive\.infra/; + + our ($mydir, $vc_id); + my $opt_all = 0; +@@ -71,8 +71,8 @@ + my $srcsplit = $tlpdb->config_src_container; + my $docsplit = $tlpdb->config_doc_container; + my $format = $tlpdb->config_container_format; +- my $type = "lzma"; +- if ($format eq "lzma" || $format eq "zip") { ++ my $type = "xz"; ++ if ($format eq "xz" || $format eq "zip") { + $type = $format; + } else { + tlwarn("$0: unknown container format $format in 00texlive.config; ", +@@ -176,24 +176,24 @@ + } + } + +- # The two packages 00texlive.config and 00texlive-installation.config ++ # The two packages 00texlive.config and 00texlive.installation + # are essential and have to be included in each and every case. + # So add them ... + my $tlpconfig = $tlpdb->get_package("00texlive.config"); + $nettlpdb->add_tlpobj($tlpconfig); +- my $tlpinstconfig = $tlpdb->get_package("00texlive-installation.config"); ++ my $tlpinstconfig = $tlpdb->get_package("00texlive.installation"); + $nettlpdb->add_tlpobj($tlpinstconfig); + + # set up the programs. + if ($opt_nosetup) { + # do a minimal setup +- $::progs{'lzma'} = "lzma"; ++ $::progs{'xz'} = "xz"; + $::progs{'tar'} = "tar"; + } else { + # do a full setup + my $ret = &TeXLive::TLUtils::setup_programs("$Master/tlpkg/installer"); + if ($ret == -1) { +- tlwarn("$0: no lzmadec for $::_platform_, aborting.\n"); ++ tlwarn("$0: no xzdec for $::_platform_, aborting.\n"); + exit 1; + } + if (!$ret) { +@@ -300,7 +300,7 @@ + + # remove old containers + for my $op (@removecontainers) { +- if (-r "$opt_containerdir/$op.tar.lzma") { ++ if (-r "$opt_containerdir/$op.tar.xz") { + info("$0: $op container is old, removing it\n"); + `rm $opt_containerdir/$op.*` unless $opt_dry; + } +@@ -349,13 +349,13 @@ + # docfiles into the texlive.tlpdb, no idea why. So update should now + # do that. + $nettlpdb->save; +- system("lzma --force -k -z $opt_location/tlpkg/texlive.tlpdb"); ++ system("xz --force -k -z $opt_location/tlpkg/texlive.tlpdb"); + + if (! @ARGV) { + # do a last check that all the containers are actually present + foreach my $p ($nettlpdb->list_packages) { + next if $p =~ /00texlive/; +- if (! -r "$opt_containerdir/$p.tar.lzma") { ++ if (! -r "$opt_containerdir/$p.tar.xz") { + tlwarn("$0: container for $p is missing, strange\n"); + } + } +@@ -392,12 +392,12 @@ + =item B<-all|-a> + + Include packages deemed critical in the update, currently +-C and C. (That is, C itself needs ++C. (That is, C itself needs + testing before updating, so we don't do it by default.) + + =item B<-no-setup> + +-Does not try to setup the various programs, but uses I and I ++Does not try to setup the various programs, but uses I and I + from the current path. + + =item B<-help> +Index: tlpkg/bin/tl-makeself-from-tlnet +=================================================================== +--- tlpkg/bin/tl-makeself-from-tlnet (revision 12198) ++++ tlpkg/bin/tl-makeself-from-tlnet (working copy) +@@ -4,7 +4,7 @@ + # This file is licensed under the GNU General Public License version 2 + # or any later version. + # +-# Creates a .run file for updating the texlive.infra and bin-texlive ++# Creates a .run file for updating the texlive.infra + # packages on Unix, similar to the .exe we create for Windows. Both are + # created in the nightly cron from tl-update-tlcritical. + +@@ -28,13 +28,12 @@ + mkdir master + cd master + +-# unpack texlive.infra and bin-texlive archives for all platforms, +-# except w32. +-for pkg in texlive.infra bin-texlive; do +- for i in $ARCHIVE/$pkg*.tar.lzma ; do ++# unpack texlive.infra archives for all platforms, except w32. ++for pkg in texlive.infra; do ++ for i in $ARCHIVE/$pkg*.tar.xz ; do + case "$i" in + *win32*) ;; +- *) lzmadec <$i | tar -xf - ;; ++ *) xzdec <$i | tar -xf - ;; + esac + done + done +@@ -65,25 +64,24 @@ + t_instdir=$ROOT/tlpkg/installer # target installer dir + + # ensure these target directories exist. +- mkdir -p $t_instdir/lzma ++ mkdir -p $t_instdir/xz + mkdir -p $t_instdir/wget + + # start the list of tlpobjs we will install +- tlpobjs="$t_objdir/bin-texlive.tlpobj $t_objdir/texlive.infra.tlpobj" ++ tlpobjs="$t_objdir/texlive.infra.tlpobj" + for a in $ROOT/bin/*; do + test -d "$a" || continue # skip any cruft files + b=`basename $a` # just the architecture name + + # add the tlpobjs for this platform t the list. +- tlpobjs="$tlpobjs $t_objdir/bin-texlive.$b.tlpobj" + tlpobjs="$tlpobjs $t_objdir/texlive.infra.$b.tlpobj" + + # install the bin dir for this platform. + (cd bin && tar cf - $b) | (cd $ROOT/bin && tar xf -) + + # copy the installer binaries. +- cp installer/lzma/lzmadec.$b $t_instdir/lzma/ +- cp installer/lzma/lzma.$b $t_instdir/lzma/ ++ cp installer/xz/xzdec.$b $t_instdir/xz/ ++ cp installer/xz/xz.$b $t_instdir/xz/ + test -r installer/wget/wget.$b \ + && cp installer/wget/wget.$b $t_instdir/wget + done +Index: tlpkg/bin/tl-update-nsis +=================================================================== +--- tlpkg/bin/tl-update-nsis (revision 12198) ++++ tlpkg/bin/tl-update-nsis (working copy) +@@ -40,13 +40,9 @@ + chomp (my $Master = `cd $mydir/../.. && pwd`); + my $tlpdb = TeXLive::TLPDB->new ("root" => $Master); + die("Cannot find tlpdb in $Master\n") unless defined($tlpdb); +- my $bintexlive = $tlpdb->get_package("bin-texlive"); +- my $bintexlivew32 = $tlpdb->get_package("bin-texlive.win32"); + my $texliveinfra = $tlpdb->get_package("texlive.infra"); + my $texliveinfraw32 = $tlpdb->get_package("texlive.infra.win32"); + my @allfiles = (); +- push @allfiles, $bintexlive->all_files; +- push @allfiles, $bintexlivew32->all_files if defined $bintexlivew32; + push @allfiles, $texliveinfra->all_files; + push @allfiles, $texliveinfraw32->all_files if defined $texliveinfraw32; + +@@ -58,7 +54,7 @@ + $removetlpobjdir = 1; + } + my $rev = 0; # we want the highest rev all these packages. +- for my $p ($bintexlive, $bintexlivew32, $texliveinfra, $texliveinfraw32) { ++ for my $p ($texliveinfra, $texliveinfraw32) { + if (defined $p) { + if ($p->revision > $rev) { + $rev = $p->revision; +@@ -95,7 +91,7 @@ + + Name "TeX Live Manager Update ${REV}" + OutFile "update-tlmgr-${REV}.exe" +-InstallDir "$PROGRAMFILES\texlive\2008" ++InstallDir "$PROGRAMFILES\texlive\$TeXLive::TLConfig::ReleaseYear" + + RequestExecutionLevel "user" + +@@ -135,7 +131,7 @@ + } + } + print " ExecWait \'\"\$INSTDIR\\bin\\win32\\tlmgr.bat\" _include_tlpobj"; +- for my $p ($bintexlive, $bintexlivew32, $texliveinfra, $texliveinfraw32) { ++ for my $p ($texliveinfra, $texliveinfraw32) { + if (defined $p) { + print " \"\$INSTDIR\\tlpkg\\tlpobj\\", $p->name, ".tlpobj\""; + } +Index: tlpkg/etc/2009.combined.patch +=================================================================== +--- tlpkg/etc/2009.combined.patch (revision 12198) ++++ tlpkg/etc/2009.combined.patch (working copy) +@@ -1,7 +1,839 @@ ++Index: install-tl ++=================================================================== ++--- install-tl (revision 12198) +++++ install-tl (working copy) ++@@ -82,7 +82,6 @@ ++ &add_menu_shortcut ++ &remove_desktop_shortcut ++ &remove_menu_shortcut ++- &init_unshortbat ++ &create_uninstaller ++ )); ++ } ++@@ -121,7 +120,7 @@ ++ # ++ # The following values are taken from the remote tlpdb using the ++ # $tlpdb->option_XXXXX ++-# settings (i.e., taken from tlpkg/tlpsrc/00texlive-installation.tlpsrc +++# settings (i.e., taken from tlpkg/tlpsrc/00texlive.installation.tlpsrc ++ # ++ # 'option_symlinks' => 0, ++ # 'sys_bin' => '/usr/local/bin', ++@@ -380,6 +379,14 @@ ++ $vars{'doc_splitting_supported'} = $tlpdb->config_doc_container; ++ } ++ $texlive_release = $tlpdb->config_release; +++# if the release from the remote TLPDB does not agree with the +++# TLConfig::ReleaseYear in the first 4 places break out here. +++# Why only the first four places: some optional network distributions +++# might use +++# release/2009-foobar +++if ($texlive_release !~ m/^$TeXLive::TLConfig::ReleaseYear/) { +++ die "The release version of the installation source and\nthe installation media do not agree:\nsource: $texlive_release\nmedia: $TeXLive::TLConfig::ReleaseYear\nPlease report to tex-live\@tug.org"; +++} ++ set_platforms_supported(); ++ set_texlive_default_dirs(); ++ initialize_collections(); ++@@ -491,7 +498,229 @@ ++ save_options_into_tlpdb(); ++ do_install_packages(); ++ } +++ # now we save every scheme that is fully covered by the stuff we have +++ # installed to the $localtlpdb +++ foreach my $s ($tlpdb->schemes) { +++ my $stlp = $tlpdb->get_package($s); +++ die ("That cannot happen, $s not defined in tlpdb") unless defined($stlp); +++ my $incit = 1; +++ foreach my $d ($stlp->depends) { +++ if (!defined($localtlpdb->get_package($d))) { +++ $incit = 0; +++ last; +++ } +++ } +++ if ($incit) { +++ $localtlpdb->add_tlpobj($stlp); +++ } +++ } +++ $localtlpdb->save unless $vars{'from_dvd'}; +++ do_postinst_stuff(); +++} +++ +++# do_postinst_stuff has to fix up the texmf tree and install some missing +++# files. The things to do are taken from the install-live.sh installer +++# of former times, and should be critically checked. +++sub do_postinst_stuff { +++ my $TEXDIR="$vars{'TEXDIR'}"; +++ my $TEXDIRW="$vars{'TEXDIRW'}"; +++ my $TEXMFSYSVAR="$vars{'TEXMFSYSVAR'}"; +++ my $TEXMFSYSCONFIG="$vars{'TEXMFSYSCONFIG'}"; +++ my $TEXMFLOCAL="$vars{'TEXMFLOCAL'}"; +++ my $tmv; +++ +++ do_texmf_cnf() unless ($opt_portable); +++ +++ +++ # final program execution +++ # we have to do several things: +++ # - clean the environment from spurious TEXMF related variables +++ # - add the bin dir to the PATH +++ # - select perl interpreter and set the correct perllib +++ # - run the programs +++ +++ # Step 1: Clean the environment +++ my @TMFVARS0=qw(VARTEXFONTS +++ TEXMF SYSTEXMF VARTEXFONTS +++ TEXMFDBS WEB2C TEXINPUTS TEXFORMATS MFBASES MPMEMS TEXPOOL MFPOOL MPPOOL +++ PSHEADERS TEXFONTMAPS TEXPSHEADERS TEXCONFIG TEXMFCNF); +++ my @TMFVARS1=qw(TEXMFMAIN TEXMFDIST TEXMFLOCAL TEXMFSYSVAR TEXMFSYSCONFIG +++ TEXMFHOME TEXMFVAR TEXMFCONFIG); +++ +++ if (defined($ENV{'TEXMFCNF'}) and !$vars{'from_dvd'} and !$opt_portable) { +++ print "WARNING: environment variable TEXMFCNF is set. +++You should know what you are doing. +++We will remove that for the post install actions, but all further +++operations might be disturbed.\n\n"; +++ } +++ foreach $tmv (@TMFVARS0) { +++ delete $ENV{$tmv} if (defined($ENV{$tmv})); +++ } +++ if (!$opt_portable) { +++ foreach $tmv (@TMFVARS1) { +++ delete $ENV{$tmv} if (defined($ENV{$tmv})); +++ } +++ } +++ $ENV{'TEXMFSYSVAR'} = $vars{'TEXMFSYSVAR'} if $vars{'from_dvd'}; +++ +++ # Step 2: Setup the PATH, switch to the new Perl +++ +++ my $pathsep=(win32)? ';' : ':'; +++ my $plat_bindir="$TEXDIR/bin/$vars{'this_platform'}"; +++ my $perl_bindir="$TEXDIR/tlpkg/tlperl/bin"; +++ my $perl_libdir="$TEXDIR/tlpkg/tlperl/lib"; +++ +++## This won't do any good; +++## have to remove other tex directories in calling batchfile +++# if (win32) { +++# debug("Removing other TeXs from path\n"); +++# my @newpt = (); +++# foreach my $d (split (';', $ENV{'PATH'})) { +++# push @newpt, $d unless TeXLive::TLWinGoo::is_a_texdir($d); +++# } +++# $ENV{'PATH'} = join($pathsep, @newpt); +++# debug("Path after removals(s):\n $ENV{'PATH'}\n"); +++# } +++ +++ debug("Prepending $plat_bindir to PATH\n"); +++ +++ $ENV{'PATH'}="$plat_bindir" . "$pathsep" . "$ENV{'PATH'}"; +++ +++ if (win32) { +++ debug("Prepending $perl_bindir to PATH\n"); +++ $ENV{'PATH'}="$perl_bindir" . "$pathsep" . "$ENV{'PATH'}"; +++ $ENV{'PATH'} =~ s!/!\\!g; +++ } +++ +++ debug("\nNew PATH is now:\n"); +++ foreach my $dir (split $pathsep, $ENV{'PATH'}) { +++ debug(" $dir\n"); +++ } +++ debug("\n"); +++ +++ if (win32) { +++ $ENV{'PERL5LIB'}="$perl_libdir"; +++ } +++ +++ # +++ # post install actions +++ # +++ +++ # in case we are running from DVD we use the tlpdb from the DVD, otherwise +++ # the one we have locally created, for all the further actions +++ my $usedtlpdb = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; +++ +++ ++ if (win32()) { +++ debug "Actual environment:\n".`set`."\n\n"; +++ debug 'Effective TEXMFCNF: '.`kpsewhich -expand-path=\$TEXMFCNF`."\n"; +++ } +++ +++ # TODO: can the following two clauses be merged? +++ if (win32()) { +++ create_uninstaller($vars{'TEXDIR'}, $vars{'TEXDIRW'}, +++ $vars{'TEXMFSYSVAR'}, $vars{'TEXMFSYSCONFIG'}); +++ } +++ # (re-)initialize batchfile for uninstalling shortcuts +++ if (win32() and !$opt_portable) { +++ mkdirhier("$TEXDIRW/tlpkg/installer") if $vars{'from_dvd'}; +++ } +++ +++ # Step 4: run the programs +++ +++ if (!$opt_portable and !$vars{'from_dvd'}) { +++ info("running mktexlsr $TEXDIR/texmf-dist $TEXDIR/texmf\n"); +++ system('mktexlsr', "$TEXDIR/texmf-dist", "$TEXDIR/texmf"); +++ } +++ +++ # we have to generate the various config file. That could be done with +++ # texconfig generate * but Win32 does not have texconfig. But we have +++ # $localtlpdb and this is simple code, so do it directly, i.e., duplicate +++ # the code from the various generate-*.pl scripts +++ +++ info("writing fmtutil.cnf data to $TEXMFSYSVAR/web2c/fmtutil.cnf\n"); +++ TeXLive::TLUtils::create_fmtutil($usedtlpdb, +++ "$TEXMFSYSVAR/web2c/fmtutil.cnf", +++ "$TEXMFLOCAL/web2c/fmtutil-local.cnf"); +++ +++ mkdirhier "$vars{'TEXMFSYSCONFIG'}/web2c"; +++ info("writing updmap.cfg to $TEXMFSYSCONFIG/web2c/updmap.cfg\n"); +++ TeXLive::TLUtils::create_updmap ($usedtlpdb, +++ "$TEXMFSYSCONFIG/web2c/updmap.cfg", +++ "$TEXMFLOCAL/web2c/updmap-local.cfg"); +++ +++ info("writing language.dat data to $TEXMFSYSVAR/tex/generic/config/language.dat\n"); +++ TeXLive::TLUtils::create_language_dat($usedtlpdb, +++ "$TEXMFSYSVAR/tex/generic/config/language.dat", +++ "$TEXMFLOCAL/tex/generic/config/language-local.dat"); +++ +++ info("writing language.def data to $TEXMFSYSVAR/tex/generic/config/language.def\n"); +++ TeXLive::TLUtils::create_language_def($usedtlpdb, +++ "$TEXMFSYSVAR/tex/generic/config/language.def", +++ "$TEXMFLOCAL/tex/generic/config/language-local.def"); +++ +++ info("running mktexlsr $TEXMFSYSVAR\n"); +++ system('mktexlsr', "$TEXMFSYSVAR"); +++ +++ info("running updmap-sys... "); +++ # system('updmap-sys', '--nohash'); +++ log(`updmap-sys --nohash 2>&1`); +++ info("done\n"); +++ +++ info("re-running mktexlsr $TEXMFSYSVAR\n"); +++ system('mktexlsr', "$TEXMFSYSVAR"); +++ +++ # now work through the options if specified at all +++ +++ # letter instead of a4 +++ if ($vars{'option_letter'}) { +++ info("Setting default paper size to letter\n"); +++ system("tlmgr", "paper", "letter"); +++ } +++ +++ # all formats option +++ if ($vars{'option_fmt'}) { +++ info("pre-generating all format files (fmtutil-sys --all), be patient..."); +++ log(`fmtutil-sys --all 2>&1`); +++ info("done\n"); +++ } +++ +++ # TODO: Should/can this be moved into the do_system_integration part? +++ # it looks like it does not do anything outside the texlive tree, so it +++ # would be fine if we do it anyway ... +++ # $opt_portable: no %install but we still want xetex postinstall +++ &{$PostInstall{'xetex'}}($TEXDIR, $TEXDIRW, $TEXMFSYSVAR, $TEXMFLOCAL) +++ if $opt_portable; +++ +++ # no do the system integration: +++ # on unix this means setting up symlinks +++ # on w32 this means adding to path, settting registry values +++ # on both, we run the TLPostActions and the postaction directives of the tlp +++ do_system_integration() if $vars{'option_sysint'}; +++} +++ +++sub do_system_integration { +++ # Run the post installation code in TLPostAction.pm +++ foreach my $package (sort keys %install) { +++ if ($install{$package} && defined($PostInstall{$package})) { +++ info("running post install action for $package\n"); +++ &{$PostInstall{$package}}($vars{'TEXDIR'}, $vars{'TEXDIRW'}, +++ $vars{'TEXMFSYSVAR'}, $vars{'TEXMFLOCAL'}); +++ } +++ } +++ # Run the post installation code in the postaction tlpsrc entries +++ my $usedtlpdb = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; +++ foreach my $package (sort keys %install) { +++ if ($install{$package}) { +++ &TeXLive::TLUtils::do_postaction_code("install", +++ $usedtlpdb->get_package($package)); +++ } +++ } +++ info ("finished with package specific postactions\n"); +++ +++ if (win32()) { +++ update_assocs(); +++ ++ my $path = TeXLive::TLWinGoo::get_system_env() -> {'/Path'}; ++ $path =~ s/[\s\x00]+$//; ++ log("Old system path: $path\n"); ++@@ -516,29 +745,97 @@ ++ # setenv_reg('TEXMFSYSVAR', $vars{'TEXMFSYSVAR'}) if $vars{'from_dvd'}; ++ setenv_reg('TEXMFCNF', $vars{'TEXMFSYSVAR'}.'/web2c') if $vars{'from_dvd'}; ++ broadcast_env(); ++- create_uninstaller($vars{'TEXDIR'}, $vars{'TEXDIRW'}, ++- $vars{'TEXMFSYSVAR'}, $vars{'TEXMFSYSCONFIG'}); +++ } else { +++ $localtlpdb->add_symlinks() ++ } ++- do_postinst_stuff(); ++- # now we save every scheme that is fully covered by the stuff we have ++- # installed to the $localtlpdb ++- foreach my $s ($tlpdb->schemes) { ++- my $stlp = $tlpdb->get_package($s); ++- die ("That cannot happen, $s not defined in tlpdb") unless defined($stlp); ++- my $incit = 1; ++- foreach my $d ($stlp->depends) { ++- if (!defined($localtlpdb->get_package($d))) { ++- $incit = 0; ++- last; +++} +++ +++ +++# we have to adjust the texmf.cnf file to the paths set in the configuration! +++sub do_texmf_cnf { +++ open(TMF,"<$vars{'TEXDIR'}/texmf/web2c/texmf.cnf") +++ or die "$vars{'TEXDIR'}/texmf/web2c/texmf.cnf not found: $!"; +++ my @texmfcnflines = ; +++ close(TMF); +++ my @newtmf; +++ my @changedtmf; +++ # we have to find TEXMFLOCAL TEXMFSYSVAR and TEXMFHOME +++ foreach my $line (@texmfcnflines) { +++ if ($line =~ m/^TEXMFLOCAL/) { +++ # by default TEXMFLOCAL = TEXDIR/../texmf-local, if this is the case +++ # we don't have to change anything from the default +++ my $deftmlocal = dirname($vars{'TEXDIR'}); +++ $deftmlocal .= "/texmf-local"; +++ if ("$vars{'TEXMFLOCAL'}" eq "$deftmlocal") { +++ push @newtmf, $line; +++ } else { +++ push @newtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; +++ push @changedtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; ++ } +++ } elsif ($line =~ m/^TEXMFSYSVAR/) { +++ # by default TEXMFSYSVAR = TEXDIR/texmf-var, if this is the case +++ # we don't have to change anything from the default +++ if ("$vars{'TEXMFSYSVAR'}" eq "$vars{'TEXDIR'}/texmf-var") { +++ push @newtmf, $line; +++ } else { +++ push @newtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; +++ push @changedtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; +++ } +++ } elsif ($line =~ m/^TEXMFSYSCONFIG/) { +++ # by default TEXMFSYSCONFIG = TEXDIR/texmf-config, if this is the case +++ # we don't have to change anything from the default +++ if ("$vars{'TEXMFSYSCONFIG'}" eq "$vars{'TEXDIR'}/texmf-config") { +++ push @newtmf, $line; +++ } else { +++ push @newtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; +++ push @changedtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; +++ } +++ } elsif ($line =~ m/^TEXMFHOME/) { +++ # kpse now expands ~ to USERPROFILE, so we don't treat win32 and +++ # unix differently +++ push @newtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; +++ if ("$vars{'TEXMFHOME'}" ne "~/texmf") { +++ push @changedtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; +++ } +++ } elsif ($line =~ m/^OSFONTDIR/) { +++ if (win32()) { +++ push @newtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; +++ push @changedtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; +++ } else { +++ push @newtmf, $line; +++ } +++ } else { +++ push @newtmf, $line; ++ } ++- if ($incit) { ++- $localtlpdb->add_tlpobj($stlp); ++- } ++ } ++- $localtlpdb->save unless $vars{'from_dvd'}; +++ my $TMF; +++ if (!$vars{'from_dvd'}) { +++ $TMF = ">$vars{'TEXDIR'}/texmf.cnf"; +++ open(TMF, $TMF) || die "open($TMF) failed: $!"; +++ print TMF <option_create_formats; ++ $vars{'option_letter'} = defined($tlpdb->option_paper) ++ && ($tlpdb->option_paper eq "letter" ? 1 : 0); ++- $vars{'option_symlinks'} = $tlpdb->option_create_symlinks; +++ $vars{'option_sysint'} = $tlpdb->option_system_integration; +++ if (win32()) { +++ $vars{'option_sysint'} = 1; +++ } ++ $vars{'sys_bin'} = $tlpdb->option_sys_bin; ++ $vars{'sys_man'} = $tlpdb->option_sys_man; ++ $vars{'sys_info'} = $tlpdb->option_sys_info; ++@@ -850,8 +1150,8 @@ ++ print $fh "$key $vars{$key}\n" if $key=~/^option_doc/; ++ print $fh "$key $vars{$key}\n" if $key=~/^option_fmt/; ++ print $fh "$key $vars{$key}\n" if $key=~/^option_src/; ++- print $fh "$key $vars{$key}\n" if $key=~/^option_symlinks/; ++- if ($vars{'option_symlinks'}) { +++ print $fh "$key $vars{$key}\n" if $key=~/^option_sysint/; +++ if ($vars{'option_sysint'} && unix()) { ++ print $fh "sys_bin ", $vars{'sys_bin'}, "\n" if $key =~ /^sys_bin/; ++ print $fh "sys_man ", $vars{'sys_man'}, "\n" if $key =~ /^sys_man/; ++ print $fh "sys_info ", $vars{'sys_info'}, "\n" if $key =~ /^sys_info/; ++@@ -948,7 +1248,7 @@ ++ $localtlpdb->option_location($location); ++ $localtlpdb->option_paper($vars{'option_letter'} ? "letter" : "a4"); ++ $localtlpdb->option_create_formats($vars{'option_fmt'} ? "1" : "0"); ++- $localtlpdb->option_create_symlinks($vars{'option_symlinks'} ? "1" : "0"); +++ $localtlpdb->option_system_integration($vars{'option_sysint'} ? "1" : "0"); ++ $localtlpdb->option_sys_bin($vars{'sys_bin'}); ++ $localtlpdb->option_sys_info($vars{'sys_info'}); ++ $localtlpdb->option_sys_man($vars{'sys_man'}); ++@@ -964,320 +1264,6 @@ ++ $localtlpdb->save() unless $vars{'from_dvd'}; ++ } ++ ++-# do_postinst_stuff has to fix up the texmf tree and install some missing ++-# files. The things to do are taken from the install-live.sh installer ++-# of former times, and should be critically checked. ++-sub do_postinst_stuff { ++- my $TEXDIR="$vars{'TEXDIR'}"; ++- my $TEXDIRW="$vars{'TEXDIRW'}"; ++- my $TEXMFSYSVAR="$vars{'TEXMFSYSVAR'}"; ++- my $TEXMFSYSCONFIG="$vars{'TEXMFSYSCONFIG'}"; ++- my $TEXMFLOCAL="$vars{'TEXMFLOCAL'}"; ++- my $tmv; ++- ++- do_texmf_cnf() unless ($opt_portable); ++- ++- ++- # final program execution ++- # we have to do several things: ++- # - clean the environment from spurious TEXMF related variables ++- # - add the bin dir to the PATH ++- # - select perl interpreter and set the correct perllib ++- # - run the programs ++- ++- # Step 1: Clean the environment ++- my @TMFVARS0=qw(VARTEXFONTS ++- TEXMF SYSTEXMF VARTEXFONTS ++- TEXMFDBS WEB2C TEXINPUTS TEXFORMATS MFBASES MPMEMS TEXPOOL MFPOOL MPPOOL ++- PSHEADERS TEXFONTMAPS TEXPSHEADERS TEXCONFIG TEXMFCNF); ++- my @TMFVARS1=qw(TEXMFMAIN TEXMFDIST TEXMFLOCAL TEXMFSYSVAR TEXMFSYSCONFIG ++- TEXMFHOME TEXMFVAR TEXMFCONFIG); ++- ++- if (defined($ENV{'TEXMFCNF'}) and !$vars{'from_dvd'} and !$opt_portable) { ++- print "WARNING: environment variable TEXMFCNF is set. ++-You should know what you are doing. ++-We will remove that for the post install actions, but all further ++-operations might be disturbed.\n\n"; ++- } ++- foreach $tmv (@TMFVARS0) { ++- delete $ENV{$tmv} if (defined($ENV{$tmv})); ++- } ++- if (!$opt_portable) { ++- foreach $tmv (@TMFVARS1) { ++- delete $ENV{$tmv} if (defined($ENV{$tmv})); ++- } ++- } ++- $ENV{'TEXMFSYSVAR'} = $vars{'TEXMFSYSVAR'} if $vars{'from_dvd'}; ++- ++- # Step 2: Setup the PATH, switch to the new Perl ++- ++- my $pathsep=(win32)? ';' : ':'; ++- my $plat_bindir="$TEXDIR/bin/$vars{'this_platform'}"; ++- my $perl_bindir="$TEXDIR/tlpkg/tlperl/bin"; ++- my $perl_libdir="$TEXDIR/tlpkg/tlperl/lib"; ++- ++-## This won't do any good; ++-## have to remove other tex directories in calling batchfile ++-# if (win32) { ++-# debug("Removing other TeXs from path\n"); ++-# my @newpt = (); ++-# foreach my $d (split (';', $ENV{'PATH'})) { ++-# push @newpt, $d unless TeXLive::TLWinGoo::is_a_texdir($d); ++-# } ++-# $ENV{'PATH'} = join($pathsep, @newpt); ++-# debug("Path after removals(s):\n $ENV{'PATH'}\n"); ++-# } ++- ++- debug("Prepending $plat_bindir to PATH\n"); ++- ++- $ENV{'PATH'}="$plat_bindir" . "$pathsep" . "$ENV{'PATH'}"; ++- ++- if (win32) { ++- debug("Prepending $perl_bindir to PATH\n"); ++- $ENV{'PATH'}="$perl_bindir" . "$pathsep" . "$ENV{'PATH'}"; ++- $ENV{'PATH'} =~ s!/!\\!g; ++- } ++- ++- debug("\nNew PATH is now:\n"); ++- foreach my $dir (split $pathsep, $ENV{'PATH'}) { ++- debug(" $dir\n"); ++- } ++- debug("\n"); ++- ++- if (win32) { ++- $ENV{'PERL5LIB'}="$perl_libdir"; ++- } ++- ++- # ++- # post install actions ++- # ++- ++- if (win32()) { ++- debug "Actual environment:\n".`set`."\n\n"; ++- debug 'Effective TEXMFCNF: '.`kpsewhich -expand-path=\$TEXMFCNF`."\n"; ++- } ++- ++- # (re-)initialize batchfile for uninstalling shortcuts ++- if (win32() and !$opt_portable) { ++- mkdirhier("$TEXDIRW/tlpkg/installer") if $vars{'from_dvd'}; ++- init_unshortbat($TEXDIRW); ++- } ++- ++- foreach my $package (sort keys %install) { ++- if ($install{$package} && defined($PostInstall{$package})) { ++- info("running post install action for $package\n"); ++- &{$PostInstall{$package}}($TEXDIR, $TEXDIRW, $TEXMFSYSVAR, $TEXMFLOCAL); ++- } ++- } ++- # $opt_portable: no %install but we still want xetex postinstall ++- &{$PostInstall{'xetex'}}($TEXDIR, $TEXDIRW, $TEXMFSYSVAR, $TEXMFLOCAL) ++- if $opt_portable; ++- update_assocs() if win32(); ++- ++- # Step 4: run the programs ++- ++- if (!$opt_portable and !$vars{'from_dvd'}) { ++- info("running mktexlsr $TEXDIR/texmf-dist $TEXDIR/texmf\n"); ++- system('mktexlsr', "$TEXDIR/texmf-dist", "$TEXDIR/texmf"); ++- } ++- ++- # we have to generate the various config file. That could be done with ++- # texconfig generate * but Win32 does not have texconfig. But we have ++- # $localtlpdb and this is simple code, so do it directly, i.e., duplicate ++- # the code from the various generate-*.pl scripts ++- info("writing fmtutil.cnf data to $TEXMFSYSVAR/web2c/fmtutil.cnf\n"); ++- my $tlp = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; ++- TeXLive::TLUtils::create_fmtutil($tlp, #$localtlpdb, ++- "$TEXMFSYSVAR/web2c/fmtutil.cnf", ++- "$TEXMFLOCAL/web2c/fmtutil-local.cnf"); ++- ++- mkdirhier "$vars{'TEXMFSYSCONFIG'}/web2c"; ++- info("writing updmap.cfg to $TEXMFSYSCONFIG/web2c/updmap.cfg\n"); ++- TeXLive::TLUtils::create_updmap ($tlp, #$localtlpdb, ++- "$TEXMFSYSCONFIG/web2c/updmap.cfg", ++- "$TEXMFLOCAL/web2c/updmap-local.cfg"); ++- ++- info("writing language.dat data to $TEXMFSYSVAR/tex/generic/config/language.dat\n"); ++- TeXLive::TLUtils::create_language_dat($tlp, #$localtlpdb, ++- "$TEXMFSYSVAR/tex/generic/config/language.dat", ++- "$TEXMFLOCAL/tex/generic/config/language-local.dat"); ++- ++- info("writing language.def data to $TEXMFSYSVAR/tex/generic/config/language.def\n"); ++- TeXLive::TLUtils::create_language_def($tlp, #$localtlpdb, ++- "$TEXMFSYSVAR/tex/generic/config/language.def", ++- "$TEXMFLOCAL/tex/generic/config/language-local.def"); ++- ++- info("running mktexlsr $TEXMFSYSVAR\n"); ++- system('mktexlsr', "$TEXMFSYSVAR"); ++- ++- info("running updmap-sys... "); ++- # system('updmap-sys', '--nohash'); ++- log(`updmap-sys --nohash 2>&1`); ++- info("done\n"); ++- ++- info("re-running mktexlsr $TEXMFSYSVAR\n"); ++- system('mktexlsr', "$TEXMFSYSVAR"); ++- ++- # now work through the options if specified at all ++- ++- # letter instead of a4 ++- if ($vars{'option_letter'}) { ++- info("Setting default paper size to letter\n"); ++- if (platform() eq "hppa-hpux") { ++- # we didn't get a texlua binary for hppa-hpux, so try texconfig ++- system("texconfig", "paper", "letter"); ++- } else { ++- system("texlua", "$TEXDIR/texmf/scripts/texlive/texconf.tlu", "--sys", "--noformat", "paper", "letter"); ++- } ++- } ++- ++- # all formats option ++- if ($vars{'option_fmt'}) { ++- info("pre-generating all format files (fmtutil-sys --all), be patient..."); ++- #system('fmtutil-sys', '--all'); ++- # try to capture that output ++- log(`fmtutil-sys --all 2>&1`); ++- info("done\n"); ++- } ++- ++- # option_links ++- if ($vars{'option_symlinks'}) { ++- # bin files ++- my @files; ++- mkdirhier $vars{'sys_bin'}; ++- if (-w $vars{'sys_bin'}) { ++- info("linking binaries to $vars{'sys_bin'}\n"); ++- @files = `ls $plat_bindir`; ++- chomp(@files); ++- `cd "$vars{'sys_bin'}" && rm -f @files`; ++- `ln -s "$plat_bindir/"* "$vars{'sys_bin'}"`; ++- } else { ++- info("destination of bin symlink $vars{'sys_bin'} not writable, " ++- . "no linking of bin files done.\n"); ++- } ++- if ($vars{'option_doc'}) { ++- # info files ++- mkdirhier $vars{'sys_info'}; ++- if (-w $vars{'sys_info'}) { ++- info("linking info pages to $vars{'sys_info'}\n"); ++- @files = `ls "$TEXDIR/texmf/doc/info"`; ++- chomp(@files); ++- `cd "$vars{'sys_info'}" && rm -f @files`; ++- `ln -s "$TEXDIR/texmf/doc/info/"*info* "$vars{'sys_info'}"`; ++- } else { ++- info("destination of info symlink $vars{'sys_info'} not writable, " ++- . "no linking of info files done.\n"); ++- } ++- # man files ++- mkdirhier $vars{'sys_man'}; ++- if (-w $vars{'sys_man'}) { ++- info("linking man pages to $vars{'sys_man'}\n"); ++- my $foo = `(cd "$TEXDIR/texmf/doc/man" && echo *)`; ++- my @mans = split ' ', $foo; ++- chomp(@mans); ++- foreach my $m (@mans) { ++- my $mandir = "$TEXDIR/texmf/doc/man/$m"; ++- next unless -d $mandir; ++- mkdirhier "$vars{'sys_man'}/$m"; ++- next unless -w "$vars{'sys_man'}/$m"; ++- @files = `ls "$mandir"`; ++- chomp(@files); ++- `cd "$vars{'sys_man'}/$m" && rm -f @files`; ++- `ln -s "$mandir/"* "$vars{'sys_man'}/$m"`; ++- } ++- } else { ++- info("destination of man symlink $vars{'sys_man'} not writable, " ++- . "no linking of man files done.\n"); ++- } ++- } ++- } ++-} ++- ++- ++-# we have to adjust the texmf.cnf file to the paths set in the configuration! ++-sub do_texmf_cnf { ++- open(TMF,"<$vars{'TEXDIR'}/texmf/web2c/texmf.cnf") ++- or die "$vars{'TEXDIR'}/texmf/web2c/texmf.cnf not found: $!"; ++- my @texmfcnflines = ; ++- close(TMF); ++- my @newtmf; ++- my @changedtmf; ++- # we have to find TEXMFLOCAL TEXMFSYSVAR and TEXMFHOME ++- foreach my $line (@texmfcnflines) { ++- if ($line =~ m/^TEXMFLOCAL/) { ++- # by default TEXMFLOCAL = TEXDIR/../texmf-local, if this is the case ++- # we don't have to change anything from the default ++- my $deftmlocal = dirname($vars{'TEXDIR'}); ++- $deftmlocal .= "/texmf-local"; ++- if ("$vars{'TEXMFLOCAL'}" eq "$deftmlocal") { ++- push @newtmf, $line; ++- } else { ++- push @newtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; ++- push @changedtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; ++- } ++- } elsif ($line =~ m/^TEXMFSYSVAR/) { ++- # by default TEXMFSYSVAR = TEXDIR/texmf-var, if this is the case ++- # we don't have to change anything from the default ++- if ("$vars{'TEXMFSYSVAR'}" eq "$vars{'TEXDIR'}/texmf-var") { ++- push @newtmf, $line; ++- } else { ++- push @newtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; ++- push @changedtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; ++- } ++- } elsif ($line =~ m/^TEXMFSYSCONFIG/) { ++- # by default TEXMFSYSCONFIG = TEXDIR/texmf-config, if this is the case ++- # we don't have to change anything from the default ++- if ("$vars{'TEXMFSYSCONFIG'}" eq "$vars{'TEXDIR'}/texmf-config") { ++- push @newtmf, $line; ++- } else { ++- push @newtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; ++- push @changedtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; ++- } ++- } elsif ($line =~ m/^TEXMFHOME/) { ++- # kpse now expands ~ to USERPROFILE, so we don't treat win32 and ++- # unix differently ++- push @newtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; ++- if ("$vars{'TEXMFHOME'}" ne "~/texmf") { ++- push @changedtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; ++- } ++- } elsif ($line =~ m/^OSFONTDIR/) { ++- if (win32()) { ++- push @newtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; ++- push @changedtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; ++- } else { ++- push @newtmf, $line; ++- } ++- } else { ++- push @newtmf, $line; ++- } ++- } ++- my $TMF; ++- if (!$vars{'from_dvd'}) { ++- $TMF = ">$vars{'TEXDIR'}/texmf.cnf"; ++- open(TMF, $TMF) || die "open($TMF) failed: $!"; ++- print TMF <$tlpdbfile_quote")) { ++- debug("un-lzmaing $lzmafile failed, tryin gplain file\n"); ++- # to be sure we unlink the lzma file and the tlpdbfile ++- unlink($lzmafile); +++ if (system("$::progs{'xzdec'} <$xzfile_quote >$tlpdbfile_quote")) { +++ debug("un-xzing $xzfile failed, tryin gplain file\n"); +++ # to be sure we unlink the xz file and the tlpdbfile +++ unlink($xzfile); ++ unlink($tlpdbfile); ++ } else { ++- unlink($lzmafile); +++ unlink($xzfile); ++ open($retfh, "<$tlpdbfile") || die "$0: open($tlpdbfile) failed: $!"; ++- debug("found the uncompressed lzma file\n"); +++ debug("found the uncompressed xz file\n"); ++ } ++ } ++ } else { ++- debug("no lzmadec defined, not trying tlpdb.lzma ...\n"); +++ debug("no xzdec defined, not trying tlpdb.xz ...\n"); ++ } ++ if (!defined($retfh)) { ++- debug("TLPDB: downloading $path.lzma didn't succeed, try $path\n"); ++- # lzma did not succeed, so try the normal file +++ debug("TLPDB: downloading $path.xz didn't succeed, try $path\n"); +++ # xz did not succeed, so try the normal file ++ $retfh = TeXLive::TLUtils::download_file($path, "|"); ++ if (!$retfh) { ++ die "open tlpdb($path) failed: $!"; ++@@ -277,7 +277,7 @@ ++ } ++ } until (!$ret); ++ tlwarn("unusable location $path, could not load any packages\n") if (!$found); ++- # remove the un-lzma-ed tlpdb file from temp dir +++ # remove the un-xz-ed tlpdb file from temp dir ++ # THAT IS RACY!!! we should fix that in some better way with tempfile ++ unlink($tlpdbfile) if $tlpdbfile; ++ return($found); ++@@ -394,13 +394,13 @@ ++ $container .= ".zip"; ++ $unpackprog="unzip"; ++ $args="-o -qq $container -d $dest"; ++- } elsif (-r "$container.lzma") { ++- $container .= ".lzma"; +++ } elsif (-r "$container.xz") { +++ $container .= ".xz"; ++ $unpackprog="NO_IDEA_HOW_TO_UNPACK_LZMA"; ++ $args="NO IDEA WHAT ARGS IT NEEDS"; ++- die "$0: lzma checked for but not implemented, maybe update TLPDB.pm"; +++ die "$0: xz checked for but not implemented, maybe update TLPDB.pm"; ++ } else { ++- die "$0: No package $container (.zip or .lzma) in $ziplocation"; +++ die "$0: No package $container (.zip or .xz) in $ziplocation"; ++ } ++ tlwarn("Huuu, this needs testing and error checking!\n"); ++ tlwarn("Should we use -a -- adapt line endings etc?\n"); + @@ -788,7 +788,7 @@ + read-only function; you cannot change the root of the TLPDB using this + function. +@@ -144,9 +976,18 @@ + } + + =item C<< $tlpdb->updmap_cfg_lines >> ++@@ -1420,7 +1463,7 @@ ++ =item C> ++ ++ This option specifies a format for containers. The currently supported ++-formats are C and C. But note that C is untested. +++formats are C and C. But note that C is untested. ++ ++ =back ++ + Index: tlpkg/TeXLive/TLConfig.pm + =================================================================== +---- tlpkg/TeXLive/TLConfig.pm (revision 12171) ++--- tlpkg/TeXLive/TLConfig.pm (revision 12198) + +++ tlpkg/TeXLive/TLConfig.pm (working copy) + @@ -11,6 +11,7 @@ + use vars qw( @ISA @EXPORT_OK @EXPORT ); +@@ -172,8 +1013,13 @@ + # Meta Categories do not ship files, but call only for other packages + our @MetaCategories = qw/Collection Scheme/; + our $MetaCategoriesRegexp = '(Collection|Scheme)'; +-@@ -57,14 +63,14 @@ ++@@ -53,18 +59,18 @@ ++ our $BlockSize = 4096; + ++ # the way we package things on the web ++-our $DefaultContainerExtension = "tar.lzma"; +++our $DefaultContainerExtension = "tar.xz"; ++ + our $Archive = "archive"; + our $TeXLiveServerURL = "http://mirror.ctan.org"; + -our $TeXLiveServerPath = "systems/texlive/tlnet/2008"; +@@ -209,7 +1055,7 @@ + + Index: tlpkg/TeXLive/TLPostActions.pm + =================================================================== +---- tlpkg/TeXLive/TLPostActions.pm (revision 12171) ++--- tlpkg/TeXLive/TLPostActions.pm (revision 12198) + +++ tlpkg/TeXLive/TLPostActions.pm (working copy) + @@ -20,48 +20,13 @@ + use TeXLive::TLUtils qw(win32 mkdirhier copy conv_to_w32_path log debug info +@@ -859,7 +1705,7 @@ + + Index: tlpkg/TeXLive/TLPSRC.pm + =================================================================== +---- tlpkg/TeXLive/TLPSRC.pm (revision 12171) ++--- tlpkg/TeXLive/TLPSRC.pm (revision 12198) + +++ tlpkg/TeXLive/TLPSRC.pm (working copy) + @@ -30,6 +30,7 @@ + srcpatterns => $params{'srcpatterns'}, +@@ -936,8 +1782,17 @@ + + Continuation lines are supported via a trailing backslash. That is, if + the C<.tlpsrc> file contains two physical lines like this: +-@@ -638,7 +655,7 @@ +- is only "lzma", which generates .tar.lzma files. zip can be supported. ++@@ -631,14 +648,14 @@ ++ ++ This package contains configuration options for the TeX Live archive. ++ If container_split_{doc,src}_files occurs in the depend lines the ++-{doc,src} files are split into separate containers (.tar.lzma) +++{doc,src} files are split into separate containers (.tar.xz) ++ during container build time. Note that this has NO effect on the ++ appearance within the texlive.tlpdb. It is only on container level. ++ The container_format/XXXXX specifies the format, currently allowed ++-is only "lzma", which generates .tar.lzma files. zip can be supported. +++is only "xz", which generates .tar.xz files. zip can be supported. + release/NNNN specifies the release number as used in the installer. + + -=item B<00texlive-installation.config> +@@ -999,7 +1854,7 @@ + adds a pattern (next section) to the respective list of patterns. + Index: tlpkg/TeXLive/TLPOBJ.pm + =================================================================== +---- tlpkg/TeXLive/TLPOBJ.pm (revision 12171) ++--- tlpkg/TeXLive/TLPOBJ.pm (revision 12198) + +++ tlpkg/TeXLive/TLPOBJ.pm (working copy) + @@ -29,6 +29,7 @@ + docfiles => defined($params{'docfiles'}) ? $params{'docfiles'} : [], +@@ -1052,6 +1907,61 @@ + if (defined($self->{'docfiles'}) && (@{$self->{'docfiles'}})) { + print $fd "docfiles\n"; + foreach (sort @{$self->{'docfiles'}}) { ++@@ -419,8 +435,8 @@ ++ ++ sub make_container { ++ my ($self,$type,$instroot,$destdir,$containername,$relative) = @_; ++- if (($type ne "lzma") && ($type ne "tar")) { ++- die "$0: TLPOBJ supports tar and lzma containers, not $type"; +++ if (($type ne "xz") && ($type ne "tar")) { +++ die "$0: TLPOBJ supports tar and xz containers, not $type"; ++ } ++ if (!defined($containername)) { ++ $containername = $self->name; ++@@ -484,21 +500,21 @@ ++ if ($type eq "tar") { ++ $containername = $tarname; ++ } else { ++- $containername = "$tarname.lzma"; +++ $containername = "$tarname.xz"; ++ } ++ ++ # start the fun ++ my $tar = $::progs{'tar'}; ++- my $lzma; +++ my $xz; ++ if (!defined($tar)) { ++ tlwarn("$0: programs not set up, trying \"tar\".\n"); ++ $tar = "tar"; ++ } ++- if ($type eq "lzma") { ++- $lzma = $::progs{'lzma'}; ++- if (!defined($lzma)) { ++- tlwarn("$0: programs not set up, trying \"lzma\".\n"); ++- $lzma = "lzma"; +++ if ($type eq "xz") { +++ $xz = $::progs{'xz'}; +++ if (!defined($xz)) { +++ tlwarn("$0: programs not set up, trying \"xz\".\n"); +++ $xz = "xz"; ++ } ++ } ++ ++@@ -564,11 +580,11 @@ ++ xsystem(@cmdline); ++ ++ # compress it. ++- if ($type eq "lzma") { +++ if ($type eq "xz") { ++ if (-r "$destdir/$tarname") { ++- system($lzma, "--force", "-z", "$destdir/$tarname"); +++ system($xz, "--force", "-z", "$destdir/$tarname"); ++ } else { ++- tlwarn("$0: Couldn't find $destdir/$tarname to run $lzma\n"); +++ tlwarn("$0: Couldn't find $destdir/$tarname to run $xz\n"); ++ return (0, 0, ""); ++ } ++ } + @@ -837,7 +853,7 @@ + } else { + push @maps, "disable $3"; +@@ -1073,10 +1983,82 @@ + sub containerdir { + my @self = shift; + if (@_) { $_containerdir = $_[0] } ++@@ -1187,7 +1208,7 @@ ++ architectures as keys, similar to the C functions (see above). ++ ++ Futhermore, if the tlpobj is contained ina tlpdb which describes a media ++-where the files are distributed in packed format (usually as .tar.lzma), +++where the files are distributed in packed format (usually as .tar.xz), ++ there are 6 more possible keys: ++ ++ $tlpobj->containersize ++@@ -1249,11 +1270,11 @@ ++ in C<$destdir> (if not defined then C<< TLPOBJ->containerdir >> is used). ++ ++ The C<$type> variable specifies the type of container to be used. ++-Currently only C or C are allowed, and are generating ++-zip files and tar.lzma files, respectively. +++Currently only C or C are allowed, and are generating +++zip files and tar.xz files, respectively. ++ ++ The file name of the created container file is C<$containername.extension>, ++-where extension is either C<.zip> or C<.tar.lzma>, depending on the +++where extension is either C<.zip> or C<.tar.xz>, depending on the ++ setting of C<$type>. If no C<$containername> is specified the package name ++ is used. ++ + Index: tlpkg/TeXLive/TLMedia.pm + =================================================================== +---- tlpkg/TeXLive/TLMedia.pm (revision 12171) ++--- tlpkg/TeXLive/TLMedia.pm (revision 12198) + +++ tlpkg/TeXLive/TLMedia.pm (working copy) ++@@ -146,10 +146,10 @@ ++ } elsif ($media eq 'CD') { ++ if (-r "$location/$Archive/$pkg.zip") { ++ $container = "$location/$Archive/$pkg.zip"; ++- } elsif (-r "$location/$Archive/$pkg.tar.lzma") { ++- $container = "$location/$Archive/$pkg.tar.lzma"; +++ } elsif (-r "$location/$Archive/$pkg.tar.xz") { +++ $container = "$location/$Archive/$pkg.tar.xz"; ++ } else { ++- tlwarn("Cannot find a package $pkg (.zip or .lzma) in $location/$Archive\n"); +++ tlwarn("Cannot find a package $pkg (.zip or .xz) in $location/$Archive\n"); ++ next; ++ } ++ } elsif (&media eq 'NET') { ++@@ -164,20 +164,20 @@ ++ # - src/doc files should be installed ++ # (- the package is not already a split one (like .i386-linux)) ++ # the above test has been removed because it would mean that ++- # texlive.infra.doc.tar.lzma +++ # texlive.infra.doc.tar.xz ++ # will never be installed, and we do already check that there ++ # are at all src/doc files, which in split packages of the form ++ # foo.ARCH are not present. And if they are present, than that is fine, ++- # too (bin-foobar.win32.doc.tar.lzma) +++ # too (bin-foobar.win32.doc.tar.xz) ++ # - there are actually src/doc files present ++ if ($container_src_split && $opt_src && $tlpobj->srcfiles) { ++ my $srccontainer = $container; ++- $srccontainer =~ s/(\.tar\.lzma|\.zip)$/.source$1/; +++ $srccontainer =~ s/(\.tar\.xz|\.zip)$/.source$1/; ++ $self->_install_package($srccontainer,\@installfiles,$totlpdb) || return(0); ++ } ++ if ($container_doc_split && $real_opt_doc && $tlpobj->docfiles) { ++ my $doccontainer = $container; ++- $doccontainer =~ s/(\.tar\.lzma|\.zip)$/.doc$1/; +++ $doccontainer =~ s/(\.tar\.xz|\.zip)$/.doc$1/; ++ $self->_install_package($doccontainer,\@installfiles,$totlpdb) || return(0); ++ } ++ } ++@@ -190,7 +190,7 @@ ++ $tlpobj->clear_docfiles; ++ } ++ # we have to write out the tlpobj file since it is contained in the ++- # archives (.tar.lzma) but at DVD install time we don't have them +++ # archives (.tar.xz) but at DVD install time we don't have them ++ my $tlpod = $totlpdb->root . "/tlpkg/tlpobj"; ++ mkdirhier( $tlpod ); ++ open(TMP,">$tlpod/".$tlpobj->name.".tlpobj") or + @@ -208,6 +208,9 @@ + info("running post install action for $pkg\n"); + &{$PostInstall{$pkg}}($totlpdb->root); +@@ -1087,9 +2069,92 @@ + } + return \%ret; + } ++@@ -228,8 +231,8 @@ ++ ++ # we assume that $::progs has been set up! ++ my $wget = $::progs{'wget'}; ++- my $lzmadec = $::progs{'lzmadec'}; ++- if (!defined($wget) || !defined($lzmadec)) { +++ my $xzdec = $::progs{'xzdec'}; +++ if (!defined($wget) || !defined($xzdec)) { ++ tlwarn("_install_package: programs not set up properly, strange.\n"); ++ return(0); ++ } ++@@ -246,27 +249,27 @@ ++ } ++ # we always assume that copy will work ++ return(1); ++- } elsif ($what =~ m,\.tar(\.lzma)?$,) { ++- my $type = defined($1) ? "lzma" : "tar"; +++ } elsif ($what =~ m,\.tar(\.xz)?$,) { +++ my $type = defined($1) ? "xz" : "tar"; ++ ++ # this is the case when we install from CD or the NET, or a backup ++ # ++- # in all other cases we create temp files .tar.lzma (or use the present ++- # one), lzmadec them, and then call tar +++ # in all other cases we create temp files .tar.xz (or use the present +++ # one), xzdec them, and then call tar ++ ++ my $fn = basename($what); ++ mkdirhier("$target/temp"); ++ my $tarfile; ++ my $remove_tarfile = 1; ++- if ($type eq "lzma") { ++- my $lzmafile = "$target/temp/$fn"; ++- $tarfile = "$target/temp/$fn"; $tarfile =~ s/\.lzma$//; ++- my $lzmafile_quote = $lzmafile; +++ if ($type eq "xz") { +++ my $xzfile = "$target/temp/$fn"; +++ $tarfile = "$target/temp/$fn"; $tarfile =~ s/\.xz$//; +++ my $xzfile_quote = $xzfile; ++ my $tarfile_quote = $tarfile; ++ my $target_quote = $target; ++ if (win32()) { ++- $lzmafile =~ s!/!\\!g; ++- $lzmafile_quote = "\"$lzmafile\""; +++ $xzfile =~ s!/!\\!g; +++ $xzfile_quote = "\"$xzfile\""; ++ $tarfile =~ s!/!\\!g; ++ $tarfile_quote = "\"$tarfile\""; ++ $target =~ s!/!\\!g; ++@@ -275,11 +278,11 @@ ++ if ($what =~ m,http://|ftp://,) { ++ # we are installing from the NET ++ # download the file and put it into temp ++- if (!download_file($what, $lzmafile) || (! -r $lzmafile)) { +++ if (!download_file($what, $xzfile) || (! -r $xzfile)) { ++ tlwarn("Downloading \n"); ++ tlwarn(" $what\n"); ++ tlwarn("did not succeed, please retry.\n"); ++- unlink($tarfile, $lzmafile); +++ unlink($tarfile, $xzfile); ++ return(0); ++ } ++ } else { ++@@ -287,14 +290,14 @@ ++ # copy it to temp ++ copy($what, "$target/temp"); ++ } ++- debug("un-lzmaing $lzmafile to $tarfile\n"); ++- system("$lzmadec < $lzmafile_quote > $tarfile_quote"); +++ debug("un-xzing $xzfile to $tarfile\n"); +++ system("$xzdec < $xzfile_quote > $tarfile_quote"); ++ if (! -f $tarfile) { ++- tlwarn("_install_package: Unpacking $lzmafile failed, please retry.\n"); ++- unlink($tarfile, $lzmafile); +++ tlwarn("_install_package: Unpacking $xzfile failed, please retry.\n"); +++ unlink($tarfile, $xzfile); ++ return(0); ++ } ++- unlink($lzmafile); +++ unlink($xzfile); ++ } else { ++ $tarfile = "$target/temp/$fn"; ++ if ($what =~ m,http://|ftp://,) { + Index: tlpkg/TeXLive/TLUtils.pm + =================================================================== +---- tlpkg/TeXLive/TLUtils.pm (revision 12171) ++--- tlpkg/TeXLive/TLUtils.pm (revision 12198) + +++ tlpkg/TeXLive/TLUtils.pm (working copy) + @@ -56,6 +56,7 @@ + TeXLive::TLUtils::create_language_def($tlpdb,$dest,$localconf); +@@ -1099,6 +2164,168 @@ + + =head2 Miscellaneous + ++@@ -1006,10 +1007,10 @@ ++ } elsif ($media eq 'CD') { ++ if (-r "$root/$Archive/$package.zip") { ++ $container = "$root/$Archive/$package.zip"; ++- } elsif (-r "$root/$Archive/$package.tar.lzma") { ++- $container = "$root/$Archive/$package.tar.lzma"; +++ } elsif (-r "$root/$Archive/$package.tar.xz") { +++ $container = "$root/$Archive/$package.tar.xz"; ++ } else { ++- tlwarn("No package $package (.zip or .lzma) in $root/$Archive\n"); +++ tlwarn("No package $package (.zip or .xz) in $root/$Archive\n"); ++ next; ++ } ++ } elsif ($media eq 'NET') { ++@@ -1036,7 +1037,7 @@ ++ # - there are actually src/doc files present ++ if ($container_src_split && $opt_src && $tlpobj->srcfiles) { ++ my $srccontainer = $container; ++- $srccontainer =~ s/(\.tar\.lzma|\.zip)$/.source$1/; +++ $srccontainer =~ s/(\.tar\.xz|\.zip)$/.source$1/; ++ if (!install_package($srccontainer, $tlpobj->srccontainersize, ++ $tlpobj->srccontainermd5, \@installfiles, ++ $totlpdb->root, $vars{'this_platform'})) { ++@@ -1045,7 +1046,7 @@ ++ } ++ if ($container_doc_split && $real_opt_doc && $tlpobj->docfiles) { ++ my $doccontainer = $container; ++- $doccontainer =~ s/(\.tar\.lzma|\.zip)$/.doc$1/; +++ $doccontainer =~ s/(\.tar\.xz|\.zip)$/.doc$1/; ++ if (!install_package($doccontainer, ++ $tlpobj->doccontainersize, ++ $tlpobj->doccontainermd5, \@installfiles, ++@@ -1064,7 +1065,7 @@ ++ } ++ $totlpdb->add_tlpobj($tlpobj); ++ # we have to write out the tlpobj file since it is contained in the ++- # archives (.tar.lzma) but at DVD install time we don't have them +++ # archives (.tar.xz) but at DVD install time we don't have them ++ my $tlpod = $totlpdb->root . "/tlpkg/tlpobj"; ++ mkdirhier( $tlpod ); ++ open(TMP,">$tlpod/".$tlpobj->name.".tlpobj") || ++@@ -1097,11 +1098,11 @@ ++ account. ++ ++ If C<$what> starts with C or C then C<$what> is ++-downloaded from the net and piped through C and C. +++downloaded from the net and piped through C and C. ++ ++-If $what ends with C<.tar.lzma> (but does not start with C or +++If $what ends with C<.tar.xz> (but does not start with C or ++ C, but possibly with C) it is assumed to be a readable ++-file on the system and is likewise piped through C and C. +++file on the system and is likewise piped through C and C. ++ ++ In both of these cases currently the list C<$@filelistref> currently ++ is not taken into account (should be fixed!). ++@@ -1117,9 +1118,9 @@ ++ ++ # we assume that $::progs has been set up! ++ my $wget = $::progs{'wget'}; ++- my $lzmadec = $::progs{'lzmadec'}; ++- if (!defined($wget) || !defined($lzmadec)) { ++- tlwarn("install_package: wget/lzmadec programs not set up properly.\n"); +++ my $xzdec = $::progs{'xzdec'}; +++ if (!defined($wget) || !defined($xzdec)) { +++ tlwarn("install_package: wget/xzdec programs not set up properly.\n"); ++ return 0; ++ } ++ if (ref $what) { ++@@ -1132,35 +1133,35 @@ ++ mkdirhier("$target/$dn"); ++ copy "$root/$file", "$target/$dn"; ++ } ++- } elsif ($what =~ m,\.tar.lzma$,) { +++ } elsif ($what =~ m,\.tar.xz$,) { ++ # this is the case when we install from CD or the NET ++ # ++- # in all other cases we create temp files .tar.lzma (or use the present ++- # one), lzmadec them, and then call tar +++ # in all other cases we create temp files .tar.xz (or use the present +++ # one), xzdec them, and then call tar ++ ++ my $fn = basename($what); ++ mkdirhier("$target/temp"); ++- my $lzmafile = "$target/temp/$fn"; ++- my $tarfile = "$target/temp/$fn"; $tarfile =~ s/\.lzma$//; ++- my $lzmafile_quote = $lzmafile; +++ my $xzfile = "$target/temp/$fn"; +++ my $tarfile = "$target/temp/$fn"; $tarfile =~ s/\.xz$//; +++ my $xzfile_quote = $xzfile; ++ my $tarfile_quote = $tarfile; ++ if (win32()) { ++- $lzmafile =~ s!/!\\!g; +++ $xzfile =~ s!/!\\!g; ++ $tarfile =~ s!/!\\!g; ++ $target =~ s!/!\\!g; ++ } ++- $lzmafile_quote = "\"$lzmafile\""; +++ $xzfile_quote = "\"$xzfile\""; ++ $tarfile_quote = "\"$tarfile\""; ++ my $gotfiledone = 0; ++- if (-r $lzmafile) { +++ if (-r $xzfile) { ++ # check that the downloaded file is not partial ++ if ($whatsize >= 0) { ++ # we have the size given, so check that first ++- my $size = (stat $lzmafile)[7]; +++ my $size = (stat $xzfile)[7]; ++ if ($size == $whatsize) { ++ # we want to check also the md5sum if we have it present ++ if ($whatmd5) { ++- if (tlmd5($lzmafile) eq $whatmd5) { +++ if (tlmd5($xzfile) eq $whatmd5) { ++ $gotfiledone = 1; ++ } else { ++ tlwarn("Downloaded $what, size equal, but md5sum differs;\n", ++@@ -1174,12 +1175,12 @@ ++ } ++ } else { ++ tlwarn("Partial download of $what found, removing it.\n"); ++- unlink($tarfile, $lzmafile); +++ unlink($tarfile, $xzfile); ++ } ++ } else { ++ # ok no size information, hopefully we have md5 sums ++ if ($whatmd5) { ++- if (tlmd5($lzmafile) eq $whatmd5) { +++ if (tlmd5($xzfile) eq $whatmd5) { ++ $gotfiledone = 1; ++ } else { ++ tlwarn("Downloaded file, but md5sum differs, removing it.\n"); ++@@ -1190,14 +1191,14 @@ ++ $gotfiledone = 1; ++ } ++ } ++- debug("Reusing already downloaded container $lzmafile\n") +++ debug("Reusing already downloaded container $xzfile\n") ++ if ($gotfiledone); ++ } ++ if (!$gotfiledone) { ++ if ($what =~ m,http://|ftp://,) { ++ # we are installing from the NET ++ # download the file and put it into temp ++- if (!download_file($what, $lzmafile) || (! -r $lzmafile)) { +++ if (!download_file($what, $xzfile) || (! -r $xzfile)) { ++ tlwarn("Downloading $what did not succeed.\n"); ++ return 0; ++ } ++@@ -1207,10 +1208,10 @@ ++ copy($what, "$target/temp"); ++ } ++ } ++- debug("un-lzmaing $lzmafile to $tarfile\n"); ++- system("$lzmadec < $lzmafile_quote > $tarfile_quote"); +++ debug("un-xzing $xzfile to $tarfile\n"); +++ system("$xzdec < $xzfile_quote > $tarfile_quote"); ++ if (! -f $tarfile) { ++- tlwarn("Unpacking $lzmafile did not succeed.\n"); +++ tlwarn("Unpacking $xzfile did not succeed.\n"); ++ return 0; ++ } ++ if (!TeXLive::TLUtils::untar($tarfile, $target, 1)) { + @@ -1224,7 +1225,111 @@ + return 1; + } +@@ -1211,9 +2438,55 @@ + =item C + + Unpacked C<$tarfile> in C<$targetdir> (changing directories to ++@@ -1268,8 +1373,8 @@ ++ =item C ++ ++ Populate the global C<$::progs> hash containing the paths to the ++-programs C, C, C. The C<$bindir> argument specifies ++-the path to the location of the C binaries, the C<$platform> +++programs C, C, C. The C<$bindir> argument specifies +++the path to the location of the C binaries, the C<$platform> ++ gives the TeX Live platform name, used as the extension on our ++ executables. If a program is not present in the TeX Live tree, we also ++ check along PATH (without the platform extension.) ++@@ -1283,17 +1388,17 @@ ++ my $ok = 1; ++ ++ $::progs{'wget'} = "wget"; ++- $::progs{'lzmadec'} = "lzmadec"; ++- $::progs{'lzma'} = "lzma"; +++ $::progs{'xzdec'} = "xzdec"; +++ $::progs{'xz'} = "xz"; ++ $::progs{'tar'} = "tar"; ++ ++ if ($^O =~ /^MSWin(32|64)$/i) { ++ $::progs{'wget'} = conv_to_w32_path("$bindir/wget/wget.exe"); ++ $::progs{'tar'} = conv_to_w32_path("$bindir/tar.exe"); ++- $::progs{'lzmadec'} = conv_to_w32_path("$bindir/lzma/lzmadec.win32.exe"); ++- $::progs{'lzma'} = conv_to_w32_path("$bindir/lzma/lzma.exe"); ++- for my $prog ("lzmadec", "wget") { ++- my $opt = $prog eq "lzmadec" ? "--help" : "--version"; +++ $::progs{'xzdec'} = conv_to_w32_path("$bindir/xz/xzdec.win32.exe"); +++ $::progs{'xz'} = conv_to_w32_path("$bindir/xz/xz.exe"); +++ for my $prog ("xzdec", "wget") { +++ my $opt = $prog eq "xzdec" ? "--help" : "--version"; ++ my $ret = system("$::progs{$prog} $opt >nul 2>&1"); # on windows ++ if ($ret != 0) { ++ warn "TeXLive::TLUtils::setup_programs (w32) failed"; # no nl for perl ++@@ -1315,8 +1420,8 @@ ++ } ++ my $s = 0; ++ $s += setup_unix_one('wget', "$bindir/wget/wget.$platform", "--version"); ++- $s += setup_unix_one('lzmadec',"$bindir/lzma/lzmadec.$platform","--help"); ++- $s += setup_unix_one('lzma', "$bindir/lzma/lzma.$platform", "notest"); +++ $s += setup_unix_one('xzdec',"$bindir/xz/xzdec.$platform","--help"); +++ $s += setup_unix_one('xz', "$bindir/xz/xz.$platform", "notest"); ++ $ok = ($s == 3); # failure return unless all are present. ++ } ++ + Index: tlpkg/TeXLive/TLWinGoo.pm + =================================================================== +---- tlpkg/TeXLive/TLWinGoo.pm (revision 12171) ++--- tlpkg/TeXLive/TLWinGoo.pm (revision 12198) + +++ tlpkg/TeXLive/TLWinGoo.pm (working copy) + @@ -58,7 +58,6 @@ + $prog, $args, $batgui); +@@ -1325,7 +2598,7 @@ + \"\%TEMP\%\\uninst2.bat\" + Index: tlpkg/installer/install-menu-perltk.pl + =================================================================== +---- tlpkg/installer/install-menu-perltk.pl (revision 12171) ++--- tlpkg/installer/install-menu-perltk.pl (revision 12198) + +++ tlpkg/installer/install-menu-perltk.pl (working copy) + @@ -62,7 +62,6 @@ + my $texmfhometext; +@@ -1405,7 +2678,7 @@ + sub callback_select_scheme { + Index: tlpkg/installer/install-translations.pl + =================================================================== +---- tlpkg/installer/install-translations.pl (revision 12171) ++--- tlpkg/installer/install-translations.pl (revision 12198) + +++ tlpkg/installer/install-translations.pl (working copy) + @@ -52,7 +52,7 @@ + } +@@ -1444,7 +2717,7 @@ + if (($::lang ne "en") && ($::lang ne "C")) { + Index: tlpkg/installer/install-menu-text.pl + =================================================================== +---- tlpkg/installer/install-menu-text.pl (revision 12171) ++--- tlpkg/installer/install-menu-text.pl (revision 12198) + +++ tlpkg/installer/install-menu-text.pl (working copy) + @@ -675,7 +675,7 @@ + +@@ -1543,7 +2816,7 @@ + if ($vars{'from_dvd'}) { + Index: tlpkg/tlpsrc/bin-tex.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-tex.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-tex.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-tex.tlpsrc (working copy) + @@ -1,7 +1,6 @@ + name bin-tex +@@ -1556,7 +2829,7 @@ + binpattern f bin/${ARCH}/tex + Index: tlpkg/tlpsrc/bin-mex.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-mex.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-mex.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-mex.tlpsrc (working copy) + @@ -2,10 +2,9 @@ + category TLCore +@@ -1574,7 +2847,7 @@ + binpattern f bin/${ARCH}/utf8mex + Index: tlpkg/tlpsrc/texlive-de.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/texlive-de.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/texlive-de.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/texlive-de.tlpsrc (working copy) + @@ -1,2 +1,4 @@ + name texlive-de +@@ -1583,7 +2856,7 @@ + +postaction shortcut type=menu name="TeX Live Manual (de) (HTML)" cmd=TEXDIR/texmf-doc/doc/german/texlive-de/texlive-de.html + Index: tlpkg/tlpsrc/00texlive.installer.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/00texlive.installer.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/00texlive.installer.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/00texlive.installer.tlpsrc (working copy) + @@ -7,7 +7,7 @@ + longdesc used *except* to build the installer archives, so it's ok. +@@ -1594,9 +2867,31 @@ + category TLCore + runpattern f install-tl + runpattern f tlpkg/installer/install-tl.html ++@@ -16,8 +16,8 @@ ++ #runpattern d tlpkg/TeXLive ++ runpattern d tlpkg/installer ++ # ++-# but no lzma binaries ++-runpattern !d tlpkg/installer/lzma +++# but no xz binaries +++runpattern !d tlpkg/installer/xz ++ runpattern !d tlpkg/installer/wget ++ # ++ # and no perl lib ++@@ -35,8 +35,8 @@ ++ # shouldn't be in the installer packages ++ # binpattern f/win32 tl-portable.bat ++ binpattern f/win32 install-tl.bat.manifest ++-binpattern f/!win32 tlpkg/installer/lzma/lzmadec.${ARCH} +++binpattern f/!win32 tlpkg/installer/xz/xzdec.${ARCH} ++ binpattern f/!win32,i386-solaris,i386-linux,mips-irix,sparc-linux,alpha-linux,powerpc-linux,i386-freebsd,x86_64-linux tlpkg/installer/wget/wget.${ARCH} ++ binpattern f/win32 tlpkg/installer/wget/wget.exe ++ # why the above does not catch that one I don't know ... so add it ++-binpattern f/win32 tlpkg/installer/lzma/lzmadec.win32.exe +++binpattern f/win32 tlpkg/installer/xz/xzdec.win32.exe + Index: tlpkg/tlpsrc/pdftex.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/pdftex.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/pdftex.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/pdftex.tlpsrc (working copy) + @@ -1,8 +1,9 @@ + name pdftex +@@ -1612,7 +2907,7 @@ + runpattern f texmf/tex/generic/pdftex/* + Index: tlpkg/tlpsrc/bin-csplain.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-csplain.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-csplain.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-csplain.tlpsrc (working copy) + @@ -1,7 +1,7 @@ + name bin-csplain +@@ -1626,7 +2921,7 @@ + binpattern f bin/${ARCH}/pdfcsplain + Index: tlpkg/tlpsrc/bin-metapost.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-metapost.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-metapost.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-metapost.tlpsrc (working copy) + @@ -1,8 +1,8 @@ + name bin-metapost +@@ -1641,22 +2936,32 @@ + docpattern f texmf/doc/man/man1/makempx.* + Index: tlpkg/tlpsrc/00texlive.config.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/00texlive.config.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/00texlive.config.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/00texlive.config.tlpsrc (working copy) +-@@ -9,8 +9,8 @@ +- longdesc is only "lzma", which generates .tar.lzma files. zip can be supported. ++@@ -2,15 +2,15 @@ ++ category TLCore ++ longdesc This package contains configuration options for the TeX Live archive ++ longdesc If container_split_{doc,src}_files occurs in the depend lines the ++-longdesc {doc,src} files are split into separate containers (.tar.lzma) +++longdesc {doc,src} files are split into separate containers (.tar.xz) ++ longdesc during container build time. Note that this has NO effect on the ++ longdesc appearance within the texlive.tlpdb. It is only on container level. ++ longdesc The container_format/XXXXX specifies the format, currently allowed ++-longdesc is only "lzma", which generates .tar.lzma files. zip can be supported. +++longdesc is only "xz", which generates .tar.xz files. zip can be supported. + longdesc release/NNNN specifies the release number as used in the installer. + longdesc For information on the 00texlive prefix see + -longdesc 00texlive-installation.config(.tlpsrc) + +longdesc 00texlive.installation(.tlpsrc) + depend container_split_src_files + depend container_split_doc_files +- depend container_format/lzma ++-depend container_format/lzma + -depend release/2008 +++depend container_format/xz + +depend release/2009 + Index: tlpkg/tlpsrc/texlive-fr.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/texlive-fr.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/texlive-fr.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/texlive-fr.tlpsrc (working copy) + @@ -1,2 +1,4 @@ + name texlive-fr +@@ -1665,7 +2970,7 @@ + +postaction shortcut type=menu name="TeX Live Manual (fr) (HTML)" cmd=TEXDIR/texmf-doc/doc/french/texlive-fr/texlive-fr.html + Index: tlpkg/tlpsrc/texlive-zh-cn.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/texlive-zh-cn.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/texlive-zh-cn.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/texlive-zh-cn.tlpsrc (working copy) + @@ -1,2 +1,3 @@ + name texlive-zh-cn +@@ -1673,7 +2978,7 @@ + +postaction shortcut type=menu name="TeX Live Manual (zh-cn) (PDF)" cmd=TEXDIR/texmf-doc/doc/chinese/texlive-zh-cn/texlive-zh-cn.pdf + Index: tlpkg/tlpsrc/bin-dviout.win32.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-dviout.win32.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-dviout.win32.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-dviout.win32.tlpsrc (working copy) + @@ -2,3 +2,4 @@ + category TLCore +@@ -1682,7 +2987,7 @@ + +postaction shortcut type=menu name="DVIOUT Dvi Viewer" cmd=wscript args=TEXDIR/bin/win32/dviout.vbs hide=1 + Index: tlpkg/tlpsrc/bin-context.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-context.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-context.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-context.tlpsrc (working copy) + @@ -1,9 +1,15 @@ + name bin-context +@@ -1704,7 +3009,7 @@ + docpattern f texmf/doc/man/man1/mptopdf.* + Index: tlpkg/tlpsrc/bin-mltex.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-mltex.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-mltex.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-mltex.tlpsrc (working copy) + @@ -1,7 +1,7 @@ + name bin-mltex +@@ -1718,7 +3023,7 @@ + binpattern f bin/${ARCH}/mltex + Index: tlpkg/tlpsrc/luatex.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/luatex.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/luatex.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/luatex.tlpsrc (working copy) + @@ -1,8 +1,8 @@ + name luatex +@@ -1733,7 +3038,7 @@ + binpattern f/!hppa-hpux bin/${ARCH}/texlua + Index: tlpkg/tlpsrc/bin-cslatex.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-cslatex.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-cslatex.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-cslatex.tlpsrc (working copy) + @@ -1,7 +1,7 @@ + name bin-cslatex +@@ -1747,7 +3052,7 @@ + binpattern f bin/${ARCH}/pdfcslatex + Index: tlpkg/tlpsrc/bin-texdoc.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-texdoc.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-texdoc.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-texdoc.tlpsrc (working copy) + @@ -12,3 +12,4 @@ + binpattern f bin/${ARCH}/texdoctk +@@ -1756,7 +3061,7 @@ + +postaction shortcut type=menu name="TeXdoc GUI" cmd="TEXDIR/bin/win32/texdoctk.bat" hide=1 + Index: tlpkg/tlpsrc/bin-latex.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-latex.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-latex.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-latex.tlpsrc (working copy) + @@ -4,12 +4,14 @@ + depend pdftex +@@ -1777,7 +3082,7 @@ + runpattern d texmf/tex/latex/config + Index: tlpkg/tlpsrc/bin-omega.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-omega.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-omega.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-omega.tlpsrc (working copy) + @@ -1,7 +1,7 @@ + name bin-omega +@@ -1791,7 +3096,7 @@ + binpattern f bin/${ARCH}/lambda + Index: tlpkg/tlpsrc/bin-tlpsv.win32.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-tlpsv.win32.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-tlpsv.win32.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-tlpsv.win32.tlpsrc (working copy) + @@ -5,3 +5,5 @@ + runpattern f bin/win32/psv.bat +@@ -1801,7 +3106,7 @@ + +postaction shortcut type=desktop name="PS_View" icon=TEXDIR/tlpkg/tlpsv/psv.exe cmd=TEXDIR/bin/win32/psv.bat hide=1 + Index: tlpkg/tlpsrc/bin-xmltex.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-xmltex.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-xmltex.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-xmltex.tlpsrc (working copy) + @@ -2,7 +2,7 @@ + category TLCore +@@ -1815,7 +3120,7 @@ + binpattern f bin/${ARCH}/xmltex + Index: tlpkg/tlpsrc/texlive-ru.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/texlive-ru.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/texlive-ru.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/texlive-ru.tlpsrc (working copy) + @@ -1,2 +1,4 @@ + name texlive-ru +@@ -1824,7 +3129,7 @@ + +postaction shortcut type=menu name="TeX Live Manual (ru) (HTML)" cmd=TEXDIR/texmf-doc/doc/russian/texlive-ru/texlive-ru.html + Index: tlpkg/tlpsrc/bin-texlive.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-texlive.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-texlive.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-texlive.tlpsrc (working copy) + @@ -1,27 +1,11 @@ + name bin-texlive +@@ -1857,7 +3162,7 @@ + -binpattern f/win32 texmf/scripts/texlive/updater-w32.bat + Index: tlpkg/tlpsrc/t2.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/t2.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/t2.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/t2.tlpsrc (working copy) + @@ -1,5 +1,5 @@ + name t2 +@@ -1870,7 +3175,7 @@ + +execute AddFormat name=cyrtexinfo mode=disabled engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *cyrtxinf.ini" + Index: tlpkg/tlpsrc/bin-texsis.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-texsis.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-texsis.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-texsis.tlpsrc (working copy) + @@ -1,6 +1,5 @@ + name bin-texsis +@@ -1882,7 +3187,7 @@ + binpattern f bin/${ARCH}/texsis + Index: tlpkg/tlpsrc/texlive-en.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/texlive-en.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/texlive-en.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/texlive-en.tlpsrc (working copy) + @@ -1,2 +1,4 @@ + name texlive-en +@@ -1891,7 +3196,7 @@ + +postaction shortcut type=menu name="TeX Live Manual (en) (HTML)" cmd=TEXDIR/texmf-doc/doc/english/texlive-en/texlive-en.html + Index: tlpkg/tlpsrc/bin-physe.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-physe.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-physe.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-physe.tlpsrc (working copy) + @@ -1,6 +1,5 @@ + name bin-physe +@@ -1903,7 +3208,7 @@ + binpattern f bin/${ARCH}/physe + Index: tlpkg/tlpsrc/bin-phyzzx.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-phyzzx.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-phyzzx.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-phyzzx.tlpsrc (working copy) + @@ -1,6 +1,5 @@ + name bin-phyzzx +@@ -1915,7 +3220,7 @@ + binpattern f bin/${ARCH}/phyzzx + Index: tlpkg/tlpsrc/bin-eplain.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-eplain.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-eplain.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-eplain.tlpsrc (working copy) + @@ -1,8 +1,7 @@ + name bin-eplain +@@ -1929,7 +3234,7 @@ + binpattern f bin/${ARCH}/eplain + Index: tlpkg/tlpsrc/texlive-cz.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/texlive-cz.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/texlive-cz.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/texlive-cz.tlpsrc (working copy) + @@ -1,2 +1,4 @@ + name texlive-cz +@@ -1938,7 +3243,7 @@ + +postaction shortcut type=menu name="TeX Live Manual (cz) (HTML)" cmd=TEXDIR/texmf-doc/doc/czechslovak/texlive-cz/texlive-cz.html + Index: tlpkg/tlpsrc/bin-jadetex.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-jadetex.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-jadetex.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-jadetex.tlpsrc (working copy) + @@ -2,7 +2,7 @@ + category TLCore +@@ -1952,7 +3257,7 @@ + binpattern f bin/${ARCH}/pdfjadetex + Index: tlpkg/tlpsrc/00texlive-installation.config.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/00texlive-installation.config.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/00texlive-installation.config.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/00texlive-installation.config.tlpsrc (working copy) + @@ -1,30 +0,0 @@ + -name 00texlive-installation.config +@@ -1987,7 +3292,7 @@ + -depend opt_install_srcfiles:1 + Index: tlpkg/tlpsrc/texlive-pl.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/texlive-pl.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/texlive-pl.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/texlive-pl.tlpsrc (working copy) + @@ -1,2 +1,4 @@ + name texlive-pl +@@ -1996,7 +3301,7 @@ + +postaction shortcut type=menu name="TeX Live Manual (pl) (HTML)" cmd=TEXDIR/texmf-doc/doc/polish/texlive-pl/texlive-pl.html + Index: tlpkg/tlpsrc/bin-amstex.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-amstex.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-amstex.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-amstex.tlpsrc (working copy) + @@ -1,7 +1,7 @@ + name bin-amstex +@@ -2010,7 +3315,7 @@ + binpattern f bin/${ARCH}/amstex + Index: tlpkg/tlpsrc/bin-aleph.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/bin-aleph.tlpsrc (revision 12171) ++--- tlpkg/tlpsrc/bin-aleph.tlpsrc (revision 12198) + +++ tlpkg/tlpsrc/bin-aleph.tlpsrc (working copy) + @@ -1,7 +1,7 @@ + name bin-aleph +@@ -2024,31 +3329,42 @@ + binpattern f bin/${ARCH}/lamed + Index: tlpkg/tlpsrc/00texlive.installation.tlpsrc + =================================================================== +---- tlpkg/tlpsrc/00texlive.installation.tlpsrc (revision 12171) +-+++ tlpkg/tlpsrc/00texlive.installation.tlpsrc (working copy) +-@@ -1,4 +1,4 @@ +--name 00texlive-installation.config ++--- tlpkg/tlpsrc/00texlive.installation.tlpsrc (revision 0) +++++ tlpkg/tlpsrc/00texlive.installation.tlpsrc (revision 0) ++@@ -0,0 +1,30 @@ + +name 00texlive.installation +- category TLCore +- longdesc This package serves two purposes: +- longdesc +-@@ -22,7 +22,7 @@ +- depend location:__MASTER__ +- depend opt_paper:a4 +- depend opt_create_formats:1 +--depend opt_create_symlinks:0 +++category TLCore +++longdesc This package serves two purposes: +++longdesc +++longdesc 1. at installation time the present values are taken as default for +++longdesc the installer +++longdesc +++longdesc 2. on an installed system it serves as a configuration file. +++longdesc We have to remember these settings for additional package +++longdesc installation, removal, etc. +++longdesc +++longdesc The value of __MASTER__ for the location field tells the +++longdesc installer to use the present directory itself. For example, +++longdesc the DVD can be mounted anywhere and we want the installer to work. +++longdesc +++longdesc Concerning the 00* names: +++longdesc All packages starting with 00texlive are considered virtual packages +++longdesc in the sense that no containers are generated and these packages +++longdesc are never split into .src and .doc sub-packages in the tlpdb. +++ +++depend platform: +++depend location:__MASTER__ +++depend opt_paper:a4 +++depend opt_create_formats:1 + +depend opt_system_integration:0 +- depend opt_sys_bin:/usr/local/bin +- depend opt_sys_info:/usr/local/info +- depend opt_sys_man:/usr/local/man - --# we have to adjust the texmf.cnf file to the paths set in the configuration! --sub do_texmf_cnf { -- open(TMF,"<$vars{'TEXDIR'}/texmf/web2c/texmf.cnf") -- or die "$vars{'TEXDIR'}/texmf/web2c/texmf.cnf not found: $!"; -- my @texmfcnflines = ; -- close(TMF); -- my @newtmf; -- my @changedtmf; -- # we have to find TEXMFLOCAL TEXMFSYSVAR and TEXMFHOME -- foreach my $line (@texmfcnflines) { -- if ($line =~ m/^TEXMFLOCAL/) { -- # by default TEXMFLOCAL = TEXDIR/../texmf-local, if this is the case -- # we don't have to change anything from the default -- my $deftmlocal = dirname($vars{'TEXDIR'}); -- $deftmlocal .= "/texmf-local"; -- if ("$vars{'TEXMFLOCAL'}" eq "$deftmlocal") { -- push @newtmf, $line; -- } else { -- push @newtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; -- push @changedtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; -- } -- } elsif ($line =~ m/^TEXMFSYSVAR/) { -- # by default TEXMFSYSVAR = TEXDIR/texmf-var, if this is the case -- # we don't have to change anything from the default -- if ("$vars{'TEXMFSYSVAR'}" eq "$vars{'TEXDIR'}/texmf-var") { -- push @newtmf, $line; -- } else { -- push @newtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; -- push @changedtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; -- } -- } elsif ($line =~ m/^TEXMFSYSCONFIG/) { -- # by default TEXMFSYSCONFIG = TEXDIR/texmf-config, if this is the case -- # we don't have to change anything from the default -- if ("$vars{'TEXMFSYSCONFIG'}" eq "$vars{'TEXDIR'}/texmf-config") { -- push @newtmf, $line; -- } else { -- push @newtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; -- push @changedtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; -- } -- } elsif ($line =~ m/^TEXMFHOME/) { -- # kpse now expands ~ to USERPROFILE, so we don't treat win32 and -- # unix differently -- push @newtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; -- if ("$vars{'TEXMFHOME'}" ne "~/texmf") { -- push @changedtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; -- } -- } elsif ($line =~ m/^OSFONTDIR/) { -- if (win32()) { -- push @newtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; -- push @changedtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; -- } else { -- push @newtmf, $line; -- } -- } else { -- push @newtmf, $line; -- } -- } -- my $TMF; -- if (!$vars{'from_dvd'}) { -- $TMF = ">$vars{'TEXDIR'}/texmf.cnf"; -- open(TMF, $TMF) || die "open($TMF) failed: $!"; -- print TMF <add_tlpobj($obj); ++ } ++ $tlpdb->save; ++- system("lzma --force -k -z $opt_location/tlpkg/texlive.tlpdb"); +++ system("xz --force -k -z $opt_location/tlpkg/texlive.tlpdb"); ++ ++ return 0; ++ } ++@@ -102,16 +102,16 @@ ++ sub do_containers { ++ my ($obj, $dosrc, $dodoc) = @_; ++ my $fbase = "$opt_location/archive/" . $obj->name; ++- my ($a, $b) = do_size_md ("${fbase}.tar.lzma"); +++ my ($a, $b) = do_size_md ("${fbase}.tar.xz"); ++ $obj->containersize($a); ++ $obj->containermd5($b); ++ if ($dosrc && $obj->srcfiles) { ++- ($a, $b) = do_size_md ("${fbase}.source.tar.lzma"); +++ ($a, $b) = do_size_md ("${fbase}.source.tar.xz"); ++ $obj->srccontainersize($a); ++ $obj->srccontainermd5($b); ++ } ++ if ($dodoc && $obj->docfiles) { ++- ($a, $b) = do_size_md ("${fbase}.doc.tar.lzma"); +++ ($a, $b) = do_size_md ("${fbase}.doc.tar.xz"); ++ $obj->doccontainersize($a); ++ $obj->doccontainermd5($b); ++ } ++@@ -146,7 +146,7 @@ ++ ++ =item B<-no-setup> ++ ++-Does not try to setup the various programs, but uses I and I +++Does not try to setup the various programs, but uses I and I ++ from the current path. ++ ++ =item B<-help> ++Index: tlpkg/bin/check-tlnet-consistency ++=================================================================== ++--- tlpkg/bin/check-tlnet-consistency (revision 12198) +++++ tlpkg/bin/check-tlnet-consistency (working copy) ++@@ -49,13 +49,13 @@ ++ # set up the programs ... ++ if ($opt_nosetup) { ++ # do a minimal setup ++- $::progs{'lzma'} = "lzma"; +++ $::progs{'xz'} = "xz"; ++ $::progs{'tar'} = "tar"; ++ } else { ++ # do a full setup ++ my $ret = &TeXLive::TLUtils::setup_programs("$Master/tlpkg/installer"); ++ if ($ret == -1) { ++- tlwarn("no binary of lzmadec for $::_platform_ detected, aborting.\n"); +++ tlwarn("no binary of xzdec for $::_platform_ detected, aborting.\n"); ++ exit 1; ++ } ++ if (!$ret) { ++@@ -82,16 +82,16 @@ ++ my %filedifferrors; ++ foreach my $pkg ($tlpdb->list_packages()) { ++ next if ($pkg =~ m/^00texlive/); ++- my $cont = "$opt_location/archive/$pkg.tar.lzma"; ++- my $srccont = "$opt_location/archive/$pkg.source.tar.lzma"; ++- my $doccont = "$opt_location/archive/$pkg.doc.tar.lzma"; +++ my $cont = "$opt_location/archive/$pkg.tar.xz"; +++ my $srccont = "$opt_location/archive/$pkg.source.tar.xz"; +++ my $doccont = "$opt_location/archive/$pkg.doc.tar.xz"; ++ my $tlpdbtlpobj = $tlpdb->get_package($pkg); ++ my $dodoc = ($tlpdb->config_doc_container && $tlpdbtlpobj->docfiles); ++ my $dosrc = ($tlpdb->config_src_container && $tlpdbtlpobj->srcfiles); ++ if ($opt_filelists) { ++- system("cat $cont | $::progs{lzmadec} | $::progs{tar} -C \"$temp\" -xf - "); +++ system("cat $cont | $::progs{xzdec} | $::progs{tar} -C \"$temp\" -xf - "); ++ } else { ++- system("cat $cont | $::progs{lzmadec} | $::progs{tar} -C \"$temp\" -xf - tlpkg/tlpobj"); +++ system("cat $cont | $::progs{xzdec} | $::progs{tar} -C \"$temp\" -xf - tlpkg/tlpobj"); ++ } ++ if (! -r "$temp/tlpkg/tlpobj/$pkg.tlpobj") { ++ push @notlpobj, $pkg; ++@@ -101,7 +101,7 @@ ++ die "Cannot load tlpobj from $temp/$pkg.tlpobj: $!" unless defined($tartlpobj); ++ # get the src and doc containers unpacked and add the respective files ++ if ($dosrc) { ++- system("cat $srccont | $::progs{lzmadec} | $::progs{tar} -C \"$temp\" -xf - tlpkg/tlpobj"); +++ system("cat $srccont | $::progs{xzdec} | $::progs{tar} -C \"$temp\" -xf - tlpkg/tlpobj"); ++ if (! -r "$temp/tlpkg/tlpobj/$pkg.source.tlpobj") { ++ push @missingsrccontainer, $pkg; ++ } else { ++@@ -112,7 +112,7 @@ ++ } ++ } ++ if ($dodoc) { ++- system("cat $doccont | $::progs{lzmadec} | $::progs{tar} -C \"$temp\" -xf - tlpkg/tlpobj"); +++ system("cat $doccont | $::progs{xzdec} | $::progs{tar} -C \"$temp\" -xf - tlpkg/tlpobj"); ++ if (! -r "$temp/tlpkg/tlpobj/$pkg.doc.tlpobj") { ++ push @missingdoccontainer, $pkg; ++ } else { ++@@ -268,7 +268,7 @@ ++ ++ =item B<-no-setup> ++ ++-Does not try to setup the various programs, but uses I and I +++Does not try to setup the various programs, but uses I and I ++ from path. ++ ++ =item B<-help> ++Index: tlpkg/bin/tlpkg-by-size ++=================================================================== ++--- tlpkg/bin/tlpkg-by-size (revision 12198) +++++ tlpkg/bin/tlpkg-by-size (working copy) ++@@ -5,9 +5,9 @@ ++ ++ test $# -eq 0 && set - /home/ftp/texlive/tlnet/2008/archive ++ cd "$1" || exit 1 ++-for pkgtar in `ls *.tar.lzma | egrep -v '\..*\.tar\.lzma$'`; do ++- pkg=`echo $pkgtar | sed 's/\.tar\.lzma$//'` ++- size=`cat $pkg.*tar.lzma | wc -c` +++for pkgtar in `ls *.tar.xz | egrep -v '\..*\.tar\.xz$'`; do +++ pkg=`echo $pkgtar | sed 's/\.tar\.xz$//'` +++ size=`cat $pkg.*tar.xz | wc -c` ++ size=`expr $size / 1024` ++ printf "%6d %s\n" $size "$pkg" ++ done | sort -nr + Index: tlpkg/bin/tl-update-containers + =================================================================== +---- tlpkg/bin/tl-update-containers (revision 12171) ++--- tlpkg/bin/tl-update-containers (revision 12198) + +++ tlpkg/bin/tl-update-containers (working copy) + @@ -24,7 +24,7 @@ + use File::Path; +@@ -2121,7 +3603,18 @@ + + our ($mydir, $vc_id); + my $opt_all = 0; +-@@ -176,12 +176,12 @@ ++@@ -71,8 +71,8 @@ ++ my $srcsplit = $tlpdb->config_src_container; ++ my $docsplit = $tlpdb->config_doc_container; ++ my $format = $tlpdb->config_container_format; ++- my $type = "lzma"; ++- if ($format eq "lzma" || $format eq "zip") { +++ my $type = "xz"; +++ if ($format eq "xz" || $format eq "zip") { ++ $type = $format; ++ } else { ++ tlwarn("$0: unknown container format $format in 00texlive.config; ", ++@@ -176,24 +176,24 @@ + } + } + +@@ -2136,7 +3629,46 @@ + $nettlpdb->add_tlpobj($tlpinstconfig); + + # set up the programs. +-@@ -392,7 +392,7 @@ ++ if ($opt_nosetup) { ++ # do a minimal setup ++- $::progs{'lzma'} = "lzma"; +++ $::progs{'xz'} = "xz"; ++ $::progs{'tar'} = "tar"; ++ } else { ++ # do a full setup ++ my $ret = &TeXLive::TLUtils::setup_programs("$Master/tlpkg/installer"); ++ if ($ret == -1) { ++- tlwarn("$0: no lzmadec for $::_platform_, aborting.\n"); +++ tlwarn("$0: no xzdec for $::_platform_, aborting.\n"); ++ exit 1; ++ } ++ if (!$ret) { ++@@ -300,7 +300,7 @@ ++ ++ # remove old containers ++ for my $op (@removecontainers) { ++- if (-r "$opt_containerdir/$op.tar.lzma") { +++ if (-r "$opt_containerdir/$op.tar.xz") { ++ info("$0: $op container is old, removing it\n"); ++ `rm $opt_containerdir/$op.*` unless $opt_dry; ++ } ++@@ -349,13 +349,13 @@ ++ # docfiles into the texlive.tlpdb, no idea why. So update should now ++ # do that. ++ $nettlpdb->save; ++- system("lzma --force -k -z $opt_location/tlpkg/texlive.tlpdb"); +++ system("xz --force -k -z $opt_location/tlpkg/texlive.tlpdb"); ++ ++ if (! @ARGV) { ++ # do a last check that all the containers are actually present ++ foreach my $p ($nettlpdb->list_packages) { ++ next if $p =~ /00texlive/; ++- if (! -r "$opt_containerdir/$p.tar.lzma") { +++ if (! -r "$opt_containerdir/$p.tar.xz") { ++ tlwarn("$0: container for $p is missing, strange\n"); ++ } ++ } ++@@ -392,12 +392,12 @@ + =item B<-all|-a> + + Include packages deemed critical in the update, currently +@@ -2145,9 +3677,15 @@ + testing before updating, so we don't do it by default.) + + =item B<-no-setup> ++ ++-Does not try to setup the various programs, but uses I and I +++Does not try to setup the various programs, but uses I and I ++ from the current path. ++ ++ =item B<-help> + Index: tlpkg/bin/tl-makeself-from-tlnet + =================================================================== +---- tlpkg/bin/tl-makeself-from-tlnet (revision 12171) ++--- tlpkg/bin/tl-makeself-from-tlnet (revision 12198) + +++ tlpkg/bin/tl-makeself-from-tlnet (working copy) + @@ -4,7 +4,7 @@ + # This file is licensed under the GNU General Public License version 2 +@@ -2158,19 +3696,30 @@ + # packages on Unix, similar to the .exe we create for Windows. Both are + # created in the nightly cron from tl-update-tlcritical. + +-@@ -28,9 +28,8 @@ ++@@ -28,13 +28,12 @@ + mkdir master + cd master + + -# unpack texlive.infra and bin-texlive archives for all platforms, + -# except w32. + -for pkg in texlive.infra bin-texlive; do ++- for i in $ARCHIVE/$pkg*.tar.lzma ; do + +# unpack texlive.infra archives for all platforms, except w32. + +for pkg in texlive.infra; do +- for i in $ARCHIVE/$pkg*.tar.lzma ; do +++ for i in $ARCHIVE/$pkg*.tar.xz ; do + case "$i" in + *win32*) ;; +-@@ -69,13 +68,12 @@ ++- *) lzmadec <$i | tar -xf - ;; +++ *) xzdec <$i | tar -xf - ;; ++ esac ++ done ++ done ++@@ -65,25 +64,24 @@ ++ t_instdir=$ROOT/tlpkg/installer # target installer dir ++ ++ # ensure these target directories exist. ++- mkdir -p $t_instdir/lzma +++ mkdir -p $t_instdir/xz + mkdir -p $t_instdir/wget + + # start the list of tlpobjs we will install +@@ -2185,18 +3734,20 @@ + tlpobjs="$tlpobjs $t_objdir/texlive.infra.$b.tlpobj" + + # install the bin dir for this platform. ++ (cd bin && tar cf - $b) | (cd $ROOT/bin && tar xf -) ++ ++ # copy the installer binaries. ++- cp installer/lzma/lzmadec.$b $t_instdir/lzma/ ++- cp installer/lzma/lzma.$b $t_instdir/lzma/ +++ cp installer/xz/xzdec.$b $t_instdir/xz/ +++ cp installer/xz/xz.$b $t_instdir/xz/ ++ test -r installer/wget/wget.$b \ ++ && cp installer/wget/wget.$b $t_instdir/wget ++ done + Index: tlpkg/bin/tl-update-nsis + =================================================================== +---- tlpkg/bin/tl-update-nsis (revision 12171) ++--- tlpkg/bin/tl-update-nsis (revision 12198) + +++ tlpkg/bin/tl-update-nsis (working copy) +-@@ -1,6 +1,6 @@ +- #!/usr/bin/env perl +- # $Id$ +--# Copyright 2008 Norbert Preining +-+# Copyright 2008, 2009 Norbert Preining +- # This file is licensed under the GNU General Public License version 2 +- # or any later version. +- # + @@ -40,13 +40,9 @@ + chomp (my $Master = `cd $mydir/../.. && pwd`); + my $tlpdb = TeXLive::TLPDB->new ("root" => $Master); +@@ -2238,791 +3789,3 @@ + if (defined $p) { + print " \"\$INSTDIR\\tlpkg\\tlpobj\\", $p->name, ".tlpobj\""; + } +-Index: install-tl +-=================================================================== +---- install-tl (revision 12171) +-+++ install-tl (working copy) +-@@ -82,7 +82,6 @@ +- &add_menu_shortcut +- &remove_desktop_shortcut +- &remove_menu_shortcut +-- &init_unshortbat +- &create_uninstaller +- )); +- } +-@@ -121,7 +120,7 @@ +- # +- # The following values are taken from the remote tlpdb using the +- # $tlpdb->option_XXXXX +--# settings (i.e., taken from tlpkg/tlpsrc/00texlive-installation.tlpsrc +-+# settings (i.e., taken from tlpkg/tlpsrc/00texlive.installation.tlpsrc +- # +- # 'option_symlinks' => 0, +- # 'sys_bin' => '/usr/local/bin', +-@@ -380,6 +379,14 @@ +- $vars{'doc_splitting_supported'} = $tlpdb->config_doc_container; +- } +- $texlive_release = $tlpdb->config_release; +-+# if the release from the remote TLPDB does not agree with the +-+# TLConfig::ReleaseYear in the first 4 places break out here. +-+# Why only the first four places: some optional network distributions +-+# might use +-+# release/2009-foobar +-+if ($texlive_release !~ m/^$TeXLive::TLConfig::ReleaseYear/) { +-+ die "The release version of the installation source and\nthe installation media do not agree:\nsource: $texlive_release\nmedia: $TeXLive::TLConfig::ReleaseYear\nPlease report to tex-live\@tug.org"; +-+} +- set_platforms_supported(); +- set_texlive_default_dirs(); +- initialize_collections(); +-@@ -491,7 +498,229 @@ +- save_options_into_tlpdb(); +- do_install_packages(); +- } +-+ # now we save every scheme that is fully covered by the stuff we have +-+ # installed to the $localtlpdb +-+ foreach my $s ($tlpdb->schemes) { +-+ my $stlp = $tlpdb->get_package($s); +-+ die ("That cannot happen, $s not defined in tlpdb") unless defined($stlp); +-+ my $incit = 1; +-+ foreach my $d ($stlp->depends) { +-+ if (!defined($localtlpdb->get_package($d))) { +-+ $incit = 0; +-+ last; +-+ } +-+ } +-+ if ($incit) { +-+ $localtlpdb->add_tlpobj($stlp); +-+ } +-+ } +-+ $localtlpdb->save unless $vars{'from_dvd'}; +-+ do_postinst_stuff(); +-+} +-+ +-+# do_postinst_stuff has to fix up the texmf tree and install some missing +-+# files. The things to do are taken from the install-live.sh installer +-+# of former times, and should be critically checked. +-+sub do_postinst_stuff { +-+ my $TEXDIR="$vars{'TEXDIR'}"; +-+ my $TEXDIRW="$vars{'TEXDIRW'}"; +-+ my $TEXMFSYSVAR="$vars{'TEXMFSYSVAR'}"; +-+ my $TEXMFSYSCONFIG="$vars{'TEXMFSYSCONFIG'}"; +-+ my $TEXMFLOCAL="$vars{'TEXMFLOCAL'}"; +-+ my $tmv; +-+ +-+ do_texmf_cnf() unless ($opt_portable); +-+ +-+ +-+ # final program execution +-+ # we have to do several things: +-+ # - clean the environment from spurious TEXMF related variables +-+ # - add the bin dir to the PATH +-+ # - select perl interpreter and set the correct perllib +-+ # - run the programs +-+ +-+ # Step 1: Clean the environment +-+ my @TMFVARS0=qw(VARTEXFONTS +-+ TEXMF SYSTEXMF VARTEXFONTS +-+ TEXMFDBS WEB2C TEXINPUTS TEXFORMATS MFBASES MPMEMS TEXPOOL MFPOOL MPPOOL +-+ PSHEADERS TEXFONTMAPS TEXPSHEADERS TEXCONFIG TEXMFCNF); +-+ my @TMFVARS1=qw(TEXMFMAIN TEXMFDIST TEXMFLOCAL TEXMFSYSVAR TEXMFSYSCONFIG +-+ TEXMFHOME TEXMFVAR TEXMFCONFIG); +-+ +-+ if (defined($ENV{'TEXMFCNF'}) and !$vars{'from_dvd'} and !$opt_portable) { +-+ print "WARNING: environment variable TEXMFCNF is set. +-+You should know what you are doing. +-+We will remove that for the post install actions, but all further +-+operations might be disturbed.\n\n"; +-+ } +-+ foreach $tmv (@TMFVARS0) { +-+ delete $ENV{$tmv} if (defined($ENV{$tmv})); +-+ } +-+ if (!$opt_portable) { +-+ foreach $tmv (@TMFVARS1) { +-+ delete $ENV{$tmv} if (defined($ENV{$tmv})); +-+ } +-+ } +-+ $ENV{'TEXMFSYSVAR'} = $vars{'TEXMFSYSVAR'} if $vars{'from_dvd'}; +-+ +-+ # Step 2: Setup the PATH, switch to the new Perl +-+ +-+ my $pathsep=(win32)? ';' : ':'; +-+ my $plat_bindir="$TEXDIR/bin/$vars{'this_platform'}"; +-+ my $perl_bindir="$TEXDIR/tlpkg/tlperl/bin"; +-+ my $perl_libdir="$TEXDIR/tlpkg/tlperl/lib"; +-+ +-+## This won't do any good; +-+## have to remove other tex directories in calling batchfile +-+# if (win32) { +-+# debug("Removing other TeXs from path\n"); +-+# my @newpt = (); +-+# foreach my $d (split (';', $ENV{'PATH'})) { +-+# push @newpt, $d unless TeXLive::TLWinGoo::is_a_texdir($d); +-+# } +-+# $ENV{'PATH'} = join($pathsep, @newpt); +-+# debug("Path after removals(s):\n $ENV{'PATH'}\n"); +-+# } +-+ +-+ debug("Prepending $plat_bindir to PATH\n"); +-+ +-+ $ENV{'PATH'}="$plat_bindir" . "$pathsep" . "$ENV{'PATH'}"; +-+ +-+ if (win32) { +-+ debug("Prepending $perl_bindir to PATH\n"); +-+ $ENV{'PATH'}="$perl_bindir" . "$pathsep" . "$ENV{'PATH'}"; +-+ $ENV{'PATH'} =~ s!/!\\!g; +-+ } +-+ +-+ debug("\nNew PATH is now:\n"); +-+ foreach my $dir (split $pathsep, $ENV{'PATH'}) { +-+ debug(" $dir\n"); +-+ } +-+ debug("\n"); +-+ +-+ if (win32) { +-+ $ENV{'PERL5LIB'}="$perl_libdir"; +-+ } +-+ +-+ # +-+ # post install actions +-+ # +-+ +-+ # in case we are running from DVD we use the tlpdb from the DVD, otherwise +-+ # the one we have locally created, for all the further actions +-+ my $usedtlpdb = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; +-+ +-+ +- if (win32()) { +-+ debug "Actual environment:\n".`set`."\n\n"; +-+ debug 'Effective TEXMFCNF: '.`kpsewhich -expand-path=\$TEXMFCNF`."\n"; +-+ } +-+ +-+ # TODO: can the following two clauses be merged? +-+ if (win32()) { +-+ create_uninstaller($vars{'TEXDIR'}, $vars{'TEXDIRW'}, +-+ $vars{'TEXMFSYSVAR'}, $vars{'TEXMFSYSCONFIG'}); +-+ } +-+ # (re-)initialize batchfile for uninstalling shortcuts +-+ if (win32() and !$opt_portable) { +-+ mkdirhier("$TEXDIRW/tlpkg/installer") if $vars{'from_dvd'}; +-+ } +-+ +-+ # Step 4: run the programs +-+ +-+ if (!$opt_portable and !$vars{'from_dvd'}) { +-+ info("running mktexlsr $TEXDIR/texmf-dist $TEXDIR/texmf\n"); +-+ system('mktexlsr', "$TEXDIR/texmf-dist", "$TEXDIR/texmf"); +-+ } +-+ +-+ # we have to generate the various config file. That could be done with +-+ # texconfig generate * but Win32 does not have texconfig. But we have +-+ # $localtlpdb and this is simple code, so do it directly, i.e., duplicate +-+ # the code from the various generate-*.pl scripts +-+ +-+ info("writing fmtutil.cnf data to $TEXMFSYSVAR/web2c/fmtutil.cnf\n"); +-+ TeXLive::TLUtils::create_fmtutil($usedtlpdb, +-+ "$TEXMFSYSVAR/web2c/fmtutil.cnf", +-+ "$TEXMFLOCAL/web2c/fmtutil-local.cnf"); +-+ +-+ mkdirhier "$vars{'TEXMFSYSCONFIG'}/web2c"; +-+ info("writing updmap.cfg to $TEXMFSYSCONFIG/web2c/updmap.cfg\n"); +-+ TeXLive::TLUtils::create_updmap ($usedtlpdb, +-+ "$TEXMFSYSCONFIG/web2c/updmap.cfg", +-+ "$TEXMFLOCAL/web2c/updmap-local.cfg"); +-+ +-+ info("writing language.dat data to $TEXMFSYSVAR/tex/generic/config/language.dat\n"); +-+ TeXLive::TLUtils::create_language_dat($usedtlpdb, +-+ "$TEXMFSYSVAR/tex/generic/config/language.dat", +-+ "$TEXMFLOCAL/tex/generic/config/language-local.dat"); +-+ +-+ info("writing language.def data to $TEXMFSYSVAR/tex/generic/config/language.def\n"); +-+ TeXLive::TLUtils::create_language_def($usedtlpdb, +-+ "$TEXMFSYSVAR/tex/generic/config/language.def", +-+ "$TEXMFLOCAL/tex/generic/config/language-local.def"); +-+ +-+ info("running mktexlsr $TEXMFSYSVAR\n"); +-+ system('mktexlsr', "$TEXMFSYSVAR"); +-+ +-+ info("running updmap-sys... "); +-+ # system('updmap-sys', '--nohash'); +-+ log(`updmap-sys --nohash 2>&1`); +-+ info("done\n"); +-+ +-+ info("re-running mktexlsr $TEXMFSYSVAR\n"); +-+ system('mktexlsr', "$TEXMFSYSVAR"); +-+ +-+ # now work through the options if specified at all +-+ +-+ # letter instead of a4 +-+ if ($vars{'option_letter'}) { +-+ info("Setting default paper size to letter\n"); +-+ system("tlmgr", "paper", "letter"); +-+ } +-+ +-+ # all formats option +-+ if ($vars{'option_fmt'}) { +-+ info("pre-generating all format files (fmtutil-sys --all), be patient..."); +-+ log(`fmtutil-sys --all 2>&1`); +-+ info("done\n"); +-+ } +-+ +-+ # TODO: Should/can this be moved into the do_system_integration part? +-+ # it looks like it does not do anything outside the texlive tree, so it +-+ # would be fine if we do it anyway ... +-+ # $opt_portable: no %install but we still want xetex postinstall +-+ &{$PostInstall{'xetex'}}($TEXDIR, $TEXDIRW, $TEXMFSYSVAR, $TEXMFLOCAL) +-+ if $opt_portable; +-+ +-+ # no do the system integration: +-+ # on unix this means setting up symlinks +-+ # on w32 this means adding to path, settting registry values +-+ # on both, we run the TLPostActions and the postaction directives of the tlp +-+ do_system_integration() if $vars{'option_sysint'}; +-+} +-+ +-+sub do_system_integration { +-+ # Run the post installation code in TLPostAction.pm +-+ foreach my $package (sort keys %install) { +-+ if ($install{$package} && defined($PostInstall{$package})) { +-+ info("running post install action for $package\n"); +-+ &{$PostInstall{$package}}($vars{'TEXDIR'}, $vars{'TEXDIRW'}, +-+ $vars{'TEXMFSYSVAR'}, $vars{'TEXMFLOCAL'}); +-+ } +-+ } +-+ # Run the post installation code in the postaction tlpsrc entries +-+ my $usedtlpdb = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; +-+ foreach my $package (sort keys %install) { +-+ if ($install{$package}) { +-+ &TeXLive::TLUtils::do_postaction_code("install", +-+ $usedtlpdb->get_package($package)); +-+ } +-+ } +-+ info ("finished with package specific postactions\n"); +-+ +-+ if (win32()) { +-+ update_assocs(); +-+ +- my $path = TeXLive::TLWinGoo::get_system_env() -> {'/Path'}; +- $path =~ s/[\s\x00]+$//; +- log("Old system path: $path\n"); +-@@ -516,29 +745,97 @@ +- # setenv_reg('TEXMFSYSVAR', $vars{'TEXMFSYSVAR'}) if $vars{'from_dvd'}; +- setenv_reg('TEXMFCNF', $vars{'TEXMFSYSVAR'}.'/web2c') if $vars{'from_dvd'}; +- broadcast_env(); +-- create_uninstaller($vars{'TEXDIR'}, $vars{'TEXDIRW'}, +-- $vars{'TEXMFSYSVAR'}, $vars{'TEXMFSYSCONFIG'}); +-+ } else { +-+ $localtlpdb->add_symlinks() +- } +-- do_postinst_stuff(); +-- # now we save every scheme that is fully covered by the stuff we have +-- # installed to the $localtlpdb +-- foreach my $s ($tlpdb->schemes) { +-- my $stlp = $tlpdb->get_package($s); +-- die ("That cannot happen, $s not defined in tlpdb") unless defined($stlp); +-- my $incit = 1; +-- foreach my $d ($stlp->depends) { +-- if (!defined($localtlpdb->get_package($d))) { +-- $incit = 0; +-- last; +-+} +-+ +-+ +-+# we have to adjust the texmf.cnf file to the paths set in the configuration! +-+sub do_texmf_cnf { +-+ open(TMF,"<$vars{'TEXDIR'}/texmf/web2c/texmf.cnf") +-+ or die "$vars{'TEXDIR'}/texmf/web2c/texmf.cnf not found: $!"; +-+ my @texmfcnflines = ; +-+ close(TMF); +-+ my @newtmf; +-+ my @changedtmf; +-+ # we have to find TEXMFLOCAL TEXMFSYSVAR and TEXMFHOME +-+ foreach my $line (@texmfcnflines) { +-+ if ($line =~ m/^TEXMFLOCAL/) { +-+ # by default TEXMFLOCAL = TEXDIR/../texmf-local, if this is the case +-+ # we don't have to change anything from the default +-+ my $deftmlocal = dirname($vars{'TEXDIR'}); +-+ $deftmlocal .= "/texmf-local"; +-+ if ("$vars{'TEXMFLOCAL'}" eq "$deftmlocal") { +-+ push @newtmf, $line; +-+ } else { +-+ push @newtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; +-+ push @changedtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; +- } +-+ } elsif ($line =~ m/^TEXMFSYSVAR/) { +-+ # by default TEXMFSYSVAR = TEXDIR/texmf-var, if this is the case +-+ # we don't have to change anything from the default +-+ if ("$vars{'TEXMFSYSVAR'}" eq "$vars{'TEXDIR'}/texmf-var") { +-+ push @newtmf, $line; +-+ } else { +-+ push @newtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; +-+ push @changedtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; +-+ } +-+ } elsif ($line =~ m/^TEXMFSYSCONFIG/) { +-+ # by default TEXMFSYSCONFIG = TEXDIR/texmf-config, if this is the case +-+ # we don't have to change anything from the default +-+ if ("$vars{'TEXMFSYSCONFIG'}" eq "$vars{'TEXDIR'}/texmf-config") { +-+ push @newtmf, $line; +-+ } else { +-+ push @newtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; +-+ push @changedtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; +-+ } +-+ } elsif ($line =~ m/^TEXMFHOME/) { +-+ # kpse now expands ~ to USERPROFILE, so we don't treat win32 and +-+ # unix differently +-+ push @newtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; +-+ if ("$vars{'TEXMFHOME'}" ne "~/texmf") { +-+ push @changedtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; +-+ } +-+ } elsif ($line =~ m/^OSFONTDIR/) { +-+ if (win32()) { +-+ push @newtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; +-+ push @changedtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; +-+ } else { +-+ push @newtmf, $line; +-+ } +-+ } else { +-+ push @newtmf, $line; +- } +-- if ($incit) { +-- $localtlpdb->add_tlpobj($stlp); +-- } +- } +-- $localtlpdb->save unless $vars{'from_dvd'}; +-+ my $TMF; +-+ if (!$vars{'from_dvd'}) { +-+ $TMF = ">$vars{'TEXDIR'}/texmf.cnf"; +-+ open(TMF, $TMF) || die "open($TMF) failed: $!"; +-+ print TMF <option_create_formats; +- $vars{'option_letter'} = defined($tlpdb->option_paper) +- && ($tlpdb->option_paper eq "letter" ? 1 : 0); +-- $vars{'option_symlinks'} = $tlpdb->option_create_symlinks; +-+ $vars{'option_sysint'} = $tlpdb->option_system_integration; +-+ if (win32()) { +-+ $vars{'option_sysint'} = 1; +-+ } +- $vars{'sys_bin'} = $tlpdb->option_sys_bin; +- $vars{'sys_man'} = $tlpdb->option_sys_man; +- $vars{'sys_info'} = $tlpdb->option_sys_info; +-@@ -850,8 +1150,8 @@ +- print $fh "$key $vars{$key}\n" if $key=~/^option_doc/; +- print $fh "$key $vars{$key}\n" if $key=~/^option_fmt/; +- print $fh "$key $vars{$key}\n" if $key=~/^option_src/; +-- print $fh "$key $vars{$key}\n" if $key=~/^option_symlinks/; +-- if ($vars{'option_symlinks'}) { +-+ print $fh "$key $vars{$key}\n" if $key=~/^option_sysint/; +-+ if ($vars{'option_sysint'} && unix()) { +- print $fh "sys_bin ", $vars{'sys_bin'}, "\n" if $key =~ /^sys_bin/; +- print $fh "sys_man ", $vars{'sys_man'}, "\n" if $key =~ /^sys_man/; +- print $fh "sys_info ", $vars{'sys_info'}, "\n" if $key =~ /^sys_info/; +-@@ -948,7 +1248,7 @@ +- $localtlpdb->option_location($location); +- $localtlpdb->option_paper($vars{'option_letter'} ? "letter" : "a4"); +- $localtlpdb->option_create_formats($vars{'option_fmt'} ? "1" : "0"); +-- $localtlpdb->option_create_symlinks($vars{'option_symlinks'} ? "1" : "0"); +-+ $localtlpdb->option_system_integration($vars{'option_sysint'} ? "1" : "0"); +- $localtlpdb->option_sys_bin($vars{'sys_bin'}); +- $localtlpdb->option_sys_info($vars{'sys_info'}); +- $localtlpdb->option_sys_man($vars{'sys_man'}); +-@@ -964,320 +1264,6 @@ +- $localtlpdb->save() unless $vars{'from_dvd'}; +- } +- +--# do_postinst_stuff has to fix up the texmf tree and install some missing +--# files. The things to do are taken from the install-live.sh installer +--# of former times, and should be critically checked. +--sub do_postinst_stuff { +-- my $TEXDIR="$vars{'TEXDIR'}"; +-- my $TEXDIRW="$vars{'TEXDIRW'}"; +-- my $TEXMFSYSVAR="$vars{'TEXMFSYSVAR'}"; +-- my $TEXMFSYSCONFIG="$vars{'TEXMFSYSCONFIG'}"; +-- my $TEXMFLOCAL="$vars{'TEXMFLOCAL'}"; +-- my $tmv; +-- +-- do_texmf_cnf() unless ($opt_portable); +-- +-- +-- # final program execution +-- # we have to do several things: +-- # - clean the environment from spurious TEXMF related variables +-- # - add the bin dir to the PATH +-- # - select perl interpreter and set the correct perllib +-- # - run the programs +-- +-- # Step 1: Clean the environment +-- my @TMFVARS0=qw(VARTEXFONTS +-- TEXMF SYSTEXMF VARTEXFONTS +-- TEXMFDBS WEB2C TEXINPUTS TEXFORMATS MFBASES MPMEMS TEXPOOL MFPOOL MPPOOL +-- PSHEADERS TEXFONTMAPS TEXPSHEADERS TEXCONFIG TEXMFCNF); +-- my @TMFVARS1=qw(TEXMFMAIN TEXMFDIST TEXMFLOCAL TEXMFSYSVAR TEXMFSYSCONFIG +-- TEXMFHOME TEXMFVAR TEXMFCONFIG); +-- +-- if (defined($ENV{'TEXMFCNF'}) and !$vars{'from_dvd'} and !$opt_portable) { +-- print "WARNING: environment variable TEXMFCNF is set. +--You should know what you are doing. +--We will remove that for the post install actions, but all further +--operations might be disturbed.\n\n"; +-- } +-- foreach $tmv (@TMFVARS0) { +-- delete $ENV{$tmv} if (defined($ENV{$tmv})); +-- } +-- if (!$opt_portable) { +-- foreach $tmv (@TMFVARS1) { +-- delete $ENV{$tmv} if (defined($ENV{$tmv})); +-- } +-- } +-- $ENV{'TEXMFSYSVAR'} = $vars{'TEXMFSYSVAR'} if $vars{'from_dvd'}; +-- +-- # Step 2: Setup the PATH, switch to the new Perl +-- +-- my $pathsep=(win32)? ';' : ':'; +-- my $plat_bindir="$TEXDIR/bin/$vars{'this_platform'}"; +-- my $perl_bindir="$TEXDIR/tlpkg/tlperl/bin"; +-- my $perl_libdir="$TEXDIR/tlpkg/tlperl/lib"; +-- +--## This won't do any good; +--## have to remove other tex directories in calling batchfile +--# if (win32) { +--# debug("Removing other TeXs from path\n"); +--# my @newpt = (); +--# foreach my $d (split (';', $ENV{'PATH'})) { +--# push @newpt, $d unless TeXLive::TLWinGoo::is_a_texdir($d); +--# } +--# $ENV{'PATH'} = join($pathsep, @newpt); +--# debug("Path after removals(s):\n $ENV{'PATH'}\n"); +--# } +-- +-- debug("Prepending $plat_bindir to PATH\n"); +-- +-- $ENV{'PATH'}="$plat_bindir" . "$pathsep" . "$ENV{'PATH'}"; +-- +-- if (win32) { +-- debug("Prepending $perl_bindir to PATH\n"); +-- $ENV{'PATH'}="$perl_bindir" . "$pathsep" . "$ENV{'PATH'}"; +-- $ENV{'PATH'} =~ s!/!\\!g; +-- } +-- +-- debug("\nNew PATH is now:\n"); +-- foreach my $dir (split $pathsep, $ENV{'PATH'}) { +-- debug(" $dir\n"); +-- } +-- debug("\n"); +-- +-- if (win32) { +-- $ENV{'PERL5LIB'}="$perl_libdir"; +-- } +-- +-- # +-- # post install actions +-- # +-- +-- if (win32()) { +-- debug "Actual environment:\n".`set`."\n\n"; +-- debug 'Effective TEXMFCNF: '.`kpsewhich -expand-path=\$TEXMFCNF`."\n"; +-- } +-- +-- # (re-)initialize batchfile for uninstalling shortcuts +-- if (win32() and !$opt_portable) { +-- mkdirhier("$TEXDIRW/tlpkg/installer") if $vars{'from_dvd'}; +-- init_unshortbat($TEXDIRW); +-- } +-- +-- foreach my $package (sort keys %install) { +-- if ($install{$package} && defined($PostInstall{$package})) { +-- info("running post install action for $package\n"); +-- &{$PostInstall{$package}}($TEXDIR, $TEXDIRW, $TEXMFSYSVAR, $TEXMFLOCAL); +-- } +-- } +-- # $opt_portable: no %install but we still want xetex postinstall +-- &{$PostInstall{'xetex'}}($TEXDIR, $TEXDIRW, $TEXMFSYSVAR, $TEXMFLOCAL) +-- if $opt_portable; +-- update_assocs() if win32(); +-- +-- # Step 4: run the programs +-- +-- if (!$opt_portable and !$vars{'from_dvd'}) { +-- info("running mktexlsr $TEXDIR/texmf-dist $TEXDIR/texmf\n"); +-- system('mktexlsr', "$TEXDIR/texmf-dist", "$TEXDIR/texmf"); +-- } +-- +-- # we have to generate the various config file. That could be done with +-- # texconfig generate * but Win32 does not have texconfig. But we have +-- # $localtlpdb and this is simple code, so do it directly, i.e., duplicate +-- # the code from the various generate-*.pl scripts +-- info("writing fmtutil.cnf data to $TEXMFSYSVAR/web2c/fmtutil.cnf\n"); +-- my $tlp = $vars{'from_dvd'} ? $tlpdb : $localtlpdb; +-- TeXLive::TLUtils::create_fmtutil($tlp, #$localtlpdb, +-- "$TEXMFSYSVAR/web2c/fmtutil.cnf", +-- "$TEXMFLOCAL/web2c/fmtutil-local.cnf"); +-- +-- mkdirhier "$vars{'TEXMFSYSCONFIG'}/web2c"; +-- info("writing updmap.cfg to $TEXMFSYSCONFIG/web2c/updmap.cfg\n"); +-- TeXLive::TLUtils::create_updmap ($tlp, #$localtlpdb, +-- "$TEXMFSYSCONFIG/web2c/updmap.cfg", +-- "$TEXMFLOCAL/web2c/updmap-local.cfg"); +-- +-- info("writing language.dat data to $TEXMFSYSVAR/tex/generic/config/language.dat\n"); +-- TeXLive::TLUtils::create_language_dat($tlp, #$localtlpdb, +-- "$TEXMFSYSVAR/tex/generic/config/language.dat", +-- "$TEXMFLOCAL/tex/generic/config/language-local.dat"); +-- +-- info("writing language.def data to $TEXMFSYSVAR/tex/generic/config/language.def\n"); +-- TeXLive::TLUtils::create_language_def($tlp, #$localtlpdb, +-- "$TEXMFSYSVAR/tex/generic/config/language.def", +-- "$TEXMFLOCAL/tex/generic/config/language-local.def"); +-- +-- info("running mktexlsr $TEXMFSYSVAR\n"); +-- system('mktexlsr', "$TEXMFSYSVAR"); +-- +-- info("running updmap-sys... "); +-- # system('updmap-sys', '--nohash'); +-- log(`updmap-sys --nohash 2>&1`); +-- info("done\n"); +-- +-- info("re-running mktexlsr $TEXMFSYSVAR\n"); +-- system('mktexlsr', "$TEXMFSYSVAR"); +-- +-- # now work through the options if specified at all +-- +-- # letter instead of a4 +-- if ($vars{'option_letter'}) { +-- info("Setting default paper size to letter\n"); +-- if (platform() eq "hppa-hpux") { +-- # we didn't get a texlua binary for hppa-hpux, so try texconfig +-- system("texconfig", "paper", "letter"); +-- } else { +-- system("texlua", "$TEXDIR/texmf/scripts/texlive/texconf.tlu", "--sys", "--noformat", "paper", "letter"); +-- } +-- } +-- +-- # all formats option +-- if ($vars{'option_fmt'}) { +-- info("pre-generating all format files (fmtutil-sys --all), be patient..."); +-- #system('fmtutil-sys', '--all'); +-- # try to capture that output +-- log(`fmtutil-sys --all 2>&1`); +-- info("done\n"); +-- } +-- +-- # option_links +-- if ($vars{'option_symlinks'}) { +-- # bin files +-- my @files; +-- mkdirhier $vars{'sys_bin'}; +-- if (-w $vars{'sys_bin'}) { +-- info("linking binaries to $vars{'sys_bin'}\n"); +-- @files = `ls $plat_bindir`; +-- chomp(@files); +-- `cd "$vars{'sys_bin'}" && rm -f @files`; +-- `ln -s "$plat_bindir/"* "$vars{'sys_bin'}"`; +-- } else { +-- info("destination of bin symlink $vars{'sys_bin'} not writable, " +-- . "no linking of bin files done.\n"); +-- } +-- if ($vars{'option_doc'}) { +-- # info files +-- mkdirhier $vars{'sys_info'}; +-- if (-w $vars{'sys_info'}) { +-- info("linking info pages to $vars{'sys_info'}\n"); +-- @files = `ls "$TEXDIR/texmf/doc/info"`; +-- chomp(@files); +-- `cd "$vars{'sys_info'}" && rm -f @files`; +-- `ln -s "$TEXDIR/texmf/doc/info/"*info* "$vars{'sys_info'}"`; +-- } else { +-- info("destination of info symlink $vars{'sys_info'} not writable, " +-- . "no linking of info files done.\n"); +-- } +-- # man files +-- mkdirhier $vars{'sys_man'}; +-- if (-w $vars{'sys_man'}) { +-- info("linking man pages to $vars{'sys_man'}\n"); +-- my $foo = `(cd "$TEXDIR/texmf/doc/man" && echo *)`; +-- my @mans = split ' ', $foo; +-- chomp(@mans); +-- foreach my $m (@mans) { +-- my $mandir = "$TEXDIR/texmf/doc/man/$m"; +-- next unless -d $mandir; +-- mkdirhier "$vars{'sys_man'}/$m"; +-- next unless -w "$vars{'sys_man'}/$m"; +-- @files = `ls "$mandir"`; +-- chomp(@files); +-- `cd "$vars{'sys_man'}/$m" && rm -f @files`; +-- `ln -s "$mandir/"* "$vars{'sys_man'}/$m"`; +-- } +-- } else { +-- info("destination of man symlink $vars{'sys_man'} not writable, " +-- . "no linking of man files done.\n"); +-- } +-- } +-- } +--} +-- +-- +--# we have to adjust the texmf.cnf file to the paths set in the configuration! +--sub do_texmf_cnf { +-- open(TMF,"<$vars{'TEXDIR'}/texmf/web2c/texmf.cnf") +-- or die "$vars{'TEXDIR'}/texmf/web2c/texmf.cnf not found: $!"; +-- my @texmfcnflines = ; +-- close(TMF); +-- my @newtmf; +-- my @changedtmf; +-- # we have to find TEXMFLOCAL TEXMFSYSVAR and TEXMFHOME +-- foreach my $line (@texmfcnflines) { +-- if ($line =~ m/^TEXMFLOCAL/) { +-- # by default TEXMFLOCAL = TEXDIR/../texmf-local, if this is the case +-- # we don't have to change anything from the default +-- my $deftmlocal = dirname($vars{'TEXDIR'}); +-- $deftmlocal .= "/texmf-local"; +-- if ("$vars{'TEXMFLOCAL'}" eq "$deftmlocal") { +-- push @newtmf, $line; +-- } else { +-- push @newtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; +-- push @changedtmf, "TEXMFLOCAL = $vars{'TEXMFLOCAL'}\n"; +-- } +-- } elsif ($line =~ m/^TEXMFSYSVAR/) { +-- # by default TEXMFSYSVAR = TEXDIR/texmf-var, if this is the case +-- # we don't have to change anything from the default +-- if ("$vars{'TEXMFSYSVAR'}" eq "$vars{'TEXDIR'}/texmf-var") { +-- push @newtmf, $line; +-- } else { +-- push @newtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; +-- push @changedtmf, "TEXMFSYSVAR = $vars{'TEXMFSYSVAR'}\n"; +-- } +-- } elsif ($line =~ m/^TEXMFSYSCONFIG/) { +-- # by default TEXMFSYSCONFIG = TEXDIR/texmf-config, if this is the case +-- # we don't have to change anything from the default +-- if ("$vars{'TEXMFSYSCONFIG'}" eq "$vars{'TEXDIR'}/texmf-config") { +-- push @newtmf, $line; +-- } else { +-- push @newtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; +-- push @changedtmf, "TEXMFSYSCONFIG = $vars{'TEXMFSYSCONFIG'}\n"; +-- } +-- } elsif ($line =~ m/^TEXMFHOME/) { +-- # kpse now expands ~ to USERPROFILE, so we don't treat win32 and +-- # unix differently +-- push @newtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; +-- if ("$vars{'TEXMFHOME'}" ne "~/texmf") { +-- push @changedtmf, "TEXMFHOME = $vars{'TEXMFHOME'}\n"; +-- } +-- } elsif ($line =~ m/^OSFONTDIR/) { +-- if (win32()) { +-- push @newtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; +-- push @changedtmf, "OSFONTDIR = \$SystemRoot/fonts//\n"; +-- } else { +-- push @newtmf, $line; +-- } +-- } else { +-- push @newtmf, $line; +-- } +-- } +-- my $TMF; +-- if (!$vars{'from_dvd'}) { +-- $TMF = ">$vars{'TEXDIR'}/texmf.cnf"; +-- open(TMF, $TMF) || die "open($TMF) failed: $!"; +-- print TMF <root); +- } +-+ # +-+ # Run the post installation code in the postaction tlpsrc entries +-+ &TeXLive::TLUtils::do_postaction_code("remove", $tlp); +- } +- return \%ret; +- } +-Index: texmf/scripts/texlive/uninstall-win32.pl +-=================================================================== +---- texmf/scripts/texlive/uninstall-win32.pl (revision 12171) +-+++ texmf/scripts/texlive/uninstall-win32.pl (working copy) +-@@ -17,6 +17,11 @@ +- } +- +- use TeXLive::TLWinGoo; +-+use TeXLive::TLPDB; +-+use TeXLive::TLPOBJ; +-+use TeXLive::TLPostActions; +-+use TeXLive::TLConfig; +-+use TeXLive::TLUtils; +- use Tk; +- use Tk::Dialog; +- +-@@ -39,6 +44,23 @@ +- $cancel->pack(-side => 'left' , -padx => "3m"); +- +- sub doit { +-+ # first we remove the whole bunch of shortcuts and menu entries +-+ # by calling all the post action codes for the installed packages +-+ my $localtlpdb = TeXLive::TLPDB->new ("root" => $Master); +-+ if (!defined($localtlpdb)) { +-+ tlwarn("Cannot load the TLPDB from $Master, are you sure there is an installation?\n"); +-+ } else { +-+ for my $pkg ($localtlpdb->list_packages) { +-+ if (defined($PostRemove{$pkg})) { +-+ info("running post remove action for $pkg\n"); +-+ &{$PostRemove{$pkg}}($Master); +-+ } +-+ } +-+ &TeXLive::TLUtils::do_postaction_code("remove", $pkg); +-+ } +-+ my $menupath = &TeXLive::TLWinGoo::menu_path(); +-+ $menupath =~ s!/!\\!g; +-+ `rmdir /s /q "$menupath\\$TeXLive::TLConfig::WindowsMainMenuName" 2>nul`; +- remove_texbindirs_from_path(); +- unsetenv_reg("TEXBINDIR"); +- # from_dvd case: Index: texmf/scripts/texlive/tlmgr.pl =================================================================== ---- texmf/scripts/texlive/tlmgr.pl (revision 12171) +--- texmf/scripts/texlive/tlmgr.pl (revision 12198) +++ texmf/scripts/texlive/tlmgr.pl (working copy) @@ -557,6 +557,9 @@ info("running post remove action for $pkg\n"); @@ -2986,9 +6785,118 @@ Index: texmf/scripts/texlive/tlmgr.pl } return \%ret; } +@@ -969,7 +972,7 @@ + closedir (DIR) || warn "closedir($opts{'backupdir'}) failed: $!"; + for my $dirent (@dirents) { + next if (-d $dirent); +- next if ($dirent !~ m/^(.*)\.r([0-9]+)\.tar\.lzma$/); ++ next if ($dirent !~ m/^(.*)\.r([0-9]+)\.tar\.xz$/); + $backups{$1}->{$2} = 1; + } + my ($pkg, $rev) = @ARGV; +@@ -1002,14 +1005,14 @@ + finish(0); + } + } +- print "Restoring $pkg, $rev from $opts{'backupdir'}/${pkg}.r${rev}.tar.lzma\n"; ++ print "Restoring $pkg, $rev from $opts{'backupdir'}/${pkg}.r${rev}.tar.xz\n"; + if (!$opts{"dry"}) { + init_local_db(1); + # first remove the package, then reinstall it + # this way we get rid of useless files + $opts{"backupdir"} = abs_path($opts{"backupdir"}); + merge_into(\%ret, &remove_package($pkg, $localtlpdb)); +- TeXLive::TLMedia->_install_package("$opts{'backupdir'}/${pkg}.r${rev}.tar.lzma" , [] ,$localtlpdb); ++ TeXLive::TLMedia->_install_package("$opts{'backupdir'}/${pkg}.r${rev}.tar.xz" , [] ,$localtlpdb); + logpackage("restore: $pkg ($rev)"); + # now we have to read the .tlpobj file and add it to the DB + my $tlpobj = TeXLive::TLPOBJ->new; +@@ -1118,9 +1121,9 @@ + } else { + my $tlp = $localtlpdb->get_package($pkg); + info("saving current status of $pkg to $opts{'backupdir'}/${pkg}.r" . +- $tlp->revision . "tar.lzma\n"); ++ $tlp->revision . "tar.xz\n"); + if (!$opts{"dry-run"}) { +- $tlp->make_container("lzma", $localtlpdb->root, ++ $tlp->make_container("xz", $localtlpdb->root, + $opts{"backupdir"}, "${pkg}.r" . $tlp->revision); + } + } +@@ -1177,22 +1180,22 @@ + } + foreach $pkg_part (@pkg_parts) { + if ($media eq 'CD') { +- copy("$repo/$pkg_part.tar.lzma", "$temp"); ++ copy("$repo/$pkg_part.tar.xz", "$temp"); + } else { # net +- TeXLive::TLUtils::download_file("$repo/$pkg_part.tar.lzma", "$temp/$pkg_part.tar.lzma"); ++ TeXLive::TLUtils::download_file("$repo/$pkg_part.tar.xz", "$temp/$pkg_part.tar.xz"); + } + # now we should have the file present +- if (!-r "$temp/$pkg_part.tar.lzma") { +- tlwarn("Couldn't get $pkg_part.tar.lzma, that is bad\n"); ++ if (!-r "$temp/$pkg_part.tar.xz") { ++ tlwarn("Couldn't get $pkg_part.tar.xz, that is bad\n"); + return 1; # abort + } +- # unpack lzma archive +- $sysret = system("$::progs{'lzmadec'} < \"$temp/$pkg_part.tar.lzma\" > \"$temp/$pkg_part.tar\""); ++ # unpack xz archive ++ $sysret = system("$::progs{'xzdec'} < \"$temp/$pkg_part.tar.xz\" > \"$temp/$pkg_part.tar\""); + if ($sysret) { +- tlwarn("Couldn't unpack $pkg_part.tar.lzma\n"); ++ tlwarn("Couldn't unpack $pkg_part.tar.xz\n"); + return 1; # unpack failed? abort + } +- unlink("$temp/$pkg_part.tar.lzma"); # we don't need that archive anymore ++ unlink("$temp/$pkg_part.tar.xz"); # we don't need that archive anymore + push @updater_args, $pkg_part, $oldrev, $newrev; + } + } +@@ -1617,10 +1620,10 @@ + } + + if ($opts{"backup"} && !$opts{"dry-run"}) { +- $tlp->make_container("lzma", $root, ++ $tlp->make_container("xz", $root, + $opts{"backupdir"}, "${pkg}.r" . $tlp->revision); + $unwind_package = +- "$opts{'backupdir'}/${pkg}.r" . $tlp->revision . ".tar.lzma"; ++ "$opts{'backupdir'}/${pkg}.r" . $tlp->revision . ".tar.xz"; + + if ($autobackup) { + # in case we do auto backups we remove older backups +@@ -2494,7 +2497,7 @@ + return if defined $localtlpdb; + $localtlpdb = TeXLive::TLPDB->new ("root" => $Master); + die("cannot find tlpdb in $Master") unless (defined($localtlpdb)); +- # setup the programs, for w32 we need the shipped wget/lzma etc, so we ++ # setup the programs, for w32 we need the shipped wget/xz etc, so we + # pass the location of these files to setup_programs. + if (!setup_programs("$Master/tlpkg/installer", + $localtlpdb->option_platform)) { +@@ -2605,14 +2608,14 @@ + my @backups; + for my $dirent (@dirents) { + next if (-d $dirent); +- next if ($dirent !~ m/^$pkg\.r([0-9]+)\.tar\.lzma$/); ++ next if ($dirent !~ m/^$pkg\.r([0-9]+)\.tar\.xz$/); + push @backups, $1; + } + my $i = 1; + for my $e (reverse sort {$a <=> $b} @backups) { + if ($i > $autobackup) { +- info ("Removing backup $backupdir/$pkg.r$e.tar.lzma\n"); +- unlink("$backupdir/$pkg.r$e.tar.lzma") unless $dryrun; ++ info ("Removing backup $backupdir/$pkg.r$e.tar.xz\n"); ++ unlink("$backupdir/$pkg.r$e.tar.xz") unless $dryrun; + } + $i++; + } Index: texmf/scripts/texlive/uninstall-win32.pl =================================================================== ---- texmf/scripts/texlive/uninstall-win32.pl (revision 12171) +--- texmf/scripts/texlive/uninstall-win32.pl (revision 12198) +++ texmf/scripts/texlive/uninstall-win32.pl (working copy) @@ -17,6 +17,11 @@ } -- cgit v1.2.3