diff options
Diffstat (limited to 'Master/tlpkg/etc')
5 files changed, 0 insertions, 1228 deletions
diff --git a/Master/tlpkg/etc/applied.auto-backup-feature.patch b/Master/tlpkg/etc/applied.auto-backup-feature.patch deleted file mode 100644 index aa01f1d1381..00000000000 --- a/Master/tlpkg/etc/applied.auto-backup-feature.patch +++ /dev/null @@ -1,414 +0,0 @@ -Implement automatic backups -Current status: - tlmgr option backupdir ..... -sets the defalt backup dir. Now tlmgr update can take another argument - tlmgr update --backup .... -which creates backups in the default backupdir as specified in the TLPDB. - -Furthermore, if the tlpdb opion autobackup is set to a integer >= -1 the -following happens (all of them need the option backupdir set to an -existing directory) - tlmgr option autobackup -1 - always make backups, keep infinitely many - tlmgr option autobackup 0 - disable automatic backups - tlmgr option autobackup N - for N > 0 keep N backups - - -So if you want to set up automatic backups, do: - mkdir /var/cache/texlive-backups - tlmgr option backupdir /var/cache/texlive-backups/ - tlmgr option autobackup 5 - - -Cleaning mode: - tlmgr backup --clean[=ARG] [--backupdir=dir] [--all] [packs] - -if NO --clean is given, a backup is made. - -if --clean is given without any argument, then the value of "autobackup" -in the tlpdb is used (should we change the name?) - -if --clean=ARG is given it must be either -1, 0, 1, ... with the following -meaning: - -1: do nothing, keep all backups (not very useful, but ... - N>=0 keep only N backups (that means for N == 0 all backups - will be removed) - -If --backupdir is NOT given we will try to initialize it from TLPDB -option "backupdir". - - -TODO: -. testing on windows -. documentation in POD format -. testing with .doc/.src args, and with .ARCH packages, no idea - what is going on there - ---- - -Index: texmf/scripts/texlive/tlmgr.pl -=================================================================== ---- texmf/scripts/texlive/tlmgr.pl (revision 11087) -+++ texmf/scripts/texlive/tlmgr.pl (working copy) -@@ -34,6 +34,16 @@ - # - always do backups, let the user clean them up manually - # Possibly, an operation like 'tlmgr clean' for cleaning old backup could - # be great. -+# format for the options: -+# option backupdir -+# option autobackup/TIME -+# where TIME = natural number N -> keep N backups per package -+# or = 0 -> don't do auto backups -+# or = -1 (= +\infty) keep backup indefinitely -+# or = Nd | Nw | Nm -> keeping backups younger then -+# Nd N days -+# Nw N weeks -+# Nm N months - # - ordering or collections removal (see below for details) - # - (?) removal does not remove created format files from TEXMFSYSVAR - # - after install/update show the number of bytes transfered -@@ -112,7 +122,7 @@ - "gui-lang=s" => \$opt_gui_lang, - "package-logfile=s" => \$opt_packagelogfile, - "version" => \$opt_version, -- "pause" => \$opt_pause, -+ "pause" => \$opt_pause, - "h|help|?" => \$opt_help) or pod2usage(2); - - my $action = shift; -@@ -731,14 +741,90 @@ - my $opt_dry = 0; - my $opt_all = 0; - my $opt_backupdir; -+ # --clean argument -+ # can be either -1 ... don't clean -+ # 0 ... remove all backups -+ # N ... keep only N backups -+ # that parallels the value of autoclean in the configuration -+ # we have to be careful, because if simply --clean is given, we should -+ # check for the value saved in the tlpdb, and if that is not present -+ # do nothing. But Getopt::Long with clean:i leaves 0 in $opt_clean if -+ # it is present. So -+ # !defined($opt_clean) -> no --clean given -+ # $opt_clean = "" -> --clean without argument given, check tlpdb -+ # $opt_clean = -1, 0, N -> --clean=N given, check argument -+ # -+ my $opt_clean; - Getopt::Long::Configure(@getopt_configure_subopts); - GetOptions("all" => \$opt_all, - "backupdir=s" => \$opt_backupdir, -+ "clean:s" => \$opt_clean, -+ "n|dry-run" => \$opt_dry, - ) or pod2usage(2); -+ my $clean_mode = 0; -+ $clean_mode = 1 if defined($opt_clean); -+ if ($clean_mode) { -+ if ($opt_clean eq "") { -+ # we need to check the tlpdb -+ $opt_clean = $localtlpdb->option("autobackup"); -+ if (!$opt_clean) { -+ tlwarn ("--clean given without an argument, but no default clean\n"); -+ tlwarn ("mode specified in the tlpdb, terminating.\n"); -+ exit 1; -+ } -+ } -+ # now $opt_clean is something, but maybe not a number, check for -+ # validity -+ if ($opt_clean =~ m/^(-1|[0-9]+)$/) { -+ # get rid of leading zeros etc etc -+ $opt_clean = $opt_clean + 0; -+ } else { -+ tlwarn ("clean mode as specified on the command line or as given by default\n"); -+ tlwarn ("must be an integer larger or equal than -1, terminating.\n"); -+ exit 1; -+ } -+ } -+ # check the backup dir argument -+ my $die_backupdir = 0; -+ if ($opt_backupdir) { -+ my $ob = abs_path($opt_backupdir); -+ $ob && ($opt_backupdir = $ob); -+ if (! -d $opt_backupdir) { -+ tlwarn ("backupdir argument $opt_backupdir is not a directory.\n"); -+ if ($clean_mode) { -+ tlwarn ("Cannot clean a non existing directory, terminating.\n"); -+ } else { -+ tlwarn ("Don't know where to save backups, terminating.\n"); -+ } -+ exit 1; -+ } -+ } else { -+ # no argument, check for presence in TLPDB -+ $opt_backupdir = $localtlpdb->option("backupdir"); -+ if (!$opt_backupdir) { -+ if ($clean_mode) { -+ tlwarn ("Cannot clean an unknown directory, terminating.\n"); -+ } else { -+ tlwarn ("Don't know where to save backups, terminating.\n"); -+ } -+ exit 1; -+ } -+ # we are stil here, there is something set in tlpdb -+ my $ob = abs_path($opt_backupdir); -+ $ob && ($opt_backupdir = $ob); -+ if (! -d $opt_backupdir) { -+ tlwarn ("backupdir as set in tlpdb $opt_backupdir is not a directory.\n"); -+ if ($clean_mode) { -+ tlwarn ("Cannot clean a non existing directory, terminating.\n"); -+ } else { -+ tlwarn ("Don't know where to save backups, terminating.\n"); -+ } -+ exit 1; -+ } -+ } -+ - my %ret; - my @todo; -- die ("tlmgr backup needs an obligatory argument --backupdir") -- unless (defined($opt_backupdir)); - if ($opt_all) { - @todo = $localtlpdb->list_packages; - } else { -@@ -748,13 +834,16 @@ - printf "tlmgr backup takes either a list of packages or --all\n"; - } - foreach my $pkg (@todo) { -- $opt_backupdir = abs_path($opt_backupdir); -- if (! -d $opt_backupdir) { -- printf STDERR "backupdir argument must be an existing directory!\n"; -+ if ($clean_mode) { -+ clear_old_backups ($pkg, $opt_backupdir, $opt_clean, $opt_dry); - } else { - my $tlp = $localtlpdb->get_package($pkg); -- $tlp->make_container("lzma", $localtlpdb->root, -- $opt_backupdir, "${pkg}.r" . $tlp->revision); -+ info("saving current status of $pkg to $opt_backupdir${pkg}.r" . -+ $tlp->revision . ".\n"); -+ if (!$opt_dry) { -+ $tlp->make_container("lzma", $localtlpdb->root, -+ $opt_backupdir, "${pkg}.r" . $tlp->revision); -+ } - } - } - return(\%ret); -@@ -928,6 +1017,7 @@ - my $opt_list = 0; - my $opt_noremove = 0; - my $opt_backupdir; -+ my $opt_backup = 0; - Getopt::Long::Configure(@getopt_configure_subopts); - GetOptions("no-depends" => \$opt_nodepends, - "no-depends-at-all" => \$opt_reallynodepends, -@@ -935,6 +1025,7 @@ - "list" => \$opt_list, - "no-remove" => \$opt_noremove, - "backupdir=s" => \$opt_backupdir, -+ "backup" => \$opt_backup, - "n|dry-run" => \$opt_dry) or pod2usage(2); - $opt_nodepends = 1 if $opt_reallynodepends; - my $nrupdated = 0; -@@ -944,6 +1035,70 @@ - my $mediatlpdb = $tlmediasrc->tlpdb; - info("update: dry run, no changes will be made\n") if $opt_dry; - -+ # do backup dir checking now so that we don't run into troubles -+ # later, and exit if that doesn't work -+ if ($opt_backupdir) { -+ $opt_backupdir = abs_path($opt_backupdir); -+ if (! -d $opt_backupdir) { -+ tlwarn("Argument for --backupdir must be an existing directory. Terminating.\n"); -+ exit 1; -+ } -+ } -+ -+ my $autobackup = 0; -+ # check for the tlpdb option autobackup, and if present and true (!= 0) -+ # assume we are doing backups -+ if (!$opt_backup) { -+ $autobackup = $localtlpdb->option("autobackup"); -+ if ($autobackup) { -+ # check the format, we currently allow only natural numbers, and -1 -+ if ($autobackup eq "-1") { -+ debug ("Automatic backups activated, keeping \\infty backups.\n"); -+ $opt_backup = 1; -+ } elsif ($autobackup eq "0") { -+ debug ("Automatic backups disabled.\n"); -+ } elsif ($autobackup =~ m/^[0-9]+$/) { -+ debug ("Automatic backups activated, keeping $autobackup backups.\n"); -+ $opt_backup = 1; -+ } else { -+ tlwarn ("Option autobackup can only be an integer >= -1.\n"); -+ tlwarn ("Disabling auto backups.\n"); -+ $localtlpdb->option("autobackup", 0); -+ $autobackup = 0; -+ } -+ } -+ } -+ -+ # cmd line --backup, we check for --backupdir, and if that is not given -+ # we try to get the default from the tlpdb. If that doesn't work, exit. -+ if ($opt_backup) { -+ my $diebackupdir = 0; -+ if (!$opt_backupdir) { -+ $opt_backupdir = $localtlpdb->option("backupdir"); -+ if ($opt_backupdir) { -+ # check again: -+ $opt_backupdir = abs_path($opt_backupdir); -+ $diebackupdir = 1 if (! -d $opt_backupdir); -+ } else { -+ # not set in the tlpdb, and not set on cmd line, but asked for -+ # --backup -+ $diebackupdir = 1; -+ } -+ } -+ # no else branch necessary, we already checked that --backupdir if -+ # given is ok, see above -+ if ($diebackupdir) { -+ tlwarn("You have asked for backups, but the backup directory as specified\n"); -+ tlwarn("in the local TLPDB or the cmd line does not exists, exiting.\n"); -+ exit 1; -+ } -+ } -+ -+ # finally, if we have --backupdir, but no --backup, just enable it -+ $opt_backup = 1 if $opt_backupdir; -+ -+ debug("Doing backups to $opt_backupdir\n") if $opt_backup; -+ - # these two variables are used throughout this function - my $root = $localtlpdb->root; - my $temp = "$root/temp"; -@@ -1122,19 +1277,18 @@ - if ($opt_list) { - info("$pkg: local: $rev, source: $mediarev\n"); - } else { -- # first remove the package, then reinstall it -- # this way we get rid of useless files -- # force the deinstallation since we will reinstall it -- if ($opt_backupdir && !$opt_dry) { -- $opt_backupdir = abs_path($opt_backupdir); -- if (! -d $opt_backupdir) { -- tlwarn("backupdir argument must be an existing directory!\n"); -- } else { -- $tlp->make_container("lzma", $root, -- $opt_backupdir, "${pkg}.r" . $tlp->revision); -- $unwind_package = "$opt_backupdir/${pkg}.r" . $tlp->revision . ".tar.lzma"; -+ if ($opt_backup && !$opt_dry) { -+ $tlp->make_container("lzma", $root, -+ $opt_backupdir, "${pkg}.r" . $tlp->revision); -+ $unwind_package = -+ "$opt_backupdir/${pkg}.r" . $tlp->revision . ".tar.lzma"; -+ -+ if ($autobackup) { -+ # in case we do auto backups we remove older backups -+ clear_old_backups($pkg, $opt_backupdir, $autobackup); - } - } -+ - if (win32() && ($pkg =~ m/$WinSpecialUpdatePackagesRegexp/)) { - add_w32_updater($mediatlp, $opt_dry); - } else { -@@ -1161,6 +1315,10 @@ - $remove_unwind_container = 1; - $unwind_package = "$fullname"; - } -+ # first remove the package, then reinstall it -+ # this way we get rid of useless files -+ # force the deinstallation since we will reinstall it -+ # - # the remove_package should also remove empty dirs in case - # a dir is changed into a file - merge_into(\%ret, &remove_package($pkg, $localtlpdb, 1)); -@@ -1176,7 +1334,7 @@ - # dirs from the new package before re-installing the old one. - # TODO - logpackage("failed update: $pkg ($rev -> $mediarev)"); -- tlwarn("\n\nInstallation of new version of $pkg did fail, trying to unwind!\n"); -+ tlwarn("\n\nInstallation of new version of $pkg did fail, trying to unwind.\n"); - if (win32()) { - # w32 is notorious for not releasing a file immediately - # we experienced permission denied errors -@@ -1402,7 +1560,15 @@ - print "Install documentation files: ", ($localtlpdb->option_install_docfiles ? "yes": "no"), "\n"; - print "Install source files: ", ($localtlpdb->option_install_srcfiles ? "yes": "no"), "\n"; - } else { -- warn "Setting other options currently not supported, please edit texlive.tlpdb!"; -+ my $val = shift @ARGV; -+ if (defined($val)) { -+ print "Setting option $what to $val.\n"; -+ $localtlpdb->option($what,$val); -+ $localtlpdb->save; -+ } else { -+ print "Option $what = ", $localtlpdb->option($what), "\n";; -+ } -+ #warn "Setting other options currently not supported, please edit texlive.tlpdb!"; - } - return; - } -@@ -1961,6 +2127,37 @@ - } - - -+# clear the backup dir for $pkg and keep only $autobackup packages -+# mind that with $autobackup == 0 all packages are cleared -+sub clear_old_backups -+{ -+ my ($pkg, $opt_backupdir, $autobackup, $opt_dry) = @_; -+ -+ my $dryrun = 0; -+ $dryrun = 1 if ($opt_dry); -+ # keep arbitrary many backups -+ return if ($autobackup == -1); -+ -+ opendir (DIR, $opt_backupdir) || die "opendir($opt_backupdir) failed: $!"; -+ my @dirents = readdir (DIR); -+ closedir (DIR) || warn "closedir($opt_backupdir) failed: $!"; -+ my @backups; -+ for my $dirent (@dirents) { -+ next if (-d $dirent); -+ next if ($dirent !~ m/^$pkg\.r([0-9]+)\.tar\.lzma$/); -+ push @backups, $1; -+ } -+ my $i = 1; -+ for my $e (reverse sort {$a <=> $b} @backups) { -+ if ($i > $autobackup) { -+ info ("Removing backup $opt_backupdir/$pkg.r$e.tar.lzma\n"); -+ unlink("$opt_backupdir/$pkg.r$e.tar.lzma") unless $dryrun; -+ } -+ $i++; -+ } -+} -+ -+ - # - # return all the directories from which all content will be removed - # -Index: tlpkg/TeXLive/TLPDB.pm -=================================================================== ---- tlpkg/TeXLive/TLPDB.pm (revision 11087) -+++ tlpkg/TeXLive/TLPDB.pm (working copy) -@@ -49,6 +49,7 @@ - $tlpdb->config_container_format; - $tlpdb->config_release; - $tlpdb->config_revision; -+ $tlpdb->option($key, [$value]); - - TeXLive::TLPDB->listdir([$dir]); - $tlpdb->generate_listfiles([$destdir]); -@@ -955,6 +956,14 @@ - return; - } - -+sub option { -+ my $self = shift; -+ my $key = shift; -+ if (@_) { $self->_set_option_value($key, shift); } -+ return $self->_option_value($key); -+} -+# TODO the above function should be used in the functions below as -+# far as possible ... - sub option_available_architectures { - my $self = shift; - if (@_) { $self->_set_option_value("available_architectures","@_"); } diff --git a/Master/tlpkg/etc/applied.use-autopatterns-from-dedicated-tlpsrc-files.patch b/Master/tlpkg/etc/applied.use-autopatterns-from-dedicated-tlpsrc-files.patch deleted file mode 100644 index 3f9dad59c2f..00000000000 --- a/Master/tlpkg/etc/applied.use-autopatterns-from-dedicated-tlpsrc-files.patch +++ /dev/null @@ -1,396 +0,0 @@ - -This patch adds the ability to change the auto generated patterns by -adding one tlpsrc file named - 00texlive.autopatterns.tlpsrc -and within these files the relevant src/bin/doc/run patterns, but the FIRST -word in the pattern is the category to which the pattern applies. - -The included 00texlive.autopatterns.tlpsrc adds the necessary patterns -to get the exact same behaviour as before. - -tlpsrc2tlpdb also gets a command line --no-autopatterns if you want -to disable loading of auto patterns. - -Warning: This change will make the description for maintaining separate -repositories a bit outdated, since now also these autopattern files -have to be added, or patterns themselves have to be specified. - -Index: tlpkg/TeXLive/TLPSRC.pm -=================================================================== ---- tlpkg/TeXLive/TLPSRC.pm (revision 11079) -+++ tlpkg/TeXLive/TLPSRC.pm (working copy) -@@ -201,7 +201,11 @@ - # - sub make_tlpobj - { -- my ($self,$tltree) = @_; -+ my ($self,$tltree,$defaultpatterns) = @_; -+ my %patterns; -+ if (defined($defaultpatterns)) { -+ %patterns = %{$defaultpatterns}; -+ } - my $tlp = TeXLive::TLPOBJ->new; - $tlp->name($self->name); - $tlp->category($self->category); -@@ -212,124 +216,67 @@ - $tlp->depends(@{$self->{'depends'}}) if (defined($self->{'depends'})); - $tlp->revision(0); - my $filemax; -- my $usedefault = 1; -+ my $usedefault; - my @allpospats; - my @allnegpats; -+ my $pkgname = $self->name; - # -- # runpatterns -+ # src/run/doc patterns - # -- foreach my $p (@{$self->{'runpatterns'}}) { -- if ($p =~ m/^\+!(.*)$/) { -- push @allnegpats, $1; -- } elsif ($p =~ m/^\+(.*)$/) { -- push @allpospats, $1; -- } elsif ($p =~ m/^!(.*)$/) { -- push @allnegpats, $1; -- $usedefault = 0; -- } else { -- push @allpospats, $p; -- $usedefault = 0; -+ # WARNING WARNING WARNING -+ # the "bin" must be last since we drop through for further dealing -+ # with specialities of the bin patterns!!!! -+ for my $pattype (qw/src run doc bin/) { -+ @allpospats = (); -+ @allnegpats = (); -+ $usedefault = 1; -+ foreach my $p (@{$self->{${pattype} . 'patterns'}}) { -+ if ($p =~ m/^\+!(.*)$/) { -+ push @allnegpats, $1; -+ } elsif ($p =~ m/^\+(.*)$/) { -+ push @allpospats, $1; -+ } elsif ($p =~ m/^!(.*)$/) { -+ push @allnegpats, $1; -+ $usedefault = 0; -+ } else { -+ push @allpospats, $p; -+ $usedefault = 0; -+ } - } -- } -- if ($usedefault) { -- if ($self->category eq "Package") { -- foreach my $md (qw/bibtex context dvips fonts makeindex metafont -- metapost mft omega scripts tex vtex/) { -- # mark the default pattern with a leading * so that -- # we do not warn a missing hit on a default pattern -- push @allpospats, "*t texmf-dist $md $self->{'name'}"; -+ if ($usedefault && defined($patterns{$pattype})) { -+ for my $p (@{$patterns{$pattype}}) { -+ # replace the string %NAME% with the actual package name -+ # we have to make a copy of $p otherwise we change it in the -+ # hash once and for all -+ (my $pp = $p) =~ s/%NAME%/$pkgname/g; -+ # sort through the patterns, and make sure that * are added to -+ # tag the default patterns -+ if ($pp =~ m/^!(.*)$/) { -+ push @allnegpats, "*$1"; -+ } else { -+ push @allpospats, "*$pp"; -+ } - } - } -- } -- foreach my $p (@allpospats) { -- $self->_do_normal_pattern($p,$tlp,$tltree,'run'); -- } -- foreach my $p (@allnegpats) { -- $self->_do_normal_pattern($p,$tlp,$tltree,'run',1); -- } -- # -- # srcpatterns -- # -- @allpospats = (); -- @allnegpats = (); -- $usedefault = 1; -- foreach my $p (@{$self->{'srcpatterns'}}) { -- if ($p =~ m/^\+!(.*)$/) { -- push @allnegpats, $1; -- } elsif ($p =~ m/^\+(.*)$/) { -- push @allpospats, $1; -- } elsif ($p =~ m/^!(.*)$/) { -- push @allnegpats, $1; -- $usedefault = 0; -- } else { -- push @allpospats, $p; -- $usedefault = 0; -+ # at this point we do NOT do the actual pattern matching for -+ # bin patterns, since we have some specialities to do -+ last if ($pattype eq "bin"); -+ # for all other patterns we create the list and add the files -+ foreach my $p (@allpospats) { -+ ddebug("pos pattern $p\n"); -+ $self->_do_normal_pattern($p,$tlp,$tltree,$pattype); - } -- } -- if ($usedefault) { -- # default patterns for srcfiles -- if ($self->category eq "Package") { -- push @allpospats, "*t texmf-dist source $self->{'name'}"; -- } elsif ($self->category eq "Documentation") { -- push @allpospats, "*t texmf-doc source $self->{'name'}"; -+ foreach my $p (@allnegpats) { -+ ddebug("neg pattern $p\n"); -+ $self->_do_normal_pattern($p,$tlp,$tltree,$pattype,1); - } - } -- foreach my $p (@allpospats) { -- $self->_do_normal_pattern($p,$tlp,$tltree,'src'); -- } -- foreach my $p (@allnegpats) { -- $self->_do_normal_pattern($p,$tlp,$tltree,'src',1); -- } - # -- # docpatterns -- # -- @allpospats = (); -- @allnegpats = (); -- $usedefault = 1; -- foreach my $p (@{$self->{'docpatterns'}}) { -- if ($p =~ m/^\+!(.*)$/) { -- push @allnegpats, $1; -- } elsif ($p =~ m/^\+(.*)$/) { -- push @allpospats, $1; -- } elsif ($p =~ m/^!(.*)$/) { -- push @allnegpats, $1; -- $usedefault = 0; -- } else { -- push @allpospats, $p; -- $usedefault = 0; -- } -- } -- if ($usedefault) { -- # default patterns for docfiles -- if ($self->category eq "Package") { -- push @allpospats, "*t texmf-dist doc $self->{'name'}"; -- } elsif ($self->category eq "Documentation") { -- push @allpospats, "*t texmf-doc doc $self->{'name'}"; -- } -- } -- foreach my $p (@allpospats) { -- $self->_do_normal_pattern($p,$tlp,$tltree,'doc'); -- } -- foreach my $p (@allnegpats) { -- $self->_do_normal_pattern($p,$tlp,$tltree,'doc',1); -- } -- # - # binpatterns - # -- # no default patterns for binfiles -- @allpospats = (); -- @allnegpats = (); -- foreach my $p (@{$self->{'binpatterns'}}) { -- if ($p =~ m/^\+!(.*)$/) { -- push @allnegpats, $1; -- } elsif ($p =~ m/^\+(.*)$/) { -- push @allpospats, $1; -- } elsif ($p =~ m/^!(.*)$/) { -- push @allnegpats, $1; -- } else { -- push @allpospats, $p; -- } -- } -+ # mind that @allpospats and @allnegpats have already been set up -+ # in the above loop. We only have to deal with the specialities of -+ # the bin patterns - foreach my $p (@allpospats) { - my @todoarchs = $tltree->architectures; - my $finalp = $p; -@@ -472,17 +419,29 @@ - sub srcpatterns { - my $self = shift; - if (@_) { @{ $self->{'srcpatterns'} } = @_ } -- return @{ $self->{'srcpatterns'} }; -+ if (defined($self->{'srcpatterns'})) { -+ return @{ $self->{'srcpatterns'} }; -+ } else { -+ return; -+ } - } - sub docpatterns { - my $self = shift; - if (@_) { @{ $self->{'docpatterns'} } = @_ } -- return @{ $self->{'docpatterns'} }; -+ if (defined($self->{'docpatterns'})) { -+ return @{ $self->{'docpatterns'} }; -+ } else { -+ return; -+ } - } - sub binpatterns { - my $self = shift; - if (@_) { @{ $self->{'binpatterns'} } = @_ } -- return @{ $self->{'binpatterns'} }; -+ if (defined($self->{'binpatterns'})) { -+ return @{ $self->{'binpatterns'} }; -+ } else { -+ return; -+ } - } - sub depends { - my $self = shift; -@@ -492,7 +451,11 @@ - sub runpatterns { - my $self = shift; - if (@_) { @{ $self->{'runpatterns'} } = @_ } -- return @{ $self->{'runpatterns'} }; -+ if (defined($self->{'runpatterns'})) { -+ return @{ $self->{'runpatterns'} }; -+ } else { -+ return; -+ } - } - sub executes { - my $self = shift; -@@ -746,7 +709,9 @@ - - If a given pattern section is empty or B<all> the provided patterns have - the prefix C<+> (e.g., C<+f ...>), then the following patterns, listed --by type are I<automatically> added at expansion time: -+by type are I<automatically> added at expansion time. Note that this list -+is not definitive, but is taken from the patterns of tlpsrc files -+named C<00texlive.autopatterns.>I<Category>C<.tlpsrc>. - - =over 4 - -Index: tlpkg/tlpsrc/00texlive.autopatterns.tlpsrc -=================================================================== ---- tlpkg/tlpsrc/00texlive.autopatterns.tlpsrc (revision 0) -+++ tlpkg/tlpsrc/00texlive.autopatterns.tlpsrc (revision 0) -@@ -0,0 +1,21 @@ -+name 00texlive.autopatterns -+category TLCore -+shortdesc Defines the automatically generated patterns -+# auto patterns for category Package -+runpattern Package t texmf-dist bibtex %NAME% -+runpattern Package t texmf-dist context %NAME% -+runpattern Package t texmf-dist dvips %NAME% -+runpattern Package t texmf-dist fonts %NAME% -+runpattern Package t texmf-dist makeindex %NAME% -+runpattern Package t texmf-dist metafont %NAME% -+runpattern Package t texmf-dist metapost %NAME% -+runpattern Package t texmf-dist mft %NAME% -+runpattern Package t texmf-dist omega %NAME% -+runpattern Package t texmf-dist scripts %NAME% -+runpattern Package t texmf-dist tex %NAME% -+runpattern Package t texmf-dist vtex %NAME% -+srcpattern Package t texmf-dist source %NAME% -+docpattern Package t texmf-dist doc %NAME% -+# auto patterns for category Documentation -+srcpattern Documentation t texmf-doc source %NAME% -+docpattern Documentation t texmf-doc doc %NAME% -Index: tlpkg/bin/tlpsrc2tlpdb -=================================================================== ---- tlpkg/bin/tlpsrc2tlpdb (revision 11079) -+++ tlpkg/bin/tlpsrc2tlpdb (working copy) -@@ -31,6 +31,7 @@ - my $opt_nobinsplit = 0; - my $opt_winwarning; - my $opt_fromfiles = 0; -+my $opt_noautopatterns = 0; - - TeXLive::TLUtils::process_logging_options(); - GetOptions( -@@ -38,6 +39,7 @@ - "master=s" => \$opt_master, # location of the TL tree - "catalogue=s" => \$opt_catalogue, # location of the TeX Catalogue - "no-bin-split!" => \$opt_nobinsplit, -+ "no-autopatterns" => \$opt_noautopatterns, - "from-files" => \$opt_fromfiles, - "with-win-pattern-warning" => \$opt_winwarning, - "help|?" => \$help) or pod2usage(1); -@@ -63,9 +65,66 @@ - $tlc = TeXLive::TeXCatalogue->new ("location" => $opt_catalogue); - } - -+ my $tlpsrc_dir = "$opt_master/tlpkg/tlpsrc"; -+ -+ # get the default patterns -+ my %autopatterns; -+ if (! $opt_noautopatterns) { -+ my $apfile = "$tlpsrc_dir/00texlive.autopatterns.tlpsrc"; -+ if (! -r $apfile) { -+ if (! $opt_noautopatterns) { -+ tlwarn ("No autopatterns tlpsrc 00texlive.autopatterns.tlpsrc found.\n"); -+ tlwarn ("Stopping here. If you want to continue either add the above file\n"); -+ tlwarn ("or call tlpsrc with --no-autopatterns.\n"); -+ exit 1; -+ } -+ } -+ my $tlsrc = new TeXLive::TLPSRC; -+ $tlsrc->from_file ( $apfile ); -+ if ($tlsrc->binpatterns) { -+ for my $p ($tlsrc->binpatterns) { -+ my ($cat, @rest) = split ' ', $p; -+ push @{$autopatterns{$cat}{"bin"}}, join(' ', @rest); -+ } -+ } -+ if ($tlsrc->srcpatterns) { -+ for my $p ($tlsrc->srcpatterns) { -+ my ($cat, @rest) = split ' ', $p; -+ push @{$autopatterns{$cat}{"src"}}, join(' ', @rest); -+ } -+ } -+ if ($tlsrc->docpatterns) { -+ for my $p ($tlsrc->docpatterns) { -+ my ($cat, @rest) = split ' ', $p; -+ push @{$autopatterns{$cat}{"doc"}}, join(' ', @rest); -+ } -+ } -+ if ($tlsrc->runpatterns) { -+ for my $p ($tlsrc->runpatterns) { -+ my ($cat, @rest) = split ' ', $p; -+ push @{$autopatterns{$cat}{"run"}}, join(' ', @rest); -+ } -+ } -+ -+ for my $cat (keys %autopatterns) { -+ debug ("Category $cat\n"); -+ for my $d (@{$autopatterns{$cat}{"bin"}}) { -+ debug ("Found auto bin pattern $d\n"); -+ } -+ for my $d (@{$autopatterns{$cat}{"src"}}) { -+ debug ("Found auto src pattern $d\n"); -+ } -+ for my $d (@{$autopatterns{$cat}{"doc"}}) { -+ debug ("Found auto doc pattern $d\n"); -+ } -+ for my $d (@{$autopatterns{$cat}{"run"}}) { -+ debug ("Found auto run pattern $d\n"); -+ } -+ } -+ } # end of if (! $opt_noautopatterns) -+ - # if we're regenerating the whole thing, get all our tlpsrc files. - if ($opt_all) { -- my $tlpsrc_dir = "$opt_master/tlpkg/tlpsrc"; - chdir ($tlpsrc_dir) || die "chdir($tlpsrc_dir) failed: $!"; - @ARGV = glob ("*.tlpsrc"); - } -@@ -82,11 +141,16 @@ - my $tldb = TeXLive::TLPDB->new; - my $src_count = 0; - foreach my $f (@ARGV) { -+ next if ($f =~ m/^00texlive\.autopatterns/); - $src_count++ if $opt_all; - - my $tlsrc = new TeXLive::TLPSRC; - $tlsrc->from_file ($f); -- my $tlp = $tlsrc->make_tlpobj ($tltree); -+ my $patternref; -+ if (defined($autopatterns{$tlsrc->category})) { -+ $patternref = $autopatterns{$tlsrc->category}; -+ } -+ my $tlp = $tlsrc->make_tlpobj ($tltree, $autopatterns{$tlsrc->category}); - - (my $base_f = $f) =~ s/\.tlpsrc$//; - warn "$f: package name " . $tlp->name . " does not match filename\n" diff --git a/Master/tlpkg/etc/rej.generalize-revisions.patch b/Master/tlpkg/etc/rej.generalize-revisions.patch deleted file mode 100644 index 34db3cb6a20..00000000000 --- a/Master/tlpkg/etc/rej.generalize-revisions.patch +++ /dev/null @@ -1,103 +0,0 @@ -Index: texmf/scripts/texlive/tlmgr.pl -=================================================================== ---- texmf/scripts/texlive/tlmgr.pl (revision 10512) -+++ texmf/scripts/texlive/tlmgr.pl (working copy) -@@ -661,7 +661,7 @@ - next; - } - my $mediarev = $mediatlp->revision; -- if ($rev < $mediarev) { -+ if (revless ($rev, $mediarev)) { - $nrupdated++; - if ($opt_list) { - print "$pkg: local: $rev, source: $mediarev\n"; -@@ -740,7 +740,7 @@ - print "update: $pkg done\n"; - } - } -- } elsif ($rev > $mediarev) { -+ } elsif (revless ($mediarev, $rev)) { - print "$pkg: revision in $location is less then local revision, not updating!\n"; - next; - } -Index: texmf/scripts/texlive/tlmgrgui/tlmgrgui-real.pl -=================================================================== ---- texmf/scripts/texlive/tlmgrgui/tlmgrgui-real.pl (revision 10512) -+++ texmf/scripts/texlive/tlmgrgui/tlmgrgui-real.pl (working copy) -@@ -26,7 +26,7 @@ - use TeXLive::TLMedia; - use TeXLive::TLPDB; - use TeXLive::TLConfig; --use TeXLive::TLUtils qw(setup_programs platform_desc win32); -+use TeXLive::TLUtils qw(setup_programs platform_desc win32 revless); - use Getopt::Long qw(:config no_autoabbrev require_order); - - use Tk; -@@ -583,7 +583,7 @@ - } else { - $urev = 0; - } -- if ($urev > $lrev) { -+ if (revless ($lrev, $urev)) { - if ($lp =~ m/\./) { - push @archret, $lp; - } else { -Index: tlpkg/TeXLive/TLUtils.pm -=================================================================== ---- tlpkg/TeXLive/TLUtils.pm (revision 10512) -+++ tlpkg/TeXLive/TLUtils.pm (working copy) -@@ -66,6 +66,7 @@ - TeXLive::TLUtils::conv_to_win_path($path); - TeXLive::TLUtils::give_ctan_mirror($path); - TeXLive::TLUtils::tlmd5($path); -+ TeXLive::TLUtils::revless($rev1, $rev2); - - =head1 DESCRIPTION - -@@ -115,9 +116,10 @@ - &welcome_paths - &give_ctan_mirror - &tlmd5 -+ &revless - ); - @EXPORT = qw(setup_programs download_file info log debug ddebug tlwarn -- process_logging_options win32); -+ process_logging_options win32 revless); - } - - -@@ -1692,6 +1694,34 @@ - } - } - -+=pod -+ -+=item C<revless ($rev1, $rev2) > -+ -+Returns true if the first revision is less or equal than the second. -+ -+=cut -+ -+ -+sub revless { -+ my ($a, $b) = @_; -+ # format of a revision number: -+ # NNNN[.RRRR] -+ # NNNN and RRRR are integers (variable number of digits, but at least one -+ # for NNNN) -+ # -+ my ($arev, undef, $arrr) = ($a =~ m/^([0-9]+)(\.([0-9]+))?$/); -+ my ($brev, undef, $brrr) = ($b =~ m/^([0-9]+)(\.([0-9]+))?$/); -+ $arrr || ($arrr = 0); -+ $brrr || ($brrr = 0); -+ return 1 if ($arev < $brev); -+ return 0 if ($arev > $brev); -+ # so now $arev == $brev -+ return 1 if ($arrr < $brrr); -+ # in all other cases return 0 -+ return 0; -+} -+ - ############################################# - # - # Taken from Text::ParseWords diff --git a/Master/tlpkg/etc/rej.installed-avail-archs.patch b/Master/tlpkg/etc/rej.installed-avail-archs.patch deleted file mode 100644 index 6c2b8c4ff8d..00000000000 --- a/Master/tlpkg/etc/rej.installed-avail-archs.patch +++ /dev/null @@ -1,254 +0,0 @@ -Rational --------- -(but note that I believe it is outdated, see below) - - currently there is a mess-up wrt to available and installed architectures. - We use 00texlive-installation/available_architectures for both the set - of installed archs and the set of available archs. - That should be better done as follows: - 00texlive.config: - should contain the available_architectures stuff - 00texlive-installation.config: - should contain *instead* installed_architectures stuff - and tlmgr should check: - localtlpdb/00texlive-installation.config/installed_architectures - for what archs are actually installed, and - remotetlpdb/00texlive.config/available_architectures - for what can be installed. - - In the texlive-svn both variables would be initialized to the same thing, - while others that don't want to be necessary also runable as is (some - third party distribution of modules) should only need to set - 00texlive.config/available_architectures - - -There is some code missing that transfers the one option into the other -in the case that the other is absent. - -I am more and more convinced that this patch should not be included. Because -we will always have that - available_archs == installed_archs -so that is a bit a strange thing to duplicate it. If we want to use an -installed system as installation source it makes sense to use the -available as it is done for now. - - -Index: install-tl -=================================================================== ---- install-tl (revision 10389) -+++ install-tl (working copy) -@@ -921,7 +921,7 @@ - if ($vars{$_}) { push @archs, $1; } - } - } -- $localtlpdb->option_available_architectures(@archs); -+ $localtlpdb->option_installed_architectures(@archs); - $localtlpdb->save() unless $vars{'from_dvd'}; - } - -Index: tlpkg/TeXLive/TLPDB.pm -=================================================================== ---- tlpkg/TeXLive/TLPDB.pm (revision 10391) -+++ tlpkg/TeXLive/TLPDB.pm (working copy) -@@ -27,6 +27,7 @@ - $tlpdb->writeout(FILEHANDLE); - $tlpdb->save; - $tlpdb->available_architectures(); -+ $tlpdb->installed_architectures(); - $tlpdb->add_tlpcontainer($pkg, $ziploc [, $archrefs [, $dest ]] ); - $tlpdb->add_tlpobj($tlpobj); - $tlpdb->needed_by($pkg); -@@ -141,7 +142,7 @@ - if ($tlp->category =~ m/$MetaCategoriesRegexp/) { - foreach my $d ($tlp->depends) { - if ($d =~ m/^(.*)\.win32$/) { -- if (member("win32", $self->available_architectures)) { -+ if (member("win32", $self->installed_architectures)) { - if ($d eq $pkg) { - push @ret, $p; - last; -@@ -311,17 +312,16 @@ - - =pod - --=item C<< $tlpdb->available_architectures >> -+=item C<< $tlpdb->installed_architectures >> - --The C<available_architectures> functions returns the list of available --architectures as set in the options section --(i.e., using option_available_architectures) -+The C<installed_architectures> function returns the list of installed -+architectures, as set as variable in 00texlive-installation.config. - - =cut - --sub available_architectures { -+sub installed_architectures { - my $self = shift; -- my @archs = $self->option_available_architectures; -+ my @archs = $self->option_installed_architectures; - if (! @archs) { - # fall back to the old method checking bin-tex\.* - my @packs = $self->list_packages; -@@ -330,8 +330,30 @@ - return @archs; - } - -+ - =pod - -+=item C<< $tlpdb->available_architectures >> -+ -+The C<available_architectures> function returns the list of available -+architectures as set in the 00texlive.config package. -+ -+=cut -+ -+sub available_architectures { -+ my $self = shift; -+ if (defined($self->{'tlps'}{'00texlive.config'})) { -+ foreach my $d ($self->{'tlps'}{'00texlive.config'}->depends) { -+ if ($d =~ m!^available_architectures/(.*)$!) { -+ return split ' ', "$1"; -+ } -+ } -+ } -+ return; -+} -+ -+=pod -+ - =item C<< $tlpdb->add_tlpcontainer($pkg, $ziploc [, $archrefs [, $dest ]] ) >> - - Installs the package C<$pkg> from the container files in C<$ziploc>. If -@@ -858,10 +880,10 @@ - return; - } - --sub option_available_architectures { -+sub option_installed_architectures { - my $self = shift; -- if (@_) { $self->_set_option_value("available_architectures","@_"); } -- my @archs = split ' ', $self->_option_value("available_architectures"); -+ if (@_) { $self->_set_option_value("installed_architectures","@_"); } -+ my @archs = split ' ', $self->_option_value("installed_architectures"); - return @archs; - } - sub option_create_symlinks { -Index: tlpkg/TeXLive/TLMedia.pm -=================================================================== ---- tlpkg/TeXLive/TLMedia.pm (revision 10391) -+++ tlpkg/TeXLive/TLMedia.pm (working copy) -@@ -68,7 +68,7 @@ - } - } - my (@systems); -- @systems = $tlpdb->available_architectures; -+ @systems = $tlpdb->installed_architectures; - $self->{'media'} = $media; - $self->{'location'} = $location; - $self->{'tlpdb'} = $tlpdb; -@@ -210,7 +210,7 @@ - # we only want to try to install a .ARCH package if it actually contains - # files - my $foo = $1; -- foreach my $a ($totlpdb->available_architectures) { -+ foreach my $a ($totlpdb->installed_architectures) { - if (defined($fromtlpdb->get_package("$foo.$a")) && - !defined($totlpdb->get_package("$foo.$a"))) { - merge_into(\%ret, -@@ -219,7 +219,7 @@ - } - } elsif ($d =~ m/^(.*).win32$/) { - # install only of win32 is under the available archs -- if (TeXLive::TLUtils::member("win32",$totlpdb->available_architectures)) { -+ if (TeXLive::TLUtils::member("win32",$totlpdb->installed_architectures)) { - merge_into(\%ret, - $self->install_package($d, $totlpdb, $nodepends, $nopostinstall, $fallbackmedia)); - } -Index: tlpkg/bin/tlpsrc2tlpdb -=================================================================== ---- tlpkg/bin/tlpsrc2tlpdb (revision 10389) -+++ tlpkg/bin/tlpsrc2tlpdb (working copy) -@@ -113,6 +113,10 @@ - if ($tlp->name eq "00texlive.config") { - my @bar = $tlp->depends; - push @bar, "revision/".$tltree->revision; -+ # add the list of available architectures to 00texlive.config which -+ # is the source of information at installation time -+ my @foo = $tltree->architectures; -+ push @bar, "available_architectures/@foo"; - $tlp->depends (@bar); - } - $tldb->add_tlpobj ($tlp); -@@ -123,7 +127,13 @@ - if ($opt_all) { - $tldb->root ($opt_master); - # do set the option_archs from the dirs in Master/bin -- $tldb->option_available_architectures ($tltree->architectures); -+ # we have to set two times the list of architectures: Once the list -+ # of available architectures as saved in 00texlive.config, and once -+ # (for running directly from the svn checkout) the list of -+ # installed packages in 00texlive-installation.config -+ # The former part in 00texlive.config is done above, the later part -+ # is done here: -+ $tldb->option_installed_architectures ($tltree->architectures); - $tldb->save; - info ("$0: wrote $src_count packages to ". $tldb->root . ".\n"); - } else { -Index: texmf/scripts/texlive/tlmgr.pl -=================================================================== ---- texmf/scripts/texlive/tlmgr.pl (revision 10391) -+++ texmf/scripts/texlive/tlmgr.pl (working copy) -@@ -275,7 +275,7 @@ - # remove those bin dependencies .ARCH - foreach my $d ($tlp->depends) { - if ($d eq "$pkg.ARCH") { -- foreach my $a ($localtlpdb->available_architectures) { -+ foreach my $a ($localtlpdb->installed_architectures) { - if (defined($localtlpdb->get_package("$pkg.$a"))) { - merge_into(\%ret, - &remove_package("$pkg.$a", $localtlpdb, $force)); -@@ -884,7 +884,7 @@ - $tlmediasrc = TeXLive::TLMedia->new($location); - die($loadmediasrcerror . $location) unless defined($tlmediasrc); - my $mediatlpdb = $tlmediasrc->tlpdb; -- my @already_installed_arch = $localtlpdb->available_architectures; -+ my @already_installed_arch = $localtlpdb->installed_architectures; - print "Available architectures:\n"; - foreach my $a ($mediatlpdb->available_architectures) { - if (member($a,@already_installed_arch)) { -@@ -900,7 +900,7 @@ - $tlmediasrc = TeXLive::TLMedia->new($location); - die($loadmediasrcerror . $location) unless defined($tlmediasrc); - my $mediatlpdb = $tlmediasrc->tlpdb; -- my @already_installed_arch = $localtlpdb->available_architectures; -+ my @already_installed_arch = $localtlpdb->installed_architectures; - my @available_arch = $mediatlpdb->available_architectures; - my @todoarchs; - foreach my $a (@ARGV) { -@@ -937,9 +937,9 @@ - merge_into (\%ret, $tlmediasrc->install_package("bin-tlpsv.win32", $localtlpdb, 1, 0)); - } - # update the option_archs list of installed archs -- my @larchs = $localtlpdb->option_available_architectures; -+ my @larchs = $localtlpdb->option_installed_architectures; - push @larchs, @todoarchs; -- $localtlpdb->option_available_architectures(@larchs); -+ $localtlpdb->option_installed_architectures(@larchs); - $localtlpdb->save; - } else { - die "Unknown option for arch: $what"; -Index: texmf/scripts/texlive/tlmgrgui/gui-arch.pl -=================================================================== ---- texmf/scripts/texlive/tlmgrgui/gui-arch.pl (revision 10391) -+++ texmf/scripts/texlive/tlmgrgui/gui-arch.pl (working copy) -@@ -32,7 +32,7 @@ - } else { - @archsavail = $tlmediatlpdb->available_architectures; - } -- @archsinstalled = $localtlpdb->available_architectures; -+ @archsinstalled = $localtlpdb->installed_architectures; - foreach my $a (@archsavail) { - $archs{$a} = 0; - if (grep(/^$a$/,@archsinstalled)) { diff --git a/Master/tlpkg/etc/rej.tlmgrgui-include-revisions-in-update-list.patch b/Master/tlpkg/etc/rej.tlmgrgui-include-revisions-in-update-list.patch deleted file mode 100644 index fa1d4dd7236..00000000000 --- a/Master/tlpkg/etc/rej.tlmgrgui-include-revisions-in-update-list.patch +++ /dev/null @@ -1,61 +0,0 @@ ---- /src/TeX/texlive-svn/Master/texmf/scripts/texlive/tlmgrgui/tlmgrgui-real.pl 2008-08-22 15:00:15.000000000 +0200 -+++ tlmgrgui-real.pl 2008-08-22 15:28:26.000000000 +0200 -@@ -511,6 +511,9 @@ - } else { - @upgradepkgs = @_; - } -+ # note that the list still contains package names with revision -+ # specifications -+ @upgradepkgs = map { m/(^[^ ]+) /; $1; } @upgradepkgs; - foreach my $p (@upgradepkgs) { - if ($p =~ m/$WinSpecialUpdatePackagesRegexp/) { - $updater_needed = 1; -@@ -521,9 +524,16 @@ - my @execlist; - push @execlist, "tlmgr", "--location", "$location"; - if ($debugmode) { -- push @execlist, "-v"; -+ push @execlist, "-v", "update"; -+ } -+ # remove the revision information -+ if ($_[0] eq "--all") { -+ push @execlist, "--all"; -+ } else { -+ # we got some actual package names, remove the revision info -+ my @foo = map { m/(^[^ ]+) /; $1; } @_; -+ push @execlist, @foo; - } -- push @execlist, "update", @_; - run_program_show_output(@execlist); - if (win32() && $updater_needed) { - my $t = ___"runupdater"; -@@ -572,6 +582,8 @@ - sub create_update_list { - my @ret = (); - my @archret = (); -+ my %localrev; -+ my %remoterev; - if (defined($tlmediatlpdb)) { - foreach my $lp ($localtlpdb->list_packages) { - next if ($lp =~ m/00texlive-installation.config/); -@@ -589,6 +601,8 @@ - } else { - push @ret, $lp; - } -+ $localrev{$lp} = $lrev; -+ $remoterev{$lp} = $urev; - } - } - foreach my $p (@archret) { -@@ -598,6 +612,11 @@ - } - push @ret, $p unless $foundparent; - } -+ my @realret = (); -+ for my $p (@ret) { -+ push @realret, "$p ($localrev{$p} -> $remoterev{$p})"; -+ } -+ @ret = @realret; - # issue a warning if no updates are available, the tlmediatlpdb is loaded - # and is not from the net - if ($#ret < 0) { |