Newer
Older
# Generic macros
#---------------
%define name cta
%define ctaVersion @CTA_VERSION@
%define ctaRelease @CTA_RELEASE@
# Neutral packaging (for srpm)
#-----------------------------
%if 0%{?neutralpackage:1} > 0
%define mydist %{nil}
%else
%define mydist %{?dist}
%endif
# Skipping unit tests (for developers)
#-------------------------------------
%define skip_unit_tests @SKIP_UNIT_TESTS@
# Utility for reloading systemctl when needed
#--------------------------------------------
%define systemdDaemonReload() if [ -e /usr/bin/systemctl ] ; then /usr/bin/systemctl daemon-reload; fi
# General settings
#-----------------
Summary: CERN Tape Archive
Name: %{name}
Version: %{ctaVersion}
Release: %{ctaRelease}%{mydist}
Source: %{name}-%{ctaVersion}-%{ctaRelease}.tar.gz
Steven Murray
committed
License: GPLv3+
Group: Application/cta
BuildRoot: %{_builddir}/%{name}-%{version}-root
BuildRequires: cmake >= 2.6 redhat-rpm-config
# The CTA client is the only component of CTA that can be compiled on both SLC6
# and C77, therefore only the packages it depends on are required for SLC6
BuildRequires: xrootd-client-devel >= 1:4.8.2
BuildRequires: xrootd-devel >= 1:4.8.2
BuildRequires: xrootd-server-devel >= 1:4.8.2
BuildRequires: xrootd-private-devel >= 1:4.8.2
BuildRequires: librados-devel = %{radosVersion}, libradosstriper-devel = %{radosVersion},
BuildRequires: protobuf3-compiler >= 3.3.1 protobuf3-devel >= 3.3.1
BuildRequires: gmock-devel >= 1.5.0 gtest-devel >= 1.5.0
BuildRequires: zeromq-devel >= 4.0
BuildRequires: openssl-devel >= 1.0.1e
BuildRequires: cryptopp-devel >= 5.6.2
BuildRequires: oracle-instantclient12.2-devel
BuildRequires: postgresql-devel
%{?systemd_requires}
BuildRequires: systemd
# only build debug info if you're building the whole code
%description
The CTA project is the CERN Tape Archive system.
%prep
%setup -q -n %{name}-%{ctaVersion}-%{ctaRelease}
%build
mkdir -p build
cd build
# The cmake step does the selection between client/server compilation or just client
Julien Leduc
committed
CTA_VERSION=%{ctaVersion} cmake .. -DCOMPILE_PACKAGING:STRING=0 -DVCS_VERSION=%{ctaRelease}
# Workaround for the inability of cmake to handle properly the dependencies to generated code.
%{__make} -s %{_smp_mflags} -k || true
%{__make} -s %{_smp_mflags}
%install
%{__rm} -rf ${RPM_BUILD_ROOT}
cd build
%{__make} install DESTDIR=${RPM_BUILD_ROOT} EXPORTMAN=${RPM_BUILD_ROOT}/usr/share/man
%clean
%{__rm} -rf $RPM_BUILD_ROOT
%{__rm} -rf $RPM_BUILD_DIR/%{name}-%{version}
%check
# The CTA client is the only component of CTA that can be compiled on both SLC6
# and C77, therefore thereis no unittest for it
%if "%{?dist}" == ".slc6" || "%{?dist}" == ".el6"
%define skip_unit_tests 1
%endif
%if "%{skip_unit_tests}" == "0"
cd build
%{__make} shortunittests
%endif
# The main packages will be cta-taped, cta-frontend, cta-cli
%package -n cta-taped
Summary: CERN Tape Archive: tape daemon
Group: Application/CTA
Requires: cta-lib = %{version}-%{release}
%description -n cta-taped
CERN Tape Archive:
The tape server daemon
%files -n cta-taped
%defattr(-,root,root)
%attr(0644,root,root) %config(noreplace) /etc/logrotate.d/cta-taped
%attr(0755,root,root) %{_bindir}/cta-taped
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-taped.conf.example
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/TPCONFIG.example
%attr(0644,root,root) %doc /usr/share/man/man1/cta-taped.1cta.gz
%attr(0644,root,root) %config(noreplace) /etc/sysconfig/cta-taped
Julien Leduc
committed
%attr(0644,root,root) %config(noreplace) /etc/systemd/system/cta-taped.service
%post -n cta-taped
%systemd_post cta-taped.service
%systemdDaemonReload
%preun -n cta-taped
%systemd_preun cta-taped.service
%postun -n cta-taped
%systemd_postun cta-taped.service
%systemdDaemonReload
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
%package -n cta-xrmcd
Summary: CERN Tape Archive: Xrootd plugin
Group: Application/CTA
Requires: logrotate
Requires: xrootd-server
%description -n cta-xrmcd
CERN Tape Archive:
The xroot plugin
%files -n cta-xrmcd
%defattr(0755,root,root)
%{_libdir}/libXrdSsiRmcd.so*
%attr(0644,root,root) %config(noreplace) /etc/logrotate.d/cta-xrmcd
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-xrmcd.conf
%attr(0644,cta,tape) /etc/systemd/system/cta-xrmcd.service
%attr(0644,root,root) %config(noreplace) /etc/sysconfig/cta-xrmcd
#xrmcd installs libraries so we need ldconfig.
%post -n cta-xrmcd
/sbin/ldconfig
%systemd_post cta-xrmcd.service
%systemdDaemonReload
%preun -n cta-xrmcd
%systemd_preun cta-xrmcd.service
%postun -n cta-xrmcd
/sbin/ldconfig
%systemd_post cta-xrmcd.service
%systemdDaemonReload
%package -n cta-frontend
Summary: CERN Tape Archive: Xrootd plugin
Group: Application/CTA
Requires: cta-lib = %{version}-%{release}
Requires: xrootd-server
%description -n cta-frontend
CERN Tape Archive:
The xroot plugin
%files -n cta-frontend
%{_libdir}/libXrdSsiCta.so*
%attr(0644,root,root) %config(noreplace) /etc/logrotate.d/cta-frontend
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-frontend-xrootd.conf
Anastasia Karachaliou
committed
%attr(0644,cta,tape) /etc/systemd/system/cta-frontend.service
#Frontend installs libraries so we need ldconfig.
%post -n cta-frontend
/sbin/ldconfig
%systemd_post cta-frontend.service
%systemdDaemonReload
%preun -n cta-frontend
%systemd_preun cta-frontend.service
%postun -n cta-frontend
/sbin/ldconfig
%systemd_post cta-frontend.service
%systemdDaemonReload
%package -n cta-cli
Summary: CERN Tape Archive: command line interface
Group: Application/CTA
Requires: cta-lib = %{version}-%{release}
%description -n cta-cli
CERN Tape Archive:
The xroot plugin
%files -n cta-cli
%defattr(-,root,root)
%attr(0755,root,root) %{_bindir}/cta-admin
%attr(0644,root,root) %doc /usr/share/man/man1/cta-admin.1cta.gz
%attr(0755,root,root) %{_bindir}/cta-wfe-test
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-cli.conf
Eric Cano
committed
%package -n cta-lib
Summary: CERN Tape Archive libraries
Eric Cano
committed
Group: Application/CTA
Requires: oracle-instantclient12.2-basic
Requires: postgresql-libs
# Explicity require protobuf3 to avoid clash with eos-protobuf3
Requires: protobuf3
Eric Cano
committed
%description -n cta-lib
CERN Tape Archive:
The shared libraries
%files -n cta-lib
%defattr(0755,root,root,-)
%{_libdir}/libctacatalogue.so*
%{_libdir}/libctacommon.so*
Eric Cano
committed
#TODO: merge util and common
%{_libdir}/libctascheduler.so*
%{_libdir}/libctaobjectstore.so*
%{_libdir}/libctamediachanger.so*
%{_libdir}/libctamessages.so*
%{_libdir}/libctamessagesutils.so*
%{_libdir}/libctardbms.so*
Steven Murray
committed
%{_libdir}/libctardbmswrapper.so*
Cedric CAFFY
committed
%{_libdir}/libctadisk.so*
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-catalogue.conf.example
#CTA-lib installs libraries so we need ldconfig.
%post -n cta-lib -p /sbin/ldconfig
%postun -n cta-lib -p /sbin/ldconfig
Eric Cano
committed
%package -n cta-systemtests
Summary: CERN Tape Archive: unit and system tests with virtual tape drives
Group: Application/CTA
Requires: cta-taped = %{ctaVersion}-%{ctaRelease}%{mydist}
Requires: moreutils
Eric Cano
committed
%description -n cta-systemtests
CERN Tape Archive:
Eric Cano
committed
Unit tests and system tests with virtual tape drives
%files -n cta-systemtests
%defattr(0755,root,root,-)
%{_libdir}/libsystemTestHelperTests.so*
%{_libdir}/libcta-tapedSystemTests.so*
Steven Murray
committed
%{_bindir}/cta-rdbmsUnitTests
%{_bindir}/cta-unitTests
%{_bindir}/cta-unitTests-multiProcess
%{_bindir}/cta-valgrindUnitTests.sh
%{_bindir}/cta-unitPlusSystemTests.sh
%{_libdir}/libctacataloguecmdlineunittests.so*
%{_libdir}/libctacommonunittests.so*
%{_libdir}/libctadbconfigcatalogueunittests.so*
%{_libdir}/libctadbconfigconnunittests.so*
%{_libdir}/libctadbconfigstmtunittests.so*
%{_libdir}/libctaexceptionunittests.so*
%{_libdir}/libctainmemorycatalogueunittests.so*
%{_libdir}/libctainmemoryconnunittests.so*
%{_libdir}/libctainmemorystmtunittests.so*
%{_libdir}/libctaobjectstoreunittests.so*
%{_libdir}/libctardbmsunittests.so*
Steven Murray
committed
%{_libdir}/libctardbmswrapperunittests.so*
%{_libdir}/libctaschedulerunittests.so*
%{_libdir}/libctatapeserverdaemonunittests.so*
%{_libdir}/libctatapeserverdriveunittests.so*
%{_libdir}/libctatapeserverfileunittests.so*
%{_libdir}/libctatapeserverscsiunittests.so*
%{_libdir}/libctadaemonunittests.so*
%{_libdir}/libctamediachangerunittests.so*
Cedric CAFFY
committed
%{_libdir}/libctadiskunittests.so*
%{_bindir}/cta-systemTests
%{_libdir}/libctadaemonunittests-multiprocess.so*
%attr(0644,root,root) %{_datadir}/%{name}-%{ctaVersion}/unittest/*.suppr
%attr(0644,root,root) %{_datadir}/%{name}-%{ctaVersion}/unittest/parallelTestsMakefile
%package -n cta-objectstore-tools
Summary: CERN Tape Archive: object store tools
Group: Application/CTA
%description -n cta-objectstore-tools
CERN Tape Archive:
Tools allowing initialization and inspection of the object store.
%files -n cta-objectstore-tools
%attr(0755,root,root) %{_bindir}/cta-objectstore-initialize
%attr(0755,root,root) %{_bindir}/cta-objectstore-list
%attr(0755,root,root) %{_bindir}/cta-objectstore-dump-object
%attr(0755,root,root) %{_bindir}/cta-objectstore-unfollow-agent
%attr(0755,root,root) %{_bindir}/cta-objectstore-dereference-removed-queues
%attr(0755,root,root) %{_bindir}/cta-objectstore-collect-orphaned-object
#cta-systemtests installs libraries so we need ldconfig.
%post -n cta-systemtests -p /sbin/ldconfig
%postun -n cta-systemtests -p /sbin/ldconfig
%package -n cta-catalogueutils
Summary: Utilities to faciliate working with the CTA catalogue
Group: Application/CTA
%description -n cta-catalogueutils
CERN Tape Archive:
Scripts and utilities to faciliate working with the CTA catalogue
%files -n cta-catalogueutils
%attr(0755,root,root) %{_bindir}/cta-catalogue-admin-user-create
%attr(0755,root,root) %{_bindir}/cta-catalogue-schema-create
%attr(0755,root,root) %{_bindir}/cta-catalogue-schema-drop
%attr(0755,root,root) %{_bindir}/cta-database-poll
%attr(0644,root,root) %doc /usr/share/man/man1/cta-catalogue-admin-user-create.1cta.gz
%attr(0644,root,root) %doc /usr/share/man/man1/cta-catalogue-schema-create.1cta.gz
%attr(0644,root,root) %doc /usr/share/man/man1/cta-catalogue-schema-drop.1cta.gz
%attr(0644,root,root) %doc /usr/share/man/man1/cta-database-poll.1cta.gz
Summary: The Remote Media Changer daemon (rmcd)
The Remote Media Changer daemon (rmcd)
Anastasia Karachaliou
committed
%defattr(-,root,root)
%attr(0644,root,root) %config(noreplace) /etc/logrotate.d/cta-rmcd
%attr(0644,root,root) %doc /usr/share/man/man1/cta-rmcd.1cta.gz
Anastasia Karachaliou
committed
%attr(0755,root,root) %{_bindir}/cta-rmcd
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-rmcd.conf
Julien Leduc
committed
%attr(0644,root,root) %config(noreplace) /etc/sysconfig/cta-rmcd
%attr(0644,root,root) /etc/systemd/system/cta-rmcd.service
%post -n cta-rmcd
%systemd_post cta-rmcd.service
%systemdDaemonReload
%preun -n cta-rmcd
%systemd_preun cta-rmcd.service
%postun -n cta-rmcd
%systemd_postun cta-rmcd.service
%systemdDaemonReload
%package -n cta-smc
Summary: The client of the Remote Media Changer Daemon (rmcd)
Group: Application/CTA
%description -n cta-smc
CERN Tape Archive:
The client of the Remote Media Changer Daemon (rmcd)
%files -n cta-smc
%defattr(-,root,root)
%attr(0755,root,root) %{_bindir}/cta-smc
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-smc.conf
%attr(0644,root,root) %doc /usr/share/man/man1/cta-smc.1cta.gz
%package -n cta-common
Summary: CERN Tape Archive common items
Group: Application/CTA
Requires(pre): /usr/bin/egrep, /usr/sbin/groupadd, /usr/sbin/luseradd
%description -n cta-common
CERN Tape Archive:
Common items such as the creation of the cta local user and /var/log/cta
%pre -n cta-common
/usr/bin/egrep -q '^cta:' /etc/passwd || /usr/sbin/luseradd -s /bin/nologin -c "CTA system account" -g tape cta
%files -n cta-common
%defattr(-,root,root)
%attr(0755,cta,tape) %dir /var/log/cta
%package -n cta-fst-gcd
Summary: Tape aware garbage collector daemon to run on an EOS FST
Group: Application/CTA
Requires: eos-client
Requires: python
%description -n cta-fst-gcd
cta-fst-gcd is a daemon that runs on an EOS FST and garbage
collects EOS disk copies that have been safely stored to tape.
%files -n cta-fst-gcd
%defattr(-,root,root)
%attr(0755,root,root) /usr/bin/cta-fst-gcd
%attr(0644,root,root) %doc /usr/share/man/man1/cta-fst-gcd.1cta.gz
%attr(0644,root,root) %config(noreplace) /etc/systemd/system/cta-fst-gcd.service
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-fst-gcd.conf.example
%post -n cta-fst-gcd
%systemd_post cta-fst-gcd.service
%systemdDaemonReload
%preun -n cta-fst-gcd
%systemd_preun cta-fst-gcd.service
%postun -n cta-fst-gcd
%systemd_postun cta-fst-gcd.service
%systemdDaemonReload