[GE users] To use SGE API for Perl/Python but for different arch

Mulley, Nikhil Nikhil.Mulley at deshaw.com
Wed Jan 16 22:19:10 GMT 2008


Hi,

I am using SGE-v6.0.11 on Solaris-10 with sol-amd64 binaries and perl is
built with 32bit. So, when I get to want to compile/use modules like
DRMAAc from cpan.org, they all turn out to be failures because of
incompatible ELFCLASS in the libraries (cc is also 32-bit). So I
wondered how could I make perl modules DRMAAc compiled for the
incompatible SGE arch sol-amd64.
I could not go for the alternative of recompiling perl with 64-bit
support all over again, but have an also installation of SGE sol-x86
also installed aside by sol-amd64 residence. 

I figured out that this architecture is much of reference from
$SGE_ROOT/util/arch. All the time arch ends up reporting sol-amd64
because of 'isainfo -b' returns to be '64'. I thought I could alleviate
this to some extent without changing the current behaviour and
infrastructure, if arch could somehow report the 32-bit locations if an
option is provided, which I could later make the tweaks of arch usage in
the Makefiles of Schedule::DRMAAc build and get it compiled against the
32-bit installation.

So, I ended up with this tweak to $SGE_ROOT/util/arch; and after
modifying Makefile.PL of the Schedule::DRMAAc to use 'arch -s' , I was
successully able to build and install the module for my 32-bit perl.
(and Voila!, I could also make it compile for my 32-bit python
installation after tweaking the setup.py ofcourse)

Please let me know if this could be filed as an RFE and can make it to
the official release?

Thanks,
Nikhil


But, the question still stands as, can I use the Schedule::DRMAAc perl
modules to run on my machine with 32-bit perl....

--- /usr/local/sge/util/arch    2007-06-26 13:23:37.000000000 +0530
+++ ./arch      2008-01-17 03:05:51.294532000 +0530
@@ -38,6 +38,7 @@
 #  PVM 3.x distribution, 22 Jul 1991 Robert Manchek manchek at CS.UTK.EDU.
 #
 #  call:   arch       (print SGEEE architecture string)
+#          arch -s   (print SGEEE architecture string on/for a 32-bit
platform)
 #          arch -m    (print default MANPATH of system)
 #          arch -mt   (print either "man" or "catman")
 #          arch -lib  (print name of variable to extend shared library
path)
@@ -249,7 +250,7 @@
       ARCH=sol-x86
       case $osrelease in
       5.[7891]*)
-         if [ `isainfo -b` = 64 ]; then
+         if [ `isainfo -b` = 64 -a "$1" != "-s" ]; then
             ARCH=sol-amd64
          else
             ARCH=sol-x86
@@ -259,7 +260,7 @@
    *)
       case $osrelease in
       5.[7891]*)
-         if [ `isainfo -b` = 64 ]; then
+         if [ `isainfo -b` = 64 -a "$1" != "-s" ]; then
             ARCH=sol-sparc64
          else
             ARCH=sol-sparc
@@ -308,7 +309,7 @@
    ;;
 esac

-if [ "$1" = "-m" -o "$1" = "-mt" -o "$1" = "-lib" ]; then
+if [ "$1" = "-m" -o "$1" = "-mt" -o "$1" = "-lib" -o "$1" = "-s" ];
then
    MANTYPE=man
    SHARED_LIBRARY_PATH="LD_LIBRARY_PATH"
    DEFAULTMANPATH=/usr/man
@@ -343,8 +344,11 @@
       ;;
    sol-*)
       DEFAULTMANPATH=/usr/share/man
-      # if bit-specific variable already set, use this variable!
-      SHARED_LIBRARY_PATH_BITS="LD_LIBRARY_PATH_`isainfo -b`"
+      SHARED_LIBRARY_PATH_BITS="LD_LIBRARY_PATH"
+      if [ "$1" != "-s" ] ; then
+          # if bit-specific variable already set, use this variable!
+          SHARED_LIBRARY_PATH_BITS="LD_LIBRARY_PATH_`isainfo -b`"
+      fi
       if eval [ x\$$SHARED_LIBRARY_PATH_BITS != x ]; then
              SHARED_LIBRARY_PATH=$SHARED_LIBRARY_PATH_BITS
       fi

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe at gridengine.sunsource.net
For additional commands, e-mail: users-help at gridengine.sunsource.net




More information about the gridengine-users mailing list