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

Comparing COMP/SCRAM/src/Utilities/Architecture.pm (file contents):
Revision 1.2 by sashby, Fri Dec 10 13:41:43 2004 UTC vs.
Revision 1.4 by sashby, Fri Aug 5 16:44:26 2005 UTC

# Line 10 | Line 10
10   #
11   #--------------------------------------------------------------------
12   package Architecture;
13 +
14 + =head1 NAME
15 +  
16 + Architecture - Utilities to determine the architecture name.
17 +
18 + =head1 SYNOPSIS
19 +
20 +   if (! defined $self->{SCRAM_ARCH})
21 +      {
22 +      my $arch = Architecture->new();
23 +      $self->architecture($a->arch());
24 +      $self->system_architecture($a->system_arch_stem());
25 +      $ENV{SCRAM_ARCH} = $self->architecture();
26 +      }
27 +
28 + =head1 DESCRIPTION
29 +
30 + A mechanism to extract the current system architecture. The full arch
31 + and system (short) arch strings can be returned in the application using
32 + the methods in this package.
33 +
34 + =head1 METHODS
35 +
36 + =over
37 +  
38 + =cut
39 +  
40   require 5.004;
41   use Exporter;
42  
43   @ISA=qw(Exporter);
44   @EXPORT_OK=qw( );
45  
46 + =item   C<new()>
47 +
48 + Constructor for Architecture objects.
49 +
50 + =cut
51 +
52   sub new()
53     {
54     ###############################################################
# Line 38 | Line 71 | sub new()
71     return $self;
72     }
73  
74 + =item   C<arch()>
75 +
76 + Method to set or return the architecture name.
77 +
78 + =cut
79 +
80   sub arch()
81     {
82     my $self=shift;
# Line 46 | Line 85 | sub arch()
85        : $self->{arch};
86     }
87  
88 < # A subroutine to determine the architecture. This
89 < # is done by parsing the architecture map contained as
90 < # data inside SCRAM_SITE.pm and looking for an appropriate
91 < # match for our platform:
88 > =item   C<system_arch_stem()>
89 >
90 > Method to set or return the system architecture name stem. The
91 > architecture stem is the full architecture without any compiler dependence.
92 > For example, the architecture B<slc3_ia32_gcc323> has a system architecture
93 > name stem of B<slc3_ia32>.
94 >
95 > =cut
96 >
97 > sub system_arch_stem()
98 >   {
99 >   my $self=shift;
100 >  
101 >   @_ ? $self->{archstem} = shift
102 >      : $self->{archstem};
103 >   }
104 >
105 > =item   C<_initarch()>
106 >  
107 > A subroutine to determine the architecture. This
108 > is done by parsing the architecture map contained as
109 > data inside B<SCRAM_SITE.pm> and looking for an appropriate
110 > match for our platform.
111 >
112 > =cut
113 >  
114   sub _initarch()
115     {
116     my $self=shift;
# Line 57 | Line 118 | sub _initarch()
118     return $self;
119     }
120  
121 < # Parse the map data:
121 > =item   C<parse_architecture_map()>
122 >
123 > Read the architecture map file defined in the site package B<SCRAM_SITE.pm>.
124 >  
125 > =cut
126 >  
127   sub parse_architecture_map()
128     {
129     my $self=shift;
# Line 84 | Line 150 | sub parse_architecture_map()
150              print "\n";
151              exit(1);
152              }
153 +        
154           # Store the match (only the *first* match in the case
155           # of multiple matches):
156           $self->arch($archstring);
157 +
158 +         # Also take the arch stem from the arch string. E.g. for a string
159 +         # "slc3_ia32_xxx", keep the "slc3_ia32" part:
160 +         if (my ($sysname,$cpuarch) = ($archstring =~ /(.*?)\_(.*?)\_.*?$/))
161 +            {
162 +            my $stem = $sysname."_".$cpuarch;
163 +            $self->system_arch_stem($stem);
164 +            }
165 +         else
166 +            {
167 +            # Just set the stem to be the same as the main arch string:
168 +            $self->system_arch_stem($archstring);
169 +            }
170           }
171        else
172           {
# Line 96 | Line 176 | sub parse_architecture_map()
176     }
177  
178   1;
179 +
180 + __END__
181 +
182 + =back
183 +
184 + =head1 AUTHOR/MAINTAINER
185 +
186 + Shaun Ashby L<mailTo:scram-developers@cern.ch>
187 +
188 + =cut

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines