1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
|
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)) {
|