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:	3%{?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
#		Configure options not propagated in globus common setup:
#		http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6467
Patch10:	%{name}-setup.patch
BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

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

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

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

%package doc
Summary:	Globus Toolkit - Common Library Documentation Files
Group:		Documentation
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
cd %{_name}_setup-%{setupversion}
%patch10 -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

# Remove libtool archives (.la files)
find $RPM_BUILD_ROOT%{_libdir} -name 'lib*.la' -exec rm -v '{}' \;
sed '/lib.*\.la$/d' \
  -i $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_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 $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_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 \
  $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/%{flavor}_pgm.filelist \
  >> $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/%{flavor}_dev.filelist
sed /globus-makefile-header/d \
  -i $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/%{flavor}_pgm.filelist

# Remove config.guess file (conflicts with grid-packaging-tools package)
rm $RPM_BUILD_ROOT%{_datadir}/globus/config.guess
sed /config.guess/d \
  -i $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/noflavor_data.filelist

# 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 $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/noflavor_doc.filelist

# Fix doxygen glitches
for f in $RPM_BUILD_ROOT%{_mandir}/man3/*.h.3 ; do
  sed 's/P\.RS/P\n.RS/' -i $f
done

# Remove unwanted documentation
rm -f $RPM_BUILD_ROOT%{_mandir}/man3/deprecated.3
rm -f $RPM_BUILD_ROOT%{_mandir}/man3/*_%{_name}-%{version}_*.3
sed -e '/deprecated\.3/d' \
    -e '/_%{_name}-%{version}_.*\.3/d' \
  -i $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_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 $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/%{flavor}_rtl.filelist \
  | sed s!^!%{_prefix}! > package.filelist
cat $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/%{flavor}_pgm.filelist \
    $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/noflavor_data.filelist \
    $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}_setup/noflavor_pgm.filelist \
    $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}_setup/noflavor_rtl.filelist \
    $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}_setup/noflavor_data.filelist \
  | sed s!^!%{_prefix}! > package-progs.filelist
cat $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/%{flavor}_dev.filelist \
  | sed s!^!%{_prefix}! > package-devel.filelist
cat $RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_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
* 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  1 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