NORDUGRID-TECH-5

NorduGrid ARC Middleware Build Procedure

This document describes the build procedure of the NorduGrid ARC v0.6.x middleware from tarball or from source RPM. This is a Web-friendly variant of the INSTALL file distributed with the middleware. When building older versions of ARC, always consult the INSTALL file in the distribution.

This document is mostly focused and tested on RedHat-like distributions. For Debian-like systems (especially Ubuntu), check ARC build notes by NDGF. They are reported to be suitable for other systems, too.

Dependencies

Before trying to compile the ARC middleware make sure you have installed the following software packages:

Note that NorduGrid provides packaged versions of GPT, Globus, gSOAP, VOMS, and it is highly recommended to use these packages if possible. The rest of the dependencies are available in any standard Linux distribution.

Basic build with autotools

Make sure that GPT_LOCATION and GLOBUS_LOCATION environment variables are set properly

The build is using the GNU autotools. This means that a standard installation can be made with:

./bootstrap
./configure
make
make install

The configure script accepts the usual options with the addition of: (defaults in square brackets)

--disable-python-wrappersDisable Python wrappers for ARCLIB
--disable-pkgdirsDo not use pkg directories. Useful for /opt/nordugrid installation.
--disable-vomsDisable VOMS support
--disable-lcasDisable LCAS support
--disable-lcmapsDisable LCMAPS support
--enable-experimentalEnable experimental code
--disable-rpath-hackDo not rpath Globus libraries in binaries
--enable-docsBuild the documentation
  
--with sysv-scripts-location=<PATH>Location of the SYSV init scripts [autodetect]
--with-monitor-prefix=<PATH>Specify the location of the Grid Monitor WWW scripts [/var/www/html/gridmonitor]
--with-monitor-local-prefix=<PATH>Specify the relative location of the Grid Monitor WWW scripts [gridmonitor]
--with-cron-scripts-prefix=<PATH>Specify the location of the cron directory [/etc/cron.d]
--with-profile-scripts-prefix=<PATH>Specify the location of the profile directory [/etc/profile.d]
--with-gsoap-location=<PATH>Specify the gSOAP installation path [autodetect]
--with-mysql-location=<PATH>Specify the MySQL installation path [autodetect]
--with-libxml-location=<PATH>Specify the libxml installation path [autodetect]
--with-gacl-location=<PATH>Specify the GACL installation path [/opt/gridsite|autodetect]
--with-default-globus-location=<PATH>Specify the default globus location. [/opt/globus]
--with-globus-location=<PATH>Specify the globus installation path
--with-gpt-location=<PATH>Specify the gpt installation path
--with-globus-makefile-headerUse globus-makefile-header to generate makefile stubs
--with-flavor=<flavor>Specify the globus build flavor or without-flavor for a flavor independent
--with-voms-location=<PATH>Specify the VOMS installation path [/opt/voms]
--with-lcas-location=<PATH>Specify the LCAS installation path [/opt/edg]
--with-lcmaps-location=<PATH>Specify the LCMAPS installation path [/opt/edg]
--with-qtdir=<PATH>Specify the QT installation path [autodetect]

Note that using --disable-pkgdirs will install the software without package directories suitable for /opt/nordugrid installation:

/opt/nordugrid/bin
/opt/nordugrid/lib
/opt/nordugrid/libexec
..

A "standard" install using the --prefix=/usr/local will place the software in nordugrid subdirectories:

/usr/local/bin
/usr/local/lib/nordugrid
/usr/local/libexec/nordugrid
..

Please note that make builds the full middleware containing server, client, monitor and documentation. Modular builds (such as make client, or make server) are not supported yet.

Building with RPM

Make sure that GPT_LOCATION and GLOBUS_LOCATION environment variables are set properly

ARC can be built using RPM. From a tar.gz file do:

rpmbuild -ta nordugrid-arc-<version>.tar.gz

and from a .src.rpm do:

rpmbuild --rebuild nordugrid-arc-<version>.src.rpm

Source RPMs are configured with the --disable-pkgdirs switch and binary builds are relocatable (consult the relocation instructions).

In terms of RPMs the build requirements can be satisfied with the following packages:

Note that the naming convention above might not correspond exactly to the naming used on your system. Also be aware that on some systems the RPM dependencies are broken. This means for example that libxml2 is not explicitly required by lixml2-devel which it should be.

Binary RPM: runtime requirements

The RPMs created by rpmbuild are:

nordugrid-arc-clientClient programs
nordugrid-arc-serverServers
nordugrid-arc-logger-serverLogger server
nordugrid-arc-gridmap-utilsUtilities for managing gridmap-files
nordugrid-arc-ca-utilsUtilities for mainting CA files
nordugrid-arc-monitorGrid monitor web interface (should be installed on a Web server in a convenient directory)
nordugrid-arc-docDocumentation
nordugrid-arc-libsRuntime libraries
nordugrid-arc-libs-develDevelopment files (headers, static libs)
nordugrid-arc-pythonPython bindings of arclib
nordugrid-arc-compatOld client tools

Runtime dependencies

The strict runtime RPM dependencies are:

nordugrid-arc-libsglobus, gsoap, libxml2 >= 2.4.0
nordugrid-arc-libs-develnordugrid-arc-libs
nordugrid-arc-clientnordugrid-arc-libs, globus, gsoap, libxml2 >= 2.4.0
nordugrid-arc-compatnordugrid-arc-client, globus, gsoap, libxml2 >= 2.4.0
nordugrid-arc-pythonnordugrid-arc-libs, globus, gsoap, libxml2 >= 2.4.0
nordugrid-arc-servernordugrid-arc-libs, globus, gsoap, libxml2 >= 2.4.0, voms >= 1.6.7
nordugrid-arc-logger-servernordugrid-arc-libs, globus, gsoap, nordugrid-arc-server, mysql
nordugrid-arc-gridmap-utilsperl modules (Net::LDAP, XML::DOM, LWP::UserAgent, URI)
nordugrid-arc-ca-utilswget

Requirements not expressed in the RPM requirements

nordugrid-arc-serverstandard Perl environment
nordugrid-arc-ca-utilsopenssl (native or globus-provided)
nordugrid-arc-gridmap-utilsopenssl (native or globus-provided) and optional (preferably) curl >= 7.9.8

Special requirements of the Grid Monitor (not expressed in RPM requirements):

nordugrid-arc-monitorphp4 or php5, php-ldap, php-gd, openldap, webserver
NorduGrid homepage