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

Comparing COMP/SCRAM/src/Utilities/setarchitecture.pm (file contents):
Revision 1.3 by williamc, Thu Mar 18 10:32:04 1999 UTC vs.
Revision 1.7 by sashby, Fri Jul 12 13:43:26 2002 UTC

# Line 1 | Line 1
1 < # simply set the architecture variable based on uname
2 < #
3 <
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 < # unix systems
21 < sub setarch {
22 < $uname=`uname -a`;
23 < ($OSname, $hostname, $OSversion, @rest) = split / /, $uname;
24 < #
25 < # SunOS -
26 < #
27 < if ( $OSname=~SunOS ) {
28 <        $OSversion=~s/^(.\..)\.*/\1/; #Retain only the first two version digits
29 < }
30 < # simply set to OS type and version
31 < $ENV{SCRAM_ARCH}="${OSname}__${OSversion}";
32 < print "Setting Architecture to $ENV{SCRAM_ARCH}\n";
33 < }
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 >   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines