cta.spec.in 13.8 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 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
15
16
# Skipping unit tests (for developers)
#-------------------------------------
17
18
%define skip_unit_tests @SKIP_UNIT_TESTS@

19
20
21
22
# Utility for reloading systemctl when needed
#--------------------------------------------
%define systemdDaemonReload() if [ -e /usr/bin/systemctl ] ; then /usr/bin/systemctl daemon-reload; fi

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

33
BuildRoot: %{_builddir}/%{name}-%{version}-root
34
BuildRequires: cmake >= 2.6 redhat-rpm-config
35
36
37
38


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

99
100
%if "%{skip_unit_tests}" == "0"
cd build
101
%{__make} shortunittests
102
103
%endif

104
# The main packages will be cta-taped, cta-frontend, cta-cli
105

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

125
126
%post -n cta-taped
%systemd_post cta-taped.service
127
%systemdDaemonReload
128
129
130
131
132
133

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

%postun -n cta-taped
%systemd_postun cta-taped.service
134
%systemdDaemonReload
135

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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
%package -n cta-xrmcd
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-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-xsmc
Summary: CERN Tape Archive: command line interface
Group: Application/CTA
Requires: cta-lib = %{version}-%{release}
%description -n cta-xsmc
CERN Tape Archive:
The xroot plugin
%files -n cta-xsmc
%defattr(-,root,root)
%attr(0755,root,root) %{_bindir}/cta-xsmc
%attr(0644,root,root) %doc /usr/share/man/man1/cta-xsmc-mount.1cta.gz
%attr(0644,root,root) %doc /usr/share/man/man1/cta-xsmc-dismount.1cta.gz

181
%package -n cta-frontend
182
Summary: CERN Tape Archive: Xrootd plugin
183
Group: Application/CTA
184
Requires: logrotate
Steven Murray's avatar
Steven Murray committed
185
Requires: cta-common = %{version}-%{release}
186
Requires: cta-lib = %{version}-%{release}
187
Requires: xrootd-server
188
189
190
191
%description -n cta-frontend
CERN Tape Archive:
The xroot plugin
%files -n cta-frontend
Michael Davis's avatar
Michael Davis committed
192
%defattr(0755,root,root)
193
%{_libdir}/libXrdSsiCta.so*
194
%attr(0644,root,root) %config(noreplace) /etc/logrotate.d/cta-frontend
195
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-frontend-xrootd.conf
196
%attr(0644,cta,tape) /etc/systemd/system/cta-frontend.service
197

198
#Frontend installs libraries so we need ldconfig.
199
200
201
%post -n cta-frontend
/sbin/ldconfig
%systemd_post cta-frontend.service
202
%systemdDaemonReload
203
204
205
206
207
208
209

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

%postun -n cta-frontend
/sbin/ldconfig
%systemd_post cta-frontend.service
210
%systemdDaemonReload
211

212
%package -n cta-cli
213
Summary: CERN Tape Archive: command line interface
214
Group: Application/CTA
215
Requires: cta-lib = %{version}-%{release}
216
217
218
219
220
%description -n cta-cli
CERN Tape Archive:
The xroot plugin
%files -n cta-cli
%defattr(-,root,root)
221
%attr(0755,root,root) %{_bindir}/cta-admin
222
%attr(0644,root,root) %doc /usr/share/man/man1/cta-admin.1cta.gz
223
%attr(0755,root,root) %{_bindir}/cta-wfe-test
224
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-cli.conf
225
226

%package -n cta-lib
227
Summary: CERN Tape Archive libraries
228
Group: Application/CTA
229
Requires: oracle-instantclient12.2-basic
Eric Cano's avatar
Eric Cano committed
230
Requires: librados2 = %{radosVersion}
Tao Lin's avatar
Tao Lin committed
231
Requires: mariadb-libs
232
Requires: postgresql-libs
233
234
# Explicity require protobuf3 to avoid clash with eos-protobuf3
Requires: protobuf3
235
Requires: zeromq
236
237
238
239
%description -n cta-lib
CERN Tape Archive:
The shared libraries
%files -n cta-lib
Michael Davis's avatar
Michael Davis committed
240
241
242
%defattr(0755,root,root,-)
%{_libdir}/libctacatalogue.so*
%{_libdir}/libctacommon.so*
243
#TODO: merge util and common
Michael Davis's avatar
Michael Davis committed
244
245
246
247
248
249
%{_libdir}/libctascheduler.so*
%{_libdir}/libctaobjectstore.so*
%{_libdir}/libctamediachanger.so*
%{_libdir}/libctamessages.so*
%{_libdir}/libctamessagesutils.so*
%{_libdir}/libctardbms.so*
250
%{_libdir}/libctardbmswrapper.so*
251
%{_libdir}/libctadisk.so*
252
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-catalogue.conf.example
253

254
255
256
257
#CTA-lib installs libraries so we need ldconfig.
%post -n cta-lib -p /sbin/ldconfig
%postun -n cta-lib -p /sbin/ldconfig

258
259
%package -n cta-systemtests
Summary: CERN Tape Archive: unit and system tests with virtual tape drives
260
Group: Application/CTA
261
Requires: valgrind >= 3.8.1
Steven Murray's avatar
Steven Murray committed
262
Requires: cta-lib = %{version}-%{release}
263
Requires: cta-taped = %{ctaVersion}-%{ctaRelease}%{mydist}
Eric Cano's avatar
Eric Cano committed
264
Requires: make
265
Requires: moreutils
266
%description -n cta-systemtests
267
CERN Tape Archive:
268
269
Unit tests and system tests with virtual tape drives
%files -n cta-systemtests
Michael Davis's avatar
Michael Davis committed
270
271
272
%defattr(0755,root,root,-)
%{_libdir}/libsystemTestHelperTests.so*
%{_libdir}/libcta-tapedSystemTests.so*
273
%{_bindir}/cta-rdbmsUnitTests
Michael Davis's avatar
Michael Davis committed
274
275
276
277
278
279
%{_bindir}/cta-unitTests
%{_bindir}/cta-unitTests-multiProcess
%{_bindir}/cta-valgrindUnitTests.sh
%{_bindir}/cta-unitPlusSystemTests.sh
%{_libdir}/libctacataloguecmdlineunittests.so*
%{_libdir}/libctacommonunittests.so*
280
281
%{_libdir}/libctadbconfigcatalogueunittests.so*
%{_libdir}/libctadbconfigconnunittests.so*
Michael Davis's avatar
Michael Davis committed
282
283
%{_libdir}/libctaexceptionunittests.so*
%{_libdir}/libctainmemorycatalogueunittests.so*
284
%{_libdir}/libctainmemoryconnunittests.so*
Michael Davis's avatar
Michael Davis committed
285
286
%{_libdir}/libctaobjectstoreunittests.so*
%{_libdir}/libctardbmsunittests.so*
287
%{_libdir}/libctardbmswrapperunittests.so*
Michael Davis's avatar
Michael Davis committed
288
289
290
291
292
293
294
%{_libdir}/libctaschedulerunittests.so*
%{_libdir}/libctatapeserverdaemonunittests.so*
%{_libdir}/libctatapeserverdriveunittests.so*
%{_libdir}/libctatapeserverfileunittests.so*
%{_libdir}/libctatapeserverscsiunittests.so*
%{_libdir}/libctadaemonunittests.so*
%{_libdir}/libctamediachangerunittests.so*
295
%{_libdir}/libctadiskunittests.so*
Michael Davis's avatar
Michael Davis committed
296
297
%{_bindir}/cta-systemTests
%{_libdir}/libctadaemonunittests-multiprocess.so*
298
%attr(0644,root,root) %{_datadir}/%{name}-%{ctaVersion}/unittest/*.suppr
299
%attr(0644,root,root) %{_datadir}/%{name}-%{ctaVersion}/unittest/parallelTestsMakefile
300

301
302
303
%package -n cta-objectstore-tools
Summary: CERN Tape Archive: object store tools
Group: Application/CTA
Steven Murray's avatar
Steven Murray committed
304
Requires: cta-lib = %{version}-%{release}
305
306
307
308
309
310
311
%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
312
%attr(0755,root,root) %{_bindir}/cta-objectstore-unfollow-agent
313
%attr(0755,root,root) %{_bindir}/cta-objectstore-dereference-removed-queues
314
%attr(0755,root,root) %{_bindir}/cta-objectstore-collect-orphaned-object
315

316
317
318
319
#cta-systemtests installs libraries so we need ldconfig.
%post -n cta-systemtests -p /sbin/ldconfig
%postun -n cta-systemtests -p /sbin/ldconfig

320
%package -n cta-catalogueutils
321
Summary: Utilities to faciliate working with the CTA catalogue
322
Group: Application/CTA
Steven Murray's avatar
Steven Murray committed
323
Requires: cta-lib = %{version}-%{release}
324
325
326
327
%description -n cta-catalogueutils
CERN Tape Archive:
Scripts and utilities to faciliate working with the CTA catalogue
%files -n cta-catalogueutils
328
%attr(0755,root,root) %{_bindir}/cta-catalogue-admin-user-create
329
%attr(0755,root,root) %{_bindir}/cta-catalogue-schema-create
330
%attr(0755,root,root) %{_bindir}/cta-catalogue-schema-drop
331
%attr(0755,root,root) %{_bindir}/cta-database-poll
332
333
334
335
%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
336
337
338
339

%package -n cta-mediachangerutils
Summary: Utilities to faciliate working with mediachangers
Group: Application/CTA
Steven Murray's avatar
Steven Murray committed
340
Requires: cta-lib = %{version}-%{release}
341
342
343
344
345
346
%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
347
348
%attr(0644,root,root) %doc /usr/share/man/man1/cta-mediachanger-dismount.1cta.gz
%attr(0644,root,root) %doc /usr/share/man/man1/cta-mediachanger-mount.1cta.gz
349

Anastasia Karachaliou's avatar
Anastasia Karachaliou committed
350
351
%package -n cta-rmcd
Summary: Tools to faciliate working with rmcd and smc in cta
352
Group: Application/CTA
Anastasia Karachaliou's avatar
Anastasia Karachaliou committed
353
Requires: logrotate
Steven Murray's avatar
Steven Murray committed
354
Requires: cta-common = %{version}-%{release}
Anastasia Karachaliou's avatar
Anastasia Karachaliou committed
355
%description -n cta-rmcd
356
CERN Tape Archive:
Anastasia Karachaliou's avatar
Anastasia Karachaliou committed
357
358
Tools to faciliate working with rmcd and smc in cta
%files -n cta-rmcd
359
360
%defattr(-,root,root)
%attr(0644,root,root) %config(noreplace) /etc/logrotate.d/cta-rmcd
361
%attr(0644,root,root) %doc /usr/share/man/man1/cta-rmcd.1cta.gz
362
%attr(0755,root,root) %{_bindir}/cta-rmcd
363
%attr(0755,root,root) %{_bindir}/cta-smc
Anastasia Karachaliou's avatar
Anastasia Karachaliou committed
364
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-rmcd.conf
365
366
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-smc.conf
%attr(0644,root,root) %doc /usr/share/man/man1/cta-smc.1cta.gz
367
%attr(0644,root,root) %config(noreplace) /etc/sysconfig/cta-rmcd
Anastasia Karachaliou's avatar
Anastasia Karachaliou committed
368
%attr(0644,root,root) /etc/systemd/system/cta-rmcd.service
369

370
371
%post -n cta-rmcd
%systemd_post cta-rmcd.service
372
%systemdDaemonReload
373
374
375
376
377
378

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

%postun -n cta-rmcd
%systemd_postun cta-rmcd.service
379
%systemdDaemonReload
380

Steven Murray's avatar
Steven Murray committed
381
382
383
384
385
386
387
388
389
390
391
392
%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
393
394
395
396
397
398
399
400
401
402
403
404
405
406

%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
407
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/cta/cta-fst-gcd.conf.example
408
409
410
411
412
413
414
415
%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