Blob Blame History Raw
%ifarch alpha ia64 ppc64 s390x sparc64 x86_64
%global flavor gcc64pthr
%else
%global flavor gcc32pthr
%endif

%{!?perl_vendorlib: %global perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib)}

Name:		globus-common
%global _name %(tr - _ <<< %{name})
Version:	10.2
%global setupversion 2.6
Release:	8%{?dist}
Summary:	Globus Toolkit - Common Library

Group:		System Environment/Libraries
License:	ASL 2.0
URL:		http://www.globus.org/
#		Source is extracted from the globus toolkit installer:
#		wget -N http://www-unix.globus.org/ftppub/gt4/4.2.1/installers/src/gt4.2.1-all-source-installer.tar.bz2
#		tar -jxf gt4.2.1-all-source-installer.tar.bz2
#		mv gt4.2.1-all-source-installer/source-trees/common/source globus_common-10.2
#		cp -p gt4.2.1-all-source-installer/source-trees/core/source/GLOBUS_LICENSE globus_common-10.2
#		tar -zcf globus_common-10.2.tar.gz globus_common-10.2
Source:		%{_name}-%{version}.tar.gz
#		Source1 is extracted from the globus toolkit installer:
#		wget -N http://www-unix.globus.org/ftppub/gt4/4.2.1/installers/src/gt4.2.1-all-source-installer.tar.bz2
#		tar -jxf gt4.2.1-all-source-installer.tar.bz2
#		mv gt4.2.1-all-source-installer/source-trees/common/setup globus_common_setup-2.6
#		cp -p gt4.2.1-all-source-installer/source-trees/core/source/GLOBUS_LICENSE globus_common_setup-2.6
#		tar -zcf globus_common_setup-2.6.tar.gz globus_common_setup-2.6
Source1:	%{_name}_setup-%{setupversion}.tar.gz
#		This is a workaround for the broken epstopdf script in RHEL5
#		See: https://bugzilla.redhat.com/show_bug.cgi?id=450388
Source9:	epstopdf-2.9.5gw
#		Environment variable elimination patch:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6459
Patch0:		%{name}-usr.patch
#		Segfault fix patch:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6460
Patch1:		%{name}-no-pthread-exceptions.patch
#		Allow plugins without the flavor extension in the name:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6461
Patch2:		%{name}-noflavext.patch
#		Remove bogus inter-package dependency:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6462
Patch3:		%{name}-deps.patch
#		Fixes a stupid typo in library/Makefile.am:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6463
Patch4:		%{name}-typo.patch
#		The file globus_netos_dir.h does not exist:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6464
Patch5:		%{name}-nosuchfile.patch
#		Doxygen warning fix:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6465
Patch6:		%{name}-doxygen.patch
#		Bad version information:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6466
Patch7:		%{name}-bad-age.patch
#		Extradist should not be conditional:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6576
Patch8:		%{name}-extradist.patch
#		Check for function removed from newer versions of libltdl:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6578
Patch9:		%{name}-ltdlmutex.patch
#		Fixes for mingw compilation:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6742
Patch10:	%{name}-mingw.patch
#		Not all platforms defines PATH_MAX:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6755
Patch11:	%{name}-pathmax.patch
#		Let globus-makefile-header fail gracefully without GPT:
#		Not really relevant for globus upstream
Patch12:	%{name}-makefile-header.patch
#		Workaround a bug in doxygen 1.6.0 and later:
#		https://bugzilla.gnome.org/show_bug.cgi?id=593759
Patch13:	%{name}-doxygen-workaround.patch
#		Configure options not propagated in globus common setup:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6467
Patch14:	%{name}-setup.patch
BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

Requires:	globus-libtool%{?_isa} >= 1
BuildRequires:	grid-packaging-tools
BuildRequires:	globus-libtool-devel%{?_isa} >= 1
BuildRequires:	globus-core%{?_isa} >= 4
BuildRequires:	doxygen
BuildRequires:	graphviz
%if "%{?rhel}" == "5"
BuildRequires:	graphviz-gd
%endif
BuildRequires:	ghostscript
%if %{?fedora}%{!?fedora:0} >= 9 || %{?rhel}%{!?rhel:0} >= 6
BuildRequires:	tex(latex)
%else
BuildRequires:	tetex-latex
%endif

%package progs
Summary:	Globus Toolkit - Common Library Programs
Group:		Applications/Internet
Provides:	%{name}-setup = %{setupversion}
Requires:	%{name}%{?_isa} = %{version}-%{release}
Requires:	globus-libtool%{?_isa} >= 1
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 4
Requires:	perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
%else
Requires:	perl
%endif

%package devel
Summary:	Globus Toolkit - Common Library Development Files
Group:		Development/Libraries
Requires:	%{name}%{?_isa} = %{version}-%{release}
Requires:	globus-libtool-devel%{?_isa} >= 1
Requires:	globus-core%{?_isa} >= 4

%package doc
Summary:	Globus Toolkit - Common Library Documentation Files
Group:		Documentation
%if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6
BuildArch:	noarch
%endif
Requires:	%{name} = %{version}-%{release}

%description
The Globus Toolkit is an open source software toolkit used for building Grid
systems and applications. It is being developed by the Globus Alliance and
many others all over the world. A growing number of projects and companies are
using the Globus Toolkit to unlock the potential of grids for their cause.

The %{name} package contains:
Common Library

%description progs
The Globus Toolkit is an open source software toolkit used for building Grid
systems and applications. It is being developed by the Globus Alliance and
many others all over the world. A growing number of projects and companies are
using the Globus Toolkit to unlock the potential of grids for their cause.

The %{name}-progs package contains:
Common Library Programs
Common Setup

%description devel
The Globus Toolkit is an open source software toolkit used for building Grid
systems and applications. It is being developed by the Globus Alliance and
many others all over the world. A growing number of projects and companies are
using the Globus Toolkit to unlock the potential of grids for their cause.

The %{name}-devel package contains:
Common Library Development Files

%description doc
The Globus Toolkit is an open source software toolkit used for building Grid
systems and applications. It is being developed by the Globus Alliance and
many others all over the world. A growing number of projects and companies are
using the Globus Toolkit to unlock the potential of grids for their cause.

The %{name}-doc package contains:
Common Library Documentation Files

%prep
%setup -q -n %{_name}-%{version}
%setup -D -T -q -n %{_name}-%{version} -a 1
%patch0 -p1 -b .usr
%patch1 -p1 -b .segfault
%patch2 -p1 -b .noflavext
%patch3 -p1 -b .deps
%patch4 -p1 -b .typo
%patch5 -p1 -b .nofile
%patch6 -p1 -b .doxygen
%patch7 -p1 -b .age
%patch8 -p1 -b .extradist
%patch9 -p1 -b .ltdlmutex
%patch10 -p1 -b .mingw
%patch11 -p1 -b .pathmax
%patch12 -p1 -b .mfheader
%patch13 -p1 -b .doxygenbug
cd %{_name}_setup-%{setupversion}
%patch14 -p1 -b .setup
cd -

# custom perl requires that removes dependency on gpt perl modules
cat << EOF > %{name}-req
#!/bin/sh
%{__perl_requires} $* |\
sed -e '/perl(Grid::GPT::.*)/d'
EOF
%global __perl_requires %{_builddir}/%{_name}-%{version}/%{name}-req
chmod +x %{__perl_requires}

%if "%{rhel}" == "5"
mkdir bin
install %{SOURCE9} bin/epstopdf
%endif

%build
%if "%{rhel}" == "5"
export PATH=$PWD/bin:$PATH
%endif

# Remove files that should be replaced during bootstrap
rm -f doxygen/Doxyfile*
rm -f doxygen/Makefile.am
rm -f pkgdata/Makefile.am
rm -f globus_automake*
rm -rf autom4te.cache

# Remove flavor tags
for f in `find . -name Makefile.am` ; do
  sed -e 's!^flavorinclude_HEADERS!include_HEADERS!' \
      -e 's!\(lib[a-zA-Z_]*\)_$(GLOBUS_FLAVOR_NAME)\.la!\1.la!g' \
      -e 's!^\(lib[a-zA-Z_]*\)___GLOBUS_FLAVOR_NAME__la_!\1_la_!' -i $f
done
sed -e "s!<With_Flavors!<With_Flavors ColocateLibraries=\"no\"!" \
  -i pkgdata/pkg_data_src.gpt.in

%{_datadir}/globus/globus-bootstrap.sh

%configure --with-flavor=%{flavor} --enable-doxygen

make %{?_smp_mflags}

# setup package
cd %{_name}_setup-%{setupversion}

# Remove files that should be replaced during bootstrap
rm -f doxygen/Doxyfile*
rm -f doxygen/Makefile.am
rm -f pkgdata/Makefile.am
rm -f globus_automake*
rm -rf autom4te.cache

%{_datadir}/globus/globus-bootstrap.sh

%configure --without-flavor --with-secure-tmpdir=/var/tmp

make %{?_smp_mflags}

cd -

%install
%if "%{rhel}" == "5"
export PATH=$PWD/bin:$PATH
%endif

rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT

# setup package
cd %{_name}_setup-%{setupversion}
make install DESTDIR=$RPM_BUILD_ROOT
cd -

# These scripts are intended to be sourced, not executed
chmod 644 $RPM_BUILD_ROOT%{_datadir}/globus/globus-args-parser-header
chmod 644 $RPM_BUILD_ROOT%{_datadir}/globus/setup/setup-globus-common.pl
chmod 644 $RPM_BUILD_ROOT%{_datadir}/globus/globus-script-initializer
chmod 644 $RPM_BUILD_ROOT%{_datadir}/globus/globus-sh-tools.sh

# Register setup
perl -MGrid::GPT::Setup <<EOF
my \$metadata = new Grid::GPT::Setup(package_name => "%{_name}_setup",
				     globusdir => "$RPM_BUILD_ROOT%{_prefix}");
\$metadata->finish();
EOF

GLOBUSPACKAGEDIR=$RPM_BUILD_ROOT%{_datadir}/globus/packages

# Remove libtool archives (.la files)
find $RPM_BUILD_ROOT%{_libdir} -name 'lib*.la' -exec rm -v '{}' \;
sed '/lib.*\.la$/d' -i $GLOBUSPACKAGEDIR/%{_name}/%{flavor}_rtl.filelist

# Remove static libraries (.a files)
find $RPM_BUILD_ROOT%{_libdir} -name 'lib*.a' -exec rm -v '{}' \;
sed '/lib.*\.a$/d' -i $GLOBUSPACKAGEDIR/%{_name}/%{flavor}_dev.filelist

# Generate pkg-config file from GPT metadata
mkdir -p $RPM_BUILD_ROOT%{_libdir}/pkgconfig
%{_datadir}/globus/globus-gpt2pkg-config pkgdata/pkg_data_%{flavor}_dev.gpt > \
  $RPM_BUILD_ROOT%{_libdir}/pkgconfig/%{name}.pc

# Move globus-makefile-header to devel package
grep globus-makefile-header $GLOBUSPACKAGEDIR/%{_name}/%{flavor}_pgm.filelist \
  >> $GLOBUSPACKAGEDIR/%{_name}/%{flavor}_dev.filelist
sed /globus-makefile-header/d \
  -i $GLOBUSPACKAGEDIR/%{_name}/%{flavor}_pgm.filelist

# Don't use /usr/bin/env
sed 's!/usr/bin/env perl!/usr/bin/perl!' \
  -i $RPM_BUILD_ROOT%{_bindir}/globus-makefile-header

# Move documentation to default RPM location
mv $RPM_BUILD_ROOT%{_docdir}/%{_name} \
  $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
sed s!doc/%{_name}!doc/%{name}-%{version}! \
  -i $GLOBUSPACKAGEDIR/%{_name}/noflavor_doc.filelist

# Remove unwanted documentation (needed for RHEL4)
rm -f $RPM_BUILD_ROOT%{_mandir}/man3/*_%{_name}-%{version}_*.3
sed -e '/_%{_name}-%{version}_.*\.3/d' \
  -i $GLOBUSPACKAGEDIR/%{_name}/noflavor_doc.filelist

# Remove deprecated.3 man page (too common name)
rm -f $RPM_BUILD_ROOT%{_mandir}/man3/deprecated.3
sed -e '/deprecated\.3/d' -i $GLOBUSPACKAGEDIR/%{_name}/noflavor_doc.filelist

# Install license file
mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
install -m 644 -p GLOBUS_LICENSE $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}

# Generate package filelists
cat $GLOBUSPACKAGEDIR/%{_name}/%{flavor}_rtl.filelist \
  | sed s!^!%{_prefix}! > package.filelist
cat $GLOBUSPACKAGEDIR/%{_name}/%{flavor}_pgm.filelist \
    $GLOBUSPACKAGEDIR/%{_name}/noflavor_data.filelist \
    $GLOBUSPACKAGEDIR/%{_name}_setup/noflavor_pgm.filelist \
    $GLOBUSPACKAGEDIR/%{_name}_setup/noflavor_rtl.filelist \
    $GLOBUSPACKAGEDIR/%{_name}_setup/noflavor_data.filelist \
  | sed s!^!%{_prefix}! > package-progs.filelist
cat $GLOBUSPACKAGEDIR/%{_name}/%{flavor}_dev.filelist \
  | sed s!^!%{_prefix}! > package-devel.filelist
cat $GLOBUSPACKAGEDIR/%{_name}/noflavor_doc.filelist \
  | sed -e 's!/man/.*!&*!' -e 's!^!%doc %{_prefix}!' > package-doc.filelist

# Touch ghost files
touch $RPM_BUILD_ROOT%{_datadir}/globus/setup/globus-sh-tools-vars.sh
touch $RPM_BUILD_ROOT%{_datadir}/globus/globus-sh-tools-vars.sh

%clean
rm -rf $RPM_BUILD_ROOT

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

%post progs
cd %{_datadir}/globus/setup
./findshelltools > /dev/null
cp -p globus-sh-tools-vars.sh ..
rm -f config.log config.status

%files -f package.filelist
%defattr(-,root,root,-)
%dir %{_datadir}/globus
%dir %{_datadir}/globus/packages
%dir %{_datadir}/globus/packages/%{_name}
%dir %{_docdir}/%{name}-%{version}
%doc %{_docdir}/%{name}-%{version}/GLOBUS_LICENSE

%files -f package-progs.filelist progs
%defattr(-,root,root,-)
%dir %{_datadir}/globus/packages/%{_name}_setup
%{_datadir}/globus/packages/setup
%dir %{_datadir}/globus/setup
%dir %{perl_vendorlib}/Globus
%dir %{perl_vendorlib}/Globus/Core
%ghost %{_datadir}/globus/setup/globus-sh-tools-vars.sh
%ghost %{_datadir}/globus/globus-sh-tools-vars.sh

%files -f package-devel.filelist devel
%defattr(-,root,root,-)
%dir %{_includedir}/globus
%{_libdir}/pkgconfig/%{name}.pc

%files -f package-doc.filelist doc
%defattr(-,root,root,-)
%dir %{_docdir}/%{name}-%{version}/html

%changelog
* Sun Nov 08 2009 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-8
- Let globus-makefile-header fail gracefully when GPT is not present
- Workaround a bug in doxygen

* Mon Aug 03 2009 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-7
- Patch globus_location function to allow unset GLOBUS_LOCATION
- Put back config.guess file

* Thu Jul 23 2009 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-6
- Add instruction set architecture (isa) tags
- Make doc subpackage noarch
- Replace /usr/bin/env shebangs

* Tue Jun 02 2009 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-5
- Update to official Fedora Globus packaging guidelines

* Mon Apr 27 2009 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-4
- Rebuild with updated libtool

* Tue Apr 21 2009 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-3
- Put GLOBUS_LICENSE file in extracted source tarball

* Thu Apr 16 2009 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-2
- Remove config.guess file

* Tue Apr 07 2009 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-1
- Change defines to globals

* Mon Apr 06 2009 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-0.6
- Make comment about source retrieval more explicit

* Sun Mar 15 2009 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-0.5
- Adapting to updated globus-core package

* Thu Feb 26 2009 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-0.4
- Add s390x to the list of 64 bit platforms
- Move globus-makefile-header to devel package

* Thu Jan 01 2009 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-0.3
- Adapt to updated GPT package

* Wed Oct 15 2008 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-0.2
- Update to Globus Toolkit 4.2.1

* Mon Jul 14 2008 Mattias Ellert <mattias.ellert@fysast.uu.se> - 10.2-0.1
- Autogenerated