# # spec file for package libqb # # Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %bcond_without check Name: libqb Version: 1.0.3+20190115.c880fcf Release: 1.1 Summary: An IPC library for high performance servers License: LGPL-2.1-or-later Group: Development/Libraries/C and C++ Url: https://github.com/ClusterLabs/libqb Source0: %{name}-%{version}.tar.xz Source1: baselibs.conf Patch1: libqb-configure-package-version.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: autoconf BuildRequires: automake BuildRequires: check-devel BuildRequires: doxygen BuildRequires: libtool BuildRequires: pkgconfig BuildRequires: procps # Need git so build-aux/git-version-gen can extract the version number and # commit hash during autogen run (not used currently) #BuildRequires: git %description libqb is a library providing high performance client server reusable features. It provides logging, tracing, IPC, and polling. %package -n libqb20 Summary: An IPC library for high performance servers Group: System/Libraries Provides: %{name} = %{version}-%{release} %description -n libqb20 libqb is a library providing high performance client server reusable features. It provides logging, tracing, IPC, and polling. %package devel Summary: Development files for %{name} Group: Development/Libraries/C and C++ Requires: %{name} = %{version}-%{release} %description devel libqb is a library providing high performance client server reusable features. It provides logging, tracing, IPC, and polling. %package tools Summary: Utilities from libqb, an IPC library Group: Development/Tools/Other Provides: libqb0:/usr/sbin/qb-blackbox Conflicts: libqb0 <= 1.0.3 %description tools libqb is a library providing high performance client server reusable features. It provides logging, tracing, IPC, and polling. %prep %setup -q -n %{name}-%{version} %patch1 -p1 %build ./autogen.sh %configure --disable-static make %{?_smp_mflags} %if 0%{?with_check} %check # Tests require writable /dev/shm and /var/run # TODO: This test might not be quite right -- it seems to fail on OBS, # but OBS is capable of doing "make check" successfully, whereas # "osc build" in a chroot fails. if [ -w /dev/shm -a -w /var/run ] ; then make V=1 check fi %endif %install %make_install find %{buildroot} -name '*.la' -delete rm -rf %{buildroot}%{_datadir}/doc %post -n libqb20 -p /sbin/ldconfig %postun -n libqb20 -p /sbin/ldconfig %files -n libqb20 %doc COPYING %{_libdir}/libqb.so.* %files devel %defattr(-,root,root,-) %doc COPYING README.markdown %{_includedir}/qb/ %{_libdir}/libqb.so %{_libdir}/pkgconfig/libqb.pc %{_mandir}/man3/qb*3* %files tools %defattr(-,root,root,-) %doc COPYING %{_sbindir}/qb-blackbox %{_mandir}/man8/qb-blackbox.8.gz %changelog * Thu Feb 7 2019 ygao@suse.com - spec: libqb-tools conflicts with libqb0 <= 1.0.3 * Tue Jan 29 2019 ygao@suse.com - spec: libqb20 provides libqb-%%{version}-%%{release} - spec: add missing COPYING in libqb20 package * Tue Jan 29 2019 Jan Engelhardt - Trim filler wording from descriptions. Remove unnecesary pkgconfig Requires (automatically discovered). - Split non-library parts of libqb20 into libqb-tools. * Thu Jan 24 2019 ygao@suse.com - Update to version 1.0.3+20190115.c880fcf: - Add Pthreads (and possibly other) flags to the pkg-config file (#332) - skiplist: Fix previous skiplist fix * Mon Nov 12 2018 ygao@suse.com - Update to version 1.0.3+20181112.926e851: - log: Remove more dead code from linker callsites (#331) (bsc#1074327, bsc#1098449) - Add the option of hi-res (millisecond) timestamps (#329) - log: Add configure-time option to use systemd journal instead of syslog (#327) - log: Add option to re-open a log file (#326) - skiplist: fix use-after-free in the skiplist traversal * Mon Oct 1 2018 ygao@suse.com - Update to version 1.0.3+20180927.633f262: - logging: Remove linker 'magic' and just use statics for logging callsites (#322) (bsc#1074327, bsc#1098449) - log: Use RTLD_NOOPEN when checking symbols (#310) - low customisable log line length (#292) - ipc_shm: Don't truncate SHM files of an active server (#307) * Tue Jan 2 2018 ygao@suse.com - Update to version 1.0.3+20171226.6d62b64: - build: fix configure script neglecting, re-enable out-of-tree builds * Fri Dec 22 2017 ygao@suse.com - Update to version 1.0.3 - warnings cleanup: fix initialiser warning - warnings cleanup: Wformat: sign-correct PRIu32 specifiers as appropriate - warnings cleanup: Wsign-compare: log_format: int32_t -> size_t - warnings cleanup: Wsign-compare: hdb: uint32_t <-> int32_t - warnings cleanup: Wsign-compare: array: int32_t -> size_t - warnings cleanup: hdb+loop_timerlist: Wsign-compare: (canary?) variables - warnings cleanup: Wshift-overflow: trigger arithmetic conv. to unsigned - Upstream version cs: 28dff090c74b6ba8609c4797294a5afe3fe73987 (v1.0.3) * Thu Dec 14 2017 ygao@suse.com - fix internal object symbol's leak & expose run-time lib version (bsc#1074327) - bare fix for libqb logging not working with ld.bfd/binutils 2.29+ (bsc#1074327) - add extra run-time (client, libqb) checks that logging will work (bsc#1074327) - tests: add a script to generate callsite-heavy logging client... (bsc#1074327) - tests: new sort of tests dubbed "functional", cover linker vs. logging (bsc#1074327) - configure: check section boundary symbols present in the test (bsc#1074327) - qblog.h: better explanation + behaviour of QB_LOG_INIT_DATA (bsc#1074327) - log: use fdatasync instead of fsync where possible (#263) - Upstream version cs: c011b12fcaf093f0463901154c475905f51d783a * Fri Jul 21 2017 ygao@suse.com - loop: don't bring runtime down for a trivial API misuse - Upstream version cs: ef4c3a15ea3d3c5d5f9364269cd02d78a308957b * Fri Jul 21 2017 ygao@suse.com - Update to version 1.0.2 - Memleak fixes (#194) - Allow Linux to use filesystem sockets (#248) (fate#323415) - Upstream version cs: 608de6d59a3de0eef0fbcbd8f284acbc018daa9a (v1.0.2) * Mon Mar 6 2017 ygao@suse.com - loop: Fix splint error - loop: Also set signals changed in qb_loop_signal_mod() back to SIG_DFL (bsc#1026176) - loop: don't override external signal handlers (bsc#1026176) - Upstream version cs: 59eacf07dd92af6917ed351c0c5e51ec5237965c * Wed Feb 22 2017 jengelh@inai.de - RPM group fix; use find -delete over rm. * Mon Feb 20 2017 ygao@suse.com - [ringbuffer] Return error from peek if RB is corrupted. (bsc#1026176) - build: drop allegedly no longer intrusive syslog-tests opt-in switch - Upstream version cs: afdff97f1af8e1be916816ad8b6d5530fa7c6637 * Mon Feb 20 2017 ygao@suse.com - version: Update version for 1.0.1 release - rb: use new qb_rb_close_helper able to resort to file truncating (bsc#1026176) - rb: make it more robust against trivial IPC API misuses (bsc#1026176) - log_thread: logt_wthread_lock is vital for logging thread (bsc#1026176) - log: Don't overwrite valid tags (bsc#1026176) - ipc_shm: fix superfluous NULL check - log: Add missing z,j, & t types to the logger (bsc#1026176) - log: check for appropriate space when serializing a char (bsc#1026176) - Upstream version cs: 0a329683a76bc6aeb36f20f2bf6b43ba0440c4dc (v1.0.1) * Fri Apr 15 2016 ygao@suse.com - further avoid magic in qblog.h by using named constants - defs: add wrappers over preprocessor operators - Upstream version cs: 6f2b3e85d0315288ee76869b99369e2b1f2f1b71 * Fri Apr 1 2016 ygao@suse.com - Update to version 1.0.0 - build: update library soname to 0.18.0 - build: enable syslog tests when configuring in spec - log: allow changing the identifier for syslog (+tests) - ipc: return -errno when getsockopt/setsockopt fail - ipc: set socket buffer size used by ipcs service - ipc: set socket receive buffer - includes: format __attribute__ func. annotations in qblog.h - spec cleanup: get rid of redundant %%clean section - ipc: set gid on unix sockets - lib: store server peer credentials in qb_ipcc_connection - lib: create mmap files in socket directory - includes: Fix format string - ipc: Prevent fd and memory leaks in handle_new_connection() (bsc#947341) * Drop bug-947341_libqb-ipc-fd-memory-leaks.patch which has been merged upstream - Upstream version cs: 6fc24f855bfc8dadb4c84bf823b225680670b1c3 (v1.0) * Thu Oct 8 2015 ygao@suse.com - ipc: Prevent fd and memory leaks in handle_new_connection() (bsc#947341) * bug-947341_libqb-ipc-fd-memory-leaks.patch * Thu Oct 8 2015 ygao@suse.com - log: don't call dlopen inside dl_iterate_phdr() - ipc: Don't send the dispatch_del() function a closed fd - Upstream version cs: 1a7ea3b8d8bf9d5ffbbfdc785ace2b81e9f2356d * Thu Aug 27 2015 ygao@suse.com - Update to version 0.17.2 (bsc#943486) - ipcc: valgrind "invalid file descriptor" warning - ipc: Increase the length of description field. - Upstream version cs: 4d817cc7e0b620acda8cc45266dc085c5bf48c59 * Wed Jun 3 2015 ygao@suse.com - log: Implement "extended" logging using a marker character - Upstream version cs: 35faa45558b0ae44e3a244fbd3e8f9405d535526 * Thu Apr 30 2015 ygao@suse.com - loop: fixes resource starvation in mainloop code (bsc#929835) - Upstream version cs: c3bcf25b72bf451c2ef79ec3946a1c48077a50a0 * Mon Mar 9 2015 ygao@suse.com - ipc_setup: yield to scheduler during new connection auth processing - kqueue: The udata member of the kevent struct is a void * - Upstream version cs: 83552692aa5425e50049b130eb2e17ea7b31217d * Tue Oct 21 2014 ygao@suse.com - Bump release version to 0.17.1 - check_ipc.c: improve error checking during ipc stress tests - ipcs: Correctly allocate receive buffer size - ipc_socket: Signalhandler must be resetted to Default, use only cleanup_sigpipe to return from qb_ipc_dgram_sock_setup. - trie: allow modifying the trie map during the notify callback - Upstream version cs: 3f7de657855bb9fb4e58777851735bf663fa7f3f * Mon Jul 28 2014 ygao@suse.com - log: return filter type enum to preserve abi compatibilty with corosync - Upstream version cs: e5b8950863b92b314675ba0cbba13f00b8b77c52 * Tue Jul 1 2014 ygao@suse.com - epoll: don't miss poll events under high load - ipc_shm: fix error handling in qb_ipcs_shm_connect() - ringbuffer: fix size in qb_rb_create_from_file() - trie: cleanup ref count logic in trie_notify_del - ipcs: Cleanup unnecessary reference counting - Upstream version cs: b103e1ae61f6fc288cfb228344f24508adaaba9a * Fri Mar 21 2014 ygao@suse.com - ipcc: Properly timeout during recv when timeout value is provided - Upstream version cs: c6f4fcd778248c41e5b108159d00cf1798a296d4 * Thu Feb 20 2014 ygao@suse.com - Bump version to 0.17.0 - ipc_socket: further optimize max msg size calculations for fbsd portability tests - ipc_socket: Allow socket max msg size to be calculated more accurately - Upstream version cs: 78978d07ac2f19a801ebde61379ac55359cc17f3 * Sat Feb 8 2014 ygao@suse.com - ipcs: Prevent ipc server use after free. - Upstream version cs: 29bbe615b5fe6da17db3d6774df557960ae78bbb * Fri Jan 17 2014 ygao@suse.com - ipc: Remove ipc connection reference given to dispatch functions (bnc#857779) - ipc: Fixes memory leak in server connection accept when client partially connects (bnc#857779) - Upstream version cs: d9706f75619976e334a109d0dbfdeac3b1074fe4 * Thu Jan 9 2014 ygao@suse.com - IPC: Increase the listen backlog of IPC server (bnc#857779) - Upstream version cs: b579f7af151f453a870bbaac037084df13b45ef9 * Mon Nov 25 2013 ygao@suse.com - New api function to retrieve client buffer size - Enforce buffer size limits on the server side - Filter logs using regex patter on function, format, or filename - Upstream version cs: b09473fd4a03b4434efd44408f7ae631a855f9cd * Sat Nov 16 2013 ygao@suse.com - Add libqb-configure-package-version.patch * Build: Generate PACKAGE_VERSION according to the basename of the top directory * Wed Oct 23 2013 ygao@suse.com - ipc_setup: Set SO_PASSCRED on listener socket - log: Filtering by function and file must match exactly, no substring matches - blackbox: Abort blackbox logging on ringbuffer overwrite reclaim error - ipcs: Api function allowing server to retrieve client connection's ipc buffer size - ringbuffer: Abort during chunk reclaim if OVERWRITE flag is set and reclaim fails. - blackbox: unique blackbox ringbuffer files per pid - ipc_socket: Fixes fd leak in socket ipc client disconnection - Detect the max signal value that can be used using NSIG macro - Avoid double-decrement of level->todo - Upstream version cs: b4c36efff8b91f287da87590911a01184243cf64 * Tue Sep 24 2013 ygao@suse.com - Add baselibs.conf * Fri Jul 26 2013 ygao@suse.com - Bump version to 0.16.0 - ipc_socket.c: Detect EOF connection on connection STREAM socket - ipc_socket.c: Handle the unlikely event of an EAGAIN or EINTR during dgram max size detection - Fixes sem leak - Fixes less-than-zero comparision of unsigned int - Fixes double fd close - Fixes fd leak - Fixes use ater free in shm disconnect - Fixes use after free during ipcs client disconnect - ipcc: Add abilty to verify dgram kernel buffer size meets max msg value - Upstream version cs: 75f7ed373758b3cb9087e89e4fae17379dd7b483 (v0.16.0) * Mon Jul 22 2013 ygao@suse.com - ringbuffer: Make max_size of ringbuffer accurate so shm ipc max msg size value is honored - ipcs: For shm ipc, always retry outstanding notifications when next event is sent - ipc_socket: In fbsd send() returns ENOBUFS when dgram queue is full, this should be treated similar to EAGAIN - kqueue: Properly enable kqueue filter in poll loop - ipcs: Attempt to resend outstanding event notifications during event send - ipcs: Disconnect shm ipc connection when poll socket returns error on msg receive - ipcs: Properly disconnect client connection on POLLNVAL or any other error causing connection removal from mainloop. - Upstream version cs: 39e9ef542dc89893c7c5af4fbd539338266e8031 * Tue Jul 2 2013 coolo@suse.com - disable _service services to be acceptable for factory. To update tar, run osc service dr * Tue Jul 2 2013 ygao@suse.com - Simplify internal ipcs ref counting, add comments and document api behavior - Simplifies connection ref counting without changing behavior - Fix: refcount leak - Fix: ringbuffer: Add file header version field and detect reading corrupted blackbox files using hash value - fix a problem when the character string beyond the number of the maximum characters is passed - Add a IPC service context pointer and accessors from both the connection and service level. - ringbuffer: use atomic ops on ringbuffer chunk magic - IPC: make each connection ref the owning service - Indicate when/why qb_rb_force_close() fails to remove share memory files - Deal better with corrupt blackbox files. - Upstream version cs: 7c6e109046ec772a97a7fe2cdf61f84fc2155b7e * Thu Mar 28 2013 ygao@suse.com - IPC: fix the connection state checking - LOG: copy the function/filename for dynamic callsites - Properly discover SO_NOSIGPIPE and MSG_SIGNAL - IPC: fix call to QB_SUN_LEN - list: don't splice empty lists onto the head. - rpl_sem: make destroy more compliant - RB: make the "sem" abstraction into a notifier - Upstream version cs: 258e86583ecd2437161211b9d70bc69229630e7e * Mon Feb 25 2013 ygao@suse.com - Use dgram sockets for message oriented communications - IPC: don't interpret EMSGSIZE and ENOMSG as a disconnect - POLL: prevent a spin if the fd is not removed from the mainloop - Upstream version cs: 31d9f0900db728cfe182799b61b05759a6a26e8b * Fri Feb 8 2013 ygao@suse.com - IPC: make sure we return a consistent error when the message is too big. - Upstream version cs: 9d2eca251bdd1833889f42f4e60238c4c774906e * Fri Jan 18 2013 ygao@suse.com - Bump the version to 0.14.4 - LOG: prevent the last char of the blackbox message from getting lost. - Add the processing which remove notifier at skiplist_destroy function - Add the processing which remove hash node and notifier at hashtable_destroy function - Upstream version cs: 848242a7860c5a7e19240c2ded053fa9908af9e0 * Fri Jan 11 2013 ygao@suse.com - Fix return code which is an error occurred at pthread function - LOG: fix truncation in some messages that get padded. - Fix the blackbox formatter when specifing the string len/precision - Fix strlcpy and strlcat functions - IPC: don't over log on disconnect - LOG: Make sure we don't use the format string whilst it is getting changed. - Upstream version cs: eceee03a7bc4962a0b136c38344c7e0c16908489 * Sun Dec 9 2012 ygao@suse.com - ptrie: deref the current node in trie_iter_free() - LOG: fix the format comparison to avoid generating multiple entries. - LOG: set the return code when calloc fails - Upstream version cs: 813dfb5fd2bce6ac1353b03b5bed3a7eb46dc278 * Tue Nov 20 2012 ygao@suse.com - FATE#313816: Use libqb for logging and IPC * Fri Nov 16 2012 ygao@suse.com - Bump the version to 0.14.3 - IPC: call poll if we are mid message and get EAGAIN - Make sure that mmap'ed files smaller than a page size are written to. - IPC: Pass the timeout to poll() if the recv function returns EAGAIN - LOG: make the format comparison safe and sane - LOG: don't break on empty callsites, just ignore them - LOG: use the array callback to register new callsites - array: add a mechanism to get a callback when a bin is allocated - Fix a crash in ptrie if you iterate over the map in the deleted notifier. - Make sure atomic's are initialized (for non-gcc atomic). - ipc_us: slightly more robust cmsg handling - ipc_us: on Linux, set SO_PASSCRED on the sending socket too - blackbox: fix 64-bit big-endian issues - RB: change the #error to ENOTSUP if no usable shared process sem - LOG: Make sure the semaphores are initialized. - Upstream version cs: 709b32de434ec157ec2a73153e58ffec186ae660 * Fri Jul 20 2012 ygao@suse.com - Bump the version to 0.14.1 - RB: set the new read pointer after clearing the header. - RB: if read or peek don't get the message then re-post to the semaphore - IPC: use calloc instead of malloc to fix valgrind warnings - Upstream version cs: 11b20e19beff7f1b6003be0b4c73da8ecf936442 * Mon Jun 25 2012 tserong@suse.com - Bump the version to 0.14.0 - Upstream version cs: 1c2b77f005a8011471af11839b7e1b67d147e10d * Thu Jun 21 2012 ygao@suse.com - LOG: fix threaded logging. - Add user control of the permissions that are set on the shared mem files - Upstream version cs: b9f8ec34dfc25eb52f520fe76d8f97fe58da4dee * Fri Jun 8 2012 tserong@suse.com - Initial SUSE packaging of libqb from upstream changeset e70e7908f01ee17e9e8454602a5cfabe19ccc439