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', @@ -146,7 +145,7 @@ # option handling my $opt_from_dvd = ""; -my $opt_gui = (win32() ? "perltk" : "text"); +my $opt_gui = (win32() ? "wizard" : "text"); my $opt_help = 0; my $opt_location = ""; my $opt_no_gui = 0; @@ -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. -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/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/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; - - -# 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 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; } @@ -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: @@ -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> +=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 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 + +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 @@ -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 @@ =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 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); - - $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 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'}; + } } - 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 12199) +++ tlpkg/etc/2009.combined.patch (working copy) @@ -19,6 +19,15 @@ # # 'option_symlinks' => 0, # 'sys_bin' => '/usr/local/bin', +@@ -146,7 +145,7 @@ + + # option handling + my $opt_from_dvd = ""; +-my $opt_gui = (win32() ? "perltk" : "text"); ++my $opt_gui = (win32() ? "wizard" : "text"); + my $opt_help = 0; + my $opt_location = ""; + my $opt_no_gui = 0; @@ -380,6 +379,14 @@ $vars{'doc_splitting_supported'} = $tlpdb->config_doc_container; } @@ -3789,3148 +3798,3 @@ 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 -- --Property changes on: tlpkg/tlpsrc/00texlive.installation.tlpsrc --___________________________________________________________________ --Added: svn:mergeinfo -- -++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 12171) -+--- 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 -@@ -2061,7 +3377,7 @@ - runpattern d tlpkg/libexec - Index: tlpkg/tlpsrc/bin-metafont.tlpsrc - =================================================================== ----- tlpkg/tlpsrc/bin-metafont.tlpsrc (revision 12171) -+--- tlpkg/tlpsrc/bin-metafont.tlpsrc (revision 12198) - +++ tlpkg/tlpsrc/bin-metafont.tlpsrc (working copy) - @@ -1,8 +1,7 @@ - name bin-metafont -@@ -2075,9 +3391,31 @@ - binpattern f bin/${ARCH}/mf - Index: tlpkg/tlpsrc/texlive.infra.tlpsrc - =================================================================== ----- tlpkg/tlpsrc/texlive.infra.tlpsrc (revision 12171) -+--- tlpkg/tlpsrc/texlive.infra.tlpsrc (revision 12198) - +++ tlpkg/tlpsrc/texlive.infra.tlpsrc (working copy) --@@ -36,3 +36,17 @@ -+@@ -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} -@@ -2097,7 +3435,7 @@ - +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 (revision 12198) - +++ tlpkg/bin/tl-update-tlcritical (working copy) - @@ -34,7 +34,7 @@ - # update normal containers. -@@ -2108,9 +3446,153 @@ - - # 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 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 12198) -+++ texmf/scripts/texlive/tlmgr.pl (working copy) -@@ -557,6 +557,9 @@ - info("running post remove action for $pkg\n"); - &{$PostRemove{$pkg}}($localtlpdb->root); - } -+ # -+ # Run the post installation code in the postaction tlpsrc entries -+ &TeXLive::TLUtils::do_postaction_code("remove", $tlp); - } - 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 12198) -+++ 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 12198) +++ texmf/scripts/texlive/tlmgr.pl (working copy) @@ -557,6 +557,9 @@ info("running post remove action for $pkg\n"); &{$PostRemove{$pkg}}($localtlpdb->root); } + # + # Run the post installation code in the postaction tlpsrc entries + &TeXLive::TLUtils::do_postaction_code("remove", $tlp); } 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 12198) +++ 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: