From 324cc540ea91d8e78e023f27ac1f30df8e04e215 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 31 Oct 2010 07:55:24 +0000 Subject: remove patch from itself git-svn-id: svn://tug.org/texlive/trunk@20270 c570f23f-e606-0410-a88d-b1316a301751 --- Master/tlpkg/dev/dev.usermode-tlmgr.patch | 560 ------------------------------ 1 file changed, 560 deletions(-) (limited to 'Master') diff --git a/Master/tlpkg/dev/dev.usermode-tlmgr.patch b/Master/tlpkg/dev/dev.usermode-tlmgr.patch index 52e7f466d8b..1ae6bbe98ed 100644 --- a/Master/tlpkg/dev/dev.usermode-tlmgr.patch +++ b/Master/tlpkg/dev/dev.usermode-tlmgr.patch @@ -114,566 +114,6 @@ Index: tlpkg/TeXLive/TLUtils.pm } $totlpdb->add_tlpobj($tlpobj); # we have to write out the tlpobj file since it is contained in the -Index: tlpkg/dev/dev.usermode-tlmgr.patch -=================================================================== ---- tlpkg/dev/dev.usermode-tlmgr.patch (revision 20263) -+++ tlpkg/dev/dev.usermode-tlmgr.patch (working copy) -@@ -1,475 +1,8 @@ --Index: texmf/scripts/texlive/tlmgr.pl --=================================================================== ----- texmf/scripts/texlive/tlmgr.pl (revision 16521) --+++ texmf/scripts/texlive/tlmgr.pl (working copy) --@@ -127,6 +127,8 @@ -- "package-logfiles" => "=s", -- "persistent-downloads" => 1, -- "pause" => 1, --+ "usermode" => 1, --+ "usertree" => "=s", -- "version" => 1, -- "help|h|?" => 1); -- --@@ -305,13 +307,30 @@ -- pod2usage(-msg => $msg, -exitstatus => 1, -verbose => 1, @noperldoc); -- } -- --+ # --+ # the main tree we will be working on --+ $::maintree = $Master; --+ if ($opts{"usermode"}) { --+ # we could also try to detect that we don't have write permissions --+ # and switch to user mode automatically --+ if (defined($opts{"usertree"})) { --+ $::maintree = $opts{"usertree"}; --+ } else { --+ chomp($::maintree = `kpsewhich -var-value TEXMFHOME`); --+ } --+ } --+ -- # besides doing normal logging if -logfile is specified, we try to log -- # package related actions (install, remove, update) to -- # the package-log file TEXMFSYSVAR/web2c/tlmgr.log -- $packagelogged = 0; # how many msgs we logged -- chomp (my $texmfsysvar = `kpsewhich -var-value=TEXMFSYSVAR`); -- $packagelogfile = $opts{"package-logfile"}; --- $packagelogfile ||= "$texmfsysvar/web2c/tlmgr.log"; --+ if ($opts{"usermode"}) { --+ $packagelogfile ||= "$::maintree/web2c/tlmgr.log"; --+ } else { --+ $packagelogfile ||= "$texmfsysvar/web2c/tlmgr.log"; --+ } -- # -- # Try to open the packagelog file, but do NOT die when that does not work -- if (!open(PACKAGELOG, ">>$packagelogfile")) { --@@ -457,6 +476,9 @@ -- } elsif ($action =~ m/^show$/i) { -- action_show(); -- finish(0); --+ } elsif ($action =~ m/^init-usertree$/i) { --+ action_init_usertree(); --+ finish(0); -- } elsif ($action =~ m/^remove$/i) { -- action_remove(); -- } elsif ($action =~ /^paper$/) { --@@ -520,6 +542,8 @@ -- { -- my $errors = 0; -- --+ my $sysmode = ($opts{"usermode"} ? "" : "-sys"); --+ -- if ($::files_changed) { -- $errors += do_cmd_and_check("mktexlsr"); -- $::files_changed = 0; --@@ -550,14 +574,14 @@ -- } -- } -- for my $m (keys %do_disable) { --- $errors += do_cmd_and_check("updmap-sys --nomkmap --nohash --disable $m"); --+ $errors += do_cmd_and_check("updmap$sysmode --nomkmap --nohash --disable $m"); -- } -- for my $m (keys %do_enable) { --- my $str = "updmap-sys --nomkmap --nohash --enable " . --+ my $str = "updmap$sysmode --nomkmap --nohash --enable " . -- $::execute_actions{'enable'}{'maps'}{$m} . "=$m"; -- $errors += do_cmd_and_check($str); -- } --- $errors += do_cmd_and_check("updmap-sys") if $run_full; --+ $errors += do_cmd_and_check("updmap$sysmode") if $run_full; -- } -- -- --@@ -602,13 +626,13 @@ -- # first regenerate all formats --byengine -- for my $e (keys %updated_engines) { -- log ("updating formats based on $e\n"); --- $errors += do_cmd_and_check("fmtutil-sys --byengine $e"); --+ $errors += do_cmd_and_check("fmtutil$sysmode --byengine $e"); -- } -- # now rebuild all other formats -- for my $f (keys %do_enable) { -- next if defined($updated_engines{$format_to_engine{$f}}); -- log ("(re)creating format dump $f\n"); --- $errors += do_cmd_and_check("fmtutil-sys --byfmt $f"); --+ $errors += do_cmd_and_check("fmtutil$sysmode --byfmt $f"); -- $done_formats{$f} = 1; -- } -- } --@@ -646,7 +670,7 @@ -- $lang = "$TEXMFSYSVAR/tex/generic/config/$lang"; -- } -- if ($localtlpdb->option("create_formats") && !$::regenerate_all_formats) { --- $errors += do_cmd_and_check("fmtutil-sys --byhyphen $lang"); --+ $errors += do_cmd_and_check("fmtutil$sysmode --byhyphen $lang"); -- } -- } -- } --@@ -655,7 +679,7 @@ -- # -- if ($::regenerate_all_formats) { -- info("Regenerating all formats, this may take some time ..."); --- $errors += do_cmd_and_check("fmtutil-sys --all"); --+ $errors += do_cmd_and_check("fmtutil$sysmode --all"); -- info("done\n"); -- $::regenerate_all_formats = 0; -- } --@@ -828,8 +852,13 @@ -- action_gui("config") if $opts{"gui"}; -- -- init_local_db(); --- chomp(my $texmfsysconfig = `kpsewhich -var-value=TEXMFSYSCONFIG`); --- $ENV{"TEXMFCONFIG"} = $texmfsysconfig; --+ my $texmfconfig; --+ if ($opts{"usermode"}) { --+ chomp($texmfconfig = `kpsewhich -var-value=TEXMFCONFIG`); --+ } else { --+ chomp($texmfconfig = `kpsewhich -var-value=TEXMFSYSCONFIG`); --+ } --+ $ENV{"TEXMFCONFIG"} = $texmfconfig; -- -- my $action = shift @ARGV; -- if ($action =~ m/^paper$/i) { # generic paper --@@ -841,7 +870,7 @@ -- "as in: tlmgr pdftex paper --list\n"); -- -- } elsif (!defined($newpaper)) { # tlmgr paper => show all current sizes. --- TeXLive::TLPaper::paper_all($texmfsysconfig,undef); --+ TeXLive::TLPaper::paper_all($texmfconfig,undef); -- -- } elsif ($newpaper !~ /^(a4|letter)$/) { # tlmgr paper junk => complain. -- $newpaper = "the empty string" if !defined($newpaper); --@@ -849,7 +878,7 @@ -- -- } else { # tlmgr paper {a4|letter} => do it. -- return if !check_on_writable(); --- TeXLive::TLPaper::paper_all($texmfsysconfig,$newpaper); --+ TeXLive::TLPaper::paper_all($texmfconfig,$newpaper); -- } -- -- } else { # program-specific paper --@@ -866,7 +895,7 @@ -- return if !check_on_writable(); -- } -- unshift(@ARGV, "--list") if $opts{"list"}; --- TeXLive::TLPaper::do_paper($prog,$texmfsysconfig,@ARGV); --+ TeXLive::TLPaper::do_paper($prog,$texmfconfig,@ARGV); -- } -- } -- --@@ -913,6 +942,7 @@ -- print "longdesc: ", $tlp->longdesc, "\n" if ($tlp->longdesc); -- print "installed: ", ($installed ? "Yes" : "No"), "\n"; -- print "revision: ", $tlp->revision, "\n" if ($installed); --+ print "relocatable: ", ($tlp->relocated ? "Yes" : "No"), "\n"; -- print "cat-version: ", $tlp->cataloguedata->{'version'}, "\n" -- if $tlp->cataloguedata->{'version'}; -- print "cat-date: ", $tlp->cataloguedata->{'date'}, "\n" --@@ -983,6 +1013,10 @@ -- # PATH -- # -- sub action_path { --+ if ($opts{"usermode"}) { --+ tlwarn("action `path' not supported in usermode!\n"); --+ exit 1; --+ } -- my $what = shift @ARGV; -- if (!defined($what) || ($what !~ m/^(add|remove)$/i)) { -- tlwarn("action path needs one argument, either add or remove\n"); --@@ -1691,7 +1725,10 @@ -- -- # check for updates to tlmgr and die unless either --force or --list or --self -- # is given --- my @critical = check_for_critical_updates($localtlpdb, $tlmediatlpdb); --+ my @critical; --+ if (!$opts{"usermode"}) { --+ @critical = check_for_critical_updates($localtlpdb, $tlmediatlpdb); --+ } -- my $dry_run_cont = $opts{"dry-run"} && ($opts{"dry-run"} < 0); -- if ( !$dry_run_cont && !$opts{"self"} && @critical) { -- critical_updates_warning(); --@@ -2465,16 +2502,18 @@ -- init_tlmedia(); -- -- # check for updates to tlmgr itself, and die unless --force is given --- if (check_for_critical_updates( $localtlpdb, $tlmediatlpdb)) { --- critical_updates_warning(); --- if ($opts{"force"}) { --- tlwarn("Continuing due to --force\n"); --- } else { --- if ($::gui_mode) { --- # return here and don't do any updates --- return; --+ if (!$opts{"usermode"}) { --+ if (check_for_critical_updates( $localtlpdb, $tlmediatlpdb)) { --+ critical_updates_warning(); --+ if ($opts{"force"}) { --+ tlwarn("Continuing due to --force\n"); -- } else { --- die "tlmgr: Not continuing, please see warning above!\n"; --+ if ($::gui_mode) { --+ # return here and don't do any updates --+ return; --+ } else { --+ die "tlmgr: Not continuing, please see warning above!\n"; --+ } -- } -- } -- } --@@ -2487,7 +2526,7 @@ -- @packs = $tlmediatlpdb->expand_dependencies("-only-arch", $localtlpdb, @ARGV) unless $opts{"no-depends-at-all"}; -- # now expand all others unless $opts{"no-depends"} -- # if $opts{"reinstall"} do not collection->collection dependencies --- if ($opts{"reinstall"}) { --+ if ($opts{"reinstall"} || $opts{"usermode"}) { -- @packs = $tlmediatlpdb->expand_dependencies("-no-collections", $localtlpdb, @packs) unless $opts{"no-depends"}; -- } else { -- @packs = $tlmediatlpdb->expand_dependencies($localtlpdb, @packs) unless $opts{"no-depends"}; --@@ -2555,6 +2594,15 @@ -- foreach my $pkg (@todo) { -- my $flag = $FLAG_INSTALL; -- my $re = ""; --+ my $tlp = $tlmediasrc->tlpdb->get_package($pkg); --+ if (!defined($tlp)) { --+ info("Unknown package $pkg\n"); --+ next; --+ } --+ if (!$tlp->relocated && $opts{"usermode"}) { --+ info("Package $pkg is not relocatable, cannot install it in user mode!\n"); --+ next; --+ } -- if (defined($localtlpdb->get_package($pkg))) { -- if ($opts{"reinstall"}) { -- $re = "re"; --@@ -2784,11 +2832,11 @@ -- # now also save the TLPOBJ of 00texlive.installation -- my $tlpo = $localtlpdb->get_package("00texlive.installation"); -- if ($tlpo) { --- if (open(TOFD, ">$Master/tlpkg/tlpobj/00texlive.installation.tlpobj")) { --+ if (open(TOFD, ">$::maintree/tlpkg/tlpobj/00texlive.installation.tlpobj")) { -- $tlpo->writeout(\*TOFD); -- close(TOFD); -- } else { --- tlwarn("Cannot save 00texlive.installation to $Master/tlpkg/tlpobj/00texlive.installation.tlpobj\n"); --+ tlwarn("Cannot save 00texlive.installation to $::maintree/tlpkg/tlpobj/00texlive.installation.tlpobj\n"); -- } -- } -- } else { --@@ -2821,6 +2869,10 @@ -- warn("action `arch' not supported on Windows\n"); -- return(); -- } --+ if ($opts{"usermode"}) { --+ tlwarn("action `arch' not supported in usermode\n"); --+ exit 1; --+ } -- if ($opts{"gui"}) { -- action_gui("arch"); -- } --@@ -2960,6 +3012,10 @@ -- # GENERATE -- # -- sub action_generate { --+ if ($opts{"usermode"}) { --+ tlwarn("action `generate' not supported in usermode!\n"); --+ exit 1; --+ } -- my $dest = defined($opts{"dest"}) ? $opts{"dest"} : ""; -- my $localconf = defined($opts{"localcfg"}) ? $opts{"localcfg"} : ""; -- my $what = shift @ARGV; --@@ -3774,6 +3830,39 @@ -- -- -- # --+# action init_user_tree --+# sets up TEXMFHOME or --usertree argument for user mode tlmgr --+# by creating a minimal tlpdb --+# --+sub action_init_usertree { --+ init_local_db(); --+ my $tlpdb = TeXLive::TLPDB->new; --+ my $usertree; --+ if ($opts{"usertree"}) { --+ $usertree = $opts{"usertree"}; --+ } else { --+ chomp($usertree = `kpsewhich -var-value TEXMFHOME`); --+ } --+ $tlpdb->root($usertree); --+ my $inst = TeXLive::TLPOBJ->new; --+ $inst->name("00texlive.installation"); --+ $inst->category("TLCore"); --+ my @deps; --+ push @deps, "opt_location:$location"; --+ push @deps, "setting_available_architectures:"; --+ push @deps, "setting_usertree:1"; --+ $inst->depends(@deps); --+ $tlpdb->add_tlpobj($inst); --+ $tlpdb->save; --+ # --+ # we need to create web2c dir for TLMedia to succeed setting up --+ # and for tlmgr.log file --+ mkdir ("$usertree/web2c"); --+ mkdir ("$usertree/tlpkg/tlpobj"); --+} --+ --+ --+# -- # action conf -- # tries to mimick texconfig conf but probably will add some more things -- # --@@ -3837,10 +3926,10 @@ -- # stuff changed via the GUI -- return if defined $localtlmedia; -- return if defined $localtlpdb; --- $localtlmedia = TeXLive::TLMedia->new ( $Master ); --- die("cannot setup TLMedia in $Master") unless (defined($localtlmedia)); --+ $localtlmedia = TeXLive::TLMedia->new ( $::maintree ); --+ die("cannot setup TLMedia in $::maintree") unless (defined($localtlmedia)); -- $localtlpdb = $localtlmedia->tlpdb; --- die("cannot find tlpdb in $Master") unless (defined($localtlpdb)); --+ die("cannot find tlpdb in $::maintree") 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", $localtlmedia->platform)) { --@@ -4152,6 +4241,7 @@ -- } -- -- sub check_on_writable { --+ return 1 if $opts{"usermode"}; -- if (!TeXLive::TLUtils::dir_writable("$Master/tlpkg")) { -- tlwarn("You don't have permission to change the installation in any way,\n"); -- tlwarn("specifically, the directory $Master/tlpkg/ is not writable.\n"); --@@ -4305,6 +4395,15 @@ -- likely untranslated, messages to standard error. Helpful for -- translators to see what remains to be done. -- --+=item B<--usermode> --+ --+Activates the user mode, see L below. --+ --+=item B<--usertree> I --+ --+Uses I as user tree in user mode, seel L below. --+ --+ -- =back -- -- The standard options for TeX Live programs are also accepted: --@@ -5061,8 +5160,109 @@ -- to make use of C, you need to run C yourself. After that, network updates and your local changes -- should be merged. --+ --+=head2 init-usertree -- --+sets up the default user tree (C) or the one specified --+on the command line using C<--usertree> for user mode management. --+See L below. -- --+ --+=head1 USER MODE --+ --+B B B --+This is very much work in progress --+and experimental. Expect breakage, and the need to reinstall your --+user tree a new. --+ --+C provides a restricted way to manage arbitrary texmf trees --+in the same way as the installation. This allows a user without write --+permissions to the installation location to update/install packages --+into a user tree. --+ --+C is set into user mode by giving the command line option --+C<--usermode>. It will not switch automatically, nor does it support --+a config file by now. Thus, this option has to be given every time. --+ --+This mode of C works on a user tree, which by default will be --+the value of C, but can be overridden with the command line --+option C<--usertree>. In the following when we speak of the user tree --+we mean either C or the one given on the command line. --+ --+Not all actions are allowed in user mode, C will warn you and --+not carry out this action. The actions of C can be classified into --+those that don't need write permissions and thus are working the same --+in user mode or normal mode. Currently these are --+B, B, B, B, B, B, B. --+ --+Most of the actions dealing with package management on the other hand --+need write permissions, and behave differently: --+B, B, B, B