ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/Utilities/setarchitecture.pm
Revision: 1.7
Committed: Fri Jul 12 13:43:26 2002 UTC (22 years, 10 months ago) by sashby
Content type: text/plain
Branch: MAIN
Changes since 1.6: +66 -25 lines
Log Message:
Improved CVS interface to allow local CVS repository to be used. Also started tests of new arch checking based on libc version.

File Contents

# Content
1 ###############################################################
2 # setarchitecture #
3 ###############################################################
4 # modified : Fri Jul 12 13:55:16 2002 / SFA #
5 # params : none #
6 # : #
7 # : #
8 # : #
9 # function : Set the architecture variable. Use simple uname #
10 # : query for Sun: for Linux, alos try libc checking.#
11 # : #
12 # : #
13 ###############################################################
14 package setarchitecture;
15 require 5.001;
16 require Exporter;
17 @ISA = qw(Exporter);
18 @EXPORT = qw(setarch);
19
20 # Currently, this is only used for UNIX systems. Not entirely sure what
21 # happens on Windows (most people tend to use CYGWIN). Eventually, this
22 # will need to be improved for non-UNIX architectures:
23 sub setarch
24 {
25 my $uname=`uname -a`;
26 my ($OSname, $hostname, $OSversion, @rest) = split / /, $uname;
27
28 # Retain only the first two version digits:
29 if ( $OSname =~ SunOS )
30 {
31 $OSversion =~ s/^(.\..)\..*/\1/;
32 }
33
34 if ( $OSname =~ Linux )
35 {
36 # Firstly we check for the kernel version.
37 $OSversion =~ s/^(.\..)\..*/\1/;
38 # Now, we also check for the libc version to confirm (or otherwise)
39 # the choice determined by the previous step:
40 # my $lddcmd="ldd /bin/ls";
41 # my ($match) = (`$lddcmd|grep libc` =~ /\s+libc\.so.*\s\=.*\s(.*)\s.*/);
42 # Open the ldd command as a pipe:
43 # my $pid=open(LDD,"$lddcmd 2>&1 |");
44 # exit(1) unless (defined($pid));
45
46 # Loop over lines of output:
47 # while (<LDD>)
48 # {
49 # chomp $_;
50 # if (my ($match) = ($_ =~ /\s+libc\.so.*\s.*\s(.*)\s.*/))
51 # {
52 # print "> LDD Match: ",$match,"\n";
53 # last;
54 # }
55 # }
56 #
57 # Grab something that looks like "libc.*":
58
59 # Check if this libc thing is a soft link (it should be):
60
61 # Find out what the thingy is that the link points to:
62
63 #
64 }
65
66 # Set arch flag to [OS type]__[OSversion]:
67 if ( ! defined $ENV{SCRAM_ARCH} )
68 {
69 $ENV{SCRAM_ARCH}="${OSname}__${OSversion}";
70 }
71
72 return (0);
73 }