summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-10-29 21:55:40 +0000
committerKarl Berry <karl@freefriends.org>2008-10-29 21:55:40 +0000
commit6330dfef663ae379b8d56f0a5b041384ee9f1360 (patch)
treea45ff302897ae0e6bd96c531e3d21859c6a0976b /Master
parent9d7435122110c28a4c1cb8c434c2c862ee731891 (diff)
archive rejected patches, delete applied patches, pass -v in update-tlcritical
git-svn-id: svn://tug.org/texlive/trunk@11113 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/tlpkg/archive/rej.generalize-revisions.patch (renamed from Master/tlpkg/etc/rej.generalize-revisions.patch)0
-rw-r--r--Master/tlpkg/archive/rej.installed-avail-archs.patch (renamed from Master/tlpkg/etc/rej.installed-avail-archs.patch)0
-rw-r--r--Master/tlpkg/archive/rej.tlmgrgui-include-revisions-in-update-list.patch (renamed from Master/tlpkg/etc/rej.tlmgrgui-include-revisions-in-update-list.patch)0
-rwxr-xr-xMaster/tlpkg/bin/tl-update-tlcritical2
-rw-r--r--Master/tlpkg/etc/applied.auto-backup-feature.patch414
-rw-r--r--Master/tlpkg/etc/applied.use-autopatterns-from-dedicated-tlpsrc-files.patch396
6 files changed, 1 insertions, 811 deletions
diff --git a/Master/tlpkg/etc/rej.generalize-revisions.patch b/Master/tlpkg/archive/rej.generalize-revisions.patch
index 34db3cb6a20..34db3cb6a20 100644
--- a/Master/tlpkg/etc/rej.generalize-revisions.patch
+++ b/Master/tlpkg/archive/rej.generalize-revisions.patch
diff --git a/Master/tlpkg/etc/rej.installed-avail-archs.patch b/Master/tlpkg/archive/rej.installed-avail-archs.patch
index 6c2b8c4ff8d..6c2b8c4ff8d 100644
--- a/Master/tlpkg/etc/rej.installed-avail-archs.patch
+++ b/Master/tlpkg/archive/rej.installed-avail-archs.patch
diff --git a/Master/tlpkg/etc/rej.tlmgrgui-include-revisions-in-update-list.patch b/Master/tlpkg/archive/rej.tlmgrgui-include-revisions-in-update-list.patch
index fa1d4dd7236..fa1d4dd7236 100644
--- a/Master/tlpkg/etc/rej.tlmgrgui-include-revisions-in-update-list.patch
+++ b/Master/tlpkg/archive/rej.tlmgrgui-include-revisions-in-update-list.patch
diff --git a/Master/tlpkg/bin/tl-update-tlcritical b/Master/tlpkg/bin/tl-update-tlcritical
index 3e0247fbb7d..5adb5277e8c 100755
--- a/Master/tlpkg/bin/tl-update-tlcritical
+++ b/Master/tlpkg/bin/tl-update-tlcritical
@@ -10,7 +10,7 @@ Master=`cd $mydir/../.. && pwd`
tlcrit=/home/ftp/texlive/tlcritical
# update normal containers.
-$Master/tlpkg/bin/tl-update-containers \
+$Master/tlpkg/bin/tl-update-containers -v \
-location $tlcrit -all \
00texlive-installation.config 00texlive.config bin-texlive texlive.infra
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"