diff options
author | Norbert Preining <preining@logic.at> | 2009-07-03 15:27:37 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2009-07-03 15:27:37 +0000 |
commit | 9167358afb2bd622448cf97615899cba00556bc5 (patch) | |
tree | 941e6c12cbc2bcfbc51f5097b67ac9e8d9ba7faf /Master/texmf | |
parent | e14a9d60c5f2c2734d18d1d5e4f8464633ab9a60 (diff) |
the "Tokyo-Vienna-cramped-flight-commit":
- unify installer keys of the %vars hash to always use option_ prefix
if it is an option
- unify the layout of things in 00texlive.installation so that user settable
things look like opt_$key:vallue, and internal things setting_$key:vale
- add list of supported options to TLConfig, with type definitions
- use a unified option call
$tlpdb->option($key [, $value, $value])
instead of many different
$tlpdb->option_foo_bar
- adapt install-tl, uninstall-w32, tlmgr, tlpkg/bin, TeXLive::*, installer
plugins, to use this new function instead
- make the
setting_platform:XXXXX
(formerly platform:XXXXX) in 00texlive.installation only optional. It is
not saved into the TLPDB if the *default* platform as returned by
TeXLive::TLUtils::platform() (thus calling config.guess on unix). Only
if you override the platform in the installer with -force-arch then
this value is set in the TLPDB
- implement TLMedia->platform that checks first the included TLPDB for
option("platform"), and if that is not given determines the platform
using TLUtils::platform().
- move the add_symlinks and remove_symlinks from TLPDB to TLMedia
- sanatize the installer modules: perltk is now equivalent to text
- tlmgr:
. output of tlmgr option [show] does now show all the set options,
but ignores irrelevant ones for the respective platform
(sys_bin/man/info for win32, desktop_integration etc for unix)
. option handling rewritten in a general way so that we only have
to add new options to TLConfig::%TLPDBOptionXXXXX
. setting an option is verified against the types of the options
. implement
tlmgr option showall
that shows also options that are currently not set/saved in the TLPDB
- TLUtils: honor the w32_multi_user setting also for shortcuts and menu
items
- tlmgrgui:
. implement support for most options that are set in the TLPDB
. add buttons to remove/add symlinks
git-svn-id: svn://tug.org/texlive/trunk@14083 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf')
-rwxr-xr-x | Master/texmf/scripts/texlive/tlmgr.pl | 366 | ||||
-rw-r--r-- | Master/texmf/scripts/texlive/tlmgrgui/gui-config.pl | 164 | ||||
-rwxr-xr-x | Master/texmf/scripts/texlive/tlmgrgui/tlmgrgui.pl | 15 | ||||
-rw-r--r-- | Master/texmf/scripts/texlive/uninstall-win32.pl | 13 |
4 files changed, 290 insertions, 268 deletions
diff --git a/Master/texmf/scripts/texlive/tlmgr.pl b/Master/texmf/scripts/texlive/tlmgr.pl index 23368a4f323..397c95ae950 100755 --- a/Master/texmf/scripts/texlive/tlmgr.pl +++ b/Master/texmf/scripts/texlive/tlmgr.pl @@ -9,10 +9,6 @@ # - in GUI mode updating texlive.infra DOES work without # the warning, but it does NOT force to restart the GUI. THAT IS BAD!!! # -# - when tlmgr2.pl is shipped globally as tlmgr.pl we can switch the -# installer from using either texconfig paper or texlua ... to -# tlmgr paper letter which will work on all platforms transparently. -# # - tlmgr should have a "progress" bar for the update --all and install # etc options, echoing number of total packages etc etc. # @@ -52,6 +48,7 @@ BEGIN { # if not in bootstrapping mode => kpsewhich exists, so use it to get $Master chomp($Master = `kpsewhich -var-value=SELFAUTOPARENT`); } + $::installerdir = $Master; # # make Perl find our packages first: @@ -209,7 +206,6 @@ if (defined($action) && ($action =~ m/^help/i)) { } if (defined($action) && ($action =~ m/^print-arch$/i)) { - $::installerdir = $Master; print TeXLive::TLUtils::platform(), "\n"; exit 0; } @@ -483,7 +479,7 @@ sub handle_execute_actions { # format-regenerate is used when the paper size changes. In that - # case, if option_create_formats is set, we simply want to generate + # case, if option("create_formats") is set, we simply want to generate # { my %done_formats; @@ -506,7 +502,7 @@ sub handle_execute_actions { for my $m (keys %{$::execute_actions{'disable'}{'formats'}}) { $do_full = 1; } - my $opt_fmt = $localtlpdb->option_create_formats; + my $opt_fmt = $localtlpdb->option("create_formats"); if ($do_full) { info("regenerating fmtutil.cnf in $TEXMFSYSVAR\n"); TeXLive::TLUtils::create_fmtutil($localtlpdb, @@ -572,7 +568,7 @@ sub handle_execute_actions { # Use full path for external command, except on Windows. $lang = "$TEXMFSYSVAR/tex/generic/config/$lang"; } - if ($localtlpdb->option_create_formats && !$::regenerate_all_formats) { + if ($localtlpdb->option("create_formats") && !$::regenerate_all_formats) { $errors += do_cmd_and_check("fmtutil-sys --byhyphen $lang"); } } @@ -890,10 +886,10 @@ sub action_symlinks { } init_local_db(); if ($what =~ m/^add$/i) { - $localtlpdb->add_symlinks(); + $localtlmedia->add_symlinks(); } elsif ($what =~ m/^remove$/i) { # remove symlinks - $localtlpdb->remove_symlinks(); + $localtlmedia->remove_symlinks(); } else { # that should not happen tlwarn("that should not happen, action_symlinks what=$what\n"); @@ -1157,8 +1153,8 @@ sub write_w32_updater { my $container_doc_split = $mediatlpdb->config_doc_container; # get options about src/doc splitting from $totlpdb # TT: should we use local options to decide about install of doc & src? - my $opt_src = $localtlpdb->option_install_srcfiles; - my $opt_doc = $localtlpdb->option_install_docfiles; + my $opt_src = $localtlpdb->option("install_srcfiles"); + my $opt_doc = $localtlpdb->option("install_docfiles"); my $root = $localtlpdb->root; my $temp = "$root/temp"; my $repo = $mediatlpdb->root . "/$Archive"; @@ -1178,7 +1174,8 @@ sub write_w32_updater { $localtlp = $localtlpdb->get_package($pkg); $oldrev = $localtlp->revision; $newrev = $mediatlp->revision; - # we do install documenation files for category Documentation even if option_install_docfiles is false + # we do install documenation files for category Documentation even if + # option("install_docfiles") is false $opt_real_doc = ($mediatlp->category =~ m/documentation/i) ? 1 : $opt_doc; @pkg_parts = ($pkg); push(@pkg_parts, "$pkg.source") if ($container_src_split && $opt_src && $mediatlp->srcfiles); @@ -1552,8 +1549,8 @@ sub action_update { # for size calculation we also want w32 special packages if (@new || @updated || @w32_updated) { %sizes = %{$tlmediatlpdb->sizes_of_packages( - $localtlpdb->option_install_srcfiles, - $localtlpdb->option_install_docfiles, + $localtlpdb->option("install_srcfiles"), + $localtlpdb->option("install_docfiles"), @new, @updated, @w32_updated)}; } else { $sizes{'__TOTAL__'} = 0; @@ -1951,175 +1948,131 @@ sub action_option { $what = "show" unless defined($what); init_local_db(); if ($what =~ m/^show$/i) { - print "Default installation location (location): ", - $localtlpdb->option_location, "\n"; - print "Create formats on installation (formats): ", - ($localtlpdb->option_create_formats ? "yes" : "no"), "\n"; - print "Install documentation files (docfiles): ", - ($localtlpdb->option_install_docfiles ? "yes": "no"), "\n"; - print "Install source files (srcfiles): ", - ($localtlpdb->option_install_srcfiles ? "yes": "no"), "\n"; - print "Destination for symlinks for binaries (sys_bin): ", - $localtlpdb->option_sys_bin, "\n" - if $localtlpdb->option_sys_bin; - print "Destination for symlinks for man pages (sys_man): ", - $localtlpdb->option_sys_man, "\n" - if $localtlpdb->option_sys_man; - print "Destination for symlinks for info docs (sys_info): ", - $localtlpdb->option_sys_info, "\n" - if $localtlpdb->option_sys_info; - print "Directory for backups (backupdir): ", - $localtlpdb->option("backupdir"), "\n" - if $localtlpdb->option("backupdir"); - print "Number of backups to keep (autobackup): ", - $localtlpdb->option("autobackup"), "\n" - if $localtlpdb->option("autobackup"); - } elsif ($what =~ m/^location$/i) { - # changes the default location - my $loc = shift @ARGV; - if ($loc) { - # support "ctan" on the cmd line, and don't abs_path it! - if ($loc =~ m/^ctan$/i) { - $loc = "$TeXLive::TLConfig::TeXLiveURL"; - } - if ($loc !~ m!^(http|ftp)://!i) { - # seems to be a local path, try to normalize it - my $testloc = abs_path($loc); - # however, if we were given a url, that will get "normalized" to the - # empty string, it not being a path. Restore the original value if so. - $loc = $testloc if $testloc; - } - info("tlmgr: setting default installation location to $loc\n"); - $localtlpdb->option_location($loc); - $localtlpdb->save; - } else { - info("Default installation location: ", - $localtlpdb->option_location, "\n"); - } - } elsif ($what =~ m/^docfiles$/i) { - # changes the default docfiles - my $loc = shift @ARGV; - if (defined($loc)) { - info("tlmgr: defaulting to", ($loc ? "" : " not"), - " installing documentation files.\n"); - $localtlpdb->option_install_docfiles($loc); - $localtlpdb->save; - } else { - info("Install documentation files: ", - $localtlpdb->option_install_docfiles, "\n"); - } - } elsif ($what =~ m/^srcfiles$/i) { - # changes the default srcfiles - my $loc = shift @ARGV; - if (defined($loc)) { - info("tlmgr: defaulting to", ($loc ? "" : " not"), - " installing source files.\n"); - $localtlpdb->option_install_srcfiles($loc); - $localtlpdb->save; - } else { - info("Install source files: ", - $localtlpdb->option_install_srcfiles, "\n"); - } - } elsif ($what =~ m/^formats$/i) { - # changes the default formats - my $loc = shift @ARGV; - if (defined($loc)) { - info("tlmgr: defaulting to", ($loc ? "" : " not"), - " generating format files on installation.\n"); - $localtlpdb->option_create_formats($loc); - $localtlpdb->save; - } else { - info("Create formats on installation: ", - $localtlpdb->option_create_formats, "\n"); - } - } elsif ($what =~ m/^sys_man$/i) { - # changes the default sys_man - my $loc = shift @ARGV; - if (defined($loc)) { - info("tlmgr: setting destination for symlinks to man pages to $loc\n"); - $localtlpdb->option_sys_man ($loc); - $localtlpdb->save; - } else { - info("Destination for symlinks to man pages: ", - $localtlpdb->option_sys_man, "\n"); - } - } elsif ($what =~ m/^sys_info$/i) { - # changes the default sys_info - my $loc = shift @ARGV; - if (defined($loc)) { - info("tlmgr: setting destination for symlinks to info pages to $loc\n"); - $localtlpdb->option_sys_info ($loc); - $localtlpdb->save; - } else { - info("Default destination for symlinks to info pages: ", - $localtlpdb->option_sys_info, "\n"); - } - } elsif ($what =~ m/^sys_bin$/i) { - # changes the default sys_bin - my $loc = shift @ARGV; - if (defined($loc)) { - info("tlmgr: setting destination for symlinks to binaries to $loc\n"); - $localtlpdb->option_sys_bin ($loc); - $localtlpdb->save; - } else { - info("Default destination for symlinks to binaries: ", - $localtlpdb->option_sys_bin, "\n"); - } - } elsif ($what =~ m/^backupdir$/i) { - my $val = shift @ARGV; - if (defined($val)) { - info("tlmgr: setting option $what to $val.\n"); - if (! -d $val) { - info("tlmgr: the directory $val does not exists, it has to be created\n"); - info("tlmgr: before backups can be done automatically.\n"); - } - $localtlpdb->option($what,$val); - $localtlpdb->save; - } else { - info("Option $what = ", $localtlpdb->option($what), "\n"); - } - } elsif ($what =~ m/^autobackup$/i) { - my $val = shift @ARGV; - if (defined($val)) { - if ($val =~ m/-?[0-9]+/) { - if ($val < -1) { - tlwarn "Value $val for autobackup not supported, must be >= -1\n"; - return; - } - } elsif ($val =~ m/^infty$/i) { - $val = -1; + for my $o (keys %{$localtlpdb->options}) { + # ignore some things which are win32 specific + next if ($o eq "desktop_integration" && !win32()); + next if ($o eq "file_assocs" && !win32()); + next if ($o eq "w32_multi_user" && !win32()); + if (win32()) { + next if ($o =~ m/^sys_/); + } + if (defined $TLPDBOptionDesc{$o}) { + info("$TLPDBOptionDesc{$o} ($TLPDBOptionTlmgrName{$o}): " . + $localtlpdb->option($o) . "\n"); } else { - tlwarn "Value $val for autobackup not supported, must be >= -1\n"; - return; + tlwarn ("option $o not supported\n"); } - info("tlmgr: setting option $what to $val"); - $localtlpdb->option($what,$val); - $localtlpdb->save; - } else { - $val = $localtlpdb->option($what); - info("Option $what = $val"); } - if ($val == -1) { - info(" (make and keep infinitely many backups)\n"); - } elsif ($val == 0) { - info(" (don't keep any backups)\n"); - } else { - info(" (make and keep $val backups)\n"); - } - } elsif (member($what, @AllowedConfigOptions)) { - # for all further options not handled above, we check whether they - # appear in the list of allowed options; if they do, we set/read - # the values, otherwise we warn. - my $val = shift @ARGV; - if (defined($val)) { - info("tlmgr: setting option $what to $val.\n"); - $localtlpdb->option($what,$val); - $localtlpdb->save; - } else { - info("Option $what = ", $localtlpdb->option($what), "\n"); + } elsif ($what =~ m/^showall$/i) { + my %loc = %{$localtlpdb->options}; + for my $o (keys %TLPDBOptionDesc) { + info("$TLPDBOptionDesc{$o} ($TLPDBOptionTlmgrName{$o}): " . + (defined($loc{$o}) ? $loc{$o} : "(not set)") . "\n"); } } else { - tlwarn "Option $what is currently not supported.\n"; + my $found = 0; + for my $opt (keys %TLPDBOptionTlmgrName) { + if ($what eq $TLPDBOptionTlmgrName{$opt}) { + $found = 1; + # the option argument matches the name + my $val = shift @ARGV; + if (defined($val)) { + # set new value + # here we have to care for some special cases + if ($what eq $TLPDBOptionTlmgrName{"location"}) { + # support "ctan" on the cmd line, and don't abs_path it! + if ($val =~ m/^ctan$/i) { + $val = "$TeXLive::TLConfig::TeXLiveURL"; + } + if ($val !~ m!^(http|ftp)://!i) { + # seems to be a local path, try to normalize it + my $testloc = abs_path($val); + # however, if we were given a url, that will get "normalized" + # to the empty string, it not being a path. + # Restore the original value if so. + $val = $testloc if $testloc; + } + info("tlmgr: setting default installation location to $val\n"); + $localtlpdb->option($opt, $val); + } elsif ($what eq $TLPDBOptionTlmgrName{"backupdir"}) { + info("tlmgr: setting option $what to $val.\n"); + if (! -d $val) { + info("tlmgr: the directory $val does not exists, it has to be created\n"); + info("tlmgr: before backups can be done automatically.\n"); + } + $localtlpdb->option($opt, $val); + } elsif ($what eq $TLPDBOptionTlmgrName{"w32_multi_user"}) { + # when running w32 do not allow that a non-admin users sets + # this from false to true + if (win32() && !admin() && !$val) { + tlwarn("tlmgr: non-admin user cannot set $TLPDBOptionTlmgrName{'w32_multi_user'} option to true\n"); + } else { + if ($val) { + info("tlmgr: setting option $what to 1.\n"); + $localtlpdb->option($opt, 1); + } else { + info("tlmgr: setting option $what to 0.\n"); + $localtlpdb->option($opt, 0); + } + } + } else { + # default case, switch for different types + if ($TLPDBOptionType{$opt} eq "b") { + if ($val) { + info("tlmgr: setting option $what to 1.\n"); + $localtlpdb->option($opt, 1); + } else { + info("tlmgr: setting option $what to 0.\n"); + $localtlpdb->option($opt, 0); + } + } elsif ($TLPDBOptionType{$opt} eq "p") { + info("tlmgr: setting option $what to $val.\n"); + $localtlpdb->option($opt, $val); + } elsif ($TLPDBOptionType{$opt} eq "u") { + info("tlmgr: setting option $what to $val.\n"); + $localtlpdb->option($opt, $val); + } elsif ($TLPDBOptionType{$opt} =~ m/^n(:((-)?\d+)?..((-)?\d+)?)?$/) { + my $isgood = 1; + my $n = int($val); + my $low; + my $up; + if (defined($1)) { + # range given + if (defined($2)) { + # lower border + if ($2 > $n) { + tlwarn("value $n for $what out of range ($TLPDBOptionType{$opt})\n"); + $isgood = 0; + } + } + if (defined($4)) { + # upper border + if ($4 < $n) { + tlwarn("value $n for $what out of range ($TLPDBOptionType{$opt})\n"); + $isgood = 0; + } + } + } + if ($isgood) { + info("tlmgr: setting option $what to $n.\n"); + $localtlpdb->option($opt, $n); + } + } else { + tlwarn ("Unknown type of option $opt: $TLPDBOptionType{$opt}\n"); + } + } + $localtlpdb->save; + } else { + # show current value + info ("$TLPDBOptionDesc{$opt} ($TLPDBOptionTlmgrName{$opt}): " . + $localtlpdb->option($opt) . "\n"); + } + last; + } + } + if (!$found) { + tlwarn("tlmgr: option $what not supported!\n"); + } } return; } @@ -2198,10 +2151,10 @@ sub action_arch { info("install: tlpsv.win32\n"); $tlmediasrc->install_package("tlpsv.win32", $localtlpdb); } - # update the option_archs list of installed archs - my @larchs = $localtlpdb->option_available_architectures; + # update the option("available_architectures") list of installed archs + my @larchs = $localtlpdb->setting("available_architectures"); push @larchs, @todoarchs; - $localtlpdb->option_available_architectures(@larchs); + $localtlpdb->setting("available_architectures",@larchs); $localtlpdb->save; } else { die "Unknown option for arch: $what"; @@ -2351,7 +2304,7 @@ sub action_uninstall { } print ("Ok, removing the whole installation:\n"); init_local_db(); - $localtlpdb->remove_symlinks; + $localtlmedia->remove_symlinks; # now do remove the rest system("rm", "-rf", "$Master/texmf-dist"); system("rm", "-rf", "$Master/texmf-doc"); @@ -2409,9 +2362,10 @@ sub action_recreate_tlpdb { # we have to find out the default arch # if there is only one dir in $Master/bin then we are settled, # otherwise we expect the user to pass a correct arch string - if ($^O =~ /^MSWin(32|64)$/i) { - push @deps, "platform:win32"; - } else { + if (!TeXLive::TLUtils::member(TeXLive::TLUtils::platform(), @archs)) { + # hmm that is bad, the platform as detected is not in the list + # of installed platforms, so the option --arch has to be given + # if only one is installed use that one if ($#archs == 0) { # only one arch available, fine, use it as default push @deps, "platform:$archs[0]"; @@ -2557,7 +2511,7 @@ sub check_files { # we need the -use-svn version only for the check-file-coverage # replacement anyway, so it will be used on tug, which is neither w32 nor # darwin. - my $arch = $localtlpdb->option_platform; + my $arch = $localtlmedia->platform(); return $ret if ($arch eq "win32" || $arch eq "universal-darwin"); # do check that all files in the trees are covered @@ -2920,8 +2874,7 @@ sub init_local_db { die("cannot find tlpdb in $Master") unless (defined($localtlpdb)); # 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)) { + if (!setup_programs("$Master/tlpkg/installer", $localtlmedia->platform)) { tlwarn("Couldn't set up the necessary programs.\nInstallation of packages is not supported.\nPlease report to texlive\@tug.org.\n"); if (defined($should_i_die) && $should_i_die) { finish(1); @@ -2930,7 +2883,7 @@ sub init_local_db { } } # let cmd line options override the settings in localtlpdb - my $loc = $localtlpdb->option_location; + my $loc = $localtlpdb->option("location"); if (defined($loc)) { $location = $loc; } @@ -3485,27 +3438,34 @@ written to the terminal. =item B<option [show]> +=item B<option showall> + =item B<option I<key> [I<value>]> =back The first form shows the global TeX Live settings currently saved in the -TLPDB. +TLPDB with a short description and the C<key> used for changing it in +paranthesis. + +The second form acts like the first, but also shows options which can +be defined but are not currently set to any value. -In the second form, if I<value> is not given, the setting for I<key> is +In the third form, if I<value> is not given, the setting for I<key> is displayed. If I<value> is present, I<key> is set to I<value>. -Possible values for I<key> are: - - C<location> (default installation location), - C<formats> (create formats at installation time), - C<docfiles> (install documentation files), - C<srcfiles> (install source files), - C<backupdir> (default directory for backups), - C<autobackup> (number of backups to keep). - C<sys_bin> (location where binaries are linked to by action symlinks) - C<sys_man> (location where man pages are linked to by action symlinks) - C<sys_info> (location where info pages are linked to by action symlinks) +Possible values for I<key> are (but see B<tlmgr option showall> for +the definitive list): + + location (default installation location), + formats (create formats at installation time), + docfiles (install documentation files), + srcfiles (install source files), + backupdir (default directory for backups), + autobackup (number of backups to keep). + sys_bin (location where binaries are linked to by action symlinks) + sys_man (location where man pages are linked to by action symlinks) + sys_info (location where info pages are linked to by action symlinks) One common use of C<option> is if you originally installed from DVD, and want to permanently change the installation to get further updates from diff --git a/Master/texmf/scripts/texlive/tlmgrgui/gui-config.pl b/Master/texmf/scripts/texlive/tlmgrgui/gui-config.pl index bc910bad907..c5746ac7954 100644 --- a/Master/texmf/scripts/texlive/tlmgrgui/gui-config.pl +++ b/Master/texmf/scripts/texlive/tlmgrgui/gui-config.pl @@ -10,42 +10,49 @@ our $back_config = $back->add("config",-label => ___"config"); $screens{"config"} = $back_config; -my $default_location = $localtlpdb->option_location; -my $default_formats = ($localtlpdb->option_create_formats ? ___"yes" : ___"no"); -my $default_docfiles = ($localtlpdb->option_install_docfiles ? ___"yes" : ___"no"); -my $default_srcfiles = ($localtlpdb->option_install_srcfiles ? ___"yes" : ___"no"); -my $default_backupdir = $localtlpdb->option("backupdir"); -my $default_autobackup = $localtlpdb->option("autobackup"); +my %defaults; +for my $key (keys %TeXLive::TLConfig::TLPDBOptionTlmgrName) { + if ($TeXLive::TLConfig::TLPDBOptionType{$key} eq "b") { + $defaults{$key} = ($localtlpdb->option($key) ? ___"yes" : ___"no"); + } else { + $defaults{$key} = $localtlpdb->option($key); + } +} # this will be loaded only on unix systems! # +my @config_set_l; +my @config_set_m; +my @config_set_r; my $back_config_set = $back_config->Labelframe(-text => ___"defaultsettings"); $back_config_set->pack(-fill => "both", -padx => "2m", -pady => "2m"); -my $back_config_set_l1 = $back_config_set->Label(-text => ___"defaultsource", -anchor => "w"); -my $back_config_set_m1 = $back_config_set->Label(-textvariable => \$default_location); -my $back_config_set_r1 = $back_config_set->Button(-text => ___"change", +push @config_set_l, + $back_config_set->Label(-text => ___"defaultsource", -anchor => "w"); +push @config_set_m, + $back_config_set->Label(-textvariable => \$defaults{"location"}); +push @config_set_r, + $back_config_set->Button(-text => ___"change", -command => sub { menu_default_location(); }); -my $back_config_set_l2 = $back_config_set->Label(-text => ___"createformats", -anchor => "w"); -my $back_config_set_m2 = $back_config_set->Label(-textvariable => \$default_formats); -my $back_config_set_r2 = $back_config_set->Button(-text => ___"toggle", - -command => sub { toggle_setting("formats"); }); -my $back_config_set_l3 = $back_config_set->Label(-text => ___"installdoc", -anchor => "w"); -my $back_config_set_m3 = $back_config_set->Label(-textvariable => \$default_docfiles); -my $back_config_set_r3 = $back_config_set->Button(-text => ___"toggle", - -command => sub { toggle_setting("docfiles"); }); - -my $back_config_set_l4 = $back_config_set->Label(-text => ___"installsrc", -anchor => "w"); -my $back_config_set_m4 = $back_config_set->Label(-textvariable => \$default_srcfiles); -my $back_config_set_r4 = $back_config_set->Button(-text => ___"toggle", - -command => sub { toggle_setting("srcfiles"); }); +for my $key (qw/create_formats install_docfiles install_srcfiles/) { + push @config_set_l, + $back_config_set->Label(-text => ___($key), -anchor => "w"); + push @config_set_m, + $back_config_set->Label(-textvariable => \$defaults{$key}); + push @config_set_r, + $back_config_set->Button(-text => ___"toggle", + -command => sub { toggle_setting($key); }); +} -my $back_config_set_l5 = $back_config_set->Label(-text => ___"backupdir", -anchor => "w"); -my $back_config_set_m5 = $back_config_set->Label(-textvariable => \$default_backupdir); -my $back_config_set_r5 = $back_config_set->Button(-text => ___"change", +push @config_set_l, + $back_config_set->Label(-text => ___"backupdir", -anchor => "w"); +push @config_set_m, + $back_config_set->Label(-textvariable => \$defaults{"backupdir"}); +push @config_set_r, + $back_config_set->Button(-text => ___"change", -command => sub { my $dir = $back_config->chooseDirectory(); if (defined($dir) && ($default_backupdir ne $dir)) { @@ -56,23 +63,58 @@ my $back_config_set_r5 = $back_config_set->Button(-text => ___"change", } }); -my $back_config_set_l6 = $back_config_set->Label(-text => ___"autobackup", -anchor => "w"); -my $back_config_set_m6 = $back_config_set->Label(-textvariable => \$default_autobackup); -my $back_config_set_r6 = $back_config_set->Button(-text => ___"change", +push @config_set_l, + $back_config_set->Label(-text => ___"autobackup", -anchor => "w"); +push @config_set_m, + $back_config_set->Label(-textvariable => \$defaults{"autobackup"}); +push @config_set_r, + $back_config_set->Button(-text => ___"change", -command => sub { select_autobackup($p); }, -anchor => "w"); -$back_config_set_l1->grid( $back_config_set_m1, $back_config_set_r1, - -padx => "2m", -pady => "2m", -sticky => "nwe"); -$back_config_set_l2->grid( $back_config_set_m2, $back_config_set_r2, - -padx => "2m", -pady => "2m", -sticky => "nwe"); -$back_config_set_l3->grid( $back_config_set_m3, $back_config_set_r3, - -padx => "2m", -pady => "2m", -sticky => "nwe"); -$back_config_set_l4->grid( $back_config_set_m4, $back_config_set_r4, - -padx => "2m", -pady => "2m", -sticky => "nwe"); -$back_config_set_l5->grid( $back_config_set_m5, $back_config_set_r5, - -padx => "2m", -pady => "2m", -sticky => "nwe"); -$back_config_set_l6->grid( $back_config_set_m6, $back_config_set_r6, - -padx => "2m", -pady => "2m", -sticky => "nwe"); +if (!win32()) { + for my $key (qw/sys_bin sys_info sys_man/) { + push @config_set_l, + $back_config_set->Label(-text => ___($key), -anchor => "w"); + push @config_set_m, + $back_config_set->Label(-textvariable => \$defaults{$key}); + push @config_set_r, + $back_config_set->Button(-text => ___"change", + -command => sub { + my $dir = $back_config->chooseDirectory(); + if (defined($dir) && ($defaults{$key} ne $dir)) { + # see warning concerning UTF8 or other encoded dir names!! + $localtlpdb->option($key, $dir); + $defaults{$key} = $dir; + $localtlpdb->save; + } + }); + } +} + +if (win32()) { + for my $key (qw/desktop_integration file_assocs w32_multi_user/) { + push @config_set_l, + $back_config_set->Label(-text => ___($key), -anchor => "w"); + push @config_set_m, + $back_config_set->Label(-textvariable => \$defaults{$key}); + push @config_set_r, + $back_config_set->Button(-text => ___"change", + -command => sub { + my $dir = $back_config->chooseDirectory(); + if (defined($dir) && ($defaults{$key} ne $dir)) { + # see warning concerning UTF8 or other encoded dir names!! + $localtlpdb->option($key, $dir); + $defaults{$key} = $dir; + $localtlpdb->save; + } + }); + } +} + +for my $i (0..$#config_set_l) { + $config_set_l[$i]->grid( $config_set_m[$i], $config_set_r[$i], + -padx => "1m", -pady => "1m", -sticky => "nwe"); +} ############# @@ -183,6 +225,26 @@ $back_config_act->Button(-text => ___"updatemaps", })->pack(-expand => 1, -fill => "x", -padx => "2m", -pady => "2m"); +if (!win32()) { + $back_config_act->Button(-text => ___"updatesymlinks", + -command => sub { + $mw->Busy(-recurse => 1); + info("Updating symlinks ...\n"); + $localtlmedia->add_symlinks(); + $mw->Unbusy; + })->pack(-expand => 1, -fill => "x", + -padx => "2m", -pady => "2m"); + + $back_config_act->Button(-text => ___"removesymlinks", + -command => sub { + $mw->Busy(-recurse => 1); + info("Updating symlinks ...\n"); + $localtlmedia->remove_symlinks(); + $mw->Unbusy; + })->pack(-expand => 1, -fill => "x", + -padx => "2m", -pady => "2m"); +} + $back_config_act->pack(-side => 'right', -fill => "both", -padx => "2m", -pady => "2m", -expand => 1, -ipadx => "2m", -ipady => "2m"); @@ -218,7 +280,7 @@ sub menu_default_location { my $f = $sw->Frame; my $okbutton = $f->Button(-text => ___"ok", -command => sub { $default_location = $entry->get; - $localtlpdb->option_location($default_location); + $localtlpdb->option("location", $default_location); $localtlpdb->save; $sw->destroy })->pack(-side => 'left',-padx => "2m", -pady => "2m"); my $cancelbutton = $f->Button(-text => ___"cancel", @@ -230,19 +292,9 @@ sub menu_default_location { sub toggle_setting() { my ($key) = @_; - if ($key eq "formats") { - my $new = ($localtlpdb->option_create_formats ? 0 : 1); - $localtlpdb->option_create_formats($new); - $default_formats = ($new ? ___"yes" : ___"no"); - } elsif ($key eq "srcfiles") { - my $new = ($localtlpdb->option_install_srcfiles ? 0 : 1); - $localtlpdb->option_install_srcfiles($new); - $default_srcfiles = ($new ? ___"yes" : ___"no"); - } elsif ($key eq "docfiles") { - my $new = ($localtlpdb->option_install_docfiles ? 0 : 1); - $localtlpdb->option_install_docfiles($new); - $default_docfiles = ($new ? ___"yes" : ___"no"); - } + my $new = ($localtlpdb->option($key) ? 0 : 1); + $localtlpdb->option($key, $new); + $defaults{$key} = ($new ? ___"yes" : ___"no"); $localtlpdb->save; } @@ -281,7 +333,7 @@ sub select_autobackup { my $foo = $back_config->Toplevel(-title => ___"autobackup"); $foo->transient($mw); $foo->grab(); - my $var = $default_autobackup; + my $var = $defaults{"autobackup"}; my $opt = $foo->BrowseEntry(-label => ___"autobackup", -variable => \$var); my @al; @@ -299,7 +351,7 @@ sub select_autobackup { -command => sub { $var =~ s/ .*$//; $localtlpdb->option("autobackup", $var); - $default_autobackup = $var; + $defaults{"autobackup"} = $var; $localtlpdb->save; $foo->destroy; } diff --git a/Master/texmf/scripts/texlive/tlmgrgui/tlmgrgui.pl b/Master/texmf/scripts/texlive/tlmgrgui/tlmgrgui.pl index f06a35c393d..dae5c3f3460 100755 --- a/Master/texmf/scripts/texlive/tlmgrgui/tlmgrgui.pl +++ b/Master/texmf/scripts/texlive/tlmgrgui/tlmgrgui.pl @@ -42,7 +42,7 @@ $TRANS{'en'} = { newdefaultsrc => "New default installation source", choosedir => "Choose Directory", config => "Configuration", - createformats => "Create formats on installation", + create_formats => "Create formats on installation", currentsource => "Current installation source: ", debug => "Debug", defaultsource => "Default installation source", @@ -55,8 +55,13 @@ $TRANS{'en'} = { nodepballoon => "For collections: install or remove will not install/remove the dependencies", infoitem => "Information on the selected item", install => "Installation", - installdoc => "Install macro/font docs", - installsrc => "Install macro/font sources", + install_docfiles => "Install macro/font docs", + install_srcfiles => "Install macro/font sources", + sys_bin => "Link destination for programs", + sys_man => "Link destination for man pages", + sys_info => "Link destination for info docs", + updatesymlinks => "Update symbolic links", + removesymlinks => "Remove symbolic links", installsel => "Install selected", load => "Load", warningtxt => "The database of the installation source has not been loaded.\n\nPlease use the \"Load\" (and possibly \"Change\") button to do so.", @@ -225,9 +230,9 @@ die("cannot find tlpdb!") unless (defined($localtlpdb)); our @alllocalpackages = setup_list(0,$localtlpdb->list_packages); our @updatepackages; -setup_programs("$Master/tlpkg/installer", $localtlpdb->option_platform); +setup_programs("$Master/tlpkg/installer", $localtlmedia->platform); -my $loc = $localtlpdb->option_location; +my $loc = $localtlpdb->option("location"); if (defined($loc)) { $location = $loc; } diff --git a/Master/texmf/scripts/texlive/uninstall-win32.pl b/Master/texmf/scripts/texlive/uninstall-win32.pl index 01b7a85a4b5..cfc3ff9bee1 100644 --- a/Master/texmf/scripts/texlive/uninstall-win32.pl +++ b/Master/texmf/scripts/texlive/uninstall-win32.pl @@ -49,17 +49,22 @@ sub doit { if (!defined($localtlpdb)) { tlwarn("Cannot load the TLPDB from $Master, are you sure there is an installation?\n"); } else { + # set the mode for windows uninstall according to the setting in + # tlpdb + if (TeXLive::TLWinGoo::admin() && !$localtlpdb->option("w32_multi_user")) { + non_admin(); + } for my $pkg ($localtlpdb->list_packages) { &TeXLive::TLUtils::do_postaction("remove", $localtlpdb->get_package($pkg), - $localtlpdb->option_file_assocs, - $localtlpdb->option_desktop_integration, - $localtlpdb->option_post_code); + $localtlpdb->option("file_assocs"), + $localtlpdb->option("desktop_integration"), + $localtlpdb->option("post_code")); } } my $menupath = &TeXLive::TLWinGoo::menu_path(); $menupath =~ s!/!\\!g; `rmdir /q "$menupath\\$TeXLive::TLConfig::WindowsMainMenuName" 2>nul`; - my $mode = ($localtlpdb->option_w32_multi_user) ? 'system' : 'user'; + my $mode = ($localtlpdb->option("w32_multi_user")) ? 'system' : 'user'; adjust_reg_path_for_texlive('remove', "$Master/bin/win32", $mode); # unsetenv_reg("TEXBINDIR"); # from_dvd case: |