cta.spec.in 15.4 KB
Newer Older
1
2
3
# Avoid problem with official Oracle RPMS not listing necessary capabilities
%global __requires_exclude ^libocci.so|^libclntsh.so

4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 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

Michael Davis's avatar
Michael Davis committed
18
19
# Skipping unit tests (for developers)
#-------------------------------------
20
21
%define skip_unit_tests @SKIP_UNIT_TESTS@

22
23
24
# Utility for reloading systemctl when needed
#--------------------------------------------
%define systemdDaemonReload() if [ -e /usr/bin/systemctl ] ; then /usr/bin/systemctl daemon-reload; fi
25
%define systemdTryRestart() if [ -e /usr/bin/systemctl ] ; then /usr/bin/systemctl try-restart %1; fi
26

27
28
29
30
31
32
33
# General settings
#-----------------
Summary: CERN Tape Archive
Name: %{name}
Version: %{ctaVersion}
Release: %{ctaRelease}%{mydist}
Source: %{name}-%{ctaVersion}-%{ctaRelease}.tar.gz
34
License: GPLv3+
35
Group: Application/cta
36

37
BuildRoot: %{_builddir}/%{name}-%{version}-root
38
BuildRequires: cmake >= 2.6 redhat-rpm-config
39
40
41
42


# 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
Eric Cano's avatar
Eric Cano committed
43
%define radosVersion 2:12.2.2
Eric Cano's avatar
Eric Cano committed
44
45
46
47
BuildRequires: xrootd-client-devel  >= 1:4.10.0
BuildRequires: xrootd-devel         >= 1:4.10.0
BuildRequires: xrootd-server-devel  >= 1:4.10.0
BuildRequires: xrootd-private-devel >= 1:4.10.0
Eric Cano's avatar
Eric Cano committed
48
BuildRequires: librados-devel = %{radosVersion}, libradosstriper-devel = %{radosVersion}, 
49
BuildRequires: protobuf3-compiler >= 3.3.1 protobuf3-devel >= 3.3.1
Eric Cano's avatar
Eric Cano committed
50
BuildRequires: gmock-devel >= 1.5.0 gtest-devel >= 1.5.0
Eric Cano's avatar
Eric Cano committed
51
BuildRequires: sqlite-devel >= 3.6
Eric Cano's avatar
Eric Cano committed
52
BuildRequires: libcap-devel >= 2.16
Eric Cano's avatar
Eric Cano committed
53
BuildRequires: binutils-devel >= 2.20
54
BuildRequires: zeromq-devel >= 4.0
Eric Cano's avatar
Eric Cano committed
55
56
BuildRequires: openssl-devel >= 1.0.1e
BuildRequires: cryptopp-devel >= 5.6.2
Eric Cano's avatar
Eric Cano committed
57
BuildRequires: libuuid-devel >= 2.17
Eric Cano's avatar
Eric Cano committed
58
BuildRequires: json-c-devel >= 0.11
Eric Cano's avatar
Eric Cano committed
59
BuildRequires: libattr-devel >= 2.4.44
60
BuildRequires: oracle-instantclient19.3-devel
Tao Lin's avatar
Tao Lin committed
61
BuildRequires: mariadb-devel
62
BuildRequires: postgresql-devel
63
BuildRequires: valgrind
64
BuildRequires: valgrind-devel
65
BuildRequires: grpc, grpc-devel, grpc-static, grpc-plugins
66
67
%{?systemd_requires}
BuildRequires: systemd
68
69
70
71
72
73
74
75
76
77
78
79
80
# 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
81
CTA_VERSION=%{ctaVersion} cmake .. -DCOMPILE_PACKAGING:STRING=0 -DVCS_VERSION=%{ctaRelease}
82
83
# Workaround for the inability of cmake to handle properly the dependencies to generated code.
%{__make} -s %{_smp_mflags} -k || true
84
85
86
87
88
89
90
91
92
93
94
95
96
97
%{__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
98
99
100
101
102
103
# 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

104
105
%if "%{skip_unit_tests}" == "0"
cd build
106
%{__make} shortunittests
107
108
%endif

109
# The main packages will be cta-taped, cta-frontend, cta-cli
110

111
112
%package -n cta-taped
Summary: CERN Tape Archive: tape daemon
113
Group: Application/CTA
114
Requires: logrotate
Steven Murray's avatar
Steven Murray committed
115
Requires: cta-common = %{version}-%{release}
116
Requires: cta-lib = %{version}-%{release}
117
Requires: eos-client
118
%description -n cta-taped
119
120
CERN Tape Archive:
The tape server daemon
121
%files -n cta-taped
122
%defattr(-,root,root)
123
%attr(0644,root,root) %config(noreplace) /etc/logrotate.d/cta-taped
124
%attr(0755,root,root) %{_bindir}/cta-taped
125
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-taped.conf.example
126
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/TPCONFIG.example
127
%attr(0644,root,root) %doc /usr/share/man/man1/cta-taped.1cta.gz
128
%attr(0644,root,root) %config(noreplace) /etc/sysconfig/cta-taped
129
%attr(0644,root,root) %config(noreplace) /etc/systemd/system/cta-taped.service
130

131
132
%post -n cta-taped
%systemd_post cta-taped.service
133
%systemdDaemonReload
134
%systemdTryRestart cta-taped.service
135
136
137
138
139
140

%preun -n cta-taped
%systemd_preun cta-taped.service

%postun -n cta-taped
%systemd_postun cta-taped.service
141
%systemdDaemonReload
142

143
%package -n cta-frontend
144
Summary: CERN Tape Archive: Xrootd plugin
145
Group: Application/CTA
146
Requires: logrotate
Steven Murray's avatar
Steven Murray committed
147
Requires: cta-common = %{version}-%{release}
148
Requires: cta-lib = %{version}-%{release}
149
Requires: xrootd-server
150
151
152
153
%description -n cta-frontend
CERN Tape Archive:
The xroot plugin
%files -n cta-frontend
Michael Davis's avatar
Michael Davis committed
154
%defattr(0755,root,root)
155
%{_libdir}/libXrdSsiCta.so*
156
%attr(0644,root,root) %config(noreplace) /etc/logrotate.d/cta-frontend
157
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-frontend-xrootd.conf
158
%attr(0644,cta,tape) /etc/systemd/system/cta-frontend.service
159

160
#Frontend installs libraries so we need ldconfig.
161
162
163
%post -n cta-frontend
/sbin/ldconfig
%systemd_post cta-frontend.service
164
%systemdDaemonReload
165
%systemdTryRestart cta-frontend.service
166
167
168
169
170
171
172

%preun -n cta-frontend
%systemd_preun cta-frontend.service

%postun -n cta-frontend
/sbin/ldconfig
%systemd_post cta-frontend.service
173
%systemdDaemonReload
174

175
%package -n cta-cli
176
Summary: CERN Tape Archive: command line interface
177
Group: Application/CTA
178
Requires: cta-lib-base = %{version}-%{release}
179
180
181
182
183
%description -n cta-cli
CERN Tape Archive:
The xroot plugin
%files -n cta-cli
%defattr(-,root,root)
184
%attr(0755,root,root) %{_bindir}/cta-admin
185
%attr(0644,root,root) %doc /usr/share/man/man1/cta-admin.1cta.gz
186
%attr(0755,root,root) %{_bindir}/cta-wfe-test
187
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-cli.conf
188

189
190
191
192
193
194
195
196
197
198
199
200
%package -n cta-lib-base
Summary: CERN Tape Archive libraries
Group: Application/CTA
# Explicity require protobuf3 to avoid clash with eos-protobuf3
Requires: protobuf3
%description -n cta-lib-base
CERN Tape Archive:
The shared libraries base
%files -n cta-lib-base
%defattr(0755,root,root,-)
%{_libdir}/libctabase.so*

201
%package -n cta-lib
202
Summary: CERN Tape Archive libraries
203
Group: Application/CTA
204
Requires: oracle-instantclient19.3-basic
Eric Cano's avatar
Eric Cano committed
205
Requires: librados2 = %{radosVersion}
Tao Lin's avatar
Tao Lin committed
206
Requires: mariadb-libs
207
Requires: postgresql-libs
208
209
# Explicity require protobuf3 to avoid clash with eos-protobuf3
Requires: protobuf3
210
Requires: zeromq
211
Requires: cta-lib-base = %{version}-%{release}
212
213
214
215
%description -n cta-lib
CERN Tape Archive:
The shared libraries
%files -n cta-lib
Michael Davis's avatar
Michael Davis committed
216
217
218
%defattr(0755,root,root,-)
%{_libdir}/libctacatalogue.so*
%{_libdir}/libctacommon.so*
219
#TODO: merge util and common
Michael Davis's avatar
Michael Davis committed
220
221
222
223
224
225
%{_libdir}/libctascheduler.so*
%{_libdir}/libctaobjectstore.so*
%{_libdir}/libctamediachanger.so*
%{_libdir}/libctamessages.so*
%{_libdir}/libctamessagesutils.so*
%{_libdir}/libctardbms.so*
226
%{_libdir}/libctardbmswrapper.so*
227
%{_libdir}/libctadisk.so*
228
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-catalogue.conf.example
229

230
231
232
233
#CTA-lib installs libraries so we need ldconfig.
%post -n cta-lib -p /sbin/ldconfig
%postun -n cta-lib -p /sbin/ldconfig

234
235
%package -n cta-systemtests
Summary: CERN Tape Archive: unit and system tests with virtual tape drives
236
Group: Application/CTA
237
Requires: valgrind >= 3.8.1
Steven Murray's avatar
Steven Murray committed
238
Requires: cta-lib = %{version}-%{release}
239
Requires: cta-taped = %{ctaVersion}-%{ctaRelease}%{mydist}
Eric Cano's avatar
Eric Cano committed
240
Requires: make
241
Requires: moreutils
242
%description -n cta-systemtests
243
CERN Tape Archive:
244
245
Unit tests and system tests with virtual tape drives
%files -n cta-systemtests
Michael Davis's avatar
Michael Davis committed
246
247
248
%defattr(0755,root,root,-)
%{_libdir}/libsystemTestHelperTests.so*
%{_libdir}/libcta-tapedSystemTests.so*
249
%{_bindir}/cta-rdbmsUnitTests
250
%{_bindir}/cta-rdbmsUnitTests-oracle.sh
Michael Davis's avatar
Michael Davis committed
251
252
253
254
255
256
%{_bindir}/cta-unitTests
%{_bindir}/cta-unitTests-multiProcess
%{_bindir}/cta-valgrindUnitTests.sh
%{_bindir}/cta-unitPlusSystemTests.sh
%{_libdir}/libctacataloguecmdlineunittests.so*
%{_libdir}/libctacommonunittests.so*
257
258
%{_libdir}/libctadbconfigcatalogueunittests.so*
%{_libdir}/libctadbconfigconnunittests.so*
259
%{_libdir}/libctadbconfigstmtunittests.so*
Michael Davis's avatar
Michael Davis committed
260
261
%{_libdir}/libctaexceptionunittests.so*
%{_libdir}/libctainmemorycatalogueunittests.so*
262
%{_libdir}/libctainmemoryconnunittests.so*
263
%{_libdir}/libctainmemorystmtunittests.so*
Michael Davis's avatar
Michael Davis committed
264
265
%{_libdir}/libctaobjectstoreunittests.so*
%{_libdir}/libctardbmsunittests.so*
266
%{_libdir}/libctardbmswrapperunittests.so*
Michael Davis's avatar
Michael Davis committed
267
268
269
270
271
272
273
%{_libdir}/libctaschedulerunittests.so*
%{_libdir}/libctatapeserverdaemonunittests.so*
%{_libdir}/libctatapeserverdriveunittests.so*
%{_libdir}/libctatapeserverfileunittests.so*
%{_libdir}/libctatapeserverscsiunittests.so*
%{_libdir}/libctadaemonunittests.so*
%{_libdir}/libctamediachangerunittests.so*
274
%{_libdir}/libctadiskunittests.so*
275
%{_libdir}/libctatapelabelunittests.so*
Michael Davis's avatar
Michael Davis committed
276
277
%{_bindir}/cta-systemTests
%{_libdir}/libctadaemonunittests-multiprocess.so*
278
%attr(0644,root,root) %{_datadir}/%{name}-%{ctaVersion}/unittest/*.suppr
279
%attr(0644,root,root) %{_datadir}/%{name}-%{ctaVersion}/unittest/parallelTestsMakefile
280

281
282
283
%package -n cta-objectstore-tools
Summary: CERN Tape Archive: object store tools
Group: Application/CTA
Steven Murray's avatar
Steven Murray committed
284
Requires: cta-lib = %{version}-%{release}
285
286
287
288
289
290
291
%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
292
%attr(0755,root,root) %{_bindir}/cta-objectstore-unfollow-agent
293
%attr(0755,root,root) %{_bindir}/cta-objectstore-dereference-removed-queues
294
%attr(0755,root,root) %{_bindir}/cta-objectstore-collect-orphaned-object
295

296
297
298
299
#cta-systemtests installs libraries so we need ldconfig.
%post -n cta-systemtests -p /sbin/ldconfig
%postun -n cta-systemtests -p /sbin/ldconfig

300
%package -n cta-catalogueutils
301
Summary: Utilities to faciliate working with the CTA catalogue
302
Group: Application/CTA
Steven Murray's avatar
Steven Murray committed
303
Requires: cta-lib = %{version}-%{release}
304
305
306
307
%description -n cta-catalogueutils
CERN Tape Archive:
Scripts and utilities to faciliate working with the CTA catalogue
%files -n cta-catalogueutils
308
%attr(0755,root,root) %{_bindir}/cta-catalogue-admin-user-create
309
%attr(0755,root,root) %{_bindir}/cta-catalogue-schema-create
310
%attr(0755,root,root) %{_bindir}/cta-catalogue-schema-drop
311
%attr(0755,root,root) %{_bindir}/cta-catalogue-schema-verify
312
%attr(0755,root,root) %{_bindir}/cta-database-poll
313
%attr(0755,root,root) %{_bindir}/cta-upgrade-db
314
315
316
%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
317
%attr(0644,root,root) %doc /usr/share/man/man1/cta-catalogue-schema-verify.1cta.gz
318
%attr(0644,root,root) %doc /usr/share/man/man1/cta-database-poll.1cta.gz
319

320
321
322
323
%package -n cta-migration-tools
Summary: Tools for migrating CASTOR to CTA
Group: Application/CTA
Requires: cta-lib = %{version}-%{release}
324
Requires: cx_Oracle >= 7.1
325
326
327
328
329
330
%description -n cta-migration-tools
CERN Tape Archive:
Tools for migrating the CASTOR catalogue to CTA and injecting CASTOR file and
directory metadata into the EOS namespace.
%files -n cta-migration-tools
%attr(0755,root,root) %{_bindir}/eos-import-dirs
331
%attr(0755,root,root) %{_bindir}/eos-import-files
332
%attr(0755,root,root) %{_bindir}/eos-test-dir-inject
333
%attr(0755,root,root) %{_bindir}/eos-test-file-inject
334
%attr(0755,root,root) %{_bindir}/json-pretty-print.sh
335
336
%attr(0644,root,root) %{_bindir}/begin_vo_export_to_cta.sh
%attr(0644,root,root) %{_bindir}/export_production_tapepool_to_cta.sh
337
338
%attr(0755,root,root) %{_bindir}/tapepool_castor_to_cta.py
%attr(0755,root,root) %{_bindir}/complete_tapepool_export.py
339
340
%attr(0644,root,root) %{_bindir}/vmgr_reenable_tapepool.sh
%attr(0644,root,root) %{_bindir}/cta-catalogue-remove-castor-tapes.py
341
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/castor-migration.conf.example
342

Anastasia Karachaliou's avatar
Anastasia Karachaliou committed
343
%package -n cta-rmcd
344
Summary: The Remote Media Changer daemon (rmcd)
345
Group: Application/CTA
Anastasia Karachaliou's avatar
Anastasia Karachaliou committed
346
Requires: logrotate
Steven Murray's avatar
Steven Murray committed
347
Requires: cta-common = %{version}-%{release}
Anastasia Karachaliou's avatar
Anastasia Karachaliou committed
348
%description -n cta-rmcd
349
CERN Tape Archive:
350
The Remote Media Changer daemon (rmcd)
Anastasia Karachaliou's avatar
Anastasia Karachaliou committed
351
%files -n cta-rmcd
352
353
%defattr(-,root,root)
%attr(0644,root,root) %config(noreplace) /etc/logrotate.d/cta-rmcd
354
%attr(0644,root,root) %doc /usr/share/man/man1/cta-rmcd.1cta.gz
355
%attr(0755,root,root) %{_bindir}/cta-rmcd
Anastasia Karachaliou's avatar
Anastasia Karachaliou committed
356
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-rmcd.conf
357
%attr(0644,root,root) %config(noreplace) /etc/sysconfig/cta-rmcd
Anastasia Karachaliou's avatar
Anastasia Karachaliou committed
358
%attr(0644,root,root) /etc/systemd/system/cta-rmcd.service
359

360
361
%post -n cta-rmcd
%systemd_post cta-rmcd.service
362
%systemdDaemonReload
363
%systemdTryRestart cta-rmcd.service
364
365
366
367
368
369

%preun -n cta-rmcd
%systemd_preun cta-rmcd.service

%postun -n cta-rmcd
%systemd_postun cta-rmcd.service
370
%systemdDaemonReload
371

372
373
374
375
376
377
378
379
380
381
382
383
%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

384
385
386
387
%package -n cta-tape-label
Summary: The command-line tool for pre-labelling a CTA tape.
Group: Application/CTA
Requires: cta-lib = %{version}-%{release}
388
Requires(post): /usr/sbin/setcap
389
390
391
392
393
%description -n cta-tape-label
CERN Tape Archive:
The command-line tool for pre-labelling a CTA tape.
%files -n cta-tape-label
%defattr(-,root,root)
394
%attr(0750,cta,tape) %{_bindir}/cta-tape-label
395
%attr(0644,root,root) %doc /usr/share/man/man1/cta-tape-label.1cta.gz
396
397
%post -n cta-tape-label
/usr/sbin/setcap cap_sys_rawio+ep  %{_bindir}/cta-tape-label
398

Steven Murray's avatar
Steven Murray committed
399
400
401
402
403
404
405
406
407
408
409
410
%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
411
412
413
414
415
416
417
418
419
420
421

%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)
422
%attr(0755,root,root) %{_bindir}/cta-fst-gcd
423
424
%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
425
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-fst-gcd.conf.example
426
427
428
%post -n cta-fst-gcd
%systemd_post cta-fst-gcd.service
%systemdDaemonReload
429
430
%systemdTryRestart cta-fst-gcd.service

431
432
%preun -n cta-fst-gcd
%systemd_preun cta-fst-gcd.service
433

434
435
436
%postun -n cta-fst-gcd
%systemd_postun cta-fst-gcd.service
%systemdDaemonReload
437
438
439
440
441
442
443
444
445
446

%package -n cta-systemtest-helpers
Summary: Collection of utilities deployed in system test client containers.
Group: Application/CTA
Requires: cta-lib = %{version}-%{release}
%description -n cta-systemtest-helpers
Collection of utilities deployed in system test client containers.
Currently contains a helper for the client-ar script, which should be installed alongside it.
%files -n cta-systemtest-helpers
%attr(0755,root,root) /usr/bin/cta-client-ar-abortPrepare