DPM-on-Solaris

From GridPP Wiki
Jump to: navigation, search

Update

The LCG-DM component described in this article is v1.5.5. As of this writing, 1.6.11 is available and many changes have been made which will make building for othe platforms simpler. This especially applies to the problems encountered with gsoap in the SRM code. All the current Makefiles (Imakefiles) are written in such way that the LCG-DM code compiles with the native compiler on each platform (including AIX, HP-UX, MacOSX and even Windows). Globus does release the code for Solaris, so the main problem is VOMS (from VDT). If you only want a DPM disk server running on Solaris, then it is simpler, since you do not have to port SOAP, MySQL, Python and SWIG.

Building Disk Pool Manager (DPM) on Solaris

This is a description of an attempt to build DPM on Solaris. Detailed notes are needed for this activity is very non-trivial; in practice, the latest version of DPM could not be used (because VOMS, a dependency added to later versions of DPM, was found to be essentially un-buildable on Solaris); the build system is antiquated (based on Imake) and implemented sloppily; and magic names have been used in some of the source code (eg srmv1,srmv2) which do not correspond to the names generated by gSOAP (at least on this particular host) requiring search-and-replace changes.

Not for the faint of heart.

Note: This is a work-in-progress. Compilation of DPM on Solaris has yet to be achieved..

Pre-requisites


Building

The build is taking place on a fairly generic Solaris 10 installation. In this example, the pre-requisites and DPM itself are being built by an unpriviledged user and installed in $HOME/stow. GNU Stow is being used to generate symlinks from ~/bin, ~/lib, ~/include and the like to the different compiled binary trees.

The shell being used is tcsh. Adapt commandline snippets for bash or other shells as necessary.

GNU Tar

  • Unpack:
% cd ~/src
% bzcat ../tar/tar-1.15.1.tar.bz2 | tar xf - 
% cd tar-1.15.1/
  • Configure:
% ./configure --prefix=$HOME/stow/tar-1.15.1
  • Build:
% make -j 16 | tee build.log
  • Install:
% make install
% cd ~/stow
% stow tar-1.15.1/
% rehash

GNU Make

  • Unpack:
% cd ~/src
% tar -xjvf ../tar/make-3.81.tar.bz2
% cd make-3.81/
  • Configure:
% ./configure --prefix=$HOME/stow/make-3.81
  • Build:
% make -j 16 | tee build.log
  • Install:
% make install
% cd ~/stow
% stow make-3.81/
% rehash


GNU Texinfo

  • Unpack:
% cd ~/src
% tar -xjvf ../tar/texinfo-4.8.tar.bz2
% cd texinfo-4.8/
  • Configure:
% ./configure --prefix=$HOME/stow/texinfo-4.8
  • Build:
% make -j 16 | tee build.log
  • Install:
% make install
% cd ~/stow
% stow texinfo-4.8/
% rehash

GNU Binutils

  • Unpack:
% cd ~/src
% tar -xjvf ~/tar/binutils-2.16.tar.bz2
% cd binutils-2.16/
  • Configure:
% ./configure --prefix=$HOME/stow/binutils-2.16
  • Build:
% make -j16 | tee build.log
  • Install:
% make install
% cd ~/stow
% rm binutils-2.16/lib/libiberty.a binutils-2.16/info/dir
% stow binutils-2.16/
% rehash

GCC

  • Unpack:
% cd ~/src
% tar -xjvf ../tar/gcc-4.1.0.tar.bz2
% cd gcc-4.1.0/
  • Configure:
% mkdir build
% cd build
% bash
% export SHELL=/usr/bin/bash
% export CONFIG_SHELL=/bin/ksh
% `pwd`/../configure --prefix=$HOME/stow/gcc-4.1.0 --with-gnu-as --with-as=$HOME/bin/as --with-gnu-ld --with-ld=$HOME/bin/ld | tee configure.log
  • Build:
% make -j 16 bootstrap | tee build.log
  • Install:
% make install
% cd ~/stow
% stow gcc-4.1.0/
% exit
% rehash

OpenSSL

  • Unpack:
% cd ~/src
% tar -xzvf ../tar/openssl-0.9.8b.tar.gz
% cd openssl-0.9.8b/
  • Configure:
% ./Configure solaris-sparcv9-gcc enable-rc5 enable-mdc2 shared threads zlib-dynamic \
        enable-gmp --prefix=$HOME/stow/openssl-0.9.8b_with-shared
  • Build:
% make depend
% make | tee build.log
  • Validate:
% make test | tee test.log
  • Install:
% make install
% cd ~/stow
% stow openssl-0.9.8b_with-shared/
% rehash

MySQL

  • Unpack:
% cd ~/src
% tar -xzvf ../tar/mysql-5.0.21.tar.gz
% cd mysql-5.0.21/
  • Configure:
% setenv CFLAGS "-O3" 
% setenv CXX gcc 
% setenv CXXFLAGS "-O3 -felide-constructors -fno-exceptions -fno-rtti" 
% ./configure --enable-assembler \
            --with-mysqld-ldflags=-all-static \
            --enable-thread-safe-client \
            --with-big-tables \
            --prefix=$HOME/stow/mysql-5.0.21
  • Manually override HAVE_ISINF in config.h; set to undef. (See: [4])
  • Build:
% make -j 16 | tee build.log
  • Install:
% make install
% cd ~/stow
% rm -Rf mysql-5.0.21/mysql-test/ mysql-5.0.21/sql-bench/
% stow mysql-5.0.21/
% rehash

Python

  • Notes:
    • Needed to comment out exts.append( Extension('sunaudiodev', ['sunaudiodev.c']) ) block in setup.py before building.
  • Unpack:
% cd ~/src
% tar -xzvf ../tar/Python-2.4.3.tgz
% cd Python-2.4.3/
  • Configure:
% ./configure --prefix=$HOME/stow/python-2.4.3
  • Build:
% make -j 16 | tee build.log
  • Install:
% make install
% cd ~/stow
% stow python-2.4.3
% rehash

SWIG

  • Unpack:
% cd ~/src
% tar -xzvf ../tar/swig-1.3.29.tar.gz
% cd swig-1.3.29/
  • Configure:
% ./configure --prefix=$HOME/stow/swig-1.3.29
  • Build:
% make -j16 | tee build.log
  • Install:
% make install
% cd ~/stow
% stow swig-1.3.29
% rehash

GPT

  • Unpack:
% cd ~/src
% tar -xzvf ../tar/gpt-3.0.1.tar.gz
% cd gpt-3.0.1/
  • Configure:
% setenv GPT_LOCATION $HOME/stow/gpt-3.0.1
  • Build:
% ./build_gpt | tee build.log
  • Install:
% cd ~/stow
% stow gpt-3.0.1
% rehash

Globus

  • Notes:
    • Build failed when using Solaris ld. Fixed when using GNU ld from GNU Binutils.
    • Ensure that CONFIG_SHELL has been set to something that will use the desired path, eg /usr/bin/bash with appropriate ~/.bash* configuration files. Otherwise system-default environment variables will be used, and may result in eg. the system ld being used in preference to $HOME/bin/ld.
  • Unpack:
% cd ~/src
% mkdir gt-2.4.3
% cd gt-2.4.3/
  • Configure:
% setenv GPT_LOCATION $HOME/stow/gpt-3.0.1
% setenv GLOBUS_LOCATION $HOME/stow/gt-2.4.3
% setenv CONFIG_SHELL /usr/bin/bash
  • Build:
% gpt-build ../../tar/globus-resource-management-sdk-2.4.3-src_bundle.tar.gz gcc32dbg | tee build.log

GNU M4

  • Unpack:
% cd ~/src
% tar -xjvf ../tar/m4-1.4.4.tar.bz2
% cd m4-1.4.4/
  • Configure:
% ./configure --prefix=$HOME/stow/m4-1.4.4/
  • Build:
% make -j16 | tee build.log
  • Install:
% make install
% cd ~/stow
% stow m4-1.4.4/
% rehash

GNU Bison

  • Unpack:
% cd ~/src
% tar -xjvf ../tar/bison-2.2.tar.bz2
% cd bison-2.2/
  • Configure:
% ./configure --prefix=$HOME/stow/bison-2.2
  • Build:
% make -j16 | tee build.log
  • Install:
% make install
% cd ~/stow
% rm -Rf bison-2.2/info/dir
% stow bison-2.2
% rehash

Flex

  • Unpack:
% cd ~/src
% tar -xzvf ../tar/flex-2.5.4a.tar.gz
% cd flex-2.5.4/
  • Configure:
% ./configure --prefix=$HOME/stow/flex-2.5.4a/
  • Build:
% make -j16 | tee build.log
  • Install:
% make install
% cd ~/stow
% stow flex-2.5.4a/
% rehash


gSOAP

  • Unpack:
% cd ~/src
% tar -xzvf ../tar/gsoap_2.7.7.tar.gz
% cd gsoap_2.7/
  • Configure:
% setenv GLOBUS_LOCATION $HOME/stow/gt-2.4.3
% ./configure --prefix=$HOME/stow/gsoap-2.7.7
  • Build:
% make -j16 | tee build.log
  • Install:
% make install
% cd ~/stow
% stow gsoap-2.7.7
% rehash

CGSI_gSOAP

  • Unpack:
% rpm2cpio CGSI_gSOAP_2.7-1.1.9-1.slc3.src.rpm | cpio -ind
% cp CGSI_gSOAP_2.7-1.1.9.tar.gz ~/tar
% cd ~/src
% tar -xzvf ~/tar/CGSI_gSOAP_2.7-1.1.9.tar.gz
  • Configure:
    • Replace GLOBUS_LOCATION=/opt/globus with GLOBUS_LOCATION=/homes/dwm99/stow/gt-2.4.3
  • Build:
% setenv GLOBUS $HOME/stow/gt-2.4.3
% setenv GSOAP_LOCATION $HOME/stow/gsoap-2.7.7
% make -n | bash -s 
  • Install:
% make -n install PREFIX=$HOME/stow/CGSI_gSOAP_2.7-1.1.9 | bash -s
% cd $HOME/stow/
% stow CGSI_gSOAP_2.7-1.1.9

Expat

  • Unpack:
% tar -xzvf ../tar/expat-2.0.0.tar.gz
% cd expat-2.0.0/
  • Configure:
% ./configure --prefix=$HOME/stow/expat-2.0.0
  • Build:
% make -j16 | tee build.log
  • Install:
% make install
% cd $HOME/stow
% stow expat-2.0.0

GNU Autoconf

  • Unpack:
% tar -xjvf ~/tar/autoconf-2.59.tar.bz2
% cd autoconf-2.59/
  • Configure:
% ./configure --prefix=$HOME/stow/autoconf-2.59
  • Build:
% make -j16 | tee build.log
  • Install:
% make install
% cd $HOME/stow/
% stow autoconf-2.59/
% rehash


GNU Automake

  • Unpack:
% tar -xjvf ~/tar/automake-1.9.6.tar.bz2
% cd automake-1.9.6/
  • Configure:
% ./configure --prefix=$HOME/stow/automake-1.9.6
  • Build:
% make -j16 | tee build.log
  • Install:
% make install
% cd $HOME/stow/
% stow automake-1.9.6/
% rehash

GNU Libtool

  • Version: 1.9.6
  • Source: //www.mirrorservice.org/sites/ftp.gnu.org/gnu/libtool/libtool-1.5.22.tar.gz
  • Prereqs: GCC
  • Notes:
    • libtool-1.522/share/info/dir clashes with other packages. Deleted.
  • Unpack:
% tar -xzvf ~/tar/libtool-1.5.22.tar.gz
% cd libtool-1.5.22/
  • Configure:
% ./configure --prefix=$HOME/stow/libtool-1.5.22
  • Build:
% make -j16 | tee build.log
  • Install:
% make install
% cd $HOME/stow/
% rm libtool-1.5.22/share/info/dir
% stow libtool-1.5.22/
% rehash

VOMS

  • Version: Tag: glite-security-voms_branch_1_7_0
  • Source: http://glite.cvs.cern.ch:8180/cgi-bin/glite.cgi/org.glite.security.voms/
  • Prereqs: GCC, Expat, Globus, OpenSSL, GNU Automake, GNU Autoconf
  • Notes:
    • The provided ./configure script appears to be largely broken. It will not signal an error when a hard pre-requisite is not found; in addition, it appears that even if a prerequisite is found (eg Expat, possibly OpenSSL) the Makefile.am does not reference the variable storing the discovered location. Thus, if the libraries are not in the standard system location, the build will fail.
    • More specifically, the test for OpenSSL in project/acinclude.m4 is broken; ie tries to use LD_LIBRARY_PATH to add the directory specified by --with-openssl-prefix to the local compiler's search path for libraries. However, LD_LIBRARY_PATH only affects dynamic run-time linking, not compile-time. One workaround for this is to override LDFLAGS instead of LD_LIBRARY_PATH, though this may introduce it's own problems. Patch 01-fix_openssl_configure_macro.diff below implements this fix.
    • In addition, when trying to determine the OpenSSL version, the reference to $NO_GLOBUS_FLAGS is prefixed with -I. This is wrong; $NO_GLOBUS_FLAGS already starts with the requisite -I prefix. Patch 01-fix_openssl_configure_macro.diff below corrects this error.
    • The configure macros responsible for determining the availability of EVP_MD_CTX_init and related functions in <openssl/evp.h> also doesn't appear to function correctly. Whilst these symbols aren't defined in the Globus openssl libraries, they are available in OpenSSL 0.9.8b. However, the configure test is unable to link the appropriate symbols at compile-time if the OpenSSL library was not also compiled as a shared library. I do not understand why.
    • The compile-time declaration -DNOGLOBUS is not always defined in the VOMS Makefile.am files; as a result, src/includes/replace.h erroneously redefines OpenSSL symbols in conflict with the real header's definitions. The patch 02-add_DNOGLOBUS_to_NO_GLOBUS_FLAGS.diff below corrects this problem.
    • Detection of openssl/e_os2.h is also broken; the ./configure.ac AC_CHECK_HEADERS invocation looks for the header without using any specified --with-openssl-prefix value. Patch 03-fix_e_os2.h_configure_invocation.diff below fixes this problem. (At least partially; ./configure still generates warnings.)
    • src/sslutils/sslutils.c is compiled twice; once against the local globus libraries; once against the local system libraries. Unfortunately, at least in my local case, the headers provided by OpenSSL differ. The globus libraries define the symbols PEM_F_DEF_CALLBACK and EVP_F_EVP_DECRYPTFINAL; however, in OpenSSL 0.9.8b, these are now called PEM_F_PEM_DEF_CALLBACK and EVP_F_EVP_DECRYPTFINAL_EX. We cannot simply modify the calls, because the code must be compatible with both versions of OpenSSL. (A similar problem is described in Debian bug #334336, where the Apache maintainers ran into the same problem.) The patch 04-OpenSSL_0.9.8_api_changes.diff below fixes this problem.
    • src/common/credentials.c, src/socklib/tokens.c, src/socklib/globuswrap.c, src/ac/validate.c and src/api/ccapi/cinterface.h all directly or indirectly depend on /usr/include/sys/resource.h; however, these files apparently do not include the necessary prerequisite headers; as a result, the compilation aborts with error: field 'ru_utime' has incomplete type. Declaring __EXTENSIONS__ in src/include/gssapi_compat.h, src/socklib/tokens.c, src/socklib/globuswrap.c, src/ac/validate.c and src/api/ccapi/cinterface.h appears to work around the problem; see patch 05-add_EXTENSIONS.diff below. (Ultimately, this appears to be a Globus issue, but this seems to work around the problem.)
    • According to the current VOMS maintainer in an email to LCG-ROLLOUT, it is necessary to explicitly disable Java support with --enable-java=no if the java prerequisites are not available.
    • The src/common/Makefile.am build script does not reference EXPAT_CFLAGS, and so compilation of xml.c will fail if Expat is not installed in the system-default location. The patch 06-actually_use_EXPAT_CFLAGS.diff below tries to correct this problem.
    • There appears to be some problem with aclocal not picking up the appropriate AC_PROG_LIBTOOL macros, resulting in errors in the ./autogen invocation. This appears to occur if Libtool is not installed locally, or if the Libtool M4 macros are not installed in the default search path.
    • src/socklib/Client.cc and src/socklib/Server.cpp fail to build; there appear to be inconsistent extern "C" {} declarations which don't work. Patch 07-globus_debug_should_use_EXTERN_C_consistently.diff (applied to the Globus install-tree) attempts to hack around this problem.
    • src/socklib/Client.cc fails to build; it throws error: invalid lvalue in unary '&' in response to the &((int)addrlen parameter to getsockname. Reversing the #ifndef to an #ifdef appears to correct the porblem. See patch 08-reverse_socklen_t_ifdef.diff below.
    • src/ac/create.cc fails to build; Makefile.am specifies where to find the OpenSSL includes in *_CFLAGS, but not in *_CPPFLAGS -- which is necessary for the code that is compiled with g++. Patch 09-define_CPPFLAGS_in_ac_Makefile.am.diff hacks around this problem.
    • src/api/ccapi/api_util.cc, src/api/ccapi/voms_api.cc, src/api/ccapi/cinterface.cc appears to use old-style function pointer casts which do not specify the types of the arguments to the function. This causes g++-4.1.0 to explode very messily. Patch 10-fix_broken_K&R_syntax tries to correct this problem.
    • src/api/ccapi/voms_api.cc apparently uses an invalid implicit cast from unsigned char * to const unsigned char *. Patch 11-fix_const_unsigned_char_pointer.diff hacks arond this problem.
    • src/api/ccapi/api_util.cc, src/api/ccapi/voms_api.cc and src/api/ccapi/voms_api.h appears to have problems with nested extern "C" statements when compiled against the Globus libraries. Patch 12-fix_nested_extern_C_declarations.diff tries to hack around this problem.
    • 13-Globus_SSL_doesn't_understand_i2d_of_void.diff adds definitions of i2d_of_void and d2i_of_void, as used in 10-fix_broken_K&R_syntax, to replace.h. This is to work around the fact that the OpenSSL build provided as part of Globus 2.4.3 doesn't understand those terms..
  • Unpack:
% tar -xzvf ../tar/org.glite.security.voms.tar.gz
% cd org.glite.security.voms/
  • Patches:
    • 01-fix_openssl_configure_macro.diff
--- project/acinclude.m4.old    Tue May 30 15:11:54 2006
+++ project/acinclude.m4        Tue May 30 15:49:51 2006
@@ -7,8 +7,8 @@
               [with_openssl_prefix="$withval"],
               [with_openssl_prefix=/usr])

-  SAVE_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
-  LD_LIBRARY_PATH="$with_openssl_prefix/lib"
+  SAVE_LDFLAGS=$LDFLAGS
+  export LDFLAGS="-L$with_openssl_prefix/lib"

   AC_LANG_PUSH(C)
   AC_CHECK_LIB(crypto, CRYPTO_num_locks, [found=yes], [found=no])
@@ -24,11 +24,11 @@
 #include <openssl/opensslv.h>
 OPENSSL_VERSION_TEXT
 HERE
-    openssl_version=`$CPP -I$NO_GLOBUS_FLAGS -o - -P conftest.h`
+    openssl_version=`$CPP $NO_GLOBUS_FLAGS -o - -P conftest.h`
     AC_MSG_RESULT($openssl_version)
     rm -f conftest.h
   fi
-  LD_LIBRARY_PATH="$SAVE_LD_LIBRARY_PATH"
+  LDFLAGS="$SAVE_LDFLAGS"
 ])

 # AC_GLOBUS checks globus prefix, looks for globus
    • 02-add_DNOGLOBUS_to_NO_GLOBUS_FLAGS.diff
--- project/acinclude.m4.old    Thu Jun  1 17:32:03 2006
+++ project/acinclude.m4        Thu Jun  1 17:26:20 2006
@@ -15,7 +15,7 @@
   AC_LANG_POP(C)

   if test "x$found" = "xyes"; then
-    NO_GLOBUS_FLAGS="-I$with_openssl_prefix/include"
+    NO_GLOBUS_FLAGS="-I$with_openssl_prefix/include -DNOGLOBUS"
     OPENSSL_LIBS="-L$with_openssl_prefix/lib -lcrypto -lssl"
     AC_SUBST(NO_GLOBUS_FLAGS)
     AC_SUBST(OPENSSL_LIBS)
    • 03-fix_e_os2.h_configure_invocation.diff
--- configure.ac.old    Wed May 31 19:13:28 2006
+++ configure.ac        Wed May 31 19:30:49 2006
@@ -52,7 +52,13 @@
 AC_HEADER_DIRENT
 AC_HEADER_STDC
 AC_HEADER_SYS_WAIT
+
+# [dwm] We need to set CPFLAGS to include the specified OpenSSL dir, if any.
+SAVE_CFLAGS=$CFLAGS
+CFLAGS="-I$with_openssl_prefix/include"
 AC_CHECK_HEADERS([fcntl.h libintl.h limits.h memory.h netdb.h netinet/in.h stdlib.h string.h strings.h sys/socket.h sys/time.h syslog.h termios.h unistd.h malloc.h openssl/e_os.h openssl/e_os2.h wchar.h])
+CFLAGS=$SAVE_CFLAGS
+
 AC_LANG_PUSH(C++)
 AC_CHECK_HEADERS(strstream strstream.h)
 AC_LANG_POP(C++)
    • 04-OpenSSL_0.9.8_api_changes.diff
--- src/sslutils/sslutils.c.old Wed May 31 18:31:03 2006
+++ src/sslutils/sslutils.c     Wed May 31 20:04:54 2006
@@ -82,6 +82,15 @@
 #endif
 #endif

+#if (OPENSSL_VERSION_NUMBER >= 0x0090800fL)
+# ifndef EVP_F_EVP_DECRYPTFINAL
+#  define EVP_F_EVP_DECRYPTFINAL EVP_F_EVP_DECRYPTFINAL_EX
+# endif
+# ifndef PEM_F_DEF_CALLBACK
+#  define PEM_F_DEF_CALLBACK PEM_F_PEM_DEF_CALLBACK
+# endif
+#endif
+
 static int fix_add_entry_asn1_set_param = 0;


    • 05-add_EXTENSIONS.diff
--- src/include/gssapi_compat.h.old     Thu Jun  1 17:37:10 2006
+++ src/include/gssapi_compat.h Thu Jun  1 17:37:26 2006
@@ -28,6 +28,8 @@
                              Include header files
 **********************************************************************/

+#define __EXTENSIONS__
+
 #include "gssapi.h"
 #include "sslutils.h"
 #include <stdio.h>
--- src/socklib/tokens.c.old    Fri Jun  2 13:42:32 2006
+++ src/socklib/tokens.c        Fri Jun  2 13:42:47 2006
@@ -22,6 +22,8 @@
  * @author comments by Marco Pappalardo marco.pappalardo@ct.infn.it and Salvatore Monforte
  */

+#define __EXTENSIONS__
+
 #include "config.h"
 #include "replace.h"

--- src/socklib/globuswrap.c.old        Fri Jun  2 13:45:50 2006
+++ src/socklib/globuswrap.c    Fri Jun  2 13:46:04 2006
@@ -11,6 +11,9 @@
  * follows.
  *
  *********************************************************************/
+
+#define __EXTENSIONS__
+
 #include "config.h"
 #include "replace.h"

--- src/ac/validate.c.old       Fri Jun  2 13:47:27 2006
+++ src/ac/validate.c   Fri Jun  2 13:47:39 2006
@@ -12,6 +12,8 @@
  *
  *********************************************************************/

+#define __EXTENSIONS__
+
 #include "config.h"
 #include "replace.h"

--- src/api/ccapi/cinterface.h.old      Fri Jun  9 11:45:04 2006
+++ src/api/ccapi/cinterface.h  Fri Jun  9 11:48:45 2006
@@ -15,6 +15,10 @@
 #ifndef VOMS_CINTERFACE_H
 #define VOMS_CINTERFACE_H

+#ifndef __EXTENSIONS__
+#define __EXTENSIONS__
+#endif
+
 #ifndef NOGLOBUS
 #include <gssapi.h>
 #endif
    • 06-actually_use_EXPAT_CFLAGS.diff
--- src/common/Makefile.am.old  Thu Jun  1 17:52:29 2006
+++ src/common/Makefile.am      Thu Jun  1 17:52:43 2006
@@ -33,7 +33,8 @@
 AM_CPPFLAGS = \
        -I $(top_srcdir)/src/include \
        -I $(top_srcdir)/src/sslutils \
-       $(GLOBUS_CFLAGS)
+       $(GLOBUS_CFLAGS) \
+       $(EXPAT_CFLAGS)

 libutilc_nog_la_CPPFLAGS = \
        $(NO_GLOBUS_FLAGS) \
    • 07-globus_debug_should_use_EXTERN_C_consistently.diff
--- include/gcc32dbg/globus_debug.h.old Mon Jun  5 16:38:09 2006
+++ include/gcc32dbg/globus_debug.h     Mon Jun  5 16:37:47 2006
@@ -2,6 +2,8 @@
 #ifndef GLOBUS_DEBUG_H
 #define GLOBUS_DEBUG_H

+EXTERN_C_BEGIN
+
 #include "globus_common_include.h"

 #ifdef BUILD_DEBUG
    • 08-reverse_socklen_t_ifdef.diff
--- src/socklib/Client.cpp.old  Fri Jun  2 11:35:22 2006
+++ src/socklib/Client.cpp      Fri Jun  2 11:36:23 2006
@@ -260,7 +260,7 @@
   struct sockaddr_in myaddr_in;
   memset ((char *)&myaddr_in, 0, sizeof(struct sockaddr_in));

-#ifndef HAVE_SOCKLEN_T
+#ifdef HAVE_SOCKLEN_T
   if (getsockname(sck, (struct sockaddr*)&myaddr_in, &((int)addrlen)) == -1) {
 #else
   if (getsockname(sck, (struct sockaddr*)&myaddr_in, &addrlen) == -1) {
--- src/socklib/Server.cpp.old  Fri Jun  2 11:48:51 2006
+++ src/socklib/Server.cpp      Fri Jun  2 11:55:55 2006
@@ -333,7 +333,7 @@
     return false;
   }

-#ifndef HAVE_SOCKLEN_T
+#ifdef HAVE_SOCKLEN_T
   newsck = accept(sck, (struct sockaddr*)&peeraddr_in, &((int)addrlen));
 #else
   newsck = accept(sck, (struct sockaddr*)&peeraddr_in, &addrlen);
    • 09-define_CPPFLAGS_in_ac_Makefile.am.diff
--- src/ac/Makefile.am.old      Fri Jun  2 13:58:48 2006
+++ src/ac/Makefile.am  Fri Jun  2 18:01:49 2006
@@ -32,6 +32,12 @@
        -I $(top_srcdir)/src/include \
        -I $(top_builddir)/src/sslutils

+libattributes_nog_la_CPPFLAGS = \
+       $(NO_GLOBUS_FLAGS) \
+       -DNOGLOBUS \
+       -I $(top_srcdir)/src/include \
+       -I $(top_srcdir)/src/sslutils
+
 libattributes_nog_la_LIBADD = \
        $(OPENSSL_LIBS)

@@ -47,6 +53,12 @@
        create.cc \
        ccinit.cc

+libccattcert_la_CPPFLAGS = \
+       $(NO_GLOBUS_FLAGS) \
+       -DNOGLOBUS \
+       -I $(top_srcdir)/src/include \
+       -I $(top_srcdir)/src/sslutils
+
 libccattcert_la_LIBADD  = \
        libattcert.la
 # \
@@ -122,6 +134,11 @@
        create.cc \
        ccinit.cc

+libccattcert_gcc32dbg_la_CPPFLAGS = \
+       $(GLOBUS_GCC32DBG_CFLAGS) \
+       -I $(top_srcdir)/src/include \
+       -I $(top_builddir)/src/sslutils
+
 libccattcert_gcc32dbg_la_LIBADD  = \
        libattcert_gcc32dbg.la \
        $(GLOBUS_GCC32DBG_GSS_LIBS)
    • 10-fix_broken_K&R_syntax
--- src/api/ccapi/api_util.cc.old       Fri Jun  2 18:19:56 2006
+++ src/api/ccapi/api_util.cc   Fri Jun  2 18:32:19 2006
@@ -150,7 +150,7 @@
     return false;
   }

-  *holder = (X509 *)ASN1_dup((int (*)())i2d_X509,(char * (*)())d2i_X509, (char *)h);
+  *holder = (X509 *)ASN1_dup((i2d_of_void *)i2d_X509,(d2i_of_void *)d2i_X509, (char *)h);
   if (!*holder) {
     seterror(VERR_MEM, "Cannot find enough memory to work!");
     return false;
@@ -308,8 +308,8 @@
   AC_free(tmp);

   if (result)
-    v.holder = (X509 *)ASN1_dup((int (*) ())i2d_X509,
-                               (char * (*)())d2i_X509, (char *)holder);
+    v.holder = (X509 *)ASN1_dup((i2d_of_void *)i2d_X509,
+                               (d2i_of_void *)d2i_X509, (char *)holder);
   return result;
 }

@@ -343,8 +343,8 @@
     return false;
   }
   else {
-    ((struct realdata *)v.realdata)->ac = (AC *)ASN1_dup((int (*) ())i2d_AC,
-                                                         (char * (*) ())d2i_AC,
+    ((struct realdata *)v.realdata)->ac = (AC *)ASN1_dup((i2d_of_void *)i2d_AC,
+                                                         (d2i_of_void *)d2i_AC,
                                                          (char *)ac);
   }

@@ -364,8 +364,8 @@
   X509_free(issuer);

   if (result)
-    v.holder = (X509 *)ASN1_dup((int (*) ())i2d_X509,
-                               (char * (*)())d2i_X509, (char *)holder);
+    v.holder = (X509 *)ASN1_dup((i2d_of_void *)i2d_X509,
+                               (d2i_of_void *)d2i_X509, (char *)holder);
   return result;
 }

@@ -380,7 +380,7 @@

   AC *ac = (AC *)data;

-  int res = ASN1_verify((int (*)())i2d_AC_INFO, ac->sig_alg, ac->signature,
+  int res = ASN1_verify((i2d_of_void *)i2d_AC_INFO, ac->sig_alg, ac->signature,
                         (char *)ac->acinfo, key);

   if (!res)
@@ -671,7 +671,7 @@
      among those specific for the vo or else in the vomsdir
      directory */

-  X509 *cert = (X509 *)ASN1_dup((int (*)())i2d_X509, (char * (*)())d2i_X509, (char *)sk_X509_value(certstack, 0));
+  X509 *cert = (X509 *)ASN1_dup((i2d_of_void *)i2d_X509, (d2i_of_void *)d2i_X509, (char *)sk_X509_value(certstack, 0));

   bool found = false;

--- src/api/ccapi/voms_api.cc.old       Mon Jun  5 13:52:28 2006
+++ src/api/ccapi/voms_api.cc   Mon Jun  5 14:03:06 2006
@@ -820,11 +820,11 @@
   fqan      = orig.fqan;
   serial    = orig.serial;
   realdata  = calloc(1, sizeof(struct realdata));
-  ((struct realdata *)realdata)->ac = (AC *)ASN1_dup((int (*)())i2d_AC,
-                                                     (char * (*)())d2i_AC,
+  ((struct realdata *)realdata)->ac = (AC *)ASN1_dup((i2d_of_void *)i2d_AC,
+                                                     (d2i_of_void *)d2i_AC,
                                                      (char *)((struct realdata *)orig.realdata)->ac);
-  holder = (X509 *)ASN1_dup((int (*)())i2d_X509,
-                           (char * (*)())d2i_X509,
+  holder = (X509 *)ASN1_dup((i2d_of_void *)i2d_X509,
+                           (d2i_of_void *)d2i_X509,
                            (char *)orig.holder);


@@ -861,10 +861,10 @@
   serial    = orig.serial;
   if (((struct realdata *)realdata)->ac)
     AC_free(((struct realdata *)realdata)->ac);
-  ((struct realdata *)realdata)->ac = (AC *)ASN1_dup((int (*)())i2d_AC,
-                                                     (char * (*)())d2i_AC,
+  ((struct realdata *)realdata)->ac = (AC *)ASN1_dup((i2d_of_void *)i2d_AC,
+                                                     (d2i_of_void *)d2i_AC,
                                                      (char *)((struct realdata *)orig.realdata)->ac);
-  holder = (X509 *)ASN1_dup((int (*)())i2d_X509, (char * (*)())d2i_X509, (char *)orig.holder);
+  holder = (X509 *)ASN1_dup((i2d_of_void *)i2d_X509, (d2i_of_void *)d2i_X509, (char *)orig.holder);
   delete ((struct realdata *)realdata)->attributes;
   ((struct realdata *)realdata)->attributes =
     new std::vector<attributelist>(*(((struct realdata *)orig.realdata)->attributes));
@@ -881,8 +881,8 @@

 AC *voms::GetAC()
 {
-  return (AC *)ASN1_dup((int (*)())i2d_AC,
-                        (char * (*)())d2i_AC,
+  return (AC *)ASN1_dup((i2d_of_void *)i2d_AC,
+                        (d2i_of_void *)d2i_AC,
                         (char *)((struct realdata *)realdata)->ac);
 }

--- src/api/ccapi/cinterface.cc.old     Mon Jun  5 14:07:47 2006
+++ src/api/ccapi/cinterface.cc Mon Jun  5 14:10:15 2006
@@ -277,9 +277,9 @@
       dst->serial    = mystrdup(serial);
       dst->datalen   = custom.size();

-      dst->ac     = (AC *)  ASN1_dup((int(*)())i2d_AC,   (char*(*)())d2i_AC,
+      dst->ac     = (AC *)  ASN1_dup((i2d_of_void *)i2d_AC,   (d2i_of_void *)d2i_AC,
                                      (char *)(((struct realdata *)realdata)->ac));
-      dst->holder = (X509 *)ASN1_dup((int(*)())i2d_X509, (char*(*)())d2i_X509, (char *)holder);
+      dst->holder = (X509 *)ASN1_dup((i2d_of_void *)i2d_X509, (d2i_of_void *)d2i_X509, (char *)holder);

       if (!dst->holder || !dst->ac)
         throw 3;
@@ -727,8 +727,8 @@
       dst->serial    = mystrdup(org->serial);
       dst->datalen   = org->datalen;

-      dst->ac     = (AC *)  ASN1_dup((int(*)())i2d_AC,   (char*(*)())d2i_AC,   (char *)org->ac);
-      dst->holder = (X509 *)ASN1_dup((int(*)())i2d_X509, (char*(*)())d2i_X509, (char *)org->holder);
+      dst->ac     = (AC *)  ASN1_dup((i2d_of_void *)i2d_AC,   (d2i_of_void *)d2i_AC,   (char *)org->ac);
+      dst->holder = (X509 *)ASN1_dup((i2d_of_void *)i2d_X509, (d2i_of_void *)d2i_X509, (char *)org->holder);

       if (!dst->holder || !dst->ac)
         throw 3;
@@ -851,7 +851,7 @@

 AC *VOMS_GetAC(vomsr *v)
 {
-  return (AC *)ASN1_dup((int (*)())i2d_AC, (char * (*)())d2i_AC, (char *)v->ac);
+  return (AC *)ASN1_dup((i2d_of_void *)i2d_AC, (d2i_of_void *)d2i_AC, (char *)v->ac);
 }

 }

  • 11-fix_const_unsigned_char_pointer.diff
--- src/api/ccapi/voms_api.cc.old       Fri Jun  2 18:33:00 2006
+++ src/api/ccapi/voms_api.cc   Mon Jun  5 13:47:43 2006
@@ -476,7 +479,11 @@
   char *buf = NULL;

   std::string subject, ca;
+#ifdef NOGLOBUS
+  const unsigned char *buftmp, *copy;
+#else
  unsigned char *buftmp, *copy;
+#endif

   char *str;
   int len;
    • 12-fix_nested_extern_C_declarations.diff
--- src/api/ccapi/api_util.cc.old       Fri Jun  2 18:19:56 2006
+++ src/api/ccapi/api_util.cc   Mon Jun  5 14:31:41 2006
@@ -15,10 +15,12 @@
 extern "C" {
 #include "config.h"
 #include "replace.h"
-
+}
 #ifndef NOGLOBUS
 #include "globus_config.h"
 #endif
+
+extern "C" {
 #include <sys/types.h>
 #include <netdb.h>
 #include <dirent.h>
@@ -25,8 +27,8 @@
 #include <netinet/in.h>
 #include <sys/socket.h>
 #include <sys/wait.h>
-
 #include <signal.h>
+}

 #ifndef NOGLOBUS
   /*#include "gssapi_compat.h"*/
@@ -34,6 +36,7 @@
 #include "globus_gss_assist.h"
 #endif

+extern "C" {
 #include <stdio.h>
 #include <openssl/x509.h>
 #include <openssl/asn1.h>
--- src/api/ccapi/voms_api.cc.old       Mon Jun  5 15:03:23 2006
+++ src/api/ccapi/voms_api.cc   Mon Jun  5 15:03:44 2006
@@ -32,6 +32,7 @@
 #include <openssl/bn.h>
 #include <openssl/err.h>
 #include "credentials.h"
+}

 #ifndef NOGLOBUS
 #ifdef HAVE_GLOBUS_MODULE_ACTIVATE
@@ -39,9 +40,10 @@
 #include <globus_openssl.h>
 #endif
 #else
+extern "C" {
 #include <openssl/crypto.h>
-#endif
 }
+#endif

 #include <fstream>
 #include <iostream>
--- src/api/ccapi/voms_api.h.old        Mon Jun  5 15:09:36 2006
+++ src/api/ccapi/voms_api.h    Mon Jun  5 15:09:59 2006
@@ -30,7 +30,10 @@
@@ -20,13 +20,16 @@
 #include <vector>


-extern "C" {
 #ifndef NOGLOBUS
 #include <gssapi.h>
 #else
+extern "C" {
 typedef void * gss_cred_id_t;
 typedef void * gss_ctx_id_t;
+}
 #endif
+
+extern "C" {
 #include <openssl/x509.h>
 #include <sys/types.h>
 #include "newformat.h"
    • 13-Globus_SSL_doesn't_understand_i2d_of_void.diff
--- src/include/replace.h.old   Mon Jun  5 14:35:48 2006
+++ src/include/replace.h       Mon Jun  5 14:58:17 2006
@@ -39,6 +39,10 @@
 #define EVP_MD_CTX_cleanup
 #endif
 #endif
+#ifndef NOGLOBUS
+typedef int i2d_of_void();
+typedef char *d2i_of_void();
+#endif
 #ifdef __cplusplus
 }
 #endif
  • Configure:
% aclocal -I project -I $HOME/share/aclocal
% libtoolize --force
% autoheader
% automake --foreign --add-missing --copy
% autoconf
% ./configure --prefix=$HOME/stow/org.glite.security.voms-1.7.0 --with-openssl-prefix=$HOME \
        --with-expat-prefix=$HOME --with-globus-prefix=$HOME/stow/gt-2.4.3 --enable-java=no --disable-docs
  • Build:
% make 
  • Install:
% make install
% cd $HOME/stow
% stow org.glite.security.voms-1.7.0/
% rehash

DPM: LCG-DM

  • Version: 1.5.5
  • Source: http://isscvs.cern.ch:8180/cgi-bin/cvsweb.cgi/LCG-DM/?cvsroot=lcgware;only_with_tag=lcg1_5_5
  • Prereqs: GCC, VOMS, MySQL, CGSI_gSOAP, SWIG
  • Notes:
    • DPM does not use a GNU automake-style build system, but instead uses Makefiles generated using Imake. It does not perform any intelligent discovery of dependencies. Manual modifications of build script and build script config files are necessary:
      • Use /bin/bash instead of /bin/sh as the default shell. (01-use_bash_shell.diff)
      • Use gcc, not cc, as the default C compiler and linker. (02-use_gcc.diff)
      • Specify that MySQL is installed in $HOME. (03-MySQL_config.diff)
      • Specify that Perl is installed in /usr/perl5/.... (04-Perl_config.diff)
      • Specify that Python is installed in $HOME. (05-Python_config.diff)
      • Specify that gSOAP is installed in $HOME. (06-gSOAP_config.diff)
      • Specify that Globus is installed in $HOME/stow/gt-2.4.3. (07-Globus_config.diff)
      • Specify that VOMS is installed in $HOME. (08-VOMS_config.diff)
      • Add -luuid to LDFLAGS as it is used by ns/Cns_procreq.o (09-Add_uuid_to_LDFLAGS.diff)
    • Nested __CONCAT pragmas are used in h/Csec_plugin.h, which don't appear to work on Solaris. (11-nested_CONCAT.diff)
    • srmv1/srmv1_procreq.c uses numbering and naming conventions that appear to differ from that used by code generated by the current version of gSOAP. (12-srmv1_gSOAP_convention.diff)
      • s/int ns5__/int ns6__/g
      • s/struct ns5__/struct ns6__/g
      • s/struct ns1__/struct ns2__/g
      • s/true_/xsd__boolean__true_/g
      • s/int ns6__pin/int ns5__pin/
    • srmv2/srmv2.c, srmv2/srmv2_dirreq.c, srmv2/srmv2_permreq.c, srmv2/srmv2_spacereq.c, srmv2/srmv2_xferreq.c use naming conventions that appear to differ from that used by code generated by the current version of gSOAP. (13-srmv2_gSOAP_convention.diff)
      • s/SRM_USCORE/ns1__TStatusCode__SRM_USCORE/g
      • s/true_/xsd__boolean__true_/g
      • s/false_/xsd__boolean__false_/g
      • Similarly, other enumerated types now have their values prefixed with the enumeration type name.
      • Array values in the gSOAP-generated srmv2Stub.h only used single-* pointers, not double-* pointers -- rendering it incompatible with the existing srmv2 code which used array dereferences. A patch to modify the header accordingly is provided.
    • A bug has been identified in srmv2_permreq.c where the function ns1__srmCheckPermission(...) attempts to use ns1__TPermissionMode enumerated values (eg R, W, RWX, None), whereas in actual fact it is required to return an ns1__TPermissionType value (eg ADD, REMOVE, CHANGE).
  • Unpack:
% cd ~/src
% tar -xzvf ~/tar/LCG-DM.tar.gz
% mv LCG-DM/ LCG-DM-lcg1_5_5/
% cd LCG-DM-lcg1_5_5/
  • Patch:
    • 01-use_bash_shell.diff
--- config/Imake.tmpl.old       Thu Jun 15 11:42:19 2006
+++ config/Imake.tmpl   Thu Jun 15 11:43:23 2006
@@ -66,7 +66,7 @@
 #if _WIN32
 SHELL = cmd
 #else
-SHELL = /bin/sh
+SHELL = /bin/bash
 #endif

 #ifndef CurDir
    • 02-use_gcc.diff
--- config/sun.cf.old   Thu Jun 15 12:40:10 2006
+++ config/sun.cf       Thu Jun 15 12:40:54 2006
@@ -9,9 +9,9 @@

 GSOAP_PLATFORM = sun8
 #define sun 1
-MTCCFLAGS = -mt -DCTHREAD_POSIX -D_THREAD_SAFE -D_REENTRANT
+MTCCFLAGS = -DCTHREAD_POSIX -D_THREAD_SAFE -D_REENTRANT
 MTLDLIBS =
-MTLDFLAGS = -mt
+MTLDFLAGS =
 SHLIBLDFLAGS = -G
 #if OSMinorVersion > 6
 SHLIBREQLIBS = -lrt -lsocket
@@ -20,9 +20,9 @@
 #endif
 #define BootstrapCFlags "-DSOLARIS"
 #if OSMinorVersion >= 5
-CC = cc -DSOLARIS -DSOLARIS25 -KPIC
+CC = gcc -DSOLARIS -DSOLARIS25 -fPIC -DPIC
 #else
-CC = cc -DSOLARIS
+CC = gcc -DSOLARIS
 #endif
 #define HasRanlib      NO

--- config/Imake.tmpl.old       Thu Jun 15 11:44:42 2006
+++ config/Imake.tmpl   Thu Jun 15 11:44:53 2006
@@ -55,7 +55,7 @@
 PYTHONDIR = InstallPythonDir
 #if !defined(_WIN32)
 CP = cp
-LD = cc
+LD = gcc
 LN = ln
 #endif
 #if HasRanlib
    • 03-MySQL_config.diff
--- config/site.def.old Thu Jun 15 11:46:23 2006
+++ config/site.def     Thu Jun 15 11:46:40 2006
@@ -80,7 +80,7 @@
 #endif
 #define ManDir  $(prefix)/man/man1
 #define ManSuffix       1
-#define MySQLLocation  /usr
+#define MySQLLocation  $(HOME)
 #define NfsRoot        /shift
 #if defined(_WIN32)
 #define NsConfigFile   %%SystemRoot%%\\system32\\drivers\\etc\\NSCONFIG
    • 04-Perl_config.diff
--- config/sun.cf.old   Thu Jun 15 12:47:00 2006
+++ config/sun.cf       Thu Jun 15 12:47:27 2006
@@ -26,4 +26,4 @@
 #endif
 #define HasRanlib      NO

-INCLUDE_PERL = -I/usr/local/lib/perl5/CORE
+INCLUDE_PERL = -I/usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE
    • 05-Python_config.diff
--- config/sun.cf.old   Thu Jun 15 12:47:54 2006
+++ config/sun.cf       Thu Jun 15 12:48:37 2006
@@ -27,3 +27,4 @@
 #define HasRanlib      NO

 INCLUDE_PERL = -I/usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE
+INCLUDE_PYTHON = -I$(HOME)/include/python2.4
--- dpm/Imakefile.old   Thu Jun 15 12:49:05 2006
+++ dpm/Imakefile       Thu Jun 15 12:49:11 2006
@@ -6,8 +6,6 @@

 COMM    Make Disk Pool Manager

-INCLUDE_PYTHON = -I/usr/include/python2.2
-
 DPMCONFIG = DpmConfigFile
 #if BuildSecurity
 CSECFLAG = -DCSEC
--- ns/Imakefile.lfc.old        Thu Jun 15 12:50:06 2006
+++ ns/Imakefile.lfc    Thu Jun 15 12:50:14 2006
@@ -8,8 +8,6 @@

 NSTYPE = -DNSTYPE_LFC

-INCLUDE_PYTHON = -I/usr/include/python2.2
-
 COMM######################### RULES ##############################

 MANPAGESSERVER = $(MANDIR)/lfcdaemon.$(MANSUFFIX) \
    • 06-GSOAP_config.diff
--- config/site.def.old Thu Jun 15 12:46:31 2006
+++ config/site.def     Thu Jun 15 12:57:59 2006
@@ -43,8 +43,12 @@
 #else
 #define GlobusFlavour  gcc32dbg
 #endif
-#define GsoapLocation  /opt
-#define GsoapVersion   2.6
+#define GsoapLocation  $(HOME)
+#define GsoapVersion   2.7.7
+GSOAP_LOCATION=GsoapLocation
+GSOAP_BIN=$(GSOAP_LOCATION)/bin
+GSOAP_LIB=$(GSOAP_LOCATION)/lib
+GSOAP_INCLUDE=$(GSOAP_LOCATION)/include
 #define IdMapFile      $(prefix)/etc/lcgdm-mapfile
 #if defined(_WIN32)
 #define InstallBinDir  \\cern.ch\dfs\Applications\CERN\LFC\bin
--- srmv1/Imakefile.old Fri Jun 16 11:04:10 2006
+++ srmv1/Imakefile     Fri Jun 16 11:04:55 2006
@@ -60,7 +60,7 @@
          -DLOGFILE=\"$(LOGFILE)\" \
          $(ORAFLG) $(MYSFLG) $(CSECFLAG) $(VIDFLAG) $(VOMSFLAG)

-CFLAGS = -g -I$(INCLUDES) -I$(GSOAP) $(MTCCFLAGS) $(DFLAGS) $(ORAINC) $(MYSINC)+CFLAGS = -g -I$(INCLUDES) -I$(GSOAP_INCLUDE) $(MTCCFLAGS) $(DFLAGS) $(ORAINC) $(MYSINC)

 COMM######################### DEPENDENCY LIBRARIES ###############

@@ -85,13 +85,13 @@

 all: $(SERVER)

-stdsoap2.Osuf: $(GSOAP)/stdsoap2.c
-       $(CC) -c $(GSOAP)/stdsoap2.c
+stdsoap2.Osuf: $(GSOAP_BIN)/stdsoap2.c
+       $(CC) -c $(GSOAP_BIN)/stdsoap2.c

 srmv1H.h srmv1Stub.h srmv1C.c srmv1Server.c ISRM.nsmap: srm.v1.1.h
-       $(GSOAP)/soapcpp2 -c -p srmv1 srm.v1.1.h
+       $(GSOAP_BIN)/soapcpp2 -c -p srmv1 srm.v1.1.h
 srm.v1.1.h: srm.v1.1.wsdl
-       $(GSOAP)/wsdl2h -c -t typemap.dat srm.v1.1.wsdl
+       $(GSOAP_BIN)/wsdl2h -c -t typemap.dat srm.v1.1.wsdl

 #if UseOracle && !defined(_WIN32)
 srmv1: $(SRV_OBJS) $(DEPLIB)
--- srmv2/Imakefile.old Fri Jun 16 11:05:40 2006
+++ srmv2/Imakefile     Fri Jun 16 11:09:39 2006
@@ -60,7 +60,7 @@
          -DLOGFILE=\"$(LOGFILE)\" \
          $(ORAFLG) $(MYSFLG) $(CSECFLAG) $(VIDFLAG) $(VOMSFLAG)

-CFLAGS = -g -I$(INCLUDES) -I$(GSOAP) $(MTCCFLAGS) $(DFLAGS) $(ORAINC) $(MYSINC)+CFLAGS = -g -I$(INCLUDES) -I$(GSOAP_INCLUDE) $(MTCCFLAGS) $(DFLAGS) $(ORAINC) $(MYSINC)

 COMM######################### DEPENDENCY LIBRARIES ###############

@@ -93,9 +93,9 @@
        $(CC) -c $(GSOAP)/stdsoap2.c

 srmv2H.h srmv2Stub.h srmv2C.c srmv2Server.c srmSoapBinding.nsmap: srm.v2.1.1.h
-       $(GSOAP)/soapcpp2 -c -p srmv2 srm.v2.1.1.h
+       $(GSOAP_BIN)/soapcpp2 -c -p srmv2 srm.v2.1.1.h
 srm.v2.1.1.h: srm.v2.1.1.wsdl
-       $(GSOAP)/wsdl2h -c -t typemap.dat srm.v2.1.1.wsdl
+       $(GSOAP_BIN)/wsdl2h -c -t typemap.dat srm.v2.1.1.wsdl

 #if UseOracle && !defined(_WIN32)
 srmv2: $(SRV_OBJS) $(DEPLIB)
    • 07-Globus_config.diff
--- config/site.def.old Fri Jun 16 11:13:50 2006
+++ config/site.def     Fri Jun 16 11:15:20 2006
@@ -37,7 +37,7 @@
 #define DpmSpool       /var/log/dpm
 #define FilManDir       $(prefix)/man/man4
 #define FilManSuffix    4
-#define GlobusLocation /opt/globus
+#define GlobusLocation $(HOME)/stow/gt-2.4.3
 #if defined(__ia64__) || defined(__x86_64)
 #define GlobusFlavour  gcc64dbg
 #else
    • 08-VOMS_config.diff
--- config/site.def.old Fri Jun 16 11:15:58 2006
+++ config/site.def     Fri Jun 16 11:16:28 2006
@@ -128,7 +128,7 @@
 #define TopLibraryName         lcg-dm-common
 #endif
 #endif
-#define VomsLocation   /opt/glite
+#define VomsLocation           $(HOME)

 #define BuildDLI               NO
 #define BuildDPMClient         YES
    • 09-Add_uuid_to_LDFLAGS.diff
--- config/sun.cf.old   Fri Jun 16 11:17:06 2006
+++ config/sun.cf       Fri Jun 16 11:17:24 2006
@@ -28,3 +28,5 @@

 INCLUDE_PERL = -I/usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE
 INCLUDE_PYTHON = -I$(HOME)/include/python2.4
+
+LDFLAGS = -luuid
    • 11-nested_CONCAT.diff
--- h/Csec_plugin.h.old Fri Jun  9 14:59:36 2006
+++ h/Csec_plugin.h     Fri Jun  9 15:00:46 2006
@@ -1,6 +1,15 @@
 #ifndef _CSEC_PLUGIN_H
 #define _CSEC_PLUGIN_H

+/*
+ * [dwm]
+ * __CONCAT, as provided by libc, cannot be nested on Solaris.
+ * So we redefine it here.
+ */
+#undef __CONCAT
+#define __CONCAT1(x,y)  x ## y
+#define __CONCAT(x,y)   __CONCAT1(x,y)
+
 #include <Csec_common.h>
 #include "Cpwd.h"
 #include "Cmutex.h"
    • 12-srmv1_gSOAP_convention.diff
--- srmv1_procreq.c.old Fri Jun 16 11:38:28 2006
+++ srmv1_procreq.c     Fri Jun 16 11:45:27 2006
@@ -28,7 +28,7 @@
 extern int nb_supported_protocols;
 extern char **supported_protocols;

-int ns5__put (struct soap *soap, struct ArrayOfstring *srcarray, struct ArrayOfstring *surlarray, struct ArrayOflong *sizearray, struct ArrayOfboolean *permarray, struct ArrayOfstring *protoarray, struct ns5__putResponse *rep)
+int ns6__put (struct soap *soap, struct ArrayOfstring *srcarray, struct ArrayOfstring *surlarray, struct ArrayOflong *sizearray, struct ArrayOfboolean *permarray, struct ArrayOfstring *protoarray, struct ns6__putResponse *rep)
 {
        char clientdn[256];
        char *clienthost;
@@ -44,7 +44,7 @@
        int nbreqfiles;
        int nb_file_err = 0;
        struct dpm_put_filereq pfr_entry;
-       struct ns1__RequestFileStatus *repfilep;
+       struct ns2__RequestFileStatus *repfilep;
        struct in_addr sin_addr;
        struct srm_srv_thread_info *thip = soap->user;
        uid_t uid;
@@ -82,9 +82,9 @@

        /* Allocate the reply structure */

-       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns1__RequestStatus))) == NULL)
+       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns2__RequestStatus))) == NULL)
                RETURN (SOAP_EOM);
-       memset (rep->_Result, 0, sizeof(struct ns1__RequestStatus));
+       memset (rep->_Result, 0, sizeof(struct ns2__RequestStatus));
        if ((rep->_Result->type = soap_strdup (soap, "Put")) == NULL ||
            (rep->_Result->state = soap_malloc (soap, 8)) == NULL ||
            (rep->_Result->submitTime = soap_strdup (soap, soap_dateTime2s (soap, dpm_req.ctime))) == NULL ||
@@ -91,13 +91,13 @@
            (rep->_Result->fileStatuses =
                soap_malloc (soap, sizeof(struct ArrayOfRequestFileStatus))) == NULL ||
            (nbreqfiles > 0 && (rep->_Result->fileStatuses->__ptr =
-               soap_malloc (soap, nbreqfiles * sizeof(struct ns1__RequestFileStatus *))) == NULL))
+               soap_malloc (soap, nbreqfiles * sizeof(struct ns2__RequestFileStatus *))) == NULL))
                RETURN (SOAP_EOM);

        rep->_Result->fileStatuses->__size = nbreqfiles;
        for (i = 0; i < nbreqfiles; i++) {
                if ((rep->_Result->fileStatuses->__ptr[i] =
-                   soap_malloc (soap, sizeof(struct ns1__RequestFileStatus))) == NULL)
+                   soap_malloc (soap, sizeof(struct ns2__RequestFileStatus))) == NULL)
                        RETURN (SOAP_EOM);
        }

@@ -190,7 +190,7 @@
                }

                repfilep = rep->_Result->fileStatuses->__ptr[i];
-               memset (repfilep, 0, sizeof(struct ns1__RequestFileStatus));
+               memset (repfilep, 0, sizeof(struct ns2__RequestFileStatus));
                repfilep->SURL = surlarray->__ptr[i];
                repfilep->state = soap_strdup (soap, f_stat[pfr_entry.status >> 12]);
                repfilep->fileId = i;
@@ -222,7 +222,7 @@
        RETURN (SOAP_OK);
 }

-int ns5__get (struct soap *soap, struct ArrayOfstring *surlarray, struct ArrayOfstring *protoarray, struct ns5__getResponse *rep)
+int ns6__get (struct soap *soap, struct ArrayOfstring *surlarray, struct ArrayOfstring *protoarray, struct ns6__getResponse *rep)
 {
        char clientdn[256];
        char *clienthost;
@@ -238,7 +238,7 @@
        int nb_file_err = 0;
        int nbfqans;
        int nbreqfiles;
-       struct ns1__RequestFileStatus *repfilep;
+       struct ns2__RequestFileStatus *repfilep;
        struct in_addr sin_addr;
        struct srm_srv_thread_info *thip = soap->user;
        uid_t uid;
@@ -276,9 +276,9 @@

        /* Allocate the reply structure */

-       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns1__RequestStatus))) == NULL)
+       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns2__RequestStatus))) == NULL)
                RETURN (SOAP_EOM);
-       memset (rep->_Result, 0, sizeof(struct ns1__RequestStatus));
+       memset (rep->_Result, 0, sizeof(struct ns2__RequestStatus));
        if ((rep->_Result->type = soap_strdup (soap, "Get")) == NULL ||
            (rep->_Result->state = soap_malloc (soap, 8)) == NULL ||
            (rep->_Result->submitTime = soap_strdup (soap, soap_dateTime2s (soap, dpm_req.ctime))) == NULL ||
@@ -285,13 +285,13 @@
            (rep->_Result->fileStatuses =
                soap_malloc (soap, sizeof(struct ArrayOfRequestFileStatus))) == NULL ||
            (nbreqfiles > 0 && (rep->_Result->fileStatuses->__ptr =
-               soap_malloc (soap, nbreqfiles * sizeof(struct ns1__RequestFileStatus *))) == NULL))
+               soap_malloc (soap, nbreqfiles * sizeof(struct ns2__RequestFileStatus *))) == NULL))
                RETURN (SOAP_EOM);

        rep->_Result->fileStatuses->__size = nbreqfiles;
        for (i = 0; i < nbreqfiles; i++) {
                if ((rep->_Result->fileStatuses->__ptr[i] =
-                   soap_malloc (soap, sizeof(struct ns1__RequestFileStatus))) == NULL)
+                   soap_malloc (soap, sizeof(struct ns2__RequestFileStatus))) == NULL)
                        RETURN (SOAP_EOM);
        }

@@ -375,7 +375,7 @@
                }

                repfilep = rep->_Result->fileStatuses->__ptr[i];
-               memset (repfilep, 0, sizeof(struct ns1__RequestFileStatus));
+               memset (repfilep, 0, sizeof(struct ns2__RequestFileStatus));
                repfilep->SURL = surlarray->__ptr[i];
                repfilep->state = soap_strdup (soap, f_stat[gfr_entry.status >> 12]);
                repfilep->fileId = i;
@@ -407,7 +407,7 @@
        RETURN (SOAP_OK);
 }

-int ns5__copy (struct soap *soap, struct ArrayOfstring *from_surls, struct ArrayOfstring *to_surls, struct ArrayOfboolean *rlsarray, struct ns5__copyResponse *rep)
+int ns6__copy (struct soap *soap, struct ArrayOfstring *from_surls, struct ArrayOfstring *to_surls, struct ArrayOfboolean *rlsarray, struct ns6__copyResponse *rep)
 {
        char clientdn[256];
        char *clienthost;
@@ -423,7 +423,7 @@
        int nbfqans;
        int nbreqfiles;
        char proxy_filename[sizeof(P_tmpdir)+CA_MAXDPMTOKENLEN+4];
-       struct ns1__RequestFileStatus *repfilep;
+       struct ns2__RequestFileStatus *repfilep;
        struct in_addr sin_addr;
        struct srm_srv_thread_info *thip = soap->user;
        uid_t uid;
@@ -468,9 +468,9 @@

        /* Allocate the reply structure */

-       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns1__RequestStatus))) == NULL)
+       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns2__RequestStatus))) == NULL)
                RETURN (SOAP_EOM);
-       memset (rep->_Result, 0, sizeof(struct ns1__RequestStatus));
+       memset (rep->_Result, 0, sizeof(struct ns2__RequestStatus));
        if ((rep->_Result->type = soap_strdup (soap, "Copy")) == NULL ||
            (rep->_Result->state = soap_malloc (soap, 8)) == NULL ||
            (rep->_Result->submitTime = soap_strdup (soap, soap_dateTime2s (soap, dpm_req.ctime))) == NULL ||
@@ -477,13 +477,13 @@
            (rep->_Result->fileStatuses =
                soap_malloc (soap, sizeof(struct ArrayOfRequestFileStatus))) == NULL ||
            (nbreqfiles > 0 && (rep->_Result->fileStatuses->__ptr =
-               soap_malloc (soap, nbreqfiles * sizeof(struct ns1__RequestFileStatus *))) == NULL))
+               soap_malloc (soap, nbreqfiles * sizeof(struct ns2__RequestFileStatus *))) == NULL))
                RETURN (SOAP_EOM);

        rep->_Result->fileStatuses->__size = nbreqfiles;
        for (i = 0; i < nbreqfiles; i++) {
                if ((rep->_Result->fileStatuses->__ptr[i] =
-                   soap_malloc (soap, sizeof(struct ns1__RequestFileStatus))) == NULL)
+                   soap_malloc (soap, sizeof(struct ns2__RequestFileStatus))) == NULL)
                        RETURN (SOAP_EOM);
        }

@@ -551,7 +551,7 @@
                }

                repfilep = rep->_Result->fileStatuses->__ptr[i];
-               memset (repfilep, 0, sizeof(struct ns1__RequestFileStatus));
+               memset (repfilep, 0, sizeof(struct ns2__RequestFileStatus));
                repfilep->SURL = is_surl_local (from_surls->__ptr[i]) ?
                    from_surls->__ptr[i] : to_surls->__ptr[i];
                repfilep->state = soap_strdup (soap, f_stat[cpr_entry.status >> 12]);
@@ -599,7 +599,7 @@
        RETURN (SOAP_OK);
 }

-int ns5__ping (struct soap *soap, struct ns5__pingResponse *rep)
+int ns5__ping (struct soap *soap, struct ns6__pingResponse *rep)
 {
        char clientdn[256];
        char *clienthost;
@@ -618,11 +618,11 @@
                clienthost = hp->h_name;
        srmlogit (func, "request by %s from %s\n", clientdn, clienthost);

-       rep->_Result = true_;
+       rep->_Result = xsd__boolean__true_;
        RETURN (SOAP_OK);
 }

-int ns5__pin (struct soap *soap, struct ArrayOfstring *turlarray, struct ns5__pinResponse *rep)
+int ns6__pin (struct soap *soap, struct ArrayOfstring *turlarray, struct ns6__pinResponse *rep)
 {
        char clientdn[256];
        char *clienthost;
@@ -641,15 +641,15 @@
                clienthost = hp->h_name;
        srmlogit (func, "request by %s from %s\n", clientdn, clienthost);

-       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns1__RequestStatus))) == NULL)
+       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns2__RequestStatus))) == NULL)
                RETURN (SOAP_EOM);
-       memset (rep->_Result, 0, sizeof(struct ns1__RequestStatus));
+       memset (rep->_Result, 0, sizeof(struct ns2__RequestStatus));
        rep->_Result->state = soap_strdup (soap, "Failed");
        rep->_Result->errorMessage = soap_strdup (soap, "Method not supported");
        RETURN (SOAP_OK);
 }

-int ns5__unPin (struct soap *soap, struct ArrayOfstring *turlarray, int reqid, struct ns5__unPinResponse *rep)
+int ns6__unPin (struct soap *soap, struct ArrayOfstring *turlarray, int reqid, struct ns6__unPinResponse *rep)
 {
        char clientdn[256];
        char *clienthost;
@@ -668,15 +668,15 @@
                clienthost = hp->h_name;
        srmlogit (func, "request by %s from %s\n", clientdn, clienthost);

-       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns1__RequestStatus))) == NULL)
+       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns2__RequestStatus))) == NULL)
                RETURN (SOAP_EOM);
-       memset (rep->_Result, 0, sizeof(struct ns1__RequestStatus));
+       memset (rep->_Result, 0, sizeof(struct ns2__RequestStatus));
        rep->_Result->state = soap_strdup (soap, "Failed");
        rep->_Result->errorMessage = soap_strdup (soap, "Method not supported");
        RETURN (SOAP_OK);
 }

-int ns5__setFileStatus (struct soap *soap, int reqid, int fileid, char *state, struct ns5__setFileStatusResponse *rep)
+int ns6__setFileStatus (struct soap *soap, int reqid, int fileid, char *state, struct ns6__setFileStatusResponse *rep)
 {
        int bol;
        int c;
@@ -701,7 +701,7 @@
        struct dpm_put_filereq pfr_entry;
        char r_token[CA_MAXDPMTOKENLEN+1];
        dpm_dbrec_addr rec_addrf;
-       struct ns1__RequestFileStatus *repfilep;
+       struct ns2__RequestFileStatus *repfilep;
        struct in_addr sin_addr;
        char *surl;
        struct srm_srv_thread_info *thip = soap->user;
@@ -730,9 +730,9 @@

        /* Allocate the reply structure */

-       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns1__RequestStatus))) == NULL)
+       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns2__RequestStatus))) == NULL)
                RETURN (SOAP_EOM);
-       memset (rep->_Result, 0, sizeof(struct ns1__RequestStatus));
+       memset (rep->_Result, 0, sizeof(struct ns2__RequestStatus));

        /* Connect to the database if not done yet */

@@ -772,13 +772,13 @@
            (rep->_Result->fileStatuses =
                soap_malloc (soap, sizeof(struct ArrayOfRequestFileStatus))) == NULL ||
            (dpm_req.nbreqfiles > 0 && (rep->_Result->fileStatuses->__ptr =
-               soap_malloc (soap, dpm_req.nbreqfiles * sizeof(struct ns1__RequestFileStatus *))) == NULL))
+               soap_malloc (soap, dpm_req.nbreqfiles * sizeof(struct ns2__RequestFileStatus *))) == NULL))
                RETURN (SOAP_EOM);

        rep->_Result->fileStatuses->__size = dpm_req.nbreqfiles;
        for (i = 0; i < dpm_req.nbreqfiles; i++) {
                if ((rep->_Result->fileStatuses->__ptr[i] =
-                   soap_malloc (soap, sizeof(struct ns1__RequestFileStatus))) == NULL)
+                   soap_malloc (soap, sizeof(struct ns2__RequestFileStatus))) == NULL)
                        RETURN (SOAP_EOM);
        }
        rep->_Result->requestId = reqid;
@@ -830,7 +830,7 @@
                    &cpr_entry, 0, NULL, 0, &dblistptr)) == 0) {
                        bol = 0;
                        repfilep = rep->_Result->fileStatuses->__ptr[i];
-                       memset (repfilep, 0, sizeof(struct ns1__RequestFileStatus));
+                       memset (repfilep, 0, sizeof(struct ns2__RequestFileStatus));
                        repfilep->SURL = is_surl_local (cpr_entry.from_surl) ?
                                soap_strdup (soap, cpr_entry.from_surl) :
                                soap_strdup (soap, cpr_entry.to_surl);
@@ -877,7 +877,7 @@
                    &gfr_entry, 0, NULL, 0, &dblistptr)) == 0) {
                        bol = 0;
                        repfilep = rep->_Result->fileStatuses->__ptr[i];
-                       memset (repfilep, 0, sizeof(struct ns1__RequestFileStatus));
+                       memset (repfilep, 0, sizeof(struct ns2__RequestFileStatus));
                        repfilep->SURL = soap_strdup (soap, gfr_entry.from_surl);
                        repfilep->size = gfr_entry.actual_size;
                        repfilep->state = soap_strdup (soap, f_stat[gfr_entry.status >> 12]);
@@ -940,7 +940,7 @@
                    &pfr_entry, 0, NULL, 0, &dblistptr)) == 0) {
                        bol = 0;
                        repfilep = rep->_Result->fileStatuses->__ptr[i];
-                       memset (repfilep, 0, sizeof(struct ns1__RequestFileStatus));
+                       memset (repfilep, 0, sizeof(struct ns2__RequestFileStatus));
                        repfilep->SURL = soap_strdup (soap, pfr_entry.to_surl);
                        repfilep->size = pfr_entry.actual_size;
                        repfilep->state = soap_strdup (soap, f_stat[pfr_entry.status >> 12]);
@@ -971,7 +971,7 @@
        RETURN (SOAP_OK);
 }

-int ns5__getRequestStatus (struct soap *soap, int reqid, struct ns5__getRequestStatusResponse *rep)
+int ns6__getRequestStatus (struct soap *soap, int reqid, struct ns6__getRequestStatusResponse *rep)
 {
        int bol;
        int c;
@@ -988,7 +988,7 @@
        char *p;
        struct dpm_put_filereq pfr_entry;
        char r_token[CA_MAXDPMTOKENLEN+1];
-       struct ns1__RequestFileStatus *repfilep;
+       struct ns2__RequestFileStatus *repfilep;
        struct in_addr sin_addr;
        struct srm_srv_thread_info *thip = soap->user;
        char turl[CA_MAXSFNLEN+1];
@@ -1005,9 +1005,9 @@

        /* Allocate the reply structure */

-       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns1__RequestStatus))) == NULL)
+       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns2__RequestStatus))) == NULL)
                RETURN (SOAP_EOM);
-       memset (rep->_Result, 0, sizeof(struct ns1__RequestStatus));
+       memset (rep->_Result, 0, sizeof(struct ns2__RequestStatus));

        sprintf (logbuf, "getRequestStatus %d", reqid);
        srm_logreq (func, logbuf);
@@ -1044,13 +1044,13 @@
            (rep->_Result->fileStatuses =
                soap_malloc (soap, sizeof(struct ArrayOfRequestFileStatus))) == NULL ||
            (dpm_req.nbreqfiles > 0 && (rep->_Result->fileStatuses->__ptr =
-               soap_malloc (soap, dpm_req.nbreqfiles * sizeof(struct ns1__RequestFileStatus *))) == NULL))
+               soap_malloc (soap, dpm_req.nbreqfiles * sizeof(struct ns2__RequestFileStatus *))) == NULL))
                RETURN (SOAP_EOM);

        rep->_Result->fileStatuses->__size = dpm_req.nbreqfiles;
        for (i = 0; i < dpm_req.nbreqfiles; i++) {
                if ((rep->_Result->fileStatuses->__ptr[i] =
-                   soap_malloc (soap, sizeof(struct ns1__RequestFileStatus))) == NULL)
+                   soap_malloc (soap, sizeof(struct ns2__RequestFileStatus))) == NULL)
                        RETURN (SOAP_EOM);
        }
        rep->_Result->requestId = reqid;
@@ -1066,7 +1066,7 @@
                    &cpr_entry, 0, NULL, 0, &dblistptr)) == 0) {
                        bol = 0;
                        repfilep = rep->_Result->fileStatuses->__ptr[i];
-                       memset (repfilep, 0, sizeof(struct ns1__RequestFileStatus));
+                       memset (repfilep, 0, sizeof(struct ns2__RequestFileStatus));
                        repfilep->SURL = is_surl_local (cpr_entry.from_surl) ?
                                soap_strdup (soap, cpr_entry.from_surl) :
                                soap_strdup (soap, cpr_entry.to_surl);
@@ -1086,7 +1086,7 @@
                    &gfr_entry, 0, NULL, 0, &dblistptr)) == 0) {
                        bol = 0;
                        repfilep = rep->_Result->fileStatuses->__ptr[i];
-                       memset (repfilep, 0, sizeof(struct ns1__RequestFileStatus));
+                       memset (repfilep, 0, sizeof(struct ns2__RequestFileStatus));
                        repfilep->SURL = soap_strdup (soap, gfr_entry.from_surl);
                        repfilep->size = gfr_entry.actual_size;
                        repfilep->state = soap_strdup (soap, f_stat[gfr_entry.status >> 12]);
@@ -1111,7 +1111,7 @@
                    &pfr_entry, 0, NULL, 0, &dblistptr)) == 0) {
                        bol = 0;
                        repfilep = rep->_Result->fileStatuses->__ptr[i];
-                       memset (repfilep, 0, sizeof(struct ns1__RequestFileStatus));
+                       memset (repfilep, 0, sizeof(struct ns2__RequestFileStatus));
                        repfilep->SURL = soap_strdup (soap, pfr_entry.to_surl);
                        repfilep->size = pfr_entry.actual_size;
                        repfilep->state = soap_strdup (soap, f_stat[pfr_entry.status >> 12]);
@@ -1142,7 +1142,7 @@
        RETURN (SOAP_OK);
 }

-int ns5__getFileMetaData (struct soap *soap, struct ArrayOfstring *surlarray, struct ns5__getFileMetaDataResponse *rep)
+int ns6__getFileMetaData (struct soap *soap, struct ArrayOfstring *surlarray, struct ns6__getFileMetaDataResponse *rep)
 {
        char clientdn[256];
        char *clienthost;
@@ -1162,7 +1162,7 @@
        int nbfqans;
        int nbreqfiles;
        struct passwd *pw;
-       struct ns1__FileMetaData *repfilep;
+       struct ns2__FileMetaData *repfilep;
        char *sfn;
        struct in_addr sin_addr;
        struct Cns_filestatg st;
@@ -1196,7 +1196,7 @@
        nbreqfiles = surlarray->__size;
        if ((rep->_Result = soap_malloc (soap, sizeof(struct ArrayOfFileMetaData))) == NULL ||
            (rep->_Result->__ptr =
-               soap_malloc (soap, nbreqfiles * sizeof(struct ns1__FileMetaData *))) == NULL) {
+               soap_malloc (soap, nbreqfiles * sizeof(struct ns2__FileMetaData *))) == NULL) {
                RETURN (SOAP_EOM);
        }
        rep->_Result->__size = nbreqfiles;
@@ -1204,9 +1204,9 @@
                sprintf (logbuf, "getFileMetaData %.1103s", surlarray->__ptr[i]);
                srm_logreq (func, logbuf);
                if ((rep->_Result->__ptr[i] = repfilep =
-                   soap_malloc (soap, sizeof(struct ns1__FileMetaData))) == NULL)
+                   soap_malloc (soap, sizeof(struct ns2__FileMetaData))) == NULL)
                        RETURN (SOAP_EOM);
-               memset (repfilep, 0, sizeof(struct ns1__FileMetaData));
+               memset (repfilep, 0, sizeof(struct ns2__FileMetaData));
                if ((sfn = sfnfromsurl (surlarray->__ptr[i])) == NULL) {
                        nb_file_err++;
                        if (! errmsg)
@@ -1234,11 +1234,11 @@
                curtime = time (0);
                while ((lp = Cns_listreplica (sfn, NULL, flags, &list)) != NULL) {
                        flags = CNS_LIST_CONTINUE;
-                       repfilep->isCached = true_;
+                       repfilep->isCached = xsd__boolean__true_;
                        if (lp->ptime > curtime)
-                               repfilep->isPinned = true_;
+                               repfilep->isPinned = xsd__boolean__true_;
                        if (lp->f_type == 'P')
-                               repfilep->isPermanent = true_;
+                               repfilep->isPermanent = xsd__boolean__true_;
                }
                (void) Cns_listreplica (sfn, NULL, CNS_LIST_END, &list);
        }
@@ -1249,7 +1249,7 @@
        RETURN (SOAP_OK);
 }

-int ns5__mkPermanent (struct soap *soap, struct ArrayOfstring *surlarray, struct ns5__mkPermanentResponse *rep)
+int ns6__mkPermanent (struct soap *soap, struct ArrayOfstring *surlarray, struct ns6__mkPermanentResponse *rep)
 {
        char clientdn[256];
        char *clienthost;
@@ -1268,15 +1268,15 @@
                clienthost = hp->h_name;
        srmlogit (func, "request by %s from %s\n", clientdn, clienthost);

-       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns1__RequestStatus))) == NULL)
+       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns2__RequestStatus))) == NULL)
                RETURN (SOAP_EOM);
-       memset (rep->_Result, 0, sizeof(struct ns1__RequestStatus));
+       memset (rep->_Result, 0, sizeof(struct ns2__RequestStatus));
        rep->_Result->state = soap_strdup (soap, "Failed");
        rep->_Result->errorMessage = soap_strdup (soap, "Method not supported");
        RETURN (SOAP_OK);
 }

-int ns5__getEstGetTime (struct soap *soap, struct ArrayOfstring *surlarray, struct ArrayOfstring *protoarray, struct ns5__getEstGetTimeResponse *rep)
+int ns6__getEstGetTime (struct soap *soap, struct ArrayOfstring *surlarray, struct ArrayOfstring *protoarray, struct ns6__getEstGetTimeResponse *rep)
 {
        char clientdn[256];
        char *clienthost;
@@ -1295,15 +1295,15 @@
                clienthost = hp->h_name;
        srmlogit (func, "request by %s from %s\n", clientdn, clienthost);

-       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns1__RequestStatus))) == NULL)
+       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns2__RequestStatus))) == NULL)
                RETURN (SOAP_EOM);
-       memset (rep->_Result, 0, sizeof(struct ns1__RequestStatus));
+       memset (rep->_Result, 0, sizeof(struct ns2__RequestStatus));
        rep->_Result->state = soap_strdup (soap, "Failed");
        rep->_Result->errorMessage = soap_strdup (soap, "Method not supported");
        RETURN (SOAP_OK);
 }

-int ns5__getEstPutTime (struct soap *soap, struct ArrayOfstring *srcarray, struct ArrayOfstring *surlarray, struct ArrayOflong *sizearray, struct ArrayOfboolean *permarray, struct ArrayOfstring *protoarray, struct ns5__getEstPutTimeResponse *rep)
+int ns6__getEstPutTime (struct soap *soap, struct ArrayOfstring *srcarray, struct ArrayOfstring *surlarray, struct ArrayOflong *sizearray, struct ArrayOfboolean *permarray, struct ArrayOfstring *protoarray, struct ns6__getEstPutTimeResponse *rep)
 {
        char clientdn[256];
        char *clienthost;
@@ -1322,15 +1322,15 @@
                clienthost = hp->h_name;
        srmlogit (func, "request by %s from %s\n", clientdn, clienthost);

-       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns1__RequestStatus))) == NULL)
+       if ((rep->_Result = soap_malloc (soap, sizeof(struct ns2__RequestStatus))) == NULL)
                RETURN (SOAP_EOM);
-       memset (rep->_Result, 0, sizeof(struct ns1__RequestStatus));
+       memset (rep->_Result, 0, sizeof(struct ns2__RequestStatus));
        rep->_Result->state = soap_strdup (soap, "Failed");
        rep->_Result->errorMessage = soap_strdup (soap, "Method not supported");
        RETURN (SOAP_OK);
 }

-int ns5__advisoryDelete (struct soap *soap, struct ArrayOfstring *surlarray, struct ns5__advisoryDeleteResponse *rep)
+int ns6__advisoryDelete (struct soap *soap, struct ArrayOfstring *surlarray, struct ns6__advisoryDeleteResponse *rep)
 {
        char clientdn[256];
        char *clienthost;
@@ -1379,7 +1379,7 @@
        RETURN (SOAP_OK);
 }

-int ns5__getProtocols (struct soap *soap, struct ns5__getProtocolsResponse *rep)
+int ns6__getProtocols (struct soap *soap, struct ns6__getProtocolsResponse *rep)
 {
        char clientdn[256];
        char *clienthost;
    • 13-srmv2_gSOAP_convention.diff
--- srmv2/srmv2.c.old   Fri Jun 16 11:50:51 2006
+++ srmv2/srmv2.c       Fri Jun 16 11:52:54 2006
@@ -222,16 +222,16 @@
        case ENOENT:
        case ENOTDIR:
        case ENAMETOOLONG:
-               return (SRM_USCOREINVALID_USCOREPATH);
+               return (ns1__TStatusCode__SRM_USCOREINVALID_USCOREPATH);
        case EACCES:
-               return (SRM_USCOREUNAUATHORIZED_USCOREACCESS);
+               return (ns1__TStatusCode__SRM_USCOREUNAUATHORIZED_USCOREACCESS);
        case EEXIST:
-               return (SRM_USCOREDUPLICATION_USCOREERROR);
+               return (ns1__TStatusCode__SRM_USCOREDUPLICATION_USCOREERROR);
        case EINVAL:
-               return (SRM_USCOREINVALID_USCOREREQUEST);
+               return (ns1__TStatusCode__SRM_USCOREINVALID_USCOREREQUEST);
        case ENOSPC:
-               return (SRM_USCORENO_USCOREFREE_USCORESPACE);
+               return (ns1__TStatusCode__SRM_USCORENO_USCOREFREE_USCORESPACE);
        default:
-               return (SRM_USCOREFAILURE);
+               return (ns1__TStatusCode__SRM_USCOREFAILURE);
        }
 }
--- srmv2/srmv2_dirreq.c.old    Fri Jun 16 11:53:36 2006
+++ srmv2/srmv2_dirreq.c        Fri Jun 16 12:01:20 2006
@@ -64,7 +64,7 @@
        rep->srmMkdirResponse = repp;

        if (get_client_full_id (soap, clientdn, &voname, &fqan, &nbfqans, &uid, &gid) < 0) {
-               repp->returnStatus->statusCode = SRM_USCOREAUTHENTICATION_USCOREFAILURE;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREAUTHENTICATION_USCOREFAILURE;
                repp->returnStatus->explanation = soap_strdup (soap, "Could not get user mapping");
                RETURN (SOAP_OK);
        }
@@ -71,13 +71,13 @@

        if (! req->directoryPath || ! req->directoryPath->SURLOrStFN ||
            ! req->directoryPath->SURLOrStFN->value) {
-               repp->returnStatus->statusCode = SRM_USCOREFAILURE;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREFAILURE;
                repp->returnStatus->explanation = soap_strdup (soap, "directoryPath is required");
                RETURN (SOAP_OK);
        }
        if (strlen (req->directoryPath->SURLOrStFN->value) > CA_MAXSFNLEN ||
            (sfn = sfnfromsurl (req->directoryPath->SURLOrStFN->value)) == NULL) {
-               repp->returnStatus->statusCode = SRM_USCOREINVALID_USCOREPATH;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREINVALID_USCOREPATH;
                RETURN (SOAP_OK);
        }
        sprintf (logbuf, "Mkdir %s", req->directoryPath->SURLOrStFN->value);
@@ -92,7 +92,7 @@
                repp->returnStatus->explanation = soap_strdup (soap, sstrerror (serrno));
                repp->returnStatus->statusCode = serrno2statuscode (serrno);
        } else
-               repp->returnStatus->statusCode = SRM_USCORESUCCESS;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCORESUCCESS;
        RETURN (SOAP_OK);
 }

@@ -138,7 +138,7 @@
        rep->srmRmdirResponse = repp;

        if (get_client_full_id (soap, clientdn, &voname, &fqan, &nbfqans, &uid, &gid) < 0) {
-               repp->returnStatus->statusCode = SRM_USCOREAUTHENTICATION_USCOREFAILURE;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREAUTHENTICATION_USCOREFAILURE;
                repp->returnStatus->explanation = soap_strdup (soap, "Could not get user mapping");
                RETURN (SOAP_OK);
        }
@@ -145,17 +145,17 @@

        if (! req->directoryPath || ! req->directoryPath->SURLOrStFN ||
            ! req->directoryPath->SURLOrStFN->value) {
-               repp->returnStatus->statusCode = SRM_USCOREFAILURE;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREFAILURE;
                repp->returnStatus->explanation = soap_strdup (soap, "directoryPath is required");
                RETURN (SOAP_OK);
        }
        if (strlen (req->directoryPath->SURLOrStFN->value) > CA_MAXSFNLEN ||
            (sfn = sfnfromsurl (req->directoryPath->SURLOrStFN->value)) == NULL) {
-               repp->returnStatus->statusCode = SRM_USCOREINVALID_USCOREPATH;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREINVALID_USCOREPATH;
                RETURN (SOAP_OK);
        }
-       if (req->recursive && *req->recursive == true_) {
-               repp->returnStatus->statusCode = SRM_USCORENOT_USCORESUPPORTED;
+       if (req->recursive && *req->recursive == xsd__boolean__true_) {
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCORENOT_USCORESUPPORTED;
                RETURN (SOAP_OK);
        }
        sprintf (logbuf, "Rmdir %s", req->directoryPath->SURLOrStFN->value);
@@ -169,11 +169,11 @@
        if (Cns_rmdir (sfn) < 0) {
                repp->returnStatus->explanation = soap_strdup (soap, sstrerror (serrno));
                if (serrno == EEXIST)
-                       repp->returnStatus->statusCode = SRM_USCORENON_USCOREEMPTY_USCOREDIRECTORY;
+                       repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCORENON_USCOREEMPTY_USCOREDIRECTORY;
                else
                        repp->returnStatus->statusCode = serrno2statuscode (serrno);
        } else
-               repp->returnStatus->statusCode = SRM_USCORESUCCESS;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCORESUCCESS;
        RETURN (SOAP_OK);
 }

@@ -225,13 +225,13 @@
        rep->srmRmResponse = repp;

        if (get_client_full_id (soap, clientdn, &voname, &fqan, &nbfqans, &uid, &gid) < 0) {
-               repp->returnStatus->statusCode = SRM_USCOREAUTHENTICATION_USCOREFAILURE;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREAUTHENTICATION_USCOREFAILURE;
                repp->returnStatus->explanation = soap_strdup (soap, "Could not get user mapping");
                RETURN (SOAP_OK);
        }

        if (! req->arrayOfFilePaths) {
-               repp->returnStatus->statusCode = SRM_USCOREFAILURE;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREFAILURE;
                repp->returnStatus->explanation = soap_strdup (soap, "arrayOfFilePaths is required");
                RETURN (SOAP_OK);
        }
@@ -284,7 +284,7 @@
                repfilep = repp->arrayOfFileStatuses->surlReturnStatusArray[i];
                repfilep->surl = req->arrayOfFilePaths->surlInfoArray[i]->SURLOrStFN;
                if (! req->arrayOfFilePaths->surlInfoArray[i]->SURLOrStFN->value) {
-                       repfilep->status->statusCode = SRM_USCOREINVALID_USCOREPATH;
+                       repfilep->status->statusCode = ns1__TStatusCode__SRM_USCOREINVALID_USCOREPATH;
                        repfilep->status->explanation =
                                soap_strdup (soap, "Pointer to SURL is NULL");
                        continue;
@@ -301,7 +301,7 @@
                        repfilep->status->explanation = NULL;
        }
        free (filestatuses);
-       repp->returnStatus->statusCode = j ? SRM_USCORESUCCESS : SRM_USCOREFAILURE;
+       repp->returnStatus->statusCode = j ? ns1__TStatusCode__SRM_USCORESUCCESS : ns1__TStatusCode__SRM_USCOREFAILURE;
        RETURN (SOAP_OK);
 }

@@ -359,13 +359,13 @@
        memset (repfilep->status, 0, sizeof(struct ns1__TReturnStatus));
        if (! statbuf) {
                if (! path) {
-                       repfilep->status->statusCode = SRM_USCOREINVALID_USCOREPATH;
+                       repfilep->status->statusCode = ns1__TStatusCode__SRM_USCOREINVALID_USCOREPATH;
                        repfilep->status->explanation = soap_strdup (soap, "Pointer to SURL is NULL");
                        return (-1);
                }
                if (strlen (path) >= CA_MAXSFNLEN ||
                    (sfn = sfnfromsurl (path)) == NULL) {
-                       repfilep->status->statusCode = SRM_USCOREINVALID_USCOREPATH;
+                       repfilep->status->statusCode = ns1__TStatusCode__SRM_USCOREINVALID_USCOREPATH;
                        return (-1);
                }
                repfilep->path = sfn;
@@ -551,13 +551,13 @@
        rep->srmLsResponse = repp;

        if (get_client_full_id (soap, clientdn, &voname, &fqan, &nbfqans, &uid, &gid) < 0) {
-               repp->returnStatus->statusCode = SRM_USCOREAUTHENTICATION_USCOREFAILURE;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREAUTHENTICATION_USCOREFAILURE;
                repp->returnStatus->explanation = soap_strdup (soap, "Could not get user mapping");
                RETURN (SOAP_OK);
        }

        if (! req->paths) {
-               repp->returnStatus->statusCode = SRM_USCOREFAILURE;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREFAILURE;
                repp->returnStatus->explanation = soap_strdup (soap, "paths is required");
                RETURN (SOAP_OK);
        }
@@ -564,7 +564,7 @@
        if (req->fileStorageType ||
            (req->allLevelRecursive && *req->allLevelRecursive) ||
            (req->numOfLevels && *req->numOfLevels > 1)) {
-               repp->returnStatus->statusCode = SRM_USCORENOT_USCORESUPPORTED;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCORENOT_USCORESUPPORTED;
                RETURN (SOAP_OK);
        }
        if (req->numOfLevels)
@@ -571,7 +571,7 @@
                nblevels = *req->numOfLevels;
        else
                nblevels = 0;
-       if (req->fullDetailedList && *req->fullDetailedList == true_)
+       if (req->fullDetailedList && *req->fullDetailedList == xsd__boolean__true_)
                fflag = 1;
        else
                fflag = 0;
@@ -603,8 +603,8 @@
                        nb_file_err++;
        }
        repp->returnStatus->statusCode = (nb_file_err != nbsurls) ?
-               SRM_USCORESUCCESS : (nbsurls == 1) ?
-               repp->details->pathDetailArray[0]->status->statusCode : SRM_USCOREFAILURE;
+               ns1__TStatusCode__SRM_USCORESUCCESS : (nbsurls == 1) ?
+               repp->details->pathDetailArray[0]->status->statusCode : ns1__TStatusCode__SRM_USCOREFAILURE;
        RETURN (SOAP_OK);
 }

@@ -651,7 +651,7 @@
        rep->srmMvResponse = repp;

        if (get_client_full_id (soap, clientdn, &voname, &fqan, &nbfqans, &uid, &gid) < 0) {
-               repp->returnStatus->statusCode = SRM_USCOREAUTHENTICATION_USCOREFAILURE;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREAUTHENTICATION_USCOREFAILURE;
                repp->returnStatus->explanation = soap_strdup (soap, "Could not get user mapping");
                RETURN (SOAP_OK);
        }
@@ -658,13 +658,13 @@

        if (! req->fromPath || ! req->fromPath->SURLOrStFN ||
            ! req->fromPath->SURLOrStFN->value) {
-               repp->returnStatus->statusCode = SRM_USCOREFAILURE;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREFAILURE;
                repp->returnStatus->explanation = soap_strdup (soap, "fromPath is required");
                RETURN (SOAP_OK);
        }
        if (! req->toPath || ! req->toPath->SURLOrStFN ||
            ! req->toPath->SURLOrStFN->value) {
-               repp->returnStatus->statusCode = SRM_USCOREFAILURE;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREFAILURE;
                repp->returnStatus->explanation = soap_strdup (soap, "toPath is required");
                RETURN (SOAP_OK);
        }
@@ -672,7 +672,7 @@
            strlen (req->toPath->SURLOrStFN->value) > CA_MAXSFNLEN ||
            (sfn1 = sfnfromsurl (req->fromPath->SURLOrStFN->value)) == NULL ||
            (sfn2 = sfnfromsurl (req->toPath->SURLOrStFN->value)) == NULL) {
-               repp->returnStatus->statusCode = SRM_USCOREINVALID_USCOREPATH;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCOREINVALID_USCOREPATH;
                RETURN (SOAP_OK);
        }
        sprintf (logbuf, "Mv %s %s", req->fromPath->SURLOrStFN->value,
@@ -688,6 +688,6 @@
                repp->returnStatus->explanation = soap_strdup (soap, sstrerror (serrno));
                repp->returnStatus->statusCode = serrno2statuscode (serrno);
        } else
-               repp->returnStatus->statusCode = SRM_USCORESUCCESS;
+               repp->returnStatus->statusCode = ns1__TStatusCode__SRM_USCORESUCCESS;
        RETURN (SOAP_OK);
 }
--- srmv2_dirreq.c.old  Thu Jul 20 11:49:12 2006
+++ srmv2_dirreq.c      Thu Jul 20 11:50:09 2006
@@ -339,7 +339,7 @@
 {
        struct Cns_acl acl[CA_MAXACLENTRIES];
        struct Cns_acl *aclp;
-       static enum ns1__TFileType ftypes[] = {File, Directory, Link};
+       static enum ns1__TFileType ftypes[] = {ns1__TFileType__File, ns1__TFileType__Directory, ns1__TFileType__Link};
        struct group *gr;
        int ig;
        int iu;
@@ -383,11 +383,11 @@
            soap_malloc (soap, sizeof(struct ns1__TSizeInBytes))))
                repfilep->size->value = (st.filemode & S_IFDIR) ? 0 : st.filesize;
        if (st.filemode & S_IFDIR)
-               repfilep->type = &ftypes[Directory];
+               repfilep->type = &ftypes[ns1__TFileType__Directory];
        else if (st.filemode & S_IFREG)
-               repfilep->type = &ftypes[File];
+               repfilep->type = &ftypes[ns1__TFileType__File];
        else
-               repfilep->type = &ftypes[Link];
+               repfilep->type = &ftypes[ns1__TFileType__Link];
        if (fflag == 0)
                goto end_entry;
        if ((repfilep->ownerPermission =
  • Configure:
% ./configure
  • Build:
% make
  • Current build failures:
gcc -DSOLARIS -DSOLARIS25 -fPIC -DPIC -g -I../h -I/homes/dwm99/include -DCTHREAD_POSIX -D_THREAD_SAFE -D_REEN
TRANT -DDPMCONFIG=\"/opt/lcg/etc/DPMCONFIG\" -DLOGFILE=\"/var/log/srmv2/log\"  -DUSE_MYSQL -DCSEC -DVIRTUAL_I
D -DUSE_VOMS  -I/homes/dwm99/include/mysql   -c -o srmv2_dirreq.o srmv2_dirreq.c
srmv2_dirreq.c: In function 'ns1__srmRm':
srmv2_dirreq.c:253: error: invalid type argument of '->'
srmv2_dirreq.c:255: error: incompatible types in assignment
srmv2_dirreq.c:256: error: invalid type argument of '->'
srmv2_dirreq.c:284: error: incompatible types in assignment
srmv2_dirreq.c:285: error: invalid type argument of '->'
srmv2_dirreq.c:286: error: invalid type argument of '->'
srmv2_dirreq.c: In function 'listdir':
srmv2_dirreq.c:327: error: incompatible types in assignment
srmv2_dirreq.c: In function 'listentry':
srmv2_dirreq.c:421: error: incompatible types in assignment
srmv2_dirreq.c:422: error: invalid type argument of '->'
srmv2_dirreq.c:424: error: invalid type argument of '->'
srmv2_dirreq.c:426: error: invalid type argument of '->'
srmv2_dirreq.c:432: error: incompatible types in assignment
srmv2_dirreq.c:433: error: invalid type argument of '->'
srmv2_dirreq.c:435: error: invalid type argument of '->'
srmv2_dirreq.c:437: error: invalid type argument of '->'
srmv2_dirreq.c:454: error: incompatible types in assignment
srmv2_dirreq.c:455: error: invalid type argument of '->'
srmv2_dirreq.c:457: error: invalid type argument of '->'
srmv2_dirreq.c:459: error: invalid type argument of '->'
srmv2_dirreq.c: In function 'ns1__srmLs':
srmv2_dirreq.c:593: error: invalid type argument of '->'
srmv2_dirreq.c:596: error: incompatible types in assignment
srmv2_dirreq.c:598: error: invalid type argument of '->'
srmv2_dirreq.c:599: error: incompatible type for argument 7 of 'listentry'
srmv2_dirreq.c:607: error: invalid type argument of '->'
make: *** [srmv2_dirreq.o] Error 1
[...]
gcc -DSOLARIS -DSOLARIS25 -fPIC -DPIC  -DCTHREAD_POSIX -D_THREAD_SAFE -D_REENTRANT -g -DCSEC_DEFAULT_MECHS="\"GSI  ID\"" -I../h -Dwith_pthr_suffix -DGSI -I/homes/dwm99/stow/gt-2.4.3/include/gcc32dbgpthr -I/homes/dwm99/include/glite/security/voms -DUSE_VOMS        -o Csec_plugin_GSI_pthr.o -c Csec_plugin_GSS.c
Csec_plugin_GSS.c:58:31: error: globus_gss_assist.h: No such file or directory
Csec_plugin_GSS.c:59:30: error: globus_gsi_proxy.h: No such file or directory
Csec_plugin_GSS.c:60:25: error: openssl/ssl.h: No such file or directory
In file included from Csec_plugin_GSS.c:62: