%{!?perl_vendorarch: %global perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)}
%{?perl_default_filter}
Name: xrootd
Epoch: 1
Version: 3.0.0
Release: 2%{?dist}
Summary: Extended ROOT file server
Group: System Environment/Daemons
# Sources are BSD, man pages are LGPLv2+
License: BSD and LGPLv2+
URL: http://xrootd.org/
Source0: http://xrootd.org/download/v%{version}/%{name}-v%{version}.src.tgz
# These man pages are extracted from the man/man1 directory in
# the root source archive:
# ftp://root.cern.ch/root/root_v5.28.00.source.tar.gz
Source1: xrootd-manpages.tar.gz
Source2: %{name}.init
Source3: %{name}.sysconfig
Source4: cmsd.init
Source5: cmsd.sysconfig
Source6: %{name}.logrotate
Patch0: %{name}-jni.patch
Patch1: %{name}-perl-java.patch
Patch2: %{name}-circular-deps.patch
Patch3: %{name}-dso.patch
Patch4: %{name}-undef.patch
Patch5: %{name}-nsl-link.patch
Patch6: %{name}-bonjour.patch
Patch7: %{name}-headers.patch
Patch8: %{name}-gridsite.patch
Patch9: %{name}-cryptoload.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
BuildRequires: krb5-devel
BuildRequires: openssl-devel
BuildRequires: gridsite-devel
BuildRequires: readline-devel
%if %{?fedora}%{!?fedora:0} >= 7 || %{?rhel}%{!?rhel:0} >= 5
BuildRequires: fuse-devel
%endif
%if %{?fedora}%{!?fedora:0} >= 6 || %{?rhel}%{!?rhel:0} >= 5
BuildRequires: avahi-compat-libdns_sd-devel
BuildRequires: avahi-devel
%endif
BuildRequires: libxml2-devel
BuildRequires: perl(ExtUtils::Embed)
BuildRequires: java-devel
BuildRequires: jpackage-utils
BuildRequires: swig
BuildRequires: doxygen
BuildRequires: graphviz
%if "%{?rhel}" == "5"
BuildRequires: graphviz-gd
%endif
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
Requires(pre): shadow-utils
Requires(pre): chkconfig
Requires(post): chkconfig
Requires(preun): chkconfig
Requires(preun): initscripts
Requires(postun): initscripts
%description
The Extended root file server consists of a file server called xrootd
and a cluster management server called cmsd.
The xrootd server was developed for the root analysis framework to
serve root files. However, the server is agnostic to filetypes and
provides POSIX-like access to any type of file.
The cmsd server is the next generation version of the olbd server,
originally developed to cluster and load balance Objectivity/DB AMS
database servers. It provides enhanced capability along with lower
latency and increased throughput.
%package libs
Summary: Libraries used by xrootd servers and clients
Group: System Environment/Libraries
%description libs
This package contains the libraries used by the xrootd servers and
clients.
%package devel
Summary: Development files for xrootd
Group: Development/Libraries
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
%description devel
This package contains header files and development libraries for xrootd.
%package client
Summary: Xrootd command line client tools
Group: Applications/Internet
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
%description client
This package contains the command line tools used to communicate with
xrootd servers.
%if %{?fedora}%{!?fedora:0} >= 7 || %{?rhel}%{!?rhel:0} >= 5
%package fuse
Summary: Xrootd FUSE tool
Group: Applications/Internet
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
%description fuse
This package contains the FUSE (filesystem in user space) xrootd mount
tool.
%endif
%package client-admin-perl
Summary: Xrootd client administration Perl module
Group: Development/Libraries
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
%description client-admin-perl
This package contains a swig generated xrootd client administration
Perl module.
%package client-admin-java
Summary: Xrootd client administration Java library
Group: Development/Libraries
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
%if %{?fedora}%{!?fedora:0} >= 7 || %{?rhel}%{!?rhel:0} >= 5
Requires: java
%else
Requires: java-1.4.2-gcj-compat
%endif
%description client-admin-java
This package contains JNI bindings for doing xrootd client administration
in Java.
%package doc
Summary: Developer documentation for the xrootd libraries
Group: Documentation
%if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6
BuildArch: noarch
%endif
%description doc
This package contains the API documentation of the xrootd libraries.
%prep
%setup -q -n %{name}
%setup -D -T -q -n %{name} -a 1
# Resolve libXrdNetUtil → libXrdOuc → libXrdNet circular dependencies
mkdir src/XrdNetUtil
mv src/XrdNet/XrdNetDNS.cc src/XrdNetUtil
cp -p src/XrdNet/Makefile.am src/XrdNetUtil
# Resolve libXrdFrm → libXrdOss → XrdFrm utilities circular dependencies
mv src/XrdFrm src/XrdFrmUtil
mkdir src/XrdFrm
for f in XrdFrmCID XrdFrmMonitor XrdFrmProxy XrdFrmReqAgent \
XrdFrmReqFile XrdFrmRequest XrdFrmTrace XrdFrmUtils ; do
mv src/XrdFrmUtil/$f.* src/XrdFrm
done
cp -p src/XrdFrmUtil/Makefile.am src/XrdFrm
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
# Turn off static linking
find . -name Makefile.am -exec sed -e 's/ -static//g' -i {} ';'
# Remove windows pthreads (not used, and has different license - GPL)
rm -rf pthreads-win32
# Remove bundled gridsite library
for f in grst_asn1.c grst_err.c grst_gacl.c grst_http.c grst_x509.c \
grst_xacml.c gridsite.h ; do
rm -rf src/XrdSecssl/libsslGridSite/$f
done
# Use absolute path to load JNI library
sed 's!loadLibrary("\(.*\)")!load("%{_libdir}/%{name}/lib\1.so")!' \
-i src/XrdClient/XrdClientAdminJNI.java
# Fix JNI interface namespace
sed 's!Java_XrdClientAdminJNI!Java_xrootdadmin_XrdClientAdminJNI!' \
-i src/XrdClient/XrdClientAdminJNI.cc
./bootstrap.sh
%build
%configure --enable-gsi --enable-mon --enable-doc \
%if %{?fedora}%{!?fedora:0} <= 11 && %{?rhel}%{!?rhel:0} <= 5
--enable-krb4 \
%else
--disable-krb4 \
%endif
--enable-krb5 --with-krb5-incdir=/usr/include \
--enable-javaint --with-java-home=/usr/lib/jvm/java --disable-static
make %{?_smp_mflags}
pushd src/XrdClient
jar cvf XrdClientAdminJNI.jar xrootdadmin/XrdClientAdminJNI.class
popd
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
# Names too generic
mv $RPM_BUILD_ROOT%{_bindir}/testclient $RPM_BUILD_ROOT%{_bindir}/xrdtestclient
mv $RPM_BUILD_ROOT%{_bindir}/testserver $RPM_BUILD_ROOT%{_bindir}/xrdtestserver
# Remove libtool archives
rm $RPM_BUILD_ROOT%{_libdir}/*.la
# Remove some junk
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}
rm -rf $RPM_BUILD_ROOT%{_bindir}/xrootdutils
%if %{?fedora}%{!?fedora:0} < 7 && %{?rhel}%{!?rhel:0} < 5
rm $RPM_BUILD_ROOT%{_bindir}/xrootdfs
%endif
# Perl module
mkdir -p $RPM_BUILD_ROOT%{perl_vendorarch}/auto/XrdClientAdmin
mv $RPM_BUILD_ROOT/%{_libdir}/XrdClientAdmin.pm \
$RPM_BUILD_ROOT%{perl_vendorarch}
mv $RPM_BUILD_ROOT/%{_libdir}/XrdClientAdmin.so \
$RPM_BUILD_ROOT%{perl_vendorarch}/auto/XrdClientAdmin
# Java JNI
mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{name}
mv $RPM_BUILD_ROOT/%{_libdir}/libXrdClientAdminJNI.so \
$RPM_BUILD_ROOT%{_libdir}/%{name}
install -m 644 src/XrdClient/XrdClientAdminJNI.jar \
$RPM_BUILD_ROOT%{_libdir}/%{name}
# Service start-up scripts et al.
mkdir -p $RPM_BUILD_ROOT%{_initrddir}
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
install -p %{SOURCE2} $RPM_BUILD_ROOT%{_initrddir}/%{name}
install -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
echo '# Put your xrootd configuration here' \
> $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}.cf
install -p %{SOURCE4} $RPM_BUILD_ROOT%{_initrddir}/cmsd
install -p -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/cmsd
echo '# Put your cmsd configuration here' \
> $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/cmsd.cf
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/%{name}
mkdir $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
install -p -m 644 %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{name}
# Man pages
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
sed -e '/^\.UR/d' -e '/^\.UE/d' -i xrootd-manpages/*
install -p -m 644 xrootd-manpages/* $RPM_BUILD_ROOT%{_mandir}/man1
# Documentation
mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
cp -pr doxydoc/html $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
%clean
rm -rf $RPM_BUILD_ROOT
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%pre
getent group %{name} >/dev/null || groupadd -r %{name}
getent passwd %{name} >/dev/null || useradd -r -g %{name} \
-d %{_sysconfdir}/%{name} -s /sbin/nologin -c "xrootd Server Account" %{name}
# Remove obsolete service
/sbin/service olbd stop >/dev/null 2>&1 || :
/sbin/chkconfig --del olbd >/dev/null 2>&1 || :
%post
if [ $1 = 1 ]; then
/sbin/chkconfig --add %{name}
/sbin/chkconfig --add cmsd
fi
%preun
if [ $1 = 0 ]; then
/sbin/service %{name} stop >/dev/null 2>&1 || :
/sbin/service cmsd stop >/dev/null 2>&1 || :
/sbin/chkconfig --del %{name}
/sbin/chkconfig --del cmsd
fi
%postun
if [ $1 -ge 1 ]; then
/sbin/service %{name} condrestart >/dev/null 2>&1 || :
/sbin/service cmsd condrestart >/dev/null 2>&1 || :
fi
%files
%defattr(-,root,root,-)
%{_bindir}/cmsd
%{_bindir}/%{name}
%{_bindir}/XrdCnsd
%{_mandir}/man1/cmsd.1*
%{_mandir}/man1/%{name}.1*
%{_initrddir}/*
%config(noreplace) %{_sysconfdir}/sysconfig/*
%config(noreplace) %{_sysconfdir}/%{name}
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%attr(-,xrootd,xrootd) %{_localstatedir}/log/%{name}
%files libs
%defattr(-,root,root,-)
%{_libdir}/libXrd*.so.*
# Some of the libraries are used as plugins - need the .so symlink at runtime
%{_libdir}/libXrdBwm.so
%{_libdir}/libXrdCryptossl.so
%{_libdir}/libXrdPss.so
%{_libdir}/libXrdRootd.so
%{_libdir}/libXrdSec.so
%{_libdir}/libXrdSecgsi.so
%{_libdir}/libXrdSecgsiGMAPLADP.so
%if %{?fedora}%{!?fedora:0} <= 11 && %{?rhel}%{!?rhel:0} <= 5
%{_libdir}/libXrdSeckrb4.so
%endif
%{_libdir}/libXrdSeckrb5.so
%{_libdir}/libXrdSecpwd.so
%{_libdir}/libXrdSecssl.so
%{_libdir}/libXrdSecsss.so
%{_libdir}/libXrdSecunix.so
%files devel
%defattr(-,root,root,-)
%{_includedir}/%{name}
# These libraries are not used as plugins
%{_libdir}/libXrd.so
%{_libdir}/libXrdAcc.so
%{_libdir}/libXrdClient.so
%{_libdir}/libXrdCms.so
%{_libdir}/libXrdCrypto.so
%{_libdir}/libXrdCryptoLite.so
%{_libdir}/libXrdFfs.so
%{_libdir}/libXrdFrm.so
%{_libdir}/libXrdNet.so
%{_libdir}/libXrdNetUtil.so
%{_libdir}/libXrdOfs.so
%{_libdir}/libXrdOss.so
%{_libdir}/libXrdOuc.so
%{_libdir}/libXrdPosix.so
%{_libdir}/libXrdSut.so
%{_libdir}/libXrdSys.so
%files client
%defattr(-,root,root,-)
%{_bindir}/TestXrdClient*
%{_bindir}/XrdAccTest
%{_bindir}/cns_ssi
%{_bindir}/frm_*
%{_bindir}/mpxstats
%{_bindir}/wait41
%{_bindir}/xprep
%{_bindir}/xrd
%{_bindir}/xrdadler32
%{_bindir}/xrdcp
%{_bindir}/xrdgsiproxy
%{_bindir}/xrdmonAdmin
%{_bindir}/xrdmonCollector
%{_bindir}/xrdpwdadmin
%{_bindir}/xrdsecssltest
%{_bindir}/xrdsssadmin
%{_bindir}/xrdstagetool
%{_bindir}/xrdtestclient
%{_bindir}/xrdtestserver
%{_mandir}/man1/xprep.1*
%{_mandir}/man1/xrd.1*
%{_mandir}/man1/xrdcp.1*
%{_mandir}/man1/xrdgsiproxy.1*
%{_mandir}/man1/xrdpwdadmin.1*
%{_mandir}/man1/xrdstagetool.1*
%if %{?fedora}%{!?fedora:0} >= 7 || %{?rhel}%{!?rhel:0} >= 5
%files fuse
%defattr(-,root,root,-)
%{_bindir}/xrootdfs
%endif
%files client-admin-perl
%defattr(-,root,root,-)
%{perl_vendorarch}/XrdClientAdmin.pm
%{perl_vendorarch}/auto/XrdClientAdmin
%files client-admin-java
%defattr(-,root,root,-)
%{_libdir}/%{name}
%files doc
%defattr(-,root,root,-)
%doc %{_docdir}/%{name}-%{version}
%changelog
* Fri Dec 17 2010 Mattias Ellert <mattias.ellert@fysast.uu.se> - 1:3.0.0-2
- Rebuilt for updated gridsite package
* Mon Dec 13 2010 Mattias Ellert <mattias.ellert@fysast.uu.se> - 1:3.0.0-1
- Update to version 3.0.0
- New subpackage - xrootd-fuse
- New version scheme inroduced by upstream - add epoch
* Wed Sep 01 2010 Mattias Ellert <mattias.ellert@fysast.uu.se> - 20100315-5
- Disable threads in doxygen - causes memory corruption on ppc
* Wed Sep 01 2010 Mattias Ellert <mattias.ellert@fysast.uu.se> - 20100315-4
- Add startup scripts for cmsd service that replaces the deprecated
olbd service
* Fri Jul 09 2010 Mattias Ellert <mattias.ellert@fysast.uu.se> - 20100315-3
- Fix broken jar
* Mon Jun 14 2010 Mattias Ellert <mattias.ellert@fysast.uu.se> - 20100315-2
- Add LGPLv2+ to License tag due to man pages
- Better package description
* Wed Jun 09 2010 Mattias Ellert <mattias.ellert@fysast.uu.se> - 20100315-1
- Initial packaging