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); |
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', |
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}; |
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, |
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 |
|
|
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=@_; |
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 /:/; |