]> git.proxmox.com Git - mirror_kronosnet.git/blob - kronosnet.spec.in
Merge pull request #96 from kronosnet/modules2
[mirror_kronosnet.git] / kronosnet.spec.in
1 ###############################################################################
2 ###############################################################################
3 ##
4 ## Copyright (C) 2012-2017 Red Hat, Inc. All rights reserved.
5 ##
6 ## This copyrighted material is made available to anyone wishing to use,
7 ## modify, copy, or redistribute it subject to the terms and conditions
8 ## of the GNU General Public License v.2 or higher
9 ##
10 ###############################################################################
11 ###############################################################################
12
13 # keep around ready for later user
14 %global alphatag @alphatag@
15 %global numcomm @numcomm@
16 %global dirty @dirty@
17
18 # set defaults from ./configure invokation
19 %@sctp@ sctp
20 %@nss@ nss
21 %@openssl@ openssl
22 %@zlib@ zlib
23 %@lz4@ lz4
24 %@lzo2@ lzo2
25 %@lzma@ lzma
26 %@bzip2@ bzip2
27 %@kronosnetd@ kronosnetd
28 %@libtap@ libtap
29 %@runautogen@ runautogen
30
31 %if %{with sctp}
32 %global buildsctp 1
33 %endif
34 %if %{with nss}
35 %global buildcryptonss 1
36 %endif
37 %if %{with openssl}
38 %global buildcryptoopenssl 1
39 %endif
40 %if %{with zlib}
41 %global buildcompresszlib 1
42 %endif
43 %if %{with lz4}
44 %global buildcompresslz4 1
45 %endif
46 %if %{with lzo2}
47 %global buildcompresslzo2 1
48 %endif
49 %if %{with lzma}
50 %global buildcompresslzma 1
51 %endif
52 %if %{with bzip2}
53 %global buildcompressbzip2 1
54 %endif
55 %if %{with libtap}
56 %global buildlibtap 1
57 %endif
58 %if %{with kronosnetd}
59 %global buildlibtap 1
60 %global buildkronosnetd 1
61 %endif
62 %if %{with runautogen}
63 %global buildautogen 1
64 %endif
65
66 # main (empty) package
67 # http://www.rpm.org/max-rpm/s1-rpm-subpack-spec-file-changes.html
68
69 Name: kronosnet
70 Summary: Multipoint-to-Multipoint VPN daemon
71 Version: @version@
72 Release: 1%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist}
73 License: GPLv2+ and LGPLv2+
74 Group: System Environment/Base
75 URL: https://github.com/fabbione/kronosnet/
76 Source0: https://github.com/fabbione/kronosnet/archive/%{name}-%{version}%{?numcomm:.%{numcomm}}%{?alphatag:-%{alphatag}}%{?dirty:-%{dirty}}.tar.gz
77
78 ## Setup/build bits
79
80 BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
81
82 # Build dependencies
83 BuildRequires: gcc
84 %if %{defined buildsctp}
85 BuildRequires: lksctp-tools-devel
86 %endif
87 %if %{defined buildcryptonss}
88 BuildRequires: /usr/include/nss3/nss.h /usr/include/nspr4/nspr.h
89 %endif
90 %if %{defined buildcryptoopenssl}
91 BuildRequires: /usr/include/openssl/conf.h
92 %endif
93 %if %{defined buildcompresszlib}
94 BuildRequires: zlib-devel
95 %endif
96 %if %{defined buildcompresslz4}
97 BuildRequires: /usr/include/lz4hc.h
98 %endif
99 %if %{defined buildcompresslzo2}
100 BuildRequires: lzo-devel
101 %endif
102 %if %{defined buildcompresslzma}
103 BuildRequires: xz-devel
104 %endif
105 %if %{defined buildcompressbzip2}
106 BuildRequires: /usr/include/bzlib.h
107 %endif
108 %if %{defined buildkronosnetd}
109 BuildRequires: libqb-devel pam-devel
110 %endif
111 %if %{defined buildautogen}
112 BuildRequires: autoconf
113 BuildRequires: automake
114 BuildRequires: libtool
115 %endif
116
117 %prep
118 %setup -q -n %{name}-%{version}%{?numcomm:.%{numcomm}}%{?alphatag:-%{alphatag}}%{?dirty:-%{dirty}}
119
120 %build
121 %if %{with runautogen}
122 ./autogen.sh
123 %endif
124
125 %{configure} \
126 %if %{defined buildsctp}
127 --enable-libknet-sctp \
128 %else
129 --disable-libknet-sctp \
130 %endif
131 %if %{defined buildcryptonss}
132 --enable-crypto-nss \
133 %else
134 --disable-crypto-nss \
135 %endif
136 %if %{defined buildcryptoopenssl}
137 --enable-crypto-openssl \
138 %else
139 --disable-crypto-openssl \
140 %endif
141 %if %{defined buildcompresszlib}
142 --enable-compress-zlib \
143 %else
144 --disable-compress-zlib \
145 %endif
146 %if %{defined buildcompresslz4}
147 --enable-compress-lz4 \
148 %else
149 --disable-compress-lz4 \
150 %endif
151 %if %{defined buildcompresslzo2}
152 --enable-compress-lzo2 \
153 %else
154 --disable-compress-lzo2 \
155 %endif
156 %if %{defined buildcompresslzma}
157 --enable-compress-lzma \
158 %else
159 --disable-compress-lzma \
160 %endif
161 %if %{defined buildcompressbzip2}
162 --enable-compress-bzip2 \
163 %else
164 --disable-compress-bzip2 \
165 %endif
166 %if %{defined buildkronosnetd}
167 --enable-kronosnetd \
168 %endif
169 %if %{defined buildlibtap}
170 --enable-libtap \
171 %endif
172 --with-initdefaultdir=%{_sysconfdir}/sysconfig/ \
173 %if %{defined _unitdir}
174 --with-systemddir=%{_unitdir}
175 %else
176 --with-initddir=%{_sysconfdir}/rc.d/init.d/
177 %endif
178
179 make %{_smp_mflags}
180
181 %install
182 rm -rf %{buildroot}
183 make install DESTDIR=%{buildroot}
184
185 # tree cleanup
186 # remove static libraries
187 find %{buildroot} -name "*.a" -exec rm {} \;
188 # remove libtools leftovers
189 find %{buildroot} -name "*.la" -exec rm {} \;
190
191 # handle systemd vs init script
192 %if %{defined _unitdir}
193 # remove init scripts
194 rm -rf %{buildroot}/etc/init.d
195 %else
196 # remove systemd specific bits
197 find %{buildroot} -name "*.service" -exec rm {} \;
198 %endif
199
200 # remove docs
201 rm -rf %{buildroot}/usr/share/doc/kronosnet
202
203 %clean
204 rm -rf %{buildroot}
205
206 # main empty package
207 %description
208 kronosnet source
209
210 %if %{defined buildkronosnetd}
211 ## Runtime and subpackages section
212 %package -n kronosnetd
213 Group: System Environment/Base
214 Summary: Multipoint-to-Multipoint VPN daemon
215 %if %{defined _unitdir}
216 # Needed for systemd unit
217 Requires(post): systemd-sysv
218 Requires(post): systemd-units
219 Requires(preun): systemd-units
220 Requires(postun): systemd-units
221 %else
222 Requires(post): chkconfig
223 Requires(preun): chkconfig, initscripts
224 %endif
225 Requires(post): shadow-utils
226 Requires(preun): shadow-utils
227 Requires: pam, /etc/pam.d/passwd
228
229 %description -n kronosnetd
230 The kronosnet daemon is a bridge between kronosnet switching engine
231 and kernel network tap devices, to create and administer a
232 distributed LAN over multipoint-to-multipoint VPNs.
233 The daemon does a poor attempt to provide a configure UI similar
234 to other known network devices/tools (Cisco, quagga).
235 Beside looking horrific, it allows runtime changes and
236 reconfiguration of the kronosnet(s) without daemon reload
237 or service disruption.
238
239 %post -n kronosnetd
240 %if %{defined _unitdir}
241 %if 0%{?systemd_post:1}
242 %systemd_post kronosnetd.service
243 %else
244 /bin/systemctl daemon-reload >/dev/null 2>&1 || :
245 %endif
246 %else
247 /sbin/chkconfig --add kronosnetd
248 %endif
249 /usr/sbin/groupadd --force --system @defaultadmgroup@
250
251 %preun -n kronosnetd
252 %if %{defined _unitdir}
253 %if 0%{?systemd_preun:1}
254 %systemd_preun kronosnetd.service
255 %else
256 if [ "$1" -eq 0 ]; then
257 /bin/systemctl --no-reload disable kronosnetd.service
258 /bin/systemctl stop kronosnetd.service >/dev/null 2>&1
259 fi
260 %endif
261 %else
262 if [ "$1" = 0 ]; then
263 /sbin/service kronosnetd stop >/dev/null 2>&1
264 /sbin/chkconfig --del kronosnetd
265 fi
266 %endif
267
268 %files -n kronosnetd
269 %defattr(-,root,root,-)
270 %doc COPYING.* COPYRIGHT
271 %dir %{_sysconfdir}/kronosnet
272 %dir %{_sysconfdir}/kronosnet/*
273 %config(noreplace) %{_sysconfdir}/sysconfig/kronosnetd
274 %config(noreplace) %{_sysconfdir}/pam.d/kronosnetd
275 %config(noreplace) %{_sysconfdir}/logrotate.d/kronosnetd
276 %if %{defined _unitdir}
277 %{_unitdir}/kronosnetd.service
278 %else
279 %config(noreplace) %{_sysconfdir}/rc.d/init.d/kronosnetd
280 %endif
281 %{_sbindir}/*
282 %{_mandir}/man8/*
283 %endif
284
285 %if %{defined buildlibtap}
286 %package -n libtap1
287 Group: System Environment/Libraries
288 Summary: Simple userland wrapper around kernel tap devices
289
290 %description -n libtap1
291 This is an over-engineered commodity library to manage a pool
292 of tap devices and provides the basic
293 pre-up.d/up.d/down.d/post-down.d infrastructure.
294
295 %files -n libtap1
296 %defattr(-,root,root,-)
297 %doc COPYING.* COPYRIGHT
298 %{_libdir}/libtap.so.*
299
300 %post -n libtap1 -p /sbin/ldconfig
301
302 %postun -n libtap1 -p /sbin/ldconfig
303
304 %package -n libtap1-devel
305 Group: Development/Libraries
306 Summary: Simple userland wrapper around kernel tap devices (developer files)
307 Requires: libtap1 = %{version}-%{release}
308 Requires: pkgconfig
309
310 %description -n libtap1-devel
311 This is an over-engineered commodity library to manage a pool
312 of tap devices and provides the basic
313 pre-up.d/up.d/down.d/post-down.d infrastructure.
314
315 %files -n libtap1-devel
316 %defattr(-,root,root,-)
317 %doc COPYING.* COPYRIGHT
318 %{_libdir}/libtap.so
319 %{_includedir}/libtap.h
320 %{_libdir}/pkgconfig/libtap.pc
321 %endif
322
323 %package -n libknet1
324 Group: System Environment/Libraries
325 Summary: Kronosnet core switching implementation
326
327 %description -n libknet1
328 The whole kronosnet core is implemented in this library.
329 Please refer to the not-yet-existing documentation for further
330 information.
331
332 %files -n libknet1
333 %defattr(-,root,root,-)
334 %doc COPYING.* COPYRIGHT
335 %{_libdir}/libknet.so.*
336 %dir %{_libdir}/kronosnet
337
338 %post -n libknet1 -p /sbin/ldconfig
339
340 %postun -n libknet1 -p /sbin/ldconfig
341
342 %package -n libknet1-devel
343 Group: Development/Libraries
344 Summary: Kronosnet core switching implementation (developer files)
345 Requires: libknet1 = %{version}-%{release}
346 Requires: pkgconfig
347
348 %description -n libknet1-devel
349 The whole kronosnet core is implemented in this library.
350 Please refer to the not-yet-existing documentation for further
351 information.
352
353 %files -n libknet1-devel
354 %defattr(-,root,root,-)
355 %doc COPYING.* COPYRIGHT
356 %{_libdir}/libknet.so
357 %{_includedir}/libknet.h
358 %{_libdir}/pkgconfig/libknet.pc
359 %{_mandir}/man3/*.3.gz
360
361 %if %{defined buildcryptonss}
362 %package -n libknet1-crypto-nss-plugin
363 Group: System Environment/Libraries
364 Summary: libknet1 nss support
365 Requires: libknet1 = %{version}-%{release}
366
367 %description -n libknet1-crypto-nss-plugin
368 NSS crypto support for libknet1.
369
370 %files -n libknet1-crypto-nss-plugin
371 %defattr(-,root,root,-)
372 %{_libdir}/kronosnet/crypto_nss.so
373 %endif
374
375 %if %{defined buildcryptoopenssl}
376 %package -n libknet1-crypto-openssl-plugin
377 Group: System Environment/Libraries
378 Summary: libknet1 openssl support
379 Requires: libknet1 = %{version}-%{release}
380
381 %description -n libknet1-crypto-openssl-plugin
382 OpenSSL crypto support for libknet1.
383
384 %files -n libknet1-crypto-openssl-plugin
385 %defattr(-,root,root,-)
386 %{_libdir}/kronosnet/crypto_openssl.so
387 %endif
388
389 %if %{defined buildcompresszlib}
390 %package -n libknet1-compress-zlib-plugin
391 Group: System Environment/Libraries
392 Summary: libknet1 zlib support
393 Requires: libknet1 = %{version}-%{release}
394
395 %description -n libknet1-compress-zlib-plugin
396 zlib compression support for libknet1.
397
398 %files -n libknet1-compress-zlib-plugin
399 %defattr(-,root,root,-)
400 %{_libdir}/kronosnet/compress_zlib.so
401 %endif
402 %if %{defined buildcompresslz4}
403 %package -n libknet1-compress-lz4-plugin
404 Group: System Environment/Libraries
405 Summary: libknet1 lz4 and lz4hc support
406 Requires: libknet1 = %{version}-%{release}
407
408 %description -n libknet1-compress-lz4-plugin
409 lz4 and lz4hc compression support for libknet1.
410
411 %files -n libknet1-compress-lz4-plugin
412 %defattr(-,root,root,-)
413 %{_libdir}/kronosnet/compress_lz4.so
414 %{_libdir}/kronosnet/compress_lz4hc.so
415 %endif
416
417 %if %{defined buildcompresslzo2}
418 %package -n libknet1-compress-lzo2-plugin
419 Group: System Environment/Libraries
420 Summary: libknet1 lzo2 support
421 Requires: libknet1 = %{version}-%{release}
422
423 %description -n libknet1-compress-lzo2-plugin
424 lzo2 compression support for libknet1.
425
426 %files -n libknet1-compress-lzo2-plugin
427 %defattr(-,root,root,-)
428 %{_libdir}/kronosnet/compress_lzo2.so
429 %endif
430
431 %if %{defined buildcompresslzma}
432 %package -n libknet1-compress-lzma-plugin
433 Group: System Environment/Libraries
434 Summary: libknet1 lzma support
435 Requires: libknet1 = %{version}-%{release}
436
437 %description -n libknet1-compress-lzma-plugin
438 lzma compression support for libknet1.
439
440 %files -n libknet1-compress-lzma-plugin
441 %defattr(-,root,root,-)
442 %{_libdir}/kronosnet/compress_lzma.so
443 %endif
444
445 %if %{defined buildcompressbzip2}
446 %package -n libknet1-compress-bzip2-plugin
447 Group: System Environment/Libraries
448 Summary: libknet1 bzip2 support
449 Requires: libknet1 = %{version}-%{release}
450
451 %description -n libknet1-compress-bzip2-plugin
452 bzip2 compression support for libknet1.
453
454 %files -n libknet1-compress-bzip2-plugin
455 %defattr(-,root,root,-)
456 %{_libdir}/kronosnet/compress_bzip2.so
457 %endif
458
459 %package -n libknet1-crypto-plugins-all
460 Group: System Environment/Libraries
461 Summary: libknet1 crypto plugins meta package
462 %if %{defined buildcryptonss}
463 Requires: libknet1-crypto-nss-plugin
464 %endif
465 %if %{defined buildcryptoopenssl}
466 Requires: libknet1-crypto-openssl-plugin
467 %endif
468
469 %description -n libknet1-crypto-plugins-all
470 meta package to install all of libknet1 crypto plugins
471
472 %files -n libknet1-crypto-plugins-all
473
474 %package -n libknet1-compress-plugins-all
475 Group: System Environment/Libraries
476 Summary: libknet1 compress plugins meta package
477 %if %{defined buildcompresszlib}
478 Requires: libknet1-compress-zlib-plugin
479 %endif
480 %if %{defined buildcompresslz4}
481 Requires: libknet1-compress-lz4-plugin
482 %endif
483 %if %{defined buildcompresslzo2}
484 Requires: libknet1-compress-lzo2-plugin
485 %endif
486 %if %{defined buildcompresslzma}
487 Requires: libknet1-compress-lzma-plugin
488 %endif
489 %if %{defined buildcompressbzip2}
490 Requires: libknet1-compress-bzip2-plugin
491 %endif
492
493 %description -n libknet1-compress-plugins-all
494 meta package to install all of libknet1 compress plugins
495
496 %files -n libknet1-compress-plugins-all
497
498 %package -n libknet1-plugins-all
499 Group: System Environment/Libraries
500 Summary: libknet1 plugins meta package
501 Requires: libknet1-compress-plugins-all
502 Requires: libknet1-crypto-plugins-all
503
504 %description -n libknet1-plugins-all
505 meta package to install all of libknet1 plugins
506
507 %files -n libknet1-plugins-all
508
509 %changelog
510 * @date@ Autotools generated version <nobody@nowhere.org> - @version@-1-@numcomm@.@alphatag@.@dirty@
511 - These aren't the droids you're looking for.
512