Hi,
I've just tried compiling GT 5.0.0 on AIX - and succeeded.
But, there were two minor fixes I had to do to the source code. Two C
source files are using the symbolic names AF_LOCAL and PF_LOCAL, which
are OK on Linux as aliases to AF_UNIX / PF_UNIX, but AIX only defines
the latter ones.
Could someone please apply these changes to the main source tree?
---
source-trees/xio/drivers/popen/source/globus_xio_popen_driver.c.orig
2010-01-07 12:46:52.000000000 +1300
+++ source-trees/xio/drivers/popen/source/globus_xio_popen_driver.c
2010-03-18 16:18:42.888951980 +1300
@@ -557,5 +557,5 @@
# if defined(USE_SOCKET_PAIR)
{
- rc = socketpair(AF_LOCAL, SOCK_STREAM, 0, s_fds);
+ rc = socketpair(AF_UNIX, SOCK_STREAM, 0, s_fds);
if(rc != 0)
{
--- source-trees/gram/jobmanager/source/startup_socket.c.orig 2009-12-17
12:25:48.000000000 +1300
+++ source-trees/gram/jobmanager/source/startup_socket.c 2010-03-18
22:13:17.305365695 +1300
@@ -311,8 +311,8 @@
manager->socket_path);
memset(&addr, 0, sizeof(struct sockaddr_un));
- addr.sun_family = PF_LOCAL;
+ addr.sun_family = PF_UNIX;
strncpy(addr.sun_path, manager->socket_path, sizeof(addr.sun_path)-1);
- sock = socket(PF_LOCAL, SOCK_DGRAM, 0);
+ sock = socket(PF_UNIX, SOCK_DGRAM, 0);
if (sock < 0)
{
@@ -668,7 +668,7 @@
/* create socket */
memset(&addr, 0, sizeof(struct sockaddr_un));
- addr.sun_family = PF_LOCAL;
+ addr.sun_family = PF_UNIX;
strncpy(addr.sun_path, sockpath, sizeof(addr.sun_path)-1);
- sock = socket(PF_LOCAL, SOCK_DGRAM, 0);
+ sock = socket(PF_UNIX, SOCK_DGRAM, 0);
if (sock < 0)
{
@@ -753,5 +753,5 @@
}
/* create acksocks */
- rc = socketpair(PF_LOCAL, SOCK_STREAM, 0, acksock);
+ rc = socketpair(PF_UNIX, SOCK_STREAM, 0, acksock);
if (rc < 0)
{
I'm also attaching the patches for the case they got corrupted in the
email body.
Otherwise, the install was straightforward. I found useful the notes on
OpenSSL at
http://dev.globus.org/wiki/C_Security:_Vendor_OpenSSL#Known_Issues_and_Workarounds
- I had to set my environment accordingly to build the parts of Globus
linking against OpenSSL.
I also found one glitch with running binaries linked against openssl: I
had to manually add the openssl library directory, /opt/freeware/lib,
into my LIBPATH variable: otherwise, binaries like myproxy-logon were
failing with:
> $ myproxy-logon
> exec(): 0509-036 Cannot load program myproxy-logon because of the following
> errors:
> 0509-150 Dependent module libcrypto.a(libcrypto.so.0.9.7) could not
> be loaded.
> 0509-022 Cannot load module libcrypto.a(libcrypto.so.0.9.7).
> 0509-026 System error: A file or directory in the path name does not
> exist.
I don't know if it's a change in the linking process that does not store
the recommended path in shared library dependencies anymore. This works
all fine with globus 4.0.6 (pre-built AIX binary) without having to add
/opt/freeware/lib to LIBPATH.
If anyone's interested, the notes from my install are at
http://technical.bestgrid.org/index.php/Installing_Globus_5.0.0_on_AIX
Apart from these minor glitches - Good job! I'm impressed the build on
AIX was that easy :-)
Cheers,
Vladimir
Cheers,
Vlad
--
Vladimir Mencl, Ph.D.
E-Research Services and Systems Consultant
BlueFern Supercomputing Services
University of Canterbury
Private Bag 4800
Christchurch 8140
New Zealand
http://www.bluefern.canterbury.ac.nz
mailto:[email protected]
Phone: +64 3 364 3012
Mobile: +64 21 997 352
Fax: +64 3 364 2332
--- source-trees/xio/drivers/popen/source/globus_xio_popen_driver.c.orig 2010-01-07 12:46:52.000000000 +1300
+++ source-trees/xio/drivers/popen/source/globus_xio_popen_driver.c 2010-03-18 16:18:42.888951980 +1300
@@ -557,5 +557,5 @@
# if defined(USE_SOCKET_PAIR)
{
- rc = socketpair(AF_LOCAL, SOCK_STREAM, 0, s_fds);
+ rc = socketpair(AF_UNIX, SOCK_STREAM, 0, s_fds);
if(rc != 0)
{
--- source-trees/gram/jobmanager/source/startup_socket.c.orig 2009-12-17 12:25:48.000000000 +1300
+++ source-trees/gram/jobmanager/source/startup_socket.c 2010-03-18 22:13:17.305365695 +1300
@@ -311,8 +311,8 @@
manager->socket_path);
memset(&addr, 0, sizeof(struct sockaddr_un));
- addr.sun_family = PF_LOCAL;
+ addr.sun_family = PF_UNIX;
strncpy(addr.sun_path, manager->socket_path, sizeof(addr.sun_path)-1);
- sock = socket(PF_LOCAL, SOCK_DGRAM, 0);
+ sock = socket(PF_UNIX, SOCK_DGRAM, 0);
if (sock < 0)
{
@@ -668,7 +668,7 @@
/* create socket */
memset(&addr, 0, sizeof(struct sockaddr_un));
- addr.sun_family = PF_LOCAL;
+ addr.sun_family = PF_UNIX;
strncpy(addr.sun_path, sockpath, sizeof(addr.sun_path)-1);
- sock = socket(PF_LOCAL, SOCK_DGRAM, 0);
+ sock = socket(PF_UNIX, SOCK_DGRAM, 0);
if (sock < 0)
{
@@ -753,5 +753,5 @@
}
/* create acksocks */
- rc = socketpair(PF_LOCAL, SOCK_STREAM, 0, acksock);
+ rc = socketpair(PF_UNIX, SOCK_STREAM, 0, acksock);
if (rc < 0)
{