# 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 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 %define radosVersion 2:12.2.2 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: sqlite-devel >= 3.6 BuildRequires: libcap-devel >= 2.16 BuildRequires: binutils-devel >= 2.20 BuildRequires: zeromq-devel >= 4.0 BuildRequires: openssl-devel >= 1.0.1e BuildRequires: cryptopp-devel >= 5.6.2 BuildRequires: libuuid-devel >= 2.17 BuildRequires: json-c-devel >= 0.11 BuildRequires: libattr-devel >= 2.4.44 BuildRequires: oracle-instantclient12.2-devel BuildRequires: mariadb-devel BuildRequires: postgresql-devel BuildRequires: valgrind BuildRequires: valgrind-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 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: logrotate Requires: cta-common = %{version}-%{release} 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 %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 %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: logrotate Requires: cta-common = %{version}-%{release} Requires: cta-lib = %{version}-%{release} Requires: xrootd-server %description -n cta-frontend CERN Tape Archive: The xroot plugin %files -n cta-frontend %defattr(0755,root,root) %{_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 %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 %package -n cta-lib Summary: CERN Tape Archive libraries Group: Application/CTA Requires: oracle-instantclient12.2-basic Requires: librados2 = %{radosVersion} Requires: mariadb-libs Requires: postgresql-libs # Explicity require protobuf3 to avoid clash with eos-protobuf3 Requires: protobuf3 Requires: zeromq %description -n cta-lib CERN Tape Archive: The shared libraries %files -n cta-lib %defattr(0755,root,root,-) %{_libdir}/libctacatalogue.so* %{_libdir}/libctacommon.so* #TODO: merge util and common %{_libdir}/libctascheduler.so* %{_libdir}/libctaobjectstore.so* %{_libdir}/libctamediachanger.so* %{_libdir}/libctamessages.so* %{_libdir}/libctamessagesutils.so* %{_libdir}/libctardbms.so* %{_libdir}/libctardbmswrapper.so* %{_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 %package -n cta-systemtests Summary: CERN Tape Archive: unit and system tests with virtual tape drives Group: Application/CTA Requires: valgrind >= 3.8.1 Requires: cta-lib = %{version}-%{release} Requires: cta-taped = %{ctaVersion}-%{ctaRelease}%{mydist} Requires: make Requires: moreutils %description -n cta-systemtests CERN Tape Archive: Unit tests and system tests with virtual tape drives %files -n cta-systemtests %defattr(0755,root,root,-) %{_libdir}/libsystemTestHelperTests.so* %{_libdir}/libcta-tapedSystemTests.so* %{_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* %{_libdir}/libctardbmswrapperunittests.so* %{_libdir}/libctaschedulerunittests.so* %{_libdir}/libctatapeserverdaemonunittests.so* %{_libdir}/libctatapeserverdriveunittests.so* %{_libdir}/libctatapeserverfileunittests.so* %{_libdir}/libctatapeserverscsiunittests.so* %{_libdir}/libctadaemonunittests.so* %{_libdir}/libctamediachangerunittests.so* %{_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 Requires: cta-lib = %{version}-%{release} %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 Requires: cta-lib = %{version}-%{release} %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 %package -n cta-rmcd Summary: The Remote Media Changer daemon (rmcd) Group: Application/CTA Requires: logrotate Requires: cta-common = %{version}-%{release} %description -n cta-rmcd CERN Tape Archive: The Remote Media Changer daemon (rmcd) %files -n cta-rmcd %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 %attr(0755,root,root) %{_bindir}/cta-rmcd %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-rmcd.conf %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