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.3 by williamc, Tue Apr 25 14:07:39 2000 UTC vs.
Revision 1.1.2.4.2.2 by williamc, Thu Aug 10 15:39:19 2000 UTC

# Line 2 | Line 2
2   #
3   # Interface
4   # ---------
5 < # new(file)     : new requirements doc
5 > # new(file,URLcache)     : 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 requirements (ordered)
# Line 10 | Line 10
10   # url(tool)     : return the url of a given tool
11  
12   package BuildSystem::Requirements;
13 < use ActiveDoc::SimpleDoc;
13 > use ActiveDoc::SimpleURLDoc;
14   use Utilities::Verbose;
15  
16   require 5.004;
# Line 21 | Line 21 | sub new {
21          my $self={};
22          bless $self, $class;
23          $self->{file}=shift;
24 +        $self->{cache}=shift;
25 +        $self->{mydocversion}="2.0";
26          $self->{Arch}=1;
27          push @{$self->{ARCHBLOCK}}, $self->{Arch};
28          $self->init($self->{file});
# Line 33 | Line 35 | sub setup {
35  
36          my $tool;
37          foreach $tool ( $self->tools() ) {
38 +          $self->verbose("Setting Up Tool $tool");
39            $toolbox->toolsetup($tool, $self->version($tool), $self->url($tool));
40          }
41   }
# Line 58 | Line 61 | sub init {
61          my $self=shift;
62          my $file=shift;
63  
64 <        my $switch=ActiveDoc::SimpleDoc->new();
64 >        my $switch=ActiveDoc::SimpleURLDoc->new($self->{cache});
65          $switch->filetoparse($file);
66 +        $switch->newparse("doc");
67 +        $switch->addtag("doc","Doc", \&Doc_start,$self,"",$self,"",$self);
68          $switch->newparse("ordering");
69 +        $switch->addbasetags("ordering");
70          $switch->addtag("ordering","Architecture",
71                                          \&Arch_Start,$self,
72                                          "", $self,
# Line 70 | Line 76 | sub init {
76                                          \&require_start,$self,
77                                          "", $self,
78                                          "", $self);
79 +        # -- backwards compatiblity - TODO remove with backwards comp in ToolBox
80 +        $switch->newparse("oldordering");
81 +        $switch->addtag("oldordering","Architecture",
82 +                                        \&Arch_Start,$self,
83 +                                        "", $self,
84 +                                        \&Arch_End, $self);
85 +        $switch->grouptag("Architecture","oldordering");
86 +        $switch->addtag("oldordering","require",
87 +                                        \&oldrequire_start,$self,
88 +                                        "", $self,
89 +                                        "", $self);
90 +
91          $self->{switch}=$switch;
92          @{$self->{tools}}=();
93 <        $self->{switch}->parse("ordering");
93 >        
94 >        $self->{switch}->parse("doc");
95 >        # -- for backwards compatability only parse if we have a docversion
96 >        #    defined
97 >        if ( defined $self->{docversion} ) {
98 >          if ( $self->{docversion} eq $self->{mydocversion} ) {
99 >            $self->{switch}->parse("ordering");
100 >          }
101 >          elsif ( $self->{docversion} eq "1.0" ) {
102 >            print "Warning : Version 1.0 Requirement docs deprecated\n";
103 >            $self->{switch}->parse("oldordering");
104 >          }
105 >        }
106 >        else {
107 >          #print "wrong doc version - not parsing\n";
108 >        }
109   }
110  
111   sub download {
112          my $self=shift;
80        my $toolbox=shift;
113  
114          my $tool;
115          foreach $tool ( $self->tools() ) {
116            $self->verbose("Downloading ".$self->url($tool));
117 <          $toolbox->_download($self->url($tool));
117 >          # get into the cache
118 >          $self->{switch}->urlget($self->url($tool));
119          }
120   }
121  
122   # ---- Tag routines
123 +
124 + sub Doc_start {
125 +        my $self=shift;
126 +        my $name=shift;
127 +        my $hashref=shift;
128 +
129 +        $self->{switch}->checktag( $name, $hashref, 'type');
130 +        $self->{switch}->checktag( $name, $hashref, 'version');
131 +
132 +        $self->{docversion}=$$hashref{'version'};
133 + }
134 +
135   sub require_start {
136          my $self=shift;
137          my $name=shift;
# Line 94 | Line 139 | sub require_start {
139          
140          $self->{switch}->checktag( $name, $hashref, 'version');
141          $self->{switch}->checktag( $name, $hashref, 'name');
142 <        $self->{switch}->checktag( $name, $hashref, 'file');
142 >        $self->{switch}->checktag( $name, $hashref, 'url');
143          if ( $self->{Arch} ) {
144            push @{$self->{tools}}, $$hashref{'name'};
145            $self->{version}{$$hashref{'name'}}=$$hashref{'version'};
146 <          $self->{url}{$$hashref{'name'}}=$$hashref{'file'};
146 >          # -- make sure the full url is taken
147 >          my $urlobj=$self->{switch}->expandurl($$hashref{'url'});
148 >          $self->{url}{$$hashref{'name'}}=$urlobj->url();
149          }
150   }
151  
# Line 121 | Line 168 | sub Arch_End {
168          $self->{Arch}=$self->{ARCHBLOCK}[$#{$self->{ARCHBLOCK}}];
169   }
170  
171 + sub oldrequire_start {
172 +        my $self=shift;
173 +        my $name=shift;
174 +        my $hashref=shift;
175 +
176 +        $self->{switch}->checktag( $name, $hashref, 'version');
177 +        $self->{switch}->checktag( $name, $hashref, 'name');
178 +        $self->{switch}->checktag( $name, $hashref, 'file');
179 +        if ( $self->{Arch} ) {
180 +          push @{$self->{tools}}, $$hashref{'name'};
181 +          $self->{version}{$$hashref{'name'}}=$$hashref{'version'};
182 +          $self->{url}{$$hashref{'name'}}=$$hashref{'file'};
183 +        }
184 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines