Blob Blame History Raw
%{!?perl_vendorarch: %global perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)}

%{?perl_default_filter}

Name:		xrootd
Version:	20100315
Release:	3%{?dist}
Summary:	Extended ROOT file server

Group:		System Environment/Daemons
#		Sources are BSD, man pages are LGPLv2+
License:	BSD and LGPLv2+
URL:		http://xrootd.slac.stanford.edu/
Source0:	http://xrootd.slac.stanford.edu/download/%{version}-1007/%{name}-%{version}-1007.src.tgz
#		These man pages are extracted from the man/man1 directory in
#		the root source archive:
#		ftp://root.cern.ch/root/root_v5.26.00b.source.tar.gz
Source1:	xrootd-manpages.tar.gz
Source2:	%{name}.init
Source3:	%{name}.sysconfig
Source4:	olbd.init
Source5:	olbd.sysconfig
Source6:	%{name}.logrotate
Patch0:		%{name}-jni.patch
Patch1:		%{name}-perl-java.patch
Patch2:		%{name}-dso.patch
BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:	autoconf
BuildRequires:	automake
BuildRequires:	libtool
BuildRequires:	krb5-devel
BuildRequires:	openssl-devel
BuildRequires:	perl(ExtUtils::Embed)
BuildRequires:	java-devel
BuildRequires:	jpackage-utils
BuildRequires:	swig
BuildRequires:	readline-devel
BuildRequires:	doxygen
BuildRequires:	graphviz
%if "%{?rhel}" == "5"
BuildRequires:	graphviz-gd
%endif

Requires:	%{name}-libs = %{version}-%{release}

Requires(pre):		shadow-utils
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 clustering server called olbd.

The server names are historical. 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 olbd server was originally developed to cluster and load
balance Objectivity/DB AMS database servers. Because the olbd was
designed to work independently of the data server, it was easily
usable with xrootd.

%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 = %{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 = %{version}-%{release}

%description client
This package contains the command line tools used to communicate with
xrootd servers.

%package client-admin-perl
Summary:	Xrootd client administration Perl module
Group:		Development/Libraries
Requires:	%{name}-libs = %{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 = %{version}-%{release}
Requires:	java

%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
%patch0 -p1
%patch1 -p1
%patch2 -p1

# Move XrdNetDNS.cc from XrdNet to XrdOuc in order to break circular
# library dependencies
mv src/XrdNet/XrdNetDNS.cc src/XrdOuc
sed 's/XrdNetDNS.cc//' -i src/XrdNet/Makefile.am
sed 's!libXrdOuc_la_SOURCES =!& XrdNetDNS.cc!' -i src/XrdOuc/Makefile.am

# 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 (not used anyway)
rm -rf src/XrdSecssl/libsslGridSite

# 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 to 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

# 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}/olbd
install -p -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/olbd
echo '# Put your olbd configuration here' \
   > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/olbd.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}
exit 0

%post
if [ $1 = 1 ]; then
    /sbin/chkconfig --add %{name}
    /sbin/chkconfig --add olbd
fi

%preun
if [ $1 = 0 ]; then
    /sbin/service %{name} stop >/dev/null 2>&1 || :
    /sbin/service olbd stop >/dev/null 2>&1 || :
    /sbin/chkconfig --del %{name}
    /sbin/chkconfig --del olbd
fi

%postun
if [ $1 -ge 1 ]; then
    /sbin/service %{name} condrestart >/dev/null 2>&1 || :
    /sbin/service olbd condrestart >/dev/null 2>&1 || :
fi

%files
%defattr(-,root,root,-)
%{_bindir}/cmsd
%{_bindir}/olbd
%{_bindir}/%{name}
%{_bindir}/XrdCnsd
%{_mandir}/man1/cmsd.1*
%{_mandir}/man1/olbd.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
# Some of these are also used as normal shared libraries
%{_libdir}/libXrdAcc.so
%{_libdir}/libXrdBwm.so
%{_libdir}/libXrdCrypto.so
%{_libdir}/libXrdCryptoLite.so
%{_libdir}/libXrdCryptossl.so
%{_libdir}/libXrdOfs.so
%{_libdir}/libXrdProxy.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}/libXrdSecsss.so
%{_libdir}/libXrdSecunix.so

%files devel
%defattr(-,root,root,-)
%{_includedir}/%{name}
# These libraries are not used as plugins
%{_libdir}/libXrd.so
%{_libdir}/libXrdClient.so
%{_libdir}/libXrdCms.so
%{_libdir}/libXrdNet.so
%{_libdir}/libXrdOdc.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}/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*

%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 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