summaryrefslogtreecommitdiff
path: root/Master/tlpkg/TeXLive
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2013-01-31 00:45:52 +0000
committerNorbert Preining <preining@logic.at>2013-01-31 00:45:52 +0000
commitdf252b8786e00f972b77772ae6b7b4ddde4e1da0 (patch)
tree78a5472f8f4f987a21207ec5492dac04a2c3ec9a /Master/tlpkg/TeXLive
parentabb000d9b877f6ae30b59469cb8ddc0bdc2471c7 (diff)
implement tlmgr platform set
git-svn-id: svn://tug.org/texlive/trunk@28995 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/TeXLive')
-rw-r--r--Master/tlpkg/TeXLive/TLPDB.pm58
1 files changed, 50 insertions, 8 deletions
diff --git a/Master/tlpkg/TeXLive/TLPDB.pm b/Master/tlpkg/TeXLive/TLPDB.pm
index 25cfb74b605..912aacfc8a4 100644
--- a/Master/tlpkg/TeXLive/TLPDB.pm
+++ b/Master/tlpkg/TeXLive/TLPDB.pm
@@ -69,6 +69,7 @@ C<TeXLive::TLPDB> -- A database of TeX Live Packages
$tlpdb->add_default_options();
$tlpdb->settings;
$tlpdb->setting($key, [$value]);
+ $tlpdb->setting([-clear], $key, [$value]);
$tlpdb->sizes_of_packages($opt_src, $opt_doc, $ref_arch_list [, @packs ]);
$tlpdb->install_package($pkg, $dest_tlpdb);
$tlpdb->remove_package($pkg, %options);
@@ -1874,17 +1875,53 @@ sub _set_value_pkg {
$self->add_tlpobj($pkg);
}
-sub _option_value {
+sub _clear_option {
my $self = shift;
- $self->_value_pkg('00texlive.installation', 'opt_', @_);
+ $self->_clear_pkg('00texlive.installation', 'opt_', @_);
}
-sub _setting_value {
+sub _clear_setting {
my $self = shift;
- $self->_value_pkg('00texlive.installation', 'setting_', @_);
+ $self->_clear_pkg('00texlive.installation', 'setting_', @_);
}
-sub _value_pkg {
+sub _clear_pkg {
+ my ($self,$pkgname,$pre,$key) = @_;
+ my $k = "$pre$key";
+ my $pkg;
+ if ($self->is_virtual) {
+ $pkg = $self->{'tlpdbs'}{'main'}->get_package($pkgname);
+ } else {
+ $pkg = $self->{'tlps'}{$pkgname};
+ }
+ my @newdeps;
+ if (!defined($pkg)) {
+ return;
+ } else {
+ foreach my $d ($pkg->depends) {
+ if ($d =~ m!^$k:!) {
+ # do nothing, we drop the value
+ } else {
+ push @newdeps, $d;
+ }
+ }
+ }
+ $pkg->depends(@newdeps);
+ $self->add_tlpobj($pkg);
+}
+
+
+sub _get_option_value {
+ my $self = shift;
+ $self->_get_value_pkg('00texlive.installation', 'opt_', @_);
+}
+
+sub _get_setting_value {
+ my $self = shift;
+ $self->_get_value_pkg('00texlive.installation', 'setting_', @_);
+}
+
+sub _get_value_pkg {
my ($self,$pkg,$pre,$key) = @_;
my $k = "$pre$key";
my $tlp;
@@ -1910,7 +1947,7 @@ sub option_pkg {
my $pkg = shift;
my $key = shift;
if (@_) { $self->_set_value_pkg($pkg, "opt_", $key, shift); }
- my $ret = $self->_value_pkg($pkg, "opt_", $key);
+ my $ret = $self->_get_value_pkg($pkg, "opt_", $key);
# special case for location == __MASTER__
if (defined($ret) && $ret eq "__MASTER__" && $key eq "location") {
return $self->root;
@@ -1921,7 +1958,7 @@ sub option {
my $self = shift;
my $key = shift;
if (@_) { $self->_set_option_value($key, shift); }
- my $ret = $self->_option_value($key);
+ my $ret = $self->_get_option_value($key);
# special case for location == __MASTER__
if (defined($ret) && $ret eq "__MASTER__" && $key eq "location") {
return $self->root;
@@ -1956,6 +1993,11 @@ sub setting_pkg {
sub setting {
my $self = shift;
my $key = shift;
+ if ($key eq "-clear") {
+ my $realkey = shift;
+ $self->_clear_setting($realkey);
+ return;
+ }
if (@_) {
if ($TLPDBSettings{$key}->[0] eq "l") {
$self->_set_setting_value($key, "@_");
@@ -1963,7 +2005,7 @@ sub setting {
$self->_set_setting_value($key, shift);
}
}
- my $ret = $self->_setting_value($key);
+ my $ret = $self->_get_setting_value($key);
# check the types of the settings, and if it is a "l" return a list
if ($TLPDBSettings{$key}->[0] eq "l") {
my @ret;