# 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 developpers) #-------------------------------------- %define skip_unit_tests @SKIP_UNIT_TESTS@ # 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 %if "%{?dist}" == ".slc6" || "%{?dist}" == ".el6" BuildRequires: xrootd-client-devel = 1:4.2.3 BuildRequires: xrootd-devel = 1:4.2.3 BuildRequires: cryptopp-devel >= 5.6.2 %else BuildRequires: xrootd-client-devel = 1:4.4.1 BuildRequires: xrootd-devel = 1:4.4.1 BuildRequires: xrootd-server-devel = 1:4.4.1 BuildRequires: xrootd-private-devel = 1:4.4.1 BuildRequires: librados-devel >= 11.0, libradosstriper-devel >= 11.0, BuildRequires: protobuf3-compiler >= 3.2.0 protobuf3-devel >= 3.2.0 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.1-devel BuildRequires: valgrind %endif # 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 cmake .. -DCOMPILE_PACKAGING:STRING=0 # 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 CTA client is the only component of CTA that can be compiled on both SLC6 # and C77 %if "%{?dist}" == ".slc6" || "%{?dist}" == ".el6" %package -n cta-cli Summary: CERN Tape Archive: command line interface Group: Application/CTA %description -n cta-cli CERN Tape Archive: The xroot plugin %files -n cta-cli %defattr(-,root,root) %attr(0755,root,root) %{_bindir}/cta %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-cli.conf %else # The 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 requires(pre): /usr/bin/getent, /usr/sbin/groupadd, /usr/sbin/useradd %description -n cta-taped CERN Tape Archive: The tape server daemon %pre -n cta-taped /usr/bin/getent group st || /usr/sbin/groupadd -g 1474 st /usr/bin/getent passwd stage || /usr/sbin/useradd -s /bin/nologin -c "Stager Staging System" -u 14029 -g 1474 stage %files -n cta-taped %defattr(-,root,root) %attr(0755,root,root) %{_bindir}/cta-taped %attr(0755,root,root) %{_libdir}/libctamessages.so %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta.conf.example %package -n cta-frontend Summary: CERN Tape Archive: Xrootd plugin Group: Application/CTA requires: cta-lib requires: xrootd-server %description -n cta-frontend CERN Tape Archive: The xroot plugin %files -n cta-frontend %defattr(-,root,root) %attr(0755,root,root) %{_libdir}/libXrdCtaOfs.so %attr(0644,root,root) %config(noreplace) /etc/xrootd/xrootd-cta.cfg %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-frontend.conf #Frontend installs libraries so we need ldconfig. %post -n cta-frontend -p /sbin/ldconfig %postun -n cta-frontend -p /sbin/ldconfig %package -n cta-cli Summary: CERN Tape Archive: command line interface Group: Application/CTA %description -n cta-cli CERN Tape Archive: The xroot plugin %files -n cta-cli %defattr(-,root,root) %attr(0755,root,root) %{_bindir}/cta %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-cli.conf %package -n cta-lib Summary: CERN Tape Archive Group: Application/CTA Requires: oracle-instantclient12.1-basic %description -n cta-lib CERN Tape Archive: The shared libraries %files -n cta-lib %defattr(-,root,root) %attr(0755,root,root) %{_libdir}/libctacatalogue.so %attr(0755,root,root) %{_libdir}/libctacommon.so #TODO: merge util and common %attr(0755,root,root) %{_libdir}/libctautils.so %attr(0755,root,root) %{_libdir}/libctascheduler.so %attr(0755,root,root) %{_libdir}/libctaobjectstore.so %attr(0755,root,root) %{_libdir}/libctamediachanger.so %attr(0755,root,root) %{_libdir}/libctamessages.so %attr(0755,root,root) %{_libdir}/libctamessagesutils.so %attr(0755,root,root) %{_libdir}/libctardbms.so %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta_catalogue_db.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-taped = %{ctaVersion}-%{ctaRelease}%{mydist} %description -n cta-systemtests CERN Tape Archive: Unit tests and system tests with virtual tape drives %files -n cta-systemtests %attr(0755,root,root) %{_libdir}/libsystemTestHelperTests.so %attr(0755,root,root) %{_libdir}/libcta-tapedSystemTests.so %attr(0755,root,root) %{_bindir}/cta-catalogueUnitTests %attr(0755,root,root) %{_bindir}/cta-unitTests %attr(0755,root,root) %{_bindir}/cta-unitTests-multiProcess %attr(0755,root,root) %{_bindir}/cta-valgrindUnitTests.sh %attr(0755,root,root) %{_bindir}/cta-unitPlusSystemTests.sh %attr(0755,root,root) %{_libdir}/libctacatalogueunittests.so %attr(0755,root,root) %{_libdir}/libctacataloguecmdlineunittests.so %attr(0755,root,root) %{_libdir}/libctacommonunittests.so %attr(0755,root,root) %{_libdir}/libctaexceptionunittests.so %attr(0755,root,root) %{_libdir}/libctainmemorycatalogueunittests.so %attr(0755,root,root) %{_libdir}/libctaobjectstoreunittests.so %attr(0755,root,root) %{_libdir}/libctardbmsunittests.so %attr(0755,root,root) %{_libdir}/libctaschedulerunittests.so %attr(0755,root,root) %{_libdir}/libctatapeserverdaemonunittests.so %attr(0755,root,root) %{_libdir}/libctatapeserverdriveunittests.so %attr(0755,root,root) %{_libdir}/libctatapeserverfileunittests.so %attr(0755,root,root) %{_libdir}/libctatapeserverscsiunittests.so %attr(0755,root,root) %{_libdir}/libctadaemonunittests.so %attr(0755,root,root) %{_libdir}/libctamediachangerunittests.so %attr(0755,root,root) %{_bindir}/cta-systemTests %attr(0755,root,root) %{_libdir}/libctadaemonunittests-multiprocess.so %attr(0644,root,root) %{_datadir}/%{name}-%{ctaVersion}/unittest/*.suppr %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 #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-admin-host-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,bin) %doc /usr/share/man/man1/cta-catalogue-admin-host-create.1cta.gz %attr(0644,root,bin) %doc /usr/share/man/man1/cta-catalogue-admin-user-create.1cta.gz %attr(0644,root,bin) %doc /usr/share/man/man1/cta-catalogue-schema-create.1cta.gz %attr(0644,root,bin) %doc /usr/share/man/man1/cta-catalogue-schema-drop.1cta.gz %attr(0644,root,bin) %doc /usr/share/man/man1/cta-database-poll.1cta.gz %package -n cta-mediachangerutils Summary: Utilities to faciliate working with mediachangers Group: Application/CTA %description -n cta-mediachangerutils CERN Tape Archive: Utilities to faciliate working with the mediachangers %files -n cta-mediachangerutils %attr(0755,root,root) %{_bindir}/cta-mediachanger-dismount %attr(0755,root,root) %{_bindir}/cta-mediachanger-mount %attr(0644,root,bin) %doc /usr/share/man/man1/cta-mediachanger-dismount.1cta.gz %attr(0644,root,bin) %doc /usr/share/man/man1/cta-mediachanger-mount.1cta.gz %endif