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-develas 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:- libtool
- openssl
- openldap (not replaced)
- libxml2
- xmlsec1
- cyrus-sasl
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 globus_libtool globus_core globus_common globus_common_setup globus_openssl 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_setupFor each package do something like:
rpmbuild --rebuild globus_common-7.20-0.5.src.rpmInstall 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
2008-04-25 : globus-4.0.7-0.10
* Fri Apr 25 2008 Anders Waananen4.0.7-0.10 - Update to upstream 4.0.7. - Updated RLS patch by Mattias Ellert globus_mds_common-dummy_reg.patch - Add missing OpenSSL initialization globus_openssl_module-sslinit.patch - openssl-globus now obsoletes globus_openssl and provides globus_openssl = %{version} (NorduGrid bug #1068) - Added update globus_xio-0.38.tar.gz
2008-03-12 : globus-4.0.6-0.9
* Sun Mar 12 2008 Anders Waananen4.0.6-0.9 - Update to upstream 4.0.6. - Updated RLS patch by Mattias Ellert globus_rls_server_setup-strlen.patch - Dummy registration for alternative GIIS by Mattias Ellert globus_mds_common-dummy_reg.patch
2007-09-09 : globus-4.0.5-0.8
* Sun Sep 9 2007 Anders Waananen4.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 Waananen4.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