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

Comparing COMP/SCRAM/src/clientfile.pm (file contents):
Revision 1.1 by williamc, Mon Mar 1 10:37:54 1999 UTC vs.
Revision 1.7 by williamc, Wed Mar 24 15:52:42 1999 UTC

# Line 1 | Line 1
1 #!/usr/local/bin/perl5
2 #
1   # Make a client specific file for external products
2   #
3   #
4  
5   package clientfile;
6 + require 5.001;
7   require Exporter;
8   @ISA = qw(Exporter);
9   @EXPORT = qw(BuildClientFile);
# Line 13 | Line 12 | $scramdir="$ENV{INTwork}/SCRAM";
12   $Arch=1;
13   push @ARCHBLOCK, $Arch;
14  
15 < sub BuildClientFile($projectfile) {
15 > sub BuildClientFile {
16          my $projectfile=shift;
18        my $archdir=".SCRAM/$ENV{SCRAM_ARCH}";
19        my $clientfile="$archdir/clientsettings";
20        use AddDir;
17          use ToolBox;
18  
19 <        adddir($archdir);
24 <        initialiseclient($clientfile) or return; # get out if it already exists
19 >        openclientfile('new') and return;
20          $toolbox=ToolBox->new();
26        open ( CLIENT, ">$ENV{LOCALTOP}/$clientfile" ) ||
27                die "clientfile: Cannot open clientsettings file "
28                        ."$clientfile $!\n";
29        open (INSTALLLOG, ">$archdir/installation_log")
30                        || die "clientfile: Cannot open log file $!\n";
21          print CLIENT "# Machine Generated File - do not edit\n";
22          _ParseProjectReqs($projectfile);
23 +        &closeclientfile;
24 + }
25 +
26 + sub closeclienfile {
27          close INSTALLLOG;
28          close CLIENT;
29 +        close CLIENT2;
30 + }
31 +
32 + sub openclientfile {
33 +        my $action=shift;
34 +        my $archdir=".SCRAM/$ENV{SCRAM_ARCH}";
35 +        my $clientfile="$archdir/clientsettings";
36 +        use Utilities::AddDir;
37 +
38 +        AddDir::adddir($archdir);
39 +        if ( $action=~/add/i ) {
40 +          $actionop='>>';
41 +          initialiseclient($clientfile);
42 +        }
43 +        else { #default is new
44 +          $actionop='>';
45 +          initialiseclient($clientfile) or return 1; # get out if it already exists
46 +        }
47 +        open ( CLIENT, "$actionop$ENV{LOCALTOP}/$clientfile" ) ||
48 +                die "clientfile: Cannot open clientsettings file "
49 +                        ."$clientfile $!\n";
50 +        open ( CLIENT2, "$actionop$ENV{LOCALTOP}/".$clientfile."_reqs" ) ||
51 +                die "clientfile: Cannot open clientsettings file "
52 +                        ."$clientfile $!\n";
53 +        open (INSTALLLOG, "$actionop$archdir/installation_log")
54 +                        || die "clientfile: Cannot open log file $!\n";
55 +        return 0;
56   }
57  
58 < sub _ParseProjectReqs($reqfile) {
58 > sub _ParseProjectReqs {
59          my $reqfile=shift;
60 <        use Switcher;
60 >        use Utilities::Switcher;
61  
62          $taglist={
63                  'require' => 'none',
# Line 71 | Line 92 | sub Require_start {
92   #
93   #---------------------------------------------------------------------------
94  
95 < sub _gettool($toolurl) {
95 > sub _gettool {
96   # set the $toolfile variable
97          my $toolurl=shift;
98          my @toolpath= split /:/, $ENV{SCRAM_BootStrapFiles};
# Line 118 | Line 139 | sub _tool {
139                  'System' => \&system_body,
140                  'Splice' => 'none',
141                  'Splice_starttag' => \&splice_start,
121                'INCLUDE' => 'none' ,
122                'INCLUDE_StartTag' => \&_dirchecktest ,
123                'LIBDIR_StartTag' => \&_dirchecktest ,
124                'LIBDIR' => 'none',
142                  'Client' => 'none',
143                  'LIB' => 'none',
144                  'LIB_StartTag' => \&lib_start,
# Line 130 | Line 147 | sub _tool {
147                  'Architecture' => 'none',
148                  'Function' => 'none',
149                  'Function_StartTag' => \&Function_start,
150 <                'Function_EndTag' => \&Function_end
150 >                'Function_EndTag' => \&Function_end,
151 >                'External' => 'none',
152 >                'External_StartTag' => \&External_client,
153            };
154                 # 'INCLUDE_StartTag' => \&INCLUDE_start ,
155  
156 <        use Switcher;
156 >        use Utilities::Switcher;
157          $toolswitch=Switcher->new($toollist,$toolfile);
158          $toolswitch->parse();
159  
# Line 146 | Line 165 | sub _tool {
165   # multiple defaults can be specified > colon seperated
166   #
167  
168 + sub External_client {
169 +        my $name=shift;
170 +        my @vars=@_;
171 +        my $hashref;
172 +
173 +        $hashref=$toolswitch->SetupValueHash( \@vars );
174 +        $toolswitch->checkparam( $hashref, $name, 'ref' );
175 +        print CLIENT2 <<ENDTEXT;
176 + ifdef $toolname
177 + $$hashref{ref}=true
178 + endif
179 + ENDTEXT
180 + }
181 +
182   sub Arch_Start {
183          my $name=shift;
184          my @vars=@_;
# Line 557 | Line 590 | sub initialiseclient {
590          if ( ! (-f "$ENV{LOCALTOP}/$clientfile" ) ) {
591            copy ( "$ENV{RELEASETOP}/$clientfile","$ENV{LOCALTOP}/$clientfile" );
592          }
593 +        if ( ! (-f "$ENV{LOCALTOP}/".$clientfile."_reqs" ) ) {
594 +          copy ( "$ENV{RELEASETOP}/".$clientfile."_reqs","$ENV{LOCALTOP}/".$clientfile."_reqs" );
595 +        }
596          # now read it in to memory for future reference
597          open (CLIENTFILEIN, "<$ENV{LOCALTOP}/$clientfile") or return 1;
598            ($name, $version, $var, @rest ) = split /:/;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines