NorduGrid Downloads - globus information

The Globus Toolkit ® is an open source software toolkit used for building grids. It is being developed by the Globus Alliance and many others all over the world.

NorduGrid creates and maintains its own globus distribution. A small subset of globus packages required to build and use ARC middleware constitutes the globus-ng distribution. The modifications are the followings:

Look here for a detailed description about the old obsolete NorduGrid version of Globus Toolkit 2.

Packaging information

Globus is originally packaged using GPT. GPT is a very interesting package system and in many places better than other similar initiatives. The main problems with GPT and similar initiatives are integration into more standard (wide-spread) packages systems like RPM and DPKG.

Naming

The Globus packages have now been split into subpackages according to the original GPT layout. However in contrast to GPT we produce a maximum of 2 subpackages per main Globus package where GPT produce several (eg. dev, rtl, ...). As a example the globus_common Globus package results in 2 RPMs:
globus_common
globus_common-devel
as is custom on most Linux distribution. The naming of packages are close to the way Red Hat and Fedora name their packages. Other distributions like Debian and Mandrake have different naming conventions, but it was decided to not use different package names on different systems.

Wrapper packages

Globus distributes some common software (sometimes slightly modified) along with their own software. This has advantages and disadvantages which will not be discussed here. NorduGrid have chosen to rely on the software that comes with the operating distributions. This means some tricks in the form of wrapper packages has been made to keep GPT happy. The following common software which is packaged as part of Globus have been replaced with wrapper packages where they were needed: The following packages were not wrapped since they are not used by ARC. The changes made in the Globus versions of the packages above are mainly changes that makes them comply with the GPT build procedure. GPT uses dependency information in order build against packages. This information is needed by packages dependent on the above so it is not possible to completely remove the packages without doing a serious change in all packages. Instead the wrapper packages contains enough information to satisfy the dependant packages so they do not need any changes.
  Example:

    globus_gssapi_gsi requires globus_openssl during build and runtime.

    globus_openssl is removed and replaced by a new RPM package called:

       openssl-globus

    This RPM package will provide the necessary necessary gpt files in:

      /opt/globus/etc/gpt/packages/globus_openssl/

	From the GPT build systems point of view it looks as though there is a
	file called globus_openssl. The build information is changed so that
	instead of linking to:

        -lssl_<flavor> -lcrypto_<flavor>

    The linking is now simply done against:

        -lssl -lcrypto

    The RPM package will also have a subpackage called
    openssl-globus-devel. In order to satisfy the globus_gssapi_gsi RPM
    dependencies:

          Requires: globus_openssl 
          BuildRequires: globus_openssl-devel

    Virtual provides are placed in openssl-globus and openssl-globus-devel:

          openssl-globus:
            Provides: globus_openssl 

          openssl-globus-devel:
          Provides: globus_openssl-devel

Patches

Standard GPT Build instructions are altered for all packages to not include the install step. This is handled by an automatic patch creation before packaging the src.rpms. Thus instead of the combined action of:
    $ make distclean
    $ ./configure --with-flavor=FLAVOR
    $ make
    $ make install
the Build_Instructions after patching only does:
    $ make distclean
    $ ./configure --with-flavor=FLAVOR
    $ make
This is done to improve support of the split RPM building of %build and %install and to better accomodate DESTDIR. So the install part is done via:
    $ make install DESTDIR=$RPM_BUILD_ROOT
The reason why the gpt build is not abandoned all together is because it still does some work including macro substitution in addition to the 4 build steps described above and file list generation. That is not to say GPT is a bad thing, but that discussion is out of the scope of this document. An alternative approach is to patch GPT itself but that was not done because that would render this GPT incompatible with the original one. The automatically generated patches are named: <globus_package>-<.patch and can be found here.

Additional patches have been added to the various packages. The naming of these patches are: <globus_package>-<patch_functionality>.patch. These patches are found under the src/patches directory under each Globus version:


  http://ftp.nordugrid.org/software/globus/releases/<version>/src/patches

Build information

These instructions apply to the NorduGrid release of Globus from version 4.0.3-0.5 an onwards. From this release the Globus packages have been packaged in more standard way which does not require special external settings.

In particular you do not need to set GLOBUS_LOCATION or GPT_LOCATION. The way the software is found is by looking through the PATH variable for recognisable programs and then default to /opt/globus and /opt/gpt respectively.

The building of packages are currently very RPM centric and the definite source is in .src.rpm format. This means that the easiest way to build the packages is to use the low-level rpmbuild tool or something similar. With rpmbuild which is part of the RPM distribution there is no automatic way of tracking build dependencies so one must use a specific build order. The recommended order is:
#
# NorduGrid Build requirements
#
gpt
libtool_globus
globus_core
globus_common globus_common_setup
#
# Use globus_openssl instead of openssl_globus
# if your system openssl is incompatible
#
openssl_globus
globus_gsi_openssl_error
globus_gsi_proxy_ssl
globus_openssl_module
globus_gsi_cert_utils
globus_gsi_sysconfig
globus_gsi_callback
globus_gsi_credential
globus_gsi_proxy_core
globus_gssapi_gsi
globus_callout
globus_gss_assist
gssapi_error
globus_xio
globus_io
globus_ftp_control
#globus_cyrus-sasl
globus_openldap
globus_ldapmodules
#
globus_rsl
globus_gass_transfer
globus_ftp_client
globus_rls_client
#
# Not needed for ARC build, but nice to have - especially in standalone
#
globus_user_env
globus_proxy_utils
globus_gass_copy
#
# Not needed for ARC build, but needed runtime by ARC server
#
globus_mds_common
globus_mds_common_setup
globus_mds_back_giis
globus_mds_gris
globus_mds_gris_setup
#
# And RLS server requirements
#
globus_usage
globus_rls_server
globus_rls_server_setup

For each package do something like:
rpmbuild --rebuild globus_common-7.20-0.5.src.rpm
Install the resulting binary RPMs and proceed to the next package. For those packages which have a corresponding setup package (like globus_common) also build the setup package and install the binary RPMs for both in single RPM transaction.

Changelog information

2007-09-09 : globus-4.0.5-0.8


* Sun Sep  9 2007 Anders Waananen  4.0.5-0.8

- Added fix for wrong null pointer check by Mattias Ellert 

  globus_xio_nullchk.patch

  (NorduGrid bug #986 and Globus bug #5421) 

- Compile globus_openssl without assembler optimization since it currently is
   not relocatable and thus gives SELinux errors on SELinux enabled systems

- Drop database dependencies in globus_rls_server_setup

2007-07-03 : globus-4.0.5-0.7


* Thu Jun 28 2007 Anders Waananen  4.0.5-0.7

- Update to upstream 4.0.5.                                                                                 

- Updated gridftp V2 patches (gt4.0.4-gfd.47-4.patch)

* Mon May 28 2007 Anders Waananen  4.0.4-0.6

- Added support for longer strings in RLS by Mattias Ellert 

  globus_rls_server-strlen.patch
  globus_rls_server_setup-strlen.patch

- Added gridftp V2 client support by Gerd Behrmann 

  globus_ftp_client-gridftp_v2.patch
  globus_gass_copy-gridftp_v2.patch

- Added deref null pointer fix by Aake Sandgren 

  globus_common-null_pointer_deref.patch

- Added Autoconf checks for useful functions by Aake Sandgren 

  globus_core-funcs.patch

- Revorked globus_core-iov_max.patch to work with globus_core-4.33

2006-11-27 : globus-4.0.3-0.5

- Update to upstream 4.0.3.
- Includes bugfixes and relocatability (no rpath hardcoding!)
	- Official updates to 4.0.3 as of 2006-11-27:
    - globus_gass_transfer-2.11
    - globus_xio-0.35
	- Changes in patches:
    - Modified:
      - globus_core-iov_max.patch
	  - Now fixed in upstream and thus removed:
      - globus_gsi_credential-memleak.patch
      - globus_mds_back_giis-badstatic.patch
      - globus_rls_server-lodbc.patch
      - Added for working with OpenSSL 0.9.8+ (mostly taken from Globus CVS):
        - globus_gsi_callback-openssl098.patch
        - globus_gsi_credential-openssl098.patch
        - globus_gssapi_gsi-openssl098.patch
	  - Split globus_libtool into 2 packages: runtime and devel
  - Better libtool and libltdl dependencies on various Linux distros
  - Add build dependency unixODBC-devel to globus_rls_server
  - Fix dependency bug on where packages depends on a devel package without version
  - Autodetect GPT from PATH
    - gpt-build must be in the path
    - last restort check in /opt/gpt
	  - Autodetect GLOBUS_LOCATION from PATH (default /opt/globus)
		  - libtool-<flavor> (from globus_core) must be in the path
    - last restort check in /opt/globus
  - Files created during post-install are now removed when the package is removed
  - Fix packages so they pass Fedora mock builds

Page last modified: 2008-04-23 15:08