ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/BuildSystem/Requirements.pm
(Generate patch)

Comparing COMP/SCRAM/src/BuildSystem/Requirements.pm (file contents):
Revision 1.1.2.4.2.8 by williamc, Thu Aug 24 09:49:51 2000 UTC vs.
Revision 1.1.2.4.2.9 by williamc, Mon Aug 28 06:54:52 2000 UTC

# Line 2 | Line 2
2   #
3   # Interface
4   # ---------
5 < # new(ActiveStore,url)     : new requirements doc
5 > # new(ActiveStore,url[,arch])     : new requirements doc
6   # setup(toolbox): set up the requirements into the specified toolbox object
7   # download(toolbox)    : download description files (into toolbox cache)
8   # tools()       : Return list of ALL requirements (ordered)
9   # selectedtools() : Return list of only those tools selected
10   # version(tool) : return the version of a given tool
11   # toolurl(tool)     : return the url of a given tool
12 < # htmlinfo()    : output requiremnts doc in html format
12 > # getreqforarch(arch) : Return a RequirementsObject corresponding to the
13 > #                       specified architecture
14 > # toolcomment(tool,version) : return the comment string for the specified tool
15 > # distributionurl(tool,version) : return the dist info url for the tool
16  
17   package BuildSystem::Requirements;
18   use ActiveDoc::ActiveDoc;
# Line 25 | Line 28 | sub new {
28          $self->{dbstore}=shift;
29          $self->{file}=shift;
30          $self->{cache}=$self->{dbstore}->cache();
31 +        if ( @_ ) {
32 +          $self->arch(shift);
33 +        }
34          $self->{mydocversion}="2.0";
35          $self->{Arch}=1;
36          push @{$self->{ARCHBLOCK}}, $self->{Arch};
# Line 32 | Line 38 | sub new {
38          return $self;
39   }
40  
41 + sub url {
42 +        my $self=shift;
43 +        if ( @_ ) {
44 +          $self->{file}=shift;
45 +        }
46 +        return $self->{file}
47 + }
48 +
49   sub setup {
50          my $self=shift;
51          my $toolbox=shift;
# Line 59 | Line 73 | sub selectedtools {
73          return @toollist;
74   }
75  
76 + sub toolcomment {
77 +        my $self=shift;
78 +        my $tool=shift;
79 +        my $version=shift;
80 +
81 +        return $self->{reqtext}{$tool}{$version};
82 + }
83 +
84 + sub distributionurl {
85 +        my $self=shift;
86 +        my $tool=shift;
87 +        my $version=shift;
88 +
89 +        return ( defined $self->{dist}{$tool}{$version})?
90 +                        $self->{dist}{$tool}{$version}:undef;
91 + }
92 +
93   sub version {
94          my $self=shift;
95          my $tool=shift;
# Line 96 | Line 127 | sub init {
127                                          \&select_start,$self,
128                                          "", $self,
129                                          "", $self);
130 +        $switch->addtag("ordering","distribution",
131 +                                        \&disttag,$self);
132          $switch->grouptag("Architecture","ordering");
133          $switch->addtag("ordering","require",
134                                          \&require_start,$self,
135 <                                        "", $self,
135 >                                        \&require_text, $self,
136                                          \&require_end, $self);
137  
138          $self->{reqcontext}=0;
# Line 112 | Line 145 | sub init {
145          #    defined
146          if ( defined $docversion ) {
147            if ( $docversion eq $self->{mydocversion} ) {
148 +            @{$self->{ArchStack}}=();
149              $self->{switch}->parse("ordering");
150            }
151          }
# Line 120 | Line 154 | sub init {
154          }
155   }
156  
157 < sub htmlinfo {
157 > sub arch {
158 >        my $self=shift;
159 >        if ( @_ ) {
160 >          $self->{arch}=shift
161 >        }
162 >        else {
163 >          if ( ! defined $self->{arch} ) {
164 >            $self->{arch}="";
165 >          }
166 >        }
167 >        return $self->{arch};
168 > }
169 >
170 > sub archlist {
171 >        my $self=shift;
172 >        return @{$self->{ArchStack}};
173 > }
174 >
175 > sub getreqforarch {
176          my $self=shift;
177 <        print "Hello\n";
177 >        my $arch=shift;
178 >
179 >        if ( ! defined $self->{reqsforarch}{$arch} ) {
180 >          $self->{reqsforarch}{$arch}=
181 >                BuildSystem::Requirements->new($self->{dbstore},$self->{file},
182 >                                                $arch);
183 >        }
184 >        return $self->{reqsforarch}{$arch};
185   }
186  
187 +
188   sub download {
189          my $self=shift;
190  
# Line 183 | Line 243 | sub require_start {
243          $self->{switch}->checktag( $name, $hashref, 'version');
244          $self->{switch}->checktag( $name, $hashref, 'name');
245          $self->{switch}->checktag( $name, $hashref, 'url');
246 +
247          if ( $self->{reqcontext} == 1 ) {
248            $self->{switch}->parseerror(
249                  "Open new $name conext without previous </$name>");
250          }
251          $self->{reqcontext}=1;
252 +        $$hashref{'name'}=~tr[A-Z][a-z];
253 +        push @{$self->{tools}}, $$hashref{'name'};
254 +        $self->{version}{$$hashref{'name'}}=$$hashref{'version'};
255 +        # -- make sure the full url is taken
256 +        my $urlobj=$self->{switch}->expandurl($$hashref{'url'});
257 +        $self->{url}{$$hashref{'name'}}=$urlobj->url();
258 +
259 +        # -- selection
260          if ( $self->{Arch} ) {
192          $$hashref{'name'}=~tr[A-Z][a-z];
193          push @{$self->{tools}}, $$hashref{'name'};
194          $self->{version}{$$hashref{'name'}}=$$hashref{'version'};
195          # -- make sure the full url is taken
196          my $urlobj=$self->{switch}->expandurl($$hashref{'url'});
197          $self->{url}{$$hashref{'name'}}=$urlobj->url();
261            if ( $self->_autoselect() ) {
262               $self->{selected}{$$hashref{'name'}}=1;
263            }
# Line 202 | Line 265 | sub require_start {
265               $self->{selected}{$$hashref{'name'}}=0;
266            }
267          }
268 +        $self->{creqtool}=$$hashref{'name'};
269 +        $self->{creqversion}=$$hashref{'version'};
270 +        $self->{reqtext}{$self->{creqtool}}{$self->{creqversion}}="";
271 + }
272 +
273 + sub require_text {
274 +        my $self=shift;
275 +        my $name=shift;
276 +        my $string=shift;
277 +
278 +        chomp $string;
279 +        $self->{reqtext}{$self->{creqtool}}{$self->{creqversion}}=
280 +                $self->{reqtext}{$self->{creqtool}}{$self->{creqversion}}.
281 +                $string;
282 +                
283   }
284  
285   sub require_end {
# Line 222 | Line 300 | sub select_start {
300          my $hashref=shift;
301  
302          $self->{switch}->checktag( $name, $hashref, 'name');
303 +        $$hashref{'name'}=~tr[A-Z][a-z];
304          if ( $self->{Arch} ) {
305 <           $$hashref{'name'}=~tr[A-Z][a-z];
305 >           $self->verbose("Selecting ".$$hashref{'name'});
306             $self->{selected}{$$hashref{'name'}}=1;
307          }
308   }
# Line 234 | Line 313 | sub deselect_start {
313          my $hashref=shift;
314  
315          $self->{switch}->checktag( $name, $hashref, 'name');
316 +        $$hashref{'name'}=~tr[A-Z][a-z];
317          if ( $self->{Arch} ) {
318 <           $$hashref{'name'}=~tr[A-Z][a-z];
318 >           $self->verbose("Deselecting ".$$hashref{'name'});
319             $self->{selected}{$$hashref{'name'}}=0;
320          }
321   }
# Line 246 | Line 326 | sub Arch_Start {
326          my $hashref=shift;
327  
328          $self->{switch}->checktag($name, $hashref,'name');
329 <        ( ($ENV{SCRAM_ARCH}=~/$$hashref{name}.*/) )? ($self->{Arch}=1)
329 >        
330 >        ( ($self->arch()=~/$$hashref{name}.*/) )? ($self->{Arch}=1)
331                                                  : ($self->{Arch}=0);
332 +        $self->verbose(($self->{Arch}?"OK":"skipping")." ".$$hashref{name});
333          push @{$self->{ARCHBLOCK}}, $self->{Arch};
334 +        push @{$self->{ArchStack}}, $$hashref{'name'};
335   }
336  
337   sub Arch_End {
# Line 258 | Line 341 | sub Arch_End {
341          pop @{$self->{ARCHBLOCK}};
342          $self->{Arch}=$self->{ARCHBLOCK}[$#{$self->{ARCHBLOCK}}];
343   }
344 +
345 + sub disttag {
346 +        my $self=shift;
347 +        my $name=shift;
348 +        my $hashref=shift;
349 +
350 +        if ( exists $$hashref{'url'} ) {
351 +          $self->{dist}{$self->{creqtool}}{$self->{creqversion}}=
352 +                                                        $$hashref{'url'};
353 +        }
354 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines