summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xMaster/texmf/scripts/texlive/tl-package-manager.pl19
-rw-r--r--Master/tlpkg/TeXLive/TLPDB.pm109
2 files changed, 118 insertions, 10 deletions
diff --git a/Master/texmf/scripts/texlive/tl-package-manager.pl b/Master/texmf/scripts/texlive/tl-package-manager.pl
index 0fda2b2f1c6..44467737210 100755
--- a/Master/texmf/scripts/texlive/tl-package-manager.pl
+++ b/Master/texmf/scripts/texlive/tl-package-manager.pl
@@ -11,6 +11,11 @@
# - (?) removal does not remove created format files from TEXMFSYSVAR
# - other features: dependency check?, ...?
# - improve search function
+# - list_archs and add_arch
+# - cmd
+# default <key> <value>
+# sets the options in texlive.tlpdb
+# done for location
my $Master;
@@ -130,6 +135,20 @@ if ($action =~ m/^generate$/i) {
}
# should we do some postinst actions?
exit(0);
+} elsif ($action =~ m/^default$/i) {
+ my $what = shift;
+ die("default needs at least one argument") unless defined($what);
+ if ($what =~ m/^location$/i) {
+ # changes the default location
+ my $loc = shift;
+ die("defaultlocation needs an argument") unless defined($loc);
+ print "Setting default location to $loc!\n";
+ $localtlpdb->option_location($loc);
+ $localtlpdb->save;
+ } else {
+ warn "Setting other options currently not support, please edit texlive.tlpdb!";
+ }
+ exit(0);
} elsif ($action =~ m/^list$/i) {
my $what = shift;
if ($what =~ m/^collection/i) {
diff --git a/Master/tlpkg/TeXLive/TLPDB.pm b/Master/tlpkg/TeXLive/TLPDB.pm
index fc8d7b1ac58..857d4370b81 100644
--- a/Master/tlpkg/TeXLive/TLPDB.pm
+++ b/Master/tlpkg/TeXLive/TLPDB.pm
@@ -732,6 +732,28 @@ Need to be documented
=cut
+sub _set_option_value {
+ my ($self,$key,$value) = @_;
+ my $pkg = $self->{'tlps'}{'00texlive-installation.config'};
+ my @newdeps;
+ if (!defined($pkg)) {
+ my $pkg = new TeXLive::TLPOBJ;
+ $tlp->name("00texlive-installation.config");
+ $tlp->category("TLCore");
+ push @newdeps, "$key/$value";
+ } else {
+ foreach my $d ($pkg->depends) {
+ if ($d =~ m!^$key/!) {
+ push @newdeps, "$key/$value";
+ } else {
+ push @newdeps, $d;
+ }
+ }
+ }
+ $pkg->depends(@newdeps);
+ $self->{'tlps'}{'00texlive-installation.config'} = $pkg;
+}
+
sub _option_value {
my ($self,$key) = @_;
if (defined($self->{'tlps'}{'00texlive-installation.config'})) {
@@ -744,6 +766,33 @@ sub _option_value {
}
return;
}
+
+sub _set_option_setting {
+ my ($self,$key,$value) = @_;
+ my $pkg = $self->{'tlps'}{'00texlive-installation.config'};
+ my @newdeps;
+ if (!defined($pkg)) {
+ my $pkg = new TeXLive::TLPOBJ;
+ $tlp->name("00texlive-installation.config");
+ $tlp->category("TLCore");
+ if ($value) {
+ push @newdeps, "$key";
+ }
+ } else {
+ foreach my $d ($pkg->depends) {
+ if (($d =~ m!^$key$!) && (!$value)) {
+ # key is present, but we should clear it, so do nothing
+ } else {
+ # either the key is already present and we should set it (again) to on
+ # or it is something else
+ push @newdeps, $d;
+ }
+ }
+ }
+ $pkg->depends(@newdeps);
+ $self->{'tlps'}{'00texlive-installation.config'} = $pkg;
+}
+
sub _option_setting {
my ($self,$key) = @_;
if (defined($self->{'tlps'}{'00texlive-installation.config'})) {
@@ -757,16 +806,56 @@ sub _option_setting {
return;
}
-sub option_symlinks { my $self = shift; return $self->_option_setting("symlinks"); }
-sub option_docfiles { my $self = shift; return $self->_option_setting("docfiles"); }
-sub option_srcfiles { my $self = shift; return $self->_option_setting("srcfiles"); }
-sub option_formats { my $self = shift; return $self->_option_setting("formats"); }
-sub option_letter { my $self = shift; return $self->_option_setting("letter"); }
-sub option_location { my $self = shift; return $self->_option_value("location"); }
-sub option_sys_bin { my $self = shift; return $self->_option_value("sys_bin"); }
-sub option_sys_man { my $self = shift; return $self->_option_value("sys_man"); }
-sub option_sys_info { my $self = shift; return $self->_option_value("sys_info"); }
-sub option_platform { my $self = shift; return $self->_option_value("platform"); }
+sub option_symlinks {
+ my $self = shift;
+ if (@_) { $self->_set_option_setting("symlinks", shift); }
+ return $self->_option_setting("symlinks");
+}
+sub option_docfiles {
+ my $self = shift;
+ if (@_) { $self->_set_option_setting("docfiles", shift); }
+ return $self->_option_setting("docfiles");
+}
+sub option_srcfiles {
+ my $self = shift;
+ if (@_) { $self->_set_option_setting("srcfiles", shift); }
+ return $self->_option_setting("srcfiles");
+}
+sub option_formats {
+ my $self = shift;
+ if (@_) { $self->_set_option_setting("formats", shift); }
+ return $self->_option_setting("formats");
+}
+sub option_letter {
+ my $self = shift;
+ if (@_) { $self->_set_option_value("letter", shift); }
+ return $self->_option_setting("letter");
+}
+sub option_location {
+ my $self = shift;
+ if (@_) { $self->_set_option_value("location", shift); }
+ return $self->_option_value("location");
+}
+sub option_sys_bin {
+ my $self = shift;
+ if (@_) { $self->_set_option_value("sys_bin", shift); }
+ return $self->_option_value("sys_bin");
+}
+sub option_sys_man {
+ my $self = shift;
+ if (@_) { $self->_set_option_value("sys_man", shift); }
+ return $self->_option_value("sys_man");
+}
+sub option_sys_info {
+ my $self = shift;
+ if (@_) { $self->_set_option_value("sys_info", shift); }
+ return $self->_option_value("sys_info");
+}
+sub option_platform {
+ my $self = shift;
+ if (@_) { $self->_set_option_value("platform", shift); }
+ return $self->_option_value("platform");
+}
=pod