import libqb-1.0.3-7.el8
This commit is contained in:
commit
e2c0215912
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
SOURCES/libqb-1.0.3.tar.xz
|
1
.libqb.metadata
Normal file
1
.libqb.metadata
Normal file
@ -0,0 +1 @@
|
||||
5e45fd90b9468747577460bc7c28d9e4cf709b9d SOURCES/libqb-1.0.3.tar.xz
|
521
SOURCES/bz1615945-remove-linker-callsites.patch
Normal file
521
SOURCES/bz1615945-remove-linker-callsites.patch
Normal file
@ -0,0 +1,521 @@
|
||||
diff -ur libqb-1.0.3/configure.ac libqb-1.0.3.nosection/configure.ac
|
||||
--- libqb-1.0.3/configure.ac 2017-12-21 09:02:11.000000000 +0000
|
||||
+++ libqb-1.0.3.nosection/configure.ac 2018-08-16 10:24:25.425174367 +0100
|
||||
@@ -644,139 +644,6 @@
|
||||
AM_CONDITIONAL(HAVE_SLOW_TESTS, [test "x${enable_slow_tests}" = xyes])
|
||||
AC_SUBST(HAVE_SLOW_TESTS)
|
||||
|
||||
-# --- callsite sections ---
|
||||
-if test "x${GCC}" = xyes; then
|
||||
- AX_SAVE_FLAGS
|
||||
- AC_MSG_CHECKING([whether GCC supports __attribute__((section()) + ld supports orphan sections])
|
||||
- if test "x${ac_cv_link_attribute_section}" = x ; then
|
||||
- LDFLAGS="${LDFLAGS_save} -shared -fPIC" # we are compiling shared lib
|
||||
- AC_LINK_IFELSE(
|
||||
- [AC_LANG_SOURCE(
|
||||
- [[#include <assert.h>
|
||||
- extern int __start___verbose[], __stop___verbose[];
|
||||
- int test(void) {
|
||||
- static int my_var __attribute__((section("__verbose"))) = 3;
|
||||
- assert("L:non-empty data section"
|
||||
- && __start___verbose != __stop___verbose);
|
||||
- assert("L:no data section value loss"
|
||||
- && my_var == 3 /* for 2.29.1+ */);
|
||||
- return *((int *) __start___verbose); }]]
|
||||
- )],
|
||||
- [gcc_has_attribute_section=yes; cp "conftest${ac_exeext}" "conftest.so"],
|
||||
- [gcc_has_attribute_section=no]
|
||||
- )
|
||||
- AX_RESTORE_FLAGS
|
||||
- else
|
||||
- gcc_has_attribute_section=${ac_cv_link_attribute_section}
|
||||
- fi
|
||||
- AC_MSG_RESULT($gcc_has_attribute_section)
|
||||
-
|
||||
- # in the failing case (e.g. with ld from binutils 2.29), it's likely the
|
||||
- # following will fail readily in linkage (hidden symbol `__stop___verbose'
|
||||
- # in conftest is referenced by DSO), but keep the sensible test
|
||||
- # (in-executable symbol is expected to be propagated into the library,
|
||||
- # and to draw the full circle back to the executable through standard
|
||||
- # return value passing (respectively no-exec probing to spot the issue);
|
||||
- # -rpath passed because LD_LIBRARY_PATH exporting is unwieldy here);
|
||||
- # moreover, "my_var" == 3 assertion above (respectively checking if the
|
||||
- # boundary symbol visibility differs from DEFAULT in readelf output) is
|
||||
- # necessary so that binutils 2.29.1+ will not slip other parts of the
|
||||
- # overall is-workaround-needed harness, as it restored some (but not
|
||||
- # all) of the original behaviour, but the workaround is still provably
|
||||
- # needed
|
||||
- if test "x${gcc_has_attribute_section}" = xyes; then
|
||||
- AC_MSG_CHECKING([whether linker emits global boundary symbols for orphan sections])
|
||||
- LIBS="${LIBS} -L. -l:conftest${shrext_cmds} -Wl,-rpath=$(pwd)"
|
||||
- dnl could be turned to AC_TRY_RUN (first assertion is equivalent to
|
||||
- dnl the further check in action-if-true), but that would prevent
|
||||
- dnl cross-building
|
||||
- AC_LINK_IFELSE(
|
||||
- [AC_LANG_PROGRAM(
|
||||
- [[#include <assert.h>
|
||||
- extern int __start___verbose[], __stop___verbose[];
|
||||
- int test(void);]],
|
||||
- [[static int my_var __attribute__((section("__verbose"))) = 5;
|
||||
- assert("E:non-empty data section"
|
||||
- && __start___verbose != __stop___verbose);
|
||||
- assert("E:no data section value loss"
|
||||
- && my_var == test() /*5?*/);]]
|
||||
- )],
|
||||
- [# alternatively something like (but requires number parsing):
|
||||
- # readelf -SW "conftest${ac_exeext}" \
|
||||
- # | sed -n '/__verbose/s/^\s*//p' | tr -s ' ' | cut -d" " -f6
|
||||
- verbose_start_addr=$(${NM} -g --portability -- "conftest${ac_exeext}" \
|
||||
- | grep __start___verbose | cut -d" " -f 3)
|
||||
- verbose_stop_addr=$(${NM} -g --portability -- "conftest${ac_exeext}" \
|
||||
- | grep __stop___verbose | cut -d" " -f 3)
|
||||
- test "${verbose_start_addr}" = "${verbose_stop_addr}" \
|
||||
- && gcc_has_attribute_section_visible=no \
|
||||
- || { verbose_start_type=$(${READELF} -s backup \
|
||||
- | sed -n '/__start___verbose/{s/^\s*//p;q}' \
|
||||
- | tr -s ' ' \
|
||||
- | cut -d" " -f6)
|
||||
- test "${verbose_start_type}" = DEFAULT \
|
||||
- && gcc_has_attribute_section_visible=yes \
|
||||
- || gcc_has_attribute_section_visible=no; }],
|
||||
- [gcc_has_attribute_section_visible=no]
|
||||
- )
|
||||
- AX_RESTORE_FLAGS
|
||||
- AC_MSG_RESULT($gcc_has_attribute_section_visible)
|
||||
- rm -f "conftest${shrext_cmds}"
|
||||
-
|
||||
- if test "x${gcc_has_attribute_section_visible}" = xno; then
|
||||
- # check if the linker script based workaround is
|
||||
- # feasible at all, otherwise fallback to using no
|
||||
- # section attribute while making some noise about it
|
||||
- # as combining with-without accustomed logging
|
||||
- # participants is currently uncharted waters
|
||||
- AC_MSG_CHECKING([whether linker workaround for orphan sections usable])
|
||||
- >conftest.ld cat <<-EOF
|
||||
- SECTIONS {
|
||||
- __verbose : {
|
||||
- __start___verbose = .;
|
||||
- *(__verbose);
|
||||
- __stop___verbose = .;
|
||||
- }
|
||||
- }
|
||||
- EOF
|
||||
- LDFLAGS="${LDFLAGS} -Wl,conftest.ld"
|
||||
- AC_LINK_IFELSE(
|
||||
- [AC_LANG_PROGRAM(
|
||||
- [[#include <assert.h>
|
||||
- extern int __start___verbose[], __stop___verbose[];
|
||||
- int test(void);]],
|
||||
- [[static int my_var __attribute__((section("__verbose"))) = 5;
|
||||
- assert("E:non-empty data section"
|
||||
- && __start___verbose != __stop___verbose);
|
||||
- assert("E:no data section value loss"
|
||||
- && my_var == 5);]]
|
||||
- )],
|
||||
- [],
|
||||
- [gcc_has_attribute_section=no]
|
||||
- )
|
||||
- AX_RESTORE_FLAGS
|
||||
- AC_MSG_RESULT([$gcc_has_attribute_section])
|
||||
- rm -f "conftest.ld"
|
||||
- fi
|
||||
-
|
||||
- if test "x${gcc_has_attribute_section}" = xyes; then
|
||||
- AC_DEFINE([QB_HAVE_ATTRIBUTE_SECTION], 1,
|
||||
- [Enabling code using __attribute__((section))])
|
||||
- AC_SUBST([client_dlopen_LIBS],[$dlopen_LIBS])
|
||||
- if test "x${gcc_has_attribute_section_visible}" = xyes; then
|
||||
- PACKAGE_FEATURES="$PACKAGE_FEATURES attribute-section"
|
||||
- else
|
||||
- AC_DEFINE([QB_NEED_ATTRIBUTE_SECTION_WORKAROUND], 1,
|
||||
- [Enabling code using __attribute__((section))])
|
||||
- PACKAGE_FEATURES="$PACKAGE_FEATURES attribute-section-workaround"
|
||||
- fi
|
||||
- elif test "x${enable_nosection_fallback}" = xyes; then
|
||||
- AC_MSG_NOTICE([Falling back to not using orphan section])
|
||||
- else
|
||||
- AC_MSG_ERROR([Would use section attribute, cannot; see --enable-nosection-fallback])
|
||||
- fi
|
||||
- fi
|
||||
-fi
|
||||
AM_CONDITIONAL(HAVE_GCC_ATTRIBUTE_SECTION, [test "x${gcc_has_attribute_section}" = xyes])
|
||||
AM_CONDITIONAL(NEED_GCC_ATTRIBUTE_SECTION_WORKAROUND,
|
||||
[test "x${gcc_has_attribute_section}" = xyes \
|
||||
diff -ur libqb-1.0.3/include/qb/qbconfig.h.in libqb-1.0.3.nosection/include/qb/qbconfig.h.in
|
||||
--- libqb-1.0.3/include/qb/qbconfig.h.in 2017-12-14 09:25:16.000000000 +0000
|
||||
+++ libqb-1.0.3.nosection/include/qb/qbconfig.h.in 2018-08-16 10:23:15.018923879 +0100
|
||||
@@ -27,9 +27,6 @@
|
||||
/* need atomic memory barrier */
|
||||
#undef QB_ATOMIC_OP_MEMORY_BARRIER_NEEDED
|
||||
|
||||
-/* Enabling code using __attribute__((section)) */
|
||||
-#undef QB_HAVE_ATTRIBUTE_SECTION
|
||||
-
|
||||
/* versioning info: MAJOR, MINOR, MICRO, and REST components;
|
||||
note that static compile-time info is not that useful as consulting
|
||||
the respectively named members of qb_version struct constant under
|
||||
diff -ur libqb-1.0.3/include/qb/qblog.h libqb-1.0.3.nosection/include/qb/qblog.h
|
||||
--- libqb-1.0.3/include/qb/qblog.h 2017-12-21 09:02:11.000000000 +0000
|
||||
+++ libqb-1.0.3.nosection/include/qb/qblog.h 2018-08-16 10:23:15.018923879 +0100
|
||||
@@ -39,15 +39,6 @@
|
||||
#include <qb/qbutil.h>
|
||||
#include <qb/qbconfig.h>
|
||||
|
||||
-#if defined(QB_KILL_ATTRIBUTE_SECTION) || defined(S_SPLINT_S)
|
||||
-#undef QB_HAVE_ATTRIBUTE_SECTION
|
||||
-#endif /* defined(QB_KILL_ATTRIBUTE_SECTION) || defined(S_SPLINT_S) */
|
||||
-
|
||||
-#ifdef QB_HAVE_ATTRIBUTE_SECTION
|
||||
-#include <assert.h> /* possibly needed for QB_LOG_INIT_DATA */
|
||||
-#include <dlfcn.h> /* dynamic linking: dlopen, dlsym, dladdr, ... */
|
||||
-#endif
|
||||
-
|
||||
/**
|
||||
* @file qblog.h
|
||||
* The logging API provides four main parts (basics, filtering, threading & blackbox).
|
||||
@@ -286,119 +277,7 @@
|
||||
|
||||
typedef void (*qb_log_filter_fn)(struct qb_log_callsite * cs);
|
||||
|
||||
-/* will be assigned by linker magic (assuming linker supports that):
|
||||
- * https://sourceware.org/binutils/docs/ld/Orphan-Sections.html
|
||||
- */
|
||||
-#ifdef QB_HAVE_ATTRIBUTE_SECTION
|
||||
-
|
||||
-#define QB_ATTR_SECTION __verbose /* conforms to C ident. */
|
||||
-#define QB_ATTR_SECTION_STR QB_PP_STRINGIFY(QB_ATTR_SECTION)
|
||||
-#define QB_ATTR_SECTION_START QB_PP_JOIN(__start_, QB_ATTR_SECTION)
|
||||
-#define QB_ATTR_SECTION_STOP QB_PP_JOIN(__stop_, QB_ATTR_SECTION)
|
||||
-#define QB_ATTR_SECTION_START_STR QB_PP_STRINGIFY(QB_ATTR_SECTION_START)
|
||||
-#define QB_ATTR_SECTION_STOP_STR QB_PP_STRINGIFY(QB_ATTR_SECTION_STOP)
|
||||
-
|
||||
-extern struct qb_log_callsite QB_ATTR_SECTION_START[];
|
||||
-extern struct qb_log_callsite QB_ATTR_SECTION_STOP[];
|
||||
-
|
||||
-/* Related to the next macro that is -- unlike this one -- a public API */
|
||||
-#ifndef _GNU_SOURCE
|
||||
-#define QB_NONAPI_LOG_INIT_DATA_EXTRA_(name) \
|
||||
- _Pragma(QB_PP_STRINGIFY(GCC warning QB_PP_STRINGIFY( \
|
||||
- without "_GNU_SOURCE" defined (directly or not) \
|
||||
- QB_LOG_INIT_DATA cannot check sanity of libqb proper \
|
||||
- nor of the target site originating this check alone)))
|
||||
-#else
|
||||
-#define QB_NONAPI_LOG_INIT_DATA_EXTRA_(name) \
|
||||
- { Dl_info work_dli; \
|
||||
- /* libqb sanity (locating libqb by it's relatively unique \
|
||||
- non-functional symbols -- the two are mutually exclusive, the \
|
||||
- ordinarily latter was introduced by accident, the former is \
|
||||
- intentional -- due to possible confusion otherwise) */ \
|
||||
- if ((dladdr(dlsym(RTLD_DEFAULT, "qb_ver_str"), &work_dli) \
|
||||
- || dladdr(dlsym(RTLD_DEFAULT, "facilitynames"), &work_dli)) \
|
||||
- && (work_handle = dlopen(work_dli.dli_fname, \
|
||||
- RTLD_LOCAL|RTLD_LAZY)) != NULL) { \
|
||||
- work_s1 = (struct qb_log_callsite *) \
|
||||
- dlsym(work_handle, QB_ATTR_SECTION_START_STR); \
|
||||
- work_s2 = (struct qb_log_callsite *) \
|
||||
- dlsym(work_handle, QB_ATTR_SECTION_STOP_STR); \
|
||||
- assert("libqb's callsite section is observable, otherwise \
|
||||
-libqb's build is at fault, preventing reliable logging" \
|
||||
- && work_s1 != NULL && work_s2 != NULL); \
|
||||
- assert("libqb's callsite section is populated, otherwise \
|
||||
-libqb's build is at fault, preventing reliable logging" \
|
||||
- && work_s1 != work_s2); \
|
||||
- dlclose(work_handle); } \
|
||||
- /* sanity of the target site originating this check alone */ \
|
||||
- if (dladdr(dlsym(RTLD_DEFAULT, QB_PP_STRINGIFY(name)), &work_dli) \
|
||||
- && (work_handle = dlopen(work_dli.dli_fname, \
|
||||
- RTLD_LOCAL|RTLD_LAZY)) != NULL) { \
|
||||
- work_s1 = (struct qb_log_callsite *) \
|
||||
- dlsym(work_handle, QB_ATTR_SECTION_START_STR); \
|
||||
- work_s2 = (struct qb_log_callsite *) \
|
||||
- dlsym(work_handle, QB_ATTR_SECTION_STOP_STR); \
|
||||
- assert("target's own callsite section observable, otherwise \
|
||||
-target's own linkage at fault and logging would not work reliably \
|
||||
-(unless QB_LOG_INIT_DATA macro used unexpectedly in no-logging context)"\
|
||||
- && work_s1 != NULL && work_s2 != NULL); \
|
||||
- assert("target's own callsite section non-empty, otherwise \
|
||||
-target's own linkage at fault and logging would not work reliably \
|
||||
-(unless QB_LOG_INIT_DATA macro used unexpectedly in no-logging context)"\
|
||||
- && work_s1 != work_s2); \
|
||||
- dlclose(work_handle); } }
|
||||
-#endif /* _GNU_SOURCE */
|
||||
-
|
||||
-/**
|
||||
- * Optional on-demand self-check of 1/ toolchain sanity (prerequisite for
|
||||
- * the logging subsystem to work properly) and 2/ non-void active use of
|
||||
- * logging (satisfied with a justifying existence of a logging callsite as
|
||||
- * defined with a @c qb_logt invocation) at the target (but see below), which
|
||||
- * is supposedly assured by it's author(!) as of relying on this very macro
|
||||
- * [technically, the symbols that happen to be resolved under the respective
|
||||
- * identifiers do not necessarily originate in the same compilation unit as
|
||||
- * when it's not the end executable (or by induction, a library positioned
|
||||
- * earlier in the symbol lookup order) but a shared library, the former takes
|
||||
- * a precedence unless that site comes short of exercising the logging,
|
||||
- * making its callsite section empty and, in turn, without such boundary
|
||||
- * symbols, hence making the resolution continue further in the lookup order
|
||||
- * -- despite fuzzily targeted attestation, the check remains reasonable];
|
||||
- * only effective when link-time ("run-time amortizing") callsite collection
|
||||
- * is; as a side effect, it can ensure the boundary-denoting symbols for the
|
||||
- * target collection area are kept alive with some otherwise unkind linkers.
|
||||
- *
|
||||
- * Applying this macro in the target program/library is strongly recommended
|
||||
- * whenever the logging as framed by this header file is in use.
|
||||
- * Moreover, it's important to state that using this check while not ensuring
|
||||
- * @c _GNU_SOURCE macro definition is present at compile-time means only half
|
||||
- * of the available sanity checking will be performed, possibly resulting
|
||||
- * in libqb's own internally logged messages being lost without warning.
|
||||
- */
|
||||
-#define QB_LOG_INIT_DATA(name) \
|
||||
- void name(void); \
|
||||
- void name(void) { \
|
||||
- void *work_handle; struct qb_log_callsite *work_s1, *work_s2; \
|
||||
- /* our own (target's) sanity, or possibly that of higher priority \
|
||||
- symbol resolution site (unless target equals end executable) \
|
||||
- or even the lower one if no such predecessor defines these */ \
|
||||
- if ((work_handle = dlopen(NULL, RTLD_LOCAL|RTLD_LAZY)) != NULL) { \
|
||||
- work_s1 = (struct qb_log_callsite *) \
|
||||
- dlsym(work_handle, QB_ATTR_SECTION_START_STR); \
|
||||
- work_s2 = (struct qb_log_callsite *) \
|
||||
- dlsym(work_handle, QB_ATTR_SECTION_STOP_STR); \
|
||||
- assert("implicit callsite section is observable, otherwise \
|
||||
-target's and/or libqb's build is at fault, preventing reliable logging" \
|
||||
- && work_s1 != NULL && work_s2 != NULL); \
|
||||
- dlclose(work_handle); /* perhaps overly eager thing to do */ } \
|
||||
- QB_NONAPI_LOG_INIT_DATA_EXTRA_(name); \
|
||||
- /* finally, original, straightforward check */ \
|
||||
- assert("implicit callsite section is populated, otherwise \
|
||||
-target's build is at fault, preventing reliable logging" \
|
||||
- && QB_ATTR_SECTION_START != QB_ATTR_SECTION_STOP); } \
|
||||
- void __attribute__ ((constructor)) name(void);
|
||||
-#else
|
||||
#define QB_LOG_INIT_DATA(name)
|
||||
-#endif /* QB_HAVE_ATTRIBUTE_SECTION */
|
||||
|
||||
/**
|
||||
* Internal function: use qb_log() or qb_logt()
|
||||
@@ -476,21 +355,12 @@
|
||||
* @param fmt usual printf style format specifiers
|
||||
* @param args usual printf style args
|
||||
*/
|
||||
-#ifdef QB_HAVE_ATTRIBUTE_SECTION
|
||||
-#define qb_logt(priority, tags, fmt, args...) do { \
|
||||
- static struct qb_log_callsite descriptor \
|
||||
- __attribute__((section(QB_ATTR_SECTION_STR), aligned(8))) = \
|
||||
- { __func__, __FILE__, fmt, priority, __LINE__, 0, tags }; \
|
||||
- qb_log_real_(&descriptor, ##args); \
|
||||
- } while(0)
|
||||
-#else
|
||||
#define qb_logt(priority, tags, fmt, args...) do { \
|
||||
struct qb_log_callsite* descriptor_pt = \
|
||||
qb_log_callsite_get(__func__, __FILE__, fmt, \
|
||||
priority, __LINE__, tags); \
|
||||
qb_log_real_(descriptor_pt, ##args); \
|
||||
} while(0)
|
||||
-#endif /* QB_HAVE_ATTRIBUTE_SECTION */
|
||||
|
||||
|
||||
/**
|
||||
--- libqb-1.0.3/lib/libqb.pc.in 2017-12-14 09:25:16.000000000 +0000
|
||||
+++ libqb-1.0.3.nosection/lib/libqb.pc.in 2018-08-16 10:23:15.019923883 +0100
|
||||
@@ -7,17 +7,6 @@
|
||||
Version: @PACKAGE_VERSION@
|
||||
Description: libqb
|
||||
Requires:
|
||||
-Libs: -L${libdir} -lqb @client_dlopen_LIBS@
|
||||
-# NOTE: If -lqb not usable for linking (e.g. linker not compatible with
|
||||
-# linker scripts ad-hoc modifying output sections), try recent
|
||||
-# ld.bfd/binutils linker first when available, otherwise you can
|
||||
-# try "-l:libqb.so.<digit>" link switch that bypasses said linker
|
||||
-# script -- but beware, logging may be less efficient and may lack
|
||||
-# possible future optimizations and extra features. Consequently,
|
||||
-# logging issues (typically bound to QB_LOG_INIT_DATA macro) can be
|
||||
-# mitigated with QB_KILL_ATTRIBUTE_SECTION macro defined for a build.
|
||||
-# NOTE: when concerned about a warning coming from the build process like
|
||||
-# warning: [...]libqb.so contains output sections; did you forget -T?
|
||||
-# and the build finishes OK, take it merely as a harmless side-effect
|
||||
+Libs: -L${libdir} -lqb
|
||||
Libs.private: @LIBS@
|
||||
Cflags: -I${includedir}
|
||||
diff -ur libqb-1.0.3/lib/log.c libqb-1.0.3.nosection/lib/log.c
|
||||
--- libqb-1.0.3/lib/log.c 2017-12-21 09:02:11.000000000 +0000
|
||||
+++ libqb-1.0.3.nosection/lib/log.c 2018-08-16 10:26:01.465514061 +0100
|
||||
@@ -40,13 +40,6 @@
|
||||
#include "util_int.h"
|
||||
#include <regex.h>
|
||||
|
||||
-#if defined(QB_NEED_ATTRIBUTE_SECTION_WORKAROUND) && !defined(S_SPLINT_S)
|
||||
-/* following only needed to force these symbols be global
|
||||
- with ld 2.29: https://bugzilla.redhat.com/1477354 */
|
||||
-struct qb_log_callsite __attribute__((weak)) QB_ATTR_SECTION_START[] = { {0} };
|
||||
-struct qb_log_callsite __attribute__((weak)) QB_ATTR_SECTION_STOP[] = { {0} };
|
||||
-#endif
|
||||
-
|
||||
static struct qb_log_target conf[QB_LOG_TARGET_MAX];
|
||||
static uint32_t conf_active_max = 0;
|
||||
static int32_t in_logger = QB_FALSE;
|
||||
@@ -772,73 +765,6 @@
|
||||
return qb_log_filter_ctl2(t, c, type, text, LOG_EMERG, priority);
|
||||
}
|
||||
|
||||
-#ifdef QB_HAVE_ATTRIBUTE_SECTION
|
||||
-/* Some platforms (eg. FreeBSD 10+) don't support calling dlopen() from
|
||||
- * within a dl_iterate_phdr() callback; so save all of the dlpi_names to
|
||||
- * a list and iterate over them afterwards. */
|
||||
-static int32_t
|
||||
-_log_so_walk_callback(struct dl_phdr_info *info, size_t size, void *data)
|
||||
-{
|
||||
- struct dlname *dlname;
|
||||
-
|
||||
- if (strlen(info->dlpi_name) > 0) {
|
||||
- dlname = calloc(1, sizeof(struct dlname));
|
||||
- if (!dlname)
|
||||
- return 0;
|
||||
- dlname->dln_name = strdup(info->dlpi_name);
|
||||
- qb_list_add_tail(&dlname->list, &dlnames);
|
||||
- }
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static void
|
||||
-_log_so_walk_dlnames(void)
|
||||
-{
|
||||
- struct dlname *dlname;
|
||||
- struct qb_list_head *iter;
|
||||
- struct qb_list_head *next;
|
||||
-
|
||||
- void *handle;
|
||||
- void *start;
|
||||
- void *stop;
|
||||
- const char *error;
|
||||
-
|
||||
- qb_list_for_each_safe(iter, next, &dlnames) {
|
||||
- dlname = qb_list_entry(iter, struct dlname, list);
|
||||
-
|
||||
- handle = dlopen(dlname->dln_name, RTLD_LAZY);
|
||||
- error = dlerror();
|
||||
- if (!handle || error) {
|
||||
- qb_log(LOG_ERR, "%s", error);
|
||||
- goto done;
|
||||
- }
|
||||
-
|
||||
- start = dlsym(handle, QB_ATTR_SECTION_START_STR);
|
||||
- error = dlerror();
|
||||
- if (error) {
|
||||
- goto done;
|
||||
- }
|
||||
-
|
||||
- stop = dlsym(handle, QB_ATTR_SECTION_STOP_STR);
|
||||
- error = dlerror();
|
||||
- if (error) {
|
||||
- goto done;
|
||||
-
|
||||
- } else {
|
||||
- qb_log_callsites_register(start, stop);
|
||||
- }
|
||||
-done:
|
||||
- if (handle)
|
||||
- dlclose(handle);
|
||||
- qb_list_del(iter);
|
||||
- if (dlname->dln_name)
|
||||
- free(dlname->dln_name);
|
||||
- free(dlname);
|
||||
- }
|
||||
-}
|
||||
-#endif /* QB_HAVE_ATTRIBUTE_SECTION */
|
||||
-
|
||||
static void
|
||||
_log_target_state_set(struct qb_log_target *t, enum qb_log_target_state s)
|
||||
{
|
||||
@@ -864,10 +790,6 @@
|
||||
{
|
||||
int32_t l;
|
||||
enum qb_log_target_slot i;
|
||||
-#ifdef QB_HAVE_ATTRIBUTE_SECTION
|
||||
- void *work_handle; struct qb_log_callsite *work_s1, *work_s2;
|
||||
- Dl_info work_dli;
|
||||
-#endif /* QB_HAVE_ATTRIBUTE_SECTION */
|
||||
/* cannot reuse single qb_log invocation in various contexts
|
||||
through the variables (when section attribute in use),
|
||||
hence this indirection */
|
||||
@@ -893,33 +815,6 @@
|
||||
}
|
||||
|
||||
qb_log_dcs_init();
|
||||
-#ifdef QB_HAVE_ATTRIBUTE_SECTION
|
||||
- /* sanity check that target chain supplied QB_ATTR_SECTION_ST{ART,OP}
|
||||
- symbols and hence the local references to them are not referencing
|
||||
- the proper libqb's ones (locating libqb by it's relatively unique
|
||||
- non-functional symbols -- the two are mutually exclusive, the
|
||||
- ordinarily latter was introduced by accident, the former is
|
||||
- intentional -- due to possible confusion otherwise) */
|
||||
- if ((dladdr(dlsym(RTLD_DEFAULT, "qb_ver_str"), &work_dli)
|
||||
- || dladdr(dlsym(RTLD_DEFAULT, "facilitynames"), &work_dli))
|
||||
- && (work_handle = dlopen(work_dli.dli_fname,
|
||||
- RTLD_LOCAL|RTLD_LAZY)) != NULL) {
|
||||
- work_s1 = (struct qb_log_callsite *)
|
||||
- dlsym(work_handle, QB_ATTR_SECTION_START_STR);
|
||||
- work_s2 = (struct qb_log_callsite *)
|
||||
- dlsym(work_handle, QB_ATTR_SECTION_STOP_STR);
|
||||
- if (work_s1 == QB_ATTR_SECTION_START
|
||||
- || work_s2 == QB_ATTR_SECTION_STOP) {
|
||||
- preinit_err = preinit_err_target_sec;
|
||||
- } else if (work_s1 == work_s2) {
|
||||
- preinit_err = preinit_err_target_empty;
|
||||
- }
|
||||
- dlclose(work_handle); /* perhaps overly eager thing to do */
|
||||
- }
|
||||
- qb_log_callsites_register(QB_ATTR_SECTION_START, QB_ATTR_SECTION_STOP);
|
||||
- dl_iterate_phdr(_log_so_walk_callback, NULL);
|
||||
- _log_so_walk_dlnames();
|
||||
-#endif /* QB_HAVE_ATTRIBUTE_SECTION */
|
||||
|
||||
for (i = QB_LOG_TARGET_STATIC_START; i < QB_LOG_TARGET_STATIC_MAX; i++)
|
||||
conf[i].state = QB_LOG_STATE_DISABLED;
|
||||
diff -ur libqb-1.0.3/lib/Makefile.am libqb-1.0.3.nosection/lib/Makefile.am
|
||||
--- libqb-1.0.3/lib/Makefile.am 2017-12-14 09:25:16.000000000 +0000
|
||||
+++ libqb-1.0.3.nosection/lib/Makefile.am 2018-08-16 10:25:07.001321422 +0100
|
||||
@@ -79,9 +79,6 @@
|
||||
libqb_la_SOURCES = $(source_to_lint) unix.c
|
||||
libqb_la_CFLAGS = $(PTHREAD_CFLAGS)
|
||||
libqb_la_LIBADD = $(LTLIBOBJS) $(dlopen_LIBS) $(PTHREAD_LIBS) $(socket_LIBS)
|
||||
-if NEED_GCC_ATTRIBUTE_SECTION_WORKAROUND
|
||||
-libqb_la_LIBADD += qblog_script.la
|
||||
-endif
|
||||
|
||||
AM_LDFLAGS = $(LDFLAGS_COPY:-Bsymbolic-functions=)
|
||||
|
||||
@@ -110,33 +107,6 @@
|
||||
pkgconfigexecdir = $(libdir)/pkgconfig
|
||||
pkgconfigexec_DATA = libqb.pc
|
||||
|
||||
-# find the libqb.so symlink's target, if so, try to find out, iteratively,
|
||||
-# its gradually shorter forms that likewise symlinks the same target as the
|
||||
-# original libqb.so path, point to that file from the linker script using
|
||||
-# qblog_script.ld as a template, storing result in place of original libqb.so
|
||||
-# (e.g., libqb.so := "INPUT(libqb.so.0) " [...] "SECTIONS { " [...] "}")
|
||||
-# NOTE: readlink nor realpath are POSIX; not chained links ready
|
||||
-# NOTE: conservative check, i.e., not per NEED_GCC_ATTRIBUTE_SECTION_WORKAROUND
|
||||
-if HAVE_GCC_ATTRIBUTE_SECTION
|
||||
-install-exec-hook: qblog_script.ld
|
||||
- target=$$(ls -l "$(DESTDIR)$(libdir)/libqb.so" || :); \
|
||||
- target=$${target#* -> }; t1_bn=$$(basename "$${target}" || :); \
|
||||
- while test -n "$${t1_bn}"; do t2_bn=$${t1_bn%.*[0-9]*}; \
|
||||
- test "$${t2_bn}" != libqb.so || break; \
|
||||
- test -L "$${t2_bn}" || { t1_bn=$${t2_bn}; continue; }; \
|
||||
- t2_target=$$(ls -l "$${t2_bn}" || break); t2_target=$${t2_target#* -> }; \
|
||||
- test "$${t2_target}" = "$${target}" || break; \
|
||||
- t1_bn=$${t2_bn}; done; test -n "$${t1_bn}" || \
|
||||
- { echo "only applicable to SO symlink scheme"; exit 1; }; \
|
||||
- echo "$${t1_bn}" > "$(DESTDIR)$(libdir)/libqb.so-t"
|
||||
- so_ver=$$(cat "$(DESTDIR)$(libdir)/libqb.so-t"); \
|
||||
- echo "INPUT($${so_ver})" > "$(DESTDIR)$(libdir)/libqb.so-t"; \
|
||||
- cat $< >> "$(DESTDIR)$(libdir)/libqb.so-t"; \
|
||||
- sed -i -- "s/libqb.so.<digit>/$${so_ver}/" \
|
||||
- "$(DESTDIR)$(libdir)/libqb.so-t" "$(DESTDIR)$(pkgconfigexecdir)/libqb.pc"
|
||||
- mv -f "$(DESTDIR)$(libdir)/libqb.so-t" "$(DESTDIR)$(libdir)/libqb.so"
|
||||
-endif
|
||||
-
|
||||
if HAVE_SPLINT
|
||||
check_SCRIPTS = run_splint.sh
|
||||
TESTS = $(check_SCRIPTS)
|
707
SPECS/libqb.spec
Normal file
707
SPECS/libqb.spec
Normal file
@ -0,0 +1,707 @@
|
||||
%bcond_without check
|
||||
|
||||
Name: libqb
|
||||
Version: 1.0.3
|
||||
Release: 7%{?dist}
|
||||
Summary: An IPC library for high performance servers
|
||||
|
||||
Group: System Environment/Libraries
|
||||
License: LGPLv2+
|
||||
URL: https://github.com/ClusterLabs/libqb
|
||||
Source0: https://github.com/ClusterLabs/libqb/releases/download/v%{version}/%{name}-%{version}.tar.xz
|
||||
|
||||
Patch0: bz1615945-remove-linker-callsites.patch
|
||||
|
||||
BuildRequires: autoconf automake libtool doxygen procps check-devel
|
||||
# https://fedoraproject.org/wiki/Packaging:C_and_C%2B%2B#BuildRequires_and_Requires
|
||||
BuildRequires: gcc
|
||||
# git-style patch application
|
||||
#BuildRequires: git # for when patches around
|
||||
|
||||
%description
|
||||
libqb provides high-performance, reusable features for client-server
|
||||
architecture, such as logging, tracing, inter-process communication (IPC),
|
||||
and polling.
|
||||
|
||||
%prep
|
||||
%setup
|
||||
#autosetup -p1 -S git_am # for when patches around
|
||||
%patch0 -p1 -b .bz1615945-remove-linker-callsites
|
||||
|
||||
%build
|
||||
./autogen.sh
|
||||
%configure --disable-static
|
||||
make %{?_smp_mflags} V=1
|
||||
|
||||
%if 0%{?with_check}
|
||||
%check
|
||||
make VERBOSE=1 check \
|
||||
&& make -C tests/functional/log_internal VERBOSE=1 check
|
||||
%endif
|
||||
|
||||
%install
|
||||
make install DESTDIR=$RPM_BUILD_ROOT
|
||||
find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
|
||||
rm -rf $RPM_BUILD_ROOT/%{_docdir}/*
|
||||
|
||||
%post -p /sbin/ldconfig
|
||||
|
||||
%postun -p /sbin/ldconfig
|
||||
|
||||
%files
|
||||
%license COPYING
|
||||
%{_sbindir}/qb-blackbox
|
||||
%{_libdir}/libqb.so.*
|
||||
%{_mandir}/man8/qb-blackbox.8*
|
||||
|
||||
%package devel
|
||||
Summary: Development files for %{name}
|
||||
Group: Development/Libraries
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
Requires: pkgconfig
|
||||
|
||||
%description devel
|
||||
The %{name}-devel package contains libraries and header files for
|
||||
developing applications that use %{name}.
|
||||
|
||||
%files devel
|
||||
%doc README.markdown
|
||||
%license COPYING
|
||||
%{_includedir}/qb/
|
||||
%{_libdir}/libqb.so
|
||||
%{_libdir}/pkgconfig/libqb.pc
|
||||
%{_mandir}/man3/qb*3*
|
||||
|
||||
%changelog
|
||||
* Mon Sep 17 2018 Christine Caulfield <ccaulfie@redhat.com> - 1.0.3-7
|
||||
- Remove linker magic in the logging code.
|
||||
Resolves: rhbz#1615945
|
||||
|
||||
* Mon Jul 30 2018 Florian Weimer <fweimer@redhat.com> - 1.0.3-6
|
||||
- Rebuild with fixed binutils
|
||||
|
||||
* Tue Jun 05 2018 Christine Caulfield <ccaulfie@redhat.com> - 1.0.3-5
|
||||
- Rebuild with newer binutils (hopefully to fix pacemaker/corosync linkage issue)
|
||||
|
||||
* Wed Mar 07 2018 Adam Williamson <awilliam@redhat.com> - 1.0.3-4
|
||||
- Rebuild to fix GCC 8 mis-compilation
|
||||
See https://da.gd/YJVwk ("GCC 8 ABI change on x86_64")
|
||||
|
||||
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.0.3-3
|
||||
- Escape macros in %%changelog
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.3-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Thu Dec 21 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.3-1
|
||||
- Update to libqb-1.0.3, for list of changes see:
|
||||
https://github.com/ClusterLabs/libqb/releases/tag/v1.0.3
|
||||
|
||||
* Tue Dec 12 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-15
|
||||
- Evolution of the previous (rhbz#1478089)
|
||||
|
||||
* Wed Nov 15 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-14
|
||||
- Evolution of the previous (rhbz#1478089)
|
||||
- Make -devel package dependency on the main package arch-qualified
|
||||
|
||||
* Tue Oct 31 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-13
|
||||
- Evolution of the previous (rhbz#1478089)
|
||||
|
||||
* Wed Oct 25 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-12
|
||||
- Evolution of the previous (rhbz#1478089)
|
||||
|
||||
* Wed Oct 18 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-11
|
||||
- Evolution of the previous (rhbz#1478089)
|
||||
|
||||
* Fri Oct 13 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-10
|
||||
- Evolution of the previous (rhbz#1478089)
|
||||
|
||||
* Mon Oct 09 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-9
|
||||
- Evolution of the previous (rhbz#1478089)
|
||||
|
||||
* Fri Oct 06 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-8
|
||||
- Evolution of the previous (rhbz#1478089)
|
||||
- New test included in check phase (as per upsteam)
|
||||
|
||||
* Mon Sep 04 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-7
|
||||
- Evolution of the previous (rhbz#1478089)
|
||||
|
||||
* Fri Sep 01 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-6
|
||||
- Better approach so as to mitigate changed treatment of orphaned sections
|
||||
in ld.bfd/binutils-2.29, resulting in logging facility silently out of order
|
||||
(rhbz#1478089)
|
||||
- Related to that, build commands now shown in full to ease the sanity checking
|
||||
- Adapt spec file per the upstream version (conditionalizing build through
|
||||
--enable-syslog-tests no longer relevant since v1.0.2)
|
||||
|
||||
* Fri Aug 11 2017 Kalev Lember <klember@redhat.com> - 1.0.2-5
|
||||
- Bump and rebuild for an rpm signing issue
|
||||
|
||||
* Thu Aug 10 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-4
|
||||
- Mitigate changed treatment of orphaned sections in ld.bfd/binutils-2.29,
|
||||
resulting in logging facility silently out of order (rhbz#1478089)
|
||||
|
||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.2-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Fri May 19 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-1
|
||||
- Update to libqb-1.0.2, for list of changes see:
|
||||
https://github.com/ClusterLabs/libqb/releases/tag/v1.0.2
|
||||
|
||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Fri Nov 25 2016 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.1-1
|
||||
- Update to libqb-1.0.1, for list of changes see:
|
||||
https://github.com/ClusterLabs/libqb/releases/tag/v1.0.1
|
||||
- Move qb-blackbox manual page from libqb-devel to libqb
|
||||
(where the utility itself resides)
|
||||
|
||||
* Mon Apr 4 2016 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0-1
|
||||
- Update to libqb-1.0, for list of changes see, in order:
|
||||
https://github.com/ClusterLabs/libqb/releases/tag/v1.0rc1
|
||||
https://github.com/ClusterLabs/libqb/releases/tag/v1.0rc2
|
||||
https://github.com/ClusterLabs/libqb/releases/tag/v1.0rc3
|
||||
https://github.com/ClusterLabs/libqb/releases/tag/v1.0rc4
|
||||
https://github.com/ClusterLabs/libqb/releases/tag/v1.0
|
||||
- Adapt spec file per the upstream version (drop defattr statements,
|
||||
autogen.sh call with %%build, conditionalize build process)
|
||||
- Add gcc as an explicit BuildRequires (required per the new guidelines)
|
||||
- Do not depend on the rpmbuild-imposed man page archiving method
|
||||
|
||||
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.17.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Thu Oct 15 2015 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 0.17.2-1
|
||||
- Update to libqb-0.17.2 + fix check_ipc tests, for list of changes see:
|
||||
https://github.com/ClusterLabs/libqb/releases/tag/v0.17.2
|
||||
|
||||
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.17.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Tue Aug 26 2014 David Vossel <dvossel@redhat.com> - 0.17.1-1
|
||||
Fix: ipcs: Correctly allocate receive buffer size
|
||||
Fix: ipc_socket: Signalhandler must be resetted to Default, use only cleanup_sigpipe to return from qb_ipc_dgram_sock_setup.
|
||||
Fix: trie: allow modifying the trie map during the notify callback
|
||||
Fix: fix invalid option when run 'ipcclient -h'
|
||||
Fix: epoll: don't miss poll events under high load
|
||||
Fix: ipc_shm: fix error handling in qb_ipcs_shm_connect()
|
||||
Fix: ringbuffer: fix size in qb_rb_create_from_file()
|
||||
Fix: ringbuffer: fix qb_rb_open_2() debug format string
|
||||
Fix: trie: fixes regression caused by ref count refactoring
|
||||
Fix: ipcc: Properly timeout during recv when timeout value is provided
|
||||
|
||||
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.17.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.17.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
|
||||
* Thu Feb 20 2014 David Vossel <dvossel@redhat.com> - 0.17.0-2
|
||||
Fix testsuite timing values
|
||||
|
||||
* Wed Feb 19 2014 David Vossel <dvossel@redhat.com> - 0.17.0-1
|
||||
Fix: build: Allow 'make rpm' to work with lightweight tags for release candidates
|
||||
Fix: spec: reference correct url in spec file
|
||||
Doc: update broken doxygen link to something that exists
|
||||
Bump version to 0.17.0
|
||||
Low: ipc_socket: further optimize max msg size calculations for fbsd portability tests
|
||||
Low: ipc_socket: Allow socket max msg size to be calculated more accurately
|
||||
Fix: fixes travis compile time error
|
||||
Low: tests: Fixes compile time issue with make check
|
||||
High: ipcs: Prevent ipc server use after free.
|
||||
Low: ipc: Remove ipc connection reference given to dispatch functions
|
||||
High: ipc: Fixes memory leak in server connection accept when client partially connects
|
||||
IPC: Increase the listen backlog of IPC server
|
||||
Low: ipcs: Clarifications to the ipcs server callback documentation.
|
||||
Fix rb.test to avoid overwriting memory during reading.
|
||||
Low: example: Update client/server example to use server enforced buffer size
|
||||
Low: Client side buffer retrieval regression test
|
||||
Feature: New api function to retrieve client buffer size
|
||||
Low: check_ipc.c: Verify server enforced buffer sizes work
|
||||
Feature: Enforce buffer size limits on the server side
|
||||
Low: regession tests for regex log filters
|
||||
Feature: Filter logs using regex patter on function, format, or filename
|
||||
ipc_setup: Set SO_PASSCRED on listener socket
|
||||
Fix: log: Filtering by function and file must match exactly, no substring matches
|
||||
Low: blackbox: Abort blackbox logging on ringbuffer overwrite reclaim error
|
||||
High: ipcs: Api function allowing server to retrieve client connection's ipc buffer size
|
||||
Low: ringbuffer: Abort during chunk reclaim if OVERWRITE flag is set and reclaim fails.
|
||||
High: blackbox: unique blackbox ringbuffer files per pid
|
||||
Low: ipc_socket: Fixes fd leak in socket ipc client disconnection
|
||||
Use sizeof to get the correct size of the sockaddr_un sun_path member in a portable way. Fixes corosync on Mac OS X.
|
||||
Detect the max signal value that can be used using NSIG macro
|
||||
Avoid double-decrement of level->todo
|
||||
|
||||
* Thu Aug 1 2013 David Vossel <dvossel@redhat.com> - 0.16.0-1
|
||||
Bump version to 0.16.0 ... do not use version 0.15.0
|
||||
Update release gpg sign key
|
||||
Bump the version to 0.15.0
|
||||
Merge pull request #83 from davidvossel/master
|
||||
Low: ipc_socket: Output send event failure as debug instead of error
|
||||
Low: ipcserver.c: Fix example server's glib mainloop implementation
|
||||
High: ipc_socket.c: Detect EOF connection on connection STREAM socket
|
||||
Merge pull request #81 from davidvossel/dgram_max_msg
|
||||
Low: tests: Add dgram max size detection test
|
||||
Low: ipc_socket.c: Handle the unlikely event of an EAGAIN or EINTR during dgram max size detection
|
||||
Merge pull request #82 from davidvossel/master
|
||||
Fixes detect disconnect on send for tcp example
|
||||
Fixes sem leak
|
||||
Fixes less-than-zero comparision of unsigned int
|
||||
fixes double close
|
||||
Fixes double close
|
||||
Fixes double fd close
|
||||
Fixes fd leak
|
||||
Prevent use after free in benchmark util
|
||||
Fixes use ater free in shm disconnect
|
||||
Fixes use after free during ipcs client disconnect
|
||||
Remove dead code
|
||||
Low: check_ipc.c: Verify dgram max size during tests
|
||||
High: ipcc: Add abilty to verify dgram kernel buffer size meets max msg value
|
||||
Fixes travis build error
|
||||
Merge pull request #80 from davidvossel/master
|
||||
Low: check_ipc.c: fix debug message to only display once.
|
||||
High: ringbuffer: Make max_size of ringbuffer accurate so shm ipc max msg size value is honored
|
||||
Low: ipcs: For shm ipc, always retry outstanding notifications when next event is sent
|
||||
Low: tests: Added test to verify sending ipc msg equal to max size succeeds
|
||||
Merge pull request #79 from davidvossel/master
|
||||
Merge pull request #78 from davidvossel/master
|
||||
Fix: ipcs: Fixes compile time issue reported by travis
|
||||
Merge pull request #77 from davidvossel/stress_tests_fixes
|
||||
Low: loop_pool_kqueue: remove potentially noisy dbug statement
|
||||
Low: tests: rework bulk event msg ipc test
|
||||
Account for fbsd ENOBUFS during stress test
|
||||
Low: tests: Adds ipc event stress test to testsuite
|
||||
Low: ipc_socket: In fbsd send() returns ENOBUFS when dgram queue is full, this should be treated similar to EAGAIN
|
||||
High: kqueue: Properly enable kqueue filter in poll loop
|
||||
Low: ipcs: Attempt to resend outstanding event notifications during event send
|
||||
Merge pull request #75 from davidvossel/ref_count_cleanup
|
||||
Low: qbipcs.h: update ipcs connection iterator documentation
|
||||
Merge pull request #74 from davidvossel/ref_count_cleanup
|
||||
Fix: ipcs: Disconnect shm ipc connection when poll socket returns error on msg receive
|
||||
Fix: ipcs: Properly disconnect client connection on POLLNVAL or any other error causing connection removal from mainloop.
|
||||
Simplify internal ipcs ref counting, add comments and document api behavior
|
||||
Simplifies connection ref counting without changing behavior
|
||||
Low remove ref-count error in example ipcserver.
|
||||
Merge pull request #73 from davidvossel/ref_count_cleanup
|
||||
Merge pull request #72 from davidvossel/master
|
||||
Low: tests: Verify reading valid blackbox file works
|
||||
Fix: refcount leak
|
||||
Fix: ringbuffer: Add file header version field and detect reading corrupted blackbox files using hash value
|
||||
Fix: tests: On some platforms -ECONNRESET is returned rather than -ENOTCONN after server failure
|
||||
Fix: tests: Make blackbox_segfault.sh not depend on bash
|
||||
Hopefully this is the last travis link fix
|
||||
Fix travis icon (travis is case sensitive)
|
||||
Fix the github links
|
||||
Merge pull request #70 from yuusuke/fix_logging
|
||||
fix a problem when the character string beyond the number of the maximum characters is passed
|
||||
Merge pull request #68 from r1mikey/upstream
|
||||
Add a IPC service context pointer and accessors from both the connection and service level.
|
||||
Enable distcheck on the travis tests
|
||||
Add atomic_int.h to noinst_HEADERS
|
||||
Use the new atomic ops in the ringbuffer
|
||||
Add internal support for the new __atomic gcc builtins
|
||||
Rename the configure macros from atomic to sync
|
||||
ringbuffer: use atomic ops on ringbuffer chunk magic
|
||||
Remove some test code mistakenly committed to the example program.
|
||||
IPC: make each connection ref the owning service
|
||||
Indicate when/why qb_rb_force_close() fails to remove share memory files
|
||||
Typo fixed in configure
|
||||
Fix "make srpm"
|
||||
Remove doxygen from travis deps to try and get the job working.
|
||||
Fix make distcheck
|
||||
Merge pull request #60 from t-matsuo/fix-makefile-of-tests
|
||||
add file_change_bytes into check_PROGRAMS and fix a typo
|
||||
Deal better with corrupt blackbox files.
|
||||
Merge pull request #58 from inouekazu/fix_connection_state_checking
|
||||
IPC: fix the connection state checking
|
||||
LOG: copy the function/filename for dynamic callsites
|
||||
Deal with /dev/shm issue on Travis builders
|
||||
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
|
||||
test: fix unused-but-set-variable warning
|
||||
test: fix missing-format-attribute warning
|
||||
RB: make the "sem" abstraction into a notifier
|
||||
IPC: clean up the connection state checking
|
||||
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
|
||||
add TAGS and ~ files to .gitignore
|
||||
docs: install qb-blackbox.8 if doxygen is not available.
|
||||
IPC: seperate ipc_us.c into 2 files
|
||||
IPC: move utility functions to unix.c
|
||||
IPC: make sure we return a consistent error when the message is too big.
|
||||
|
||||
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.14.4-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||
|
||||
* Thu Jan 17 2013 Angus Salkeld <asalkeld@redhat.com> - 0.14.4-1
|
||||
LOG: prevent the last char of the blackbox message from getting lost.
|
||||
Example: make the blackbox example more practical.
|
||||
Add the processing which remove notifier at skiplist_destroy function
|
||||
Add the processing which remove hash node and notifier at hashtable_destroy function
|
||||
Unify to QB_TRUE/QB_FALSE a boolean value
|
||||
Document the default prefix in INSTALL
|
||||
Unify the list processing with qb_list function
|
||||
Add travis link to the readme.
|
||||
Fix return code which is an error occurred at pthread function
|
||||
TEST: add a progam to compare the speed of vsnprintf and qb_vsnprintf_serialize
|
||||
LOG: add a test for a padded hex int.
|
||||
Fedora's splint has a strange syntax error, don't fail on it.
|
||||
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
|
||||
Make sure we don't use the format string whilst it is getting changed.
|
||||
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
|
||||
IPC: call poll if we are mid message and get EAGAIN
|
||||
Remove extra ";"
|
||||
IPC: set the error more correctly when qb_sys_mmap_file_open() fails.
|
||||
Make sure that mmap'ed files smaller than a page size are written to.
|
||||
example/test: check for error in qb_ipc_run()
|
||||
example: check for error in qb_ipc_run()
|
||||
TEST: fix typo s/,/; in check_ipc.c
|
||||
|
||||
* Mon Oct 29 2012 Angus Salkeld <asalkeld@redhat.com> - 0.14.3-2
|
||||
Fix test code highlighted by new check version
|
||||
Remove the call to autogen.sh - not needed anymore.
|
||||
|
||||
* Mon Oct 29 2012 Angus Salkeld <asalkeld@redhat.com> - 0.14.3-1
|
||||
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
|
||||
Solaris based operating systems don't define MSG_NOSIGNAL and SO_NOSIGPIPE.
|
||||
Make sure atomic's are initialized (for non-gcc atomic).
|
||||
|
||||
* Wed Sep 12 2012 Angus Salkeld <asalkeld@redhat.com> - 0.14.2-2
|
||||
Fix a crash in ptrie if you iterate over the map in the deleted notifier.
|
||||
|
||||
* Mon Sep 10 2012 Angus Salkeld <asalkeld@redhat.com> - 0.14.2-1
|
||||
Get libqb building on cygwin.
|
||||
ipc_us: slightly more robust cmsg handling
|
||||
ipc_us: on Linux, set SO_PASSCRED on the sending socket too
|
||||
ipc_us: clear request unused fields
|
||||
TEST: Include writing and reading the blackbox in the log_long_msg test
|
||||
LOG: fix qb_vsnprintf_deserialize()
|
||||
blackbox: fix 64-bit big-endian issues
|
||||
Remove IPC_NEEDS_RESPONSE_ACK and turn off shm ipc on solaris
|
||||
Define unix path max for openbsd
|
||||
Only turn on ipc_needs_response_ack=yes for solaris
|
||||
Some improvements to kqueue usage.
|
||||
kqueue: drop log message to trace.
|
||||
Fix splint warning
|
||||
openbsd requires netinet/in.h before arpa/inet.h
|
||||
Avoid strcpy() use strlcpy() instead.
|
||||
Fix kqueue complile warnings
|
||||
openbsd doesn't have EBADMSG
|
||||
openbsd has a different UNIX_PATH_MAX
|
||||
LOG: change qb_vsprintf_serialize() into qb_vsnprintf_serialize()
|
||||
TEST: increase timeout to 6 secs as the recv timeout is 5 secs
|
||||
TEST: get the logic right - grrr.
|
||||
Turn off attribute_section on netbsd
|
||||
Some missing pshared semaphore checks
|
||||
Cleanup the checks for pshared semaphores
|
||||
Add a config check for pthread_mutexattr_setpshared
|
||||
Remove uses of timersub and use qb_util_stopwatch
|
||||
RB: change the #error to ENOTSUP if no usable shared process sem
|
||||
LOOP-KQUEUE: fix reference before assignment.
|
||||
build: fix libqb.pc creation and make maintainer-clean
|
||||
LOG: Make sure the semaphores are initialized.
|
||||
build: remove bashism in cc support check
|
||||
Catch disconnected sockets on Solaris
|
||||
Don't free rb->shared_hdr in qb_rb_create_from_file()
|
||||
Check error return of qb_ipcs_uc_recv_and_auth()
|
||||
Fix removal of automatically installed doc files when building rpms
|
||||
Add the mailing list to the travis email notifications.
|
||||
Work around debian not setting the arch path in splint.
|
||||
Remove color-tests and parallel-tests automake options.
|
||||
Add travis continuous integration config
|
||||
LOG: Invoke custom log filter function if tag changes
|
||||
tests/rbwriter: don't ignore write failure
|
||||
ipcs: avoid use-after-free for size-0 || disconnect-request
|
||||
|
||||
* Wed Jul 18 2012 Angus Salkeld <asalkeld@redhat.com> - 0.14.1-1
|
||||
RB: set the new read pointer after clearing the header (#839605).
|
||||
RB: improve the debug print outs
|
||||
RB: be more explicit about the word alignment
|
||||
RB: cleanup the macros for wrapping the index
|
||||
RB: use sem_getvalue as a tie breaker when read_pt == write_pt
|
||||
RB: if read or peek don't get the message then re-post to the semaphore
|
||||
RB: convert the rb_peek() status into a recv like status.
|
||||
RB: use internal reclaim function
|
||||
IPC: use calloc instead of malloc to fix valgrind warnings
|
||||
Upgrade the doxygen config.
|
||||
Fix a valgrind error.
|
||||
|
||||
* Sun Jun 24 2012 Angus Salkeld <asalkeld@redhat.com> - 0.14.0-1
|
||||
LOG: fix threaded logging.
|
||||
Add user control of the permissions that are set on the shared mem files
|
||||
LOG: Restrict string trucation during serialization to when a precision is specified
|
||||
LOG: Gracefully fail when the caller exceeds QB_LOG_MAX_LEN
|
||||
LOG: Observe field widths when serializing string arguments
|
||||
RB: use the same mechanism in reclaim as read/peek to detect end-of-ring
|
||||
Add needs_response_ack option to ./check
|
||||
RB: fix wrong sem_flg IPC_NOWAIT option
|
||||
TESTS: fix warning about unused functions
|
||||
Remove D_FORTIFY_SOURCE from check.
|
||||
Open shared mem file in /dev/shm only for linux
|
||||
Don't use msg_flags on solaris (recvmsg).
|
||||
Turn off attribute_section on solaris
|
||||
ipc example: add -e (events) option
|
||||
IPC: if the server returns EAGAIN or ETIMEOUT the check the connection
|
||||
LOG: make it possible to fsync() on each file log.
|
||||
IPC: make sure that the created callback happens before dispatches
|
||||
LOG: fix the printing of %%p in the blackbox
|
||||
IPC: On bsd's use the notifier for responses
|
||||
IPC: interpret ECONNRESET and EPIPE as ENOTCONN
|
||||
cleanup some warnings
|
||||
config: use newer AC_COMPILE_IFELSE()
|
||||
blackbox: fix %%p formatting
|
||||
LOG: put all fields in the blackbox (added priority and tags)
|
||||
example: make the priority uint8_t
|
||||
Remove strerror out of check_funcs
|
||||
RB: fix compiler warning.
|
||||
Add replacement function stpcpy
|
||||
Add missing AC_TYPE_UINT16_T to configure.ac
|
||||
Use AC_FUNC_STRERROR_R and STRERROR_R_CHAR_P
|
||||
Add stpcpy strcasecmp to the check_funcs
|
||||
Move some conditional defines into code (from the configure script)
|
||||
Remove some unused configure checks
|
||||
Remove message queues
|
||||
Check for union semun properly
|
||||
Blackbox: provide more space for log messages when reading from the blackbox.
|
||||
Add the blackbox reader manpage to the spec file
|
||||
Enable error logging for the blackbox reader
|
||||
RB: Read the file size into an initialized variable of the correct size
|
||||
Add a tool to dump the blackbox.
|
||||
RB: to be safer save the read and write pointers at the top of the blackbox
|
||||
avoid unwarranted use of strncpy: use memcpy instead
|
||||
blackbox: fix the print_from_file()
|
||||
RB: add an option to not use any semaphores
|
||||
LOG: tweak the blackbox format string
|
||||
LOG: accept NULL strings into the blackbox
|
||||
LOG: protect close and reload from calling log
|
||||
Add benchmark option (-b) to examples/ipcclient
|
||||
TEST: make rbreader/writer more like the other benchmarking apps
|
||||
IPC: log the connection description in all logs
|
||||
TEST: re-organise the ipc test suites
|
||||
IPC: only modify the dispatch if we get EAGAIN
|
||||
Correctly display timestamp in blackbox
|
||||
|
||||
* Thu May 10 2012 Angus Salkeld <asalkeld@redhat.com> - 0.13.0-1
|
||||
- Remove unneccessary __attribute__ ((aligned(8))) from internal headers
|
||||
- IPC: add a new function to get (and alloc) the extended stats.
|
||||
- Revert "Add the event queue length to the connection stats."
|
||||
- IPC: cleanup better on a failed client connect.
|
||||
- IPC(soc): be more consistent with control struct size
|
||||
- IPC: kill a compiler warning
|
||||
- IPC(soc): pass in the correct size into munmap()
|
||||
- TEST: Use /bin/sh not /bin/bash
|
||||
- TEST: check for lost shared mem on bsd too
|
||||
- rb: cleanup the semaphores
|
||||
- Fix some small issues in ./check
|
||||
- Cleanup the .gitignore files
|
||||
- configure.ac tweaks
|
||||
- Remove HZ and use sysconf instead.
|
||||
- SUN_LEN() macro is present if __EXTENSIONS__ is defined on Illumos
|
||||
- PF_UNIX is a POSIX standard name
|
||||
- Test for log facility names
|
||||
- IPC: drop log message to debug.
|
||||
- IPC: fix retrying of partial recv's and sends.
|
||||
- IPC: initialize enough shared mem for all 3 one way connections.
|
||||
- IPC: keep retrying to recv the socket message if partially recv'ed (part 2)
|
||||
- IPC: keep retrying to recv the socket message if partially recv'ed
|
||||
- IPC: handle the server shutdown better
|
||||
- IPC: handle a connection disconnect from the server better
|
||||
- IPC: make it possible to send events in the connected callback.
|
||||
- Add the event queue length to the connection stats.
|
||||
- IPC: add a is_connected client side function.
|
||||
- Fix typo in ./check
|
||||
- docs: clarify the need to use request/response headers
|
||||
- Remove unused local variable
|
||||
- IPC: change the socket recv function to read the response header.
|
||||
- Add some special commands into the ipc example
|
||||
- TEST: improve the tracing in the ipc tests.
|
||||
- Make "make (s)rpm" work more reliably
|
||||
- TEST: add a test to confirm we get the events we send.
|
||||
- TEST: reuse send_and_check for events.
|
||||
- IPC: make it possible for a root client to talk to a non-root server.
|
||||
- Run ./Lindent in the examples directory
|
||||
- Add some debug code to the ipcclient example
|
||||
- IPC: make sure ipc (socket) clients can connect to a server running as root.
|
||||
- IPC: allow qb to bump the max_message_size
|
||||
- IPC: check for a sane minimum max_message_size
|
||||
- add rpl_sem.h loop_poll_int.h to noinst_headers
|
||||
- Handle errors more consistently
|
||||
- call recv_ready on socket types
|
||||
- Handle a recv of size 0
|
||||
- make bsd shm path better by default.
|
||||
- Fix kqueue on freebsd.
|
||||
- Get the example socket includes right.
|
||||
- Fix kqueue compiling.
|
||||
- POLL: seperate out the poll/epoll and add kqueue
|
||||
- Test existence of getpeer* functions
|
||||
- Add inet header to tcpclient example
|
||||
- Don't link with setpshared if unavailable
|
||||
- NetBSD doesn't have semun defined
|
||||
- Use MADV_NOSYNC only on systems where available
|
||||
- Use SCHED_BATCH only on platforms where available
|
||||
- Fix a bug introduced by the bsd patch.
|
||||
- Cleanup the selection of semaphores to use
|
||||
- Fix some leaks in the logging.
|
||||
- Try and improve the portability on bsd variants.
|
||||
|
||||
* Sun Mar 11 2012 Angus Salkeld <asalkeld@redhat.com> - 0.11.1-1
|
||||
- configue libqb to not use epoll as it seems broken (#800865)
|
||||
- LOOP: remove some old timerfd code.
|
||||
- TEST: add a test to check the order of the jobs
|
||||
- LOOP: when new jobs are added they are added to the head instead of the tail.
|
||||
- LOG: Now the array is self locking we can make the lookup array dynamic
|
||||
- Add locking to the array when growing.
|
||||
- IPC: make the _request_q_len_get() function more obvious.
|
||||
- IPC: fix multiple receives from qb_ipc_us_recv()
|
||||
- IPC: make sure that the wrong union member is not written to.
|
||||
- TIMER: check for null timer handle
|
||||
|
||||
Wed Mar 7 2012 Angus Salkeld <asalkeld@redhat.com> - 0.11.0-1
|
||||
- ARRAY: cleanup the pointer sizeof()
|
||||
- LOG: turn off __attribute__(section) for powerpc (not working)
|
||||
- TESTS: move the util tests into "slow-tests" (i.e. optional)
|
||||
- TEST: make the test_priority the same type as in the callsite
|
||||
- LOG: make the log arrays manually grow-able since we need to lock the calls.
|
||||
- RB: fix test failure on ppc
|
||||
- RB: change the name of the size to word_size to be more clear
|
||||
- TEST: add some more signal tests.
|
||||
- LOOP: fix deletion of signal handlers when they are pending
|
||||
- LOOP: signal handlers were always added as high priority.
|
||||
- TEST: deal with mac's limited sed
|
||||
- check: add debugging to the configure options and remove unused options
|
||||
- TEST: properly clear the filters
|
||||
- LOG: expose the mechanism to get a dynamic callsite.
|
||||
- Revert part of my COARSE grained timer commit
|
||||
- Remove timerfd usage and go back to timelist.
|
||||
- UTIL: if possible use COARSE resolution clocks - they are much faster.
|
||||
- ARRAY: save memory (in the bins array) and allow holes in the array
|
||||
- LOOP: add qb_loop_timer_is_running()
|
||||
- LOOP: allow stop() and run() to be called with NULL loop instance.
|
||||
- LOOP: fix doxygen parameter comment
|
||||
- LOG: add stdout target
|
||||
- LOOP: add a function to delete jobs
|
||||
- LOG: remove debug printf's
|
||||
- LOG: remove an old/incorrect doxygen comment.
|
||||
- LOG: add a hostname %%H format specifier.
|
||||
- LOG: Add qb_log_filter_fn_set()
|
||||
|
||||
* Tue Feb 14 2012 Angus Salkeld <asalkeld@redhat.com> - 0.10.1-1
|
||||
- Fix "make distcheck" add include path to AM_CPPFLAGS
|
||||
- Bump the version to 0.10.1
|
||||
- clang: Remove unused code
|
||||
- TEST: make the ipc failure test closer to corosync's case.
|
||||
- RB: add a debug message if trying to read a message of the wrong size
|
||||
- IPC: split up the recv into chuncks of 2 seconds. (#788742)
|
||||
- Be more consistent with the internal logs.
|
||||
- LOOP: make it possible to pass in NULL as the default loop instance
|
||||
- RB: use the proper struct not the typedef in the implementation.
|
||||
- RB: Fix potential mem leak
|
||||
- Don't mix enums (QB_TRUE/TRUE)
|
||||
- use random() not rand()
|
||||
- Remove dead code
|
||||
- set umask before calling mkstemp()
|
||||
- Use safer versions of string functions (strcpy -> strlcpy)
|
||||
- Increase the coverity aggressiveness
|
||||
- TEST: make the loop ratelimit test more forgiving.
|
||||
|
||||
* Tue Feb 07 2012 Angus Salkeld <asalkeld@redhat.com> - 0.10.0-1
|
||||
- LOOP: handle errors from the poll function
|
||||
- LOOP: make the item type applicable to jobs too.
|
||||
- LOOP: fix the todo calculations.
|
||||
- TEST: check for a single job causing a cpu spin
|
||||
- LOOP: prevent jobs from consuming too much cpu.
|
||||
- Get coverity to ignore this warning.
|
||||
- Change example code to use fgets instead of gets
|
||||
- LOG: pass the result of qb_log_thread_start() back to the user
|
||||
- Fix some issues found by clang
|
||||
- Add clang-analyzer check
|
||||
- Add a split timer to the stopwatch.
|
||||
- IPC: merge common code into new function
|
||||
- IPC: better handle a disconnect been called from within connection_created()
|
||||
- IPC: fix scary typo
|
||||
- IPC: fix server error handling
|
||||
|
||||
* Mon Feb 06 2012 Angus Salkeld <asalkeld@redhat.com> - 0.9.0-2
|
||||
- Fix a spin in the mainloop when a timer or poll gets removed
|
||||
When in the job queue (#787196).
|
||||
|
||||
* Fri Jan 27 2012 Angus Salkeld <asalkeld@redhat.com> - 0.9.0-1
|
||||
- Rebased to 0.9.0
|
||||
|
||||
* Tue Jan 10 2012 Angus Salkeld <asalkeld@redhat.com> - 0.8.1-2
|
||||
- fix qb_timespec_add_ms()
|
||||
|
||||
* Thu Jan 5 2012 Angus Salkeld <asalkeld@redhat.com> - 0.8.1-1
|
||||
- Rebased to 0.8.1 (#771914)
|
||||
|
||||
* Thu Nov 17 2011 Angus Salkeld <asalkeld@redhat.com> - 0.7.0-1
|
||||
- Rebased to 0.7.0 (#754610)
|
||||
|
||||
* Thu Sep 1 2011 Angus Salkeld <asalkeld@redhat.com> - 0.6.0-2
|
||||
- LOG: fix the default syslog filter
|
||||
|
||||
* Tue Aug 30 2011 Angus Salkeld <asalkeld@redhat.com> - 0.6.0-1
|
||||
- Rebased to 0.6.0 which includes (#734457):
|
||||
- Add a stop watch
|
||||
- LOG: serialize the va_list, don't snprintf
|
||||
- LOG: change active list into array access
|
||||
- atomic: fix qb_atomic_pointer macros
|
||||
- LOG: allow the thread priority to be set.
|
||||
- Fix splint warning on ubuntu 11.04
|
||||
|
||||
* Mon Jul 18 2011 Angus Salkeld <asalkeld@redhat.com> - 0.5.1-1
|
||||
- Rebased to 0.5.1 which includes:
|
||||
- LOOP: make the return more consistent in qb_loop_timer_expire_time_get()
|
||||
- LOG: add string.h to qblog.h
|
||||
- Add a qb_strerror_r wrapper.
|
||||
- don't let an invalid time stamp provoke a NULL dereference
|
||||
- LOG: move priority check up to prevent unnecessary format.
|
||||
- rename README to README.markdown
|
||||
|
||||
* Wed Jun 8 2011 Angus Salkeld <asalkeld@redhat.com> - 0.5.0-1
|
||||
- Rebased to 0.5.0 which includes:
|
||||
- new logging API
|
||||
- support for sparc
|
||||
- coverity fixes
|
||||
|
||||
* Tue Feb 8 2011 Angus Salkeld <asalkeld@redhat.com> - 0.4.1-2
|
||||
- SPEC: improve devel files section
|
||||
- SPEC: remove global variables
|
||||
|
||||
* Mon Jan 31 2011 Angus Salkeld <asalkeld@redhat.com> - 0.4.1-1
|
||||
- SPEC: add procps to BuildRequire
|
||||
- SPEC: remove automake and autoconf from BuildRequire
|
||||
- SPEC: remove call to ./autogen.sh
|
||||
- SPEC: update to new upstream version 0.4.1
|
||||
- LOOP: check read() return value
|
||||
- DOCS: add missing @param on new timeout argument
|
||||
- BUILD: only set -g and -O options if explicitly requested.
|
||||
- BUILD: Remove unneccessary check for library "dl"
|
||||
- BUILD: improve the release build system
|
||||
|
||||
* Fri Jan 14 2011 Angus Salkeld <asalkeld@redhat.com> - 0.4.0-2
|
||||
- remove "." from Summary
|
||||
- Add "check-devel to BuildRequires
|
||||
- Add "make check" to check section
|
||||
- Changed a buildroot to RPM_BUILD_ROOT
|
||||
- Document alphatag, numcomm and dirty variables.
|
||||
|
||||
* Sun Jan 09 2011 Angus Salkeld <asalkeld@redhat.com> - 0.4.0-1
|
||||
- Initial release
|
Loading…
Reference in New Issue
Block a user