diff --git a/.gitignore b/.gitignore index e69de29..4988333 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/libqb-*.tar.* diff --git a/libqb-2.0.1-remove-deprecated-check-macros.patch b/libqb-2.0.1-remove-deprecated-check-macros.patch new file mode 100644 index 0000000..1fb3e26 --- /dev/null +++ b/libqb-2.0.1-remove-deprecated-check-macros.patch @@ -0,0 +1,606 @@ +From: Christine Caulfield + +diff --git a/tests/check_array.c b/tests/check_array.c +index e86cd44..1abfd73 100644 +--- a/tests/check_array.c ++++ b/tests/check_array.c +@@ -44,15 +44,15 @@ START_TEST(test_array_limits) + struct test_my_st *st; + + a = qb_array_create(INT_MAX, sizeof(struct test_my_st)); +- fail_unless(a == NULL); ++ ck_assert(a == NULL); + a = qb_array_create(-56, sizeof(struct test_my_st)); +- fail_unless(a == NULL); ++ ck_assert(a == NULL); + a = qb_array_create(67, 0); +- fail_unless(a == NULL); ++ ck_assert(a == NULL); + + /* working array */ + a = qb_array_create(10, sizeof(struct test_my_st)); +- fail_if(a == NULL); ++ ck_assert(a != NULL); + + /* out-of-bounds */ + res = qb_array_index(a, 10, (void**)&st); +@@ -129,7 +129,7 @@ START_TEST(test_array_static_memory) + /* confirm the pointer is the same after a grow */ + res = qb_array_index(a, 99, (void**)&st); + ck_assert_int_eq(res, 0); +- fail_unless(st == st_old); ++ ck_assert(st == st_old); + + qb_array_free(a); + } +diff --git a/tests/check_ipc.c b/tests/check_ipc.c +index 859c922..345c2af 100644 +--- a/tests/check_ipc.c ++++ b/tests/check_ipc.c +@@ -278,7 +278,7 @@ pipe_reader(int fd, int revents, void *data) { + rbytes_sum += rbytes; + } + if (rbytes_sum > 0) { +- fail_if(buf[0] == '\0'); /* avoid dead store elimination */ ++ ck_assert(buf[0] != '\0'); /* avoid dead store elimination */ + qb_log(LOG_DEBUG, "read %zd bytes", rbytes_sum); + sleep(1); + } +@@ -420,7 +420,7 @@ s1_msg_process_fn(qb_ipcs_connection_t *c, + } else if (req_pt->id == IPC_MSG_REQ_SELF_FEED) { + if (pipe(global_pipefd) != 0) { + perror("pipefd"); +- fail_if(1); ++ ck_assert(0); + } + fcntl(global_pipefd[0], F_SETFL, O_NONBLOCK); + fcntl(global_pipefd[1], F_SETFL, O_NONBLOCK); +@@ -429,7 +429,7 @@ s1_msg_process_fn(qb_ipcs_connection_t *c, + GSource *source_r, *source_w; + source_r = g_source_new(&gio_source_funcs, sizeof(GSource)); + source_w = g_source_new(&gio_source_funcs, sizeof(GSource)); +- fail_if(source_r == NULL || source_w == NULL); ++ ck_assert(source_r != NULL && source_w != NULL); + g_source_set_priority(source_r, conv_prio_libqb2glib(QB_LOOP_HIGH)); + g_source_set_priority(source_w, conv_prio_libqb2glib(QB_LOOP_HIGH)); + g_source_set_can_recurse(source_r, FALSE); +@@ -441,7 +441,7 @@ s1_msg_process_fn(qb_ipcs_connection_t *c, + g_source_attach(source_r, NULL); + g_source_attach(source_w, NULL); + #else +- fail_if(1); ++ ck_assert(0); + #endif + } else { + qb_loop_poll_add(my_loop, QB_LOOP_HIGH, global_pipefd[1], +@@ -759,7 +759,7 @@ NEW_PROCESS_RUNNER(run_ipc_server, ready_signaller, signaller_data, data) + + + s1 = qb_ipcs_create(ipc_name, 4, ipc_type, &sh); +- fail_if(s1 == 0); ++ ck_assert(s1 != 0); + + if (global_loop_prio != QB_LOOP_MED) { + qb_ipcs_request_rate_limit(s1, +@@ -775,9 +775,9 @@ NEW_PROCESS_RUNNER(run_ipc_server, ready_signaller, signaller_data, data) + }; + glib_loop = g_main_loop_new(NULL, FALSE); + gio_map = qb_array_create_2(16, sizeof(struct gio_to_qb_poll), 1); +- fail_if (gio_map == NULL); ++ ck_assert(gio_map != NULL); + #else +- fail_if(1); ++ ck_assert(0); + #endif + } else { + ph = (struct qb_ipcs_poll_handlers) { +@@ -936,7 +936,7 @@ verify_graceful_stop(pid_t pid) + rc = WEXITSTATUS(status); + ck_assert_int_eq(rc, 0); + } else { +- fail_if(rc == 0); ++ ck_assert(rc != 0); + } + + return 0; +@@ -1020,7 +1020,7 @@ test_ipc_txrx_timeout(void) + uint32_t max_size = MAX_MSG_SIZE; + + pid = run_function_in_new_process("server", run_ipc_server, NULL); +- fail_if(pid == -1); ++ ck_assert(pid != -1); + + do { + conn = qb_ipcc_connect(ipc_name, max_size); +@@ -1031,7 +1031,7 @@ test_ipc_txrx_timeout(void) + c++; + } + } while (conn == NULL && c < 5); +- fail_if(conn == NULL); ++ ck_assert(conn != NULL); + + /* The dispatch response will only come over + * the event channel, we want to verify the receive times +@@ -1068,7 +1068,7 @@ test_ipc_txrx(void) + uint32_t max_size = MAX_MSG_SIZE; + + pid = run_function_in_new_process("server", run_ipc_server, NULL); +- fail_if(pid == -1); ++ ck_assert(pid != -1); + + do { + conn = qb_ipcc_connect(ipc_name, max_size); +@@ -1079,7 +1079,7 @@ test_ipc_txrx(void) + c++; + } + } while (conn == NULL && c < 5); +- fail_if(conn == NULL); ++ ck_assert(conn != NULL); + + size = QB_MIN(sizeof(struct qb_ipc_request_header), 64); + for (j = 1; j < 19; j++) { +@@ -1118,7 +1118,7 @@ test_ipc_exit(void) + uint32_t max_size = MAX_MSG_SIZE; + + pid = run_function_in_new_process("server", run_ipc_server, NULL); +- fail_if(pid == -1); ++ ck_assert(pid != -1); + + do { + conn = qb_ipcc_connect(ipc_name, max_size); +@@ -1129,7 +1129,7 @@ test_ipc_exit(void) + c++; + } + } while (conn == NULL && c < 5); +- fail_if(conn == NULL); ++ ck_assert(conn != NULL); + + req_header.id = IPC_MSG_REQ_TX_RX; + req_header.size = sizeof(struct qb_ipc_request_header); +@@ -1295,7 +1295,7 @@ NEW_PROCESS_RUNNER(client_dispatch, ready_signaller, signaller_data, data) + c++; + } + } while (conn == NULL && c < 5); +- fail_if(conn == NULL); ++ ck_assert(conn != NULL); + + if (ready_signaller != NULL) { + ready_signaller(signaller_data); +@@ -1324,7 +1324,7 @@ test_ipc_dispatch(void) + struct dispatch_data data; + + pid = run_function_in_new_process(NULL, run_ipc_server, NULL); +- fail_if(pid == -1); ++ ck_assert(pid != -1); + data = (struct dispatch_data){.server_pid = pid, + .msg_type = IPC_MSG_REQ_DISPATCH, + .repetitions = 1}; +@@ -1434,7 +1434,7 @@ test_ipc_stress_connections(void) + qb_log_ctl(QB_LOG_STDERR, QB_LOG_CONF_ENABLED, QB_TRUE); + + pid = run_function_in_new_process("server", run_ipc_server, NULL); +- fail_if(pid == -1); ++ ck_assert(pid != -1); + + for (connections = 1; connections < NUM_STRESS_CONNECTIONS; connections++) { + if (conn) { +@@ -1450,7 +1450,7 @@ test_ipc_stress_connections(void) + c++; + } + } while (conn == NULL && c < 5); +- fail_if(conn == NULL); ++ ck_assert(conn != NULL); + + if (((connections+1) % 1000) == 0) { + qb_log(LOG_INFO, "%d ipc connections made", connections+1); +@@ -1481,7 +1481,7 @@ test_ipc_bulk_events(void) + uint32_t max_size = MAX_MSG_SIZE; + + pid = run_function_in_new_process("server", run_ipc_server, NULL); +- fail_if(pid == -1); ++ ck_assert(pid != -1); + + do { + conn = qb_ipcc_connect(ipc_name, max_size); +@@ -1492,7 +1492,7 @@ test_ipc_bulk_events(void) + c++; + } + } while (conn == NULL && c < 5); +- fail_if(conn == NULL); ++ ck_assert(conn != NULL); + + events_received = 0; + cl = qb_loop_create(); +@@ -1546,7 +1546,7 @@ test_ipc_stress_test(void) + enforce_server_buffer = 1; + pid = run_function_in_new_process("server", run_ipc_server, NULL); + enforce_server_buffer = 0; +- fail_if(pid == -1); ++ ck_assert(pid != -1); + + do { + conn = qb_ipcc_connect(ipc_name, client_buf_size); +@@ -1557,7 +1557,7 @@ test_ipc_stress_test(void) + c++; + } + } while (conn == NULL && c < 5); +- fail_if(conn == NULL); ++ ck_assert(conn != NULL); + + real_buf_size = qb_ipcc_get_buffer_size(conn); + ck_assert_int_eq(real_buf_size, max_size); +@@ -1655,14 +1655,14 @@ START_TEST(test_ipc_dispatch_us_native_prio_dlock) + + server_pid = run_function_in_new_process("server", run_ipc_server, + NULL); +- fail_if(server_pid == -1); ++ ck_assert(server_pid != -1); + data = (struct dispatch_data){.server_pid = server_pid, + .msg_type = IPC_MSG_REQ_SELF_FEED, + .repetitions = 1}; + alphaclient_pid = run_function_in_new_process("alphaclient", + client_dispatch, + (void *) &data); +- fail_if(alphaclient_pid == -1); ++ ck_assert(alphaclient_pid != -1); + + //sleep(1); + sched_yield(); +@@ -1695,14 +1695,14 @@ START_TEST(test_ipc_dispatch_us_glib_prio_dlock) + + server_pid = run_function_in_new_process("server", run_ipc_server, + NULL); +- fail_if(server_pid == -1); ++ ck_assert(server_pid != -1); + data = (struct dispatch_data){.server_pid = server_pid, + .msg_type = IPC_MSG_REQ_SELF_FEED, + .repetitions = 1}; + alphaclient_pid = run_function_in_new_process("alphaclient", + client_dispatch, + (void *) &data); +- fail_if(alphaclient_pid == -1); ++ ck_assert(alphaclient_pid != -1); + + //sleep(1); + sched_yield(); +@@ -1733,7 +1733,7 @@ test_ipc_event_on_created(void) + num_bulk_events = 1; + + pid = run_function_in_new_process("server", run_ipc_server, NULL); +- fail_if(pid == -1); ++ ck_assert(pid != -1); + + do { + conn = qb_ipcc_connect(ipc_name, max_size); +@@ -1744,7 +1744,7 @@ test_ipc_event_on_created(void) + c++; + } + } while (conn == NULL && c < 5); +- fail_if(conn == NULL); ++ ck_assert(conn != NULL); + + events_received = 0; + cl = qb_loop_create(); +@@ -1787,7 +1787,7 @@ test_ipc_disconnect_after_created(void) + uint32_t max_size = MAX_MSG_SIZE; + + pid = run_function_in_new_process("server", run_ipc_server, NULL); +- fail_if(pid == -1); ++ ck_assert(pid != -1); + + do { + conn = qb_ipcc_connect(ipc_name, max_size); +@@ -1798,7 +1798,7 @@ test_ipc_disconnect_after_created(void) + c++; + } + } while (conn == NULL && c < 5); +- fail_if(conn == NULL); ++ ck_assert(conn != NULL); + + ck_assert_int_eq(QB_TRUE, qb_ipcc_is_connected(conn)); + +@@ -1844,7 +1844,7 @@ test_ipc_server_fail(void) + uint32_t max_size = MAX_MSG_SIZE; + + pid = run_function_in_new_process("server", run_ipc_server, NULL); +- fail_if(pid == -1); ++ ck_assert(pid != -1); + + do { + conn = qb_ipcc_connect(ipc_name, max_size); +@@ -1855,7 +1855,7 @@ test_ipc_server_fail(void) + c++; + } + } while (conn == NULL && c < 5); +- fail_if(conn == NULL); ++ ck_assert(conn != NULL); + + request_server_exit(); + if (_fi_unlink_inject_failure == QB_TRUE) { +@@ -1933,7 +1933,7 @@ START_TEST(test_ipc_server_perms) + max_size = MAX_MSG_SIZE; + + pid = run_function_in_new_process("server", run_ipc_server, NULL); +- fail_if(pid == -1); ++ ck_assert(pid != -1); + + do { + conn = qb_ipcc_connect(ipc_name, max_size); +@@ -1944,7 +1944,7 @@ START_TEST(test_ipc_server_perms) + c++; + } + } while (conn == NULL && c < 5); +- fail_if(conn == NULL); ++ ck_assert(conn != NULL); + + /* Check perms - uses illegal access to libqb internals */ + +@@ -1990,14 +1990,14 @@ START_TEST(test_ipc_dispatch_shm_native_prio_dlock) + + server_pid = run_function_in_new_process("server", run_ipc_server, + NULL); +- fail_if(server_pid == -1); ++ ck_assert(server_pid != -1); + data = (struct dispatch_data){.server_pid = server_pid, + .msg_type = IPC_MSG_REQ_SELF_FEED, + .repetitions = 1}; + alphaclient_pid = run_function_in_new_process("alphaclient", + client_dispatch, + (void *) &data); +- fail_if(alphaclient_pid == -1); ++ ck_assert(alphaclient_pid != -1); + + //sleep(1); + sched_yield(); +@@ -2030,14 +2030,14 @@ START_TEST(test_ipc_dispatch_shm_glib_prio_dlock) + + server_pid = run_function_in_new_process("server", run_ipc_server, + NULL); +- fail_if(server_pid == -1); ++ ck_assert(server_pid != -1); + data = (struct dispatch_data){.server_pid = server_pid, + .msg_type = IPC_MSG_REQ_SELF_FEED, + .repetitions = 1}; + alphaclient_pid = run_function_in_new_process("alphaclient", + client_dispatch, + (void *) &data); +- fail_if(alphaclient_pid == -1); ++ ck_assert(alphaclient_pid != -1); + + //sleep(1); + sched_yield(); +@@ -2122,7 +2122,7 @@ test_ipc_service_ref_count(void) + reference_count_test = QB_TRUE; + + pid = run_function_in_new_process("server", run_ipc_server, NULL); +- fail_if(pid == -1); ++ ck_assert(pid != -1); + + do { + conn = qb_ipcc_connect(ipc_name, max_size); +@@ -2133,7 +2133,7 @@ test_ipc_service_ref_count(void) + c++; + } + } while (conn == NULL && c < 5); +- fail_if(conn == NULL); ++ ck_assert(conn != NULL); + + sleep(5); + +@@ -2175,7 +2175,7 @@ static void test_max_dgram_size(void) + QB_LOG_FILTER_FILE, "*", LOG_TRACE); + + init = qb_ipcc_verify_dgram_max_msg_size(1000000); +- fail_if(init <= 0); ++ ck_assert(init > 0); + for (i = 0; i < 100; i++) { + int try = qb_ipcc_verify_dgram_max_msg_size(1000000); + #if 0 +diff --git a/tests/check_loop.c b/tests/check_loop.c +index 81cc2ba..c017c2c 100644 +--- a/tests/check_loop.c ++++ b/tests/check_loop.c +@@ -148,7 +148,7 @@ START_TEST(test_loop_job_input) + ck_assert_int_eq(res, -EINVAL); + + l = qb_loop_create(); +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + res = qb_loop_job_add(NULL, QB_LOOP_LOW, NULL, job_2); + ck_assert_int_eq(res, 0); +@@ -164,7 +164,7 @@ START_TEST(test_loop_job_1) + { + int32_t res; + qb_loop_t *l = qb_loop_create(); +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + res = qb_loop_job_add(l, QB_LOOP_LOW, NULL, job_1); + ck_assert_int_eq(res, 0); +@@ -181,7 +181,7 @@ START_TEST(test_loop_job_4) + { + int32_t res; + qb_loop_t *l = qb_loop_create(); +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + res = qb_loop_job_add(l, QB_LOOP_LOW, l, job_1_r); + ck_assert_int_eq(res, 0); +@@ -198,13 +198,13 @@ START_TEST(test_loop_job_nuts) + { + int32_t res; + qb_loop_t *l = qb_loop_create(); +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + res = qb_loop_job_add(l, QB_LOOP_LOW, l, job_1_add_nuts); + ck_assert_int_eq(res, 0); + + qb_loop_run(l); +- fail_if(job_1_run_count < 500); ++ ck_assert(job_1_run_count >= 500); + qb_loop_destroy(l); + } + END_TEST +@@ -213,7 +213,7 @@ START_TEST(test_loop_job_order) + { + int32_t res; + qb_loop_t *l = qb_loop_create(); +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + job_1_run_count = 0; + +@@ -267,10 +267,10 @@ START_TEST(test_job_rate_limit) + { + int32_t res; + qb_loop_t *l = qb_loop_create(); +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + rl_sw = qb_util_stopwatch_create(); +- fail_if(rl_sw == NULL); ++ ck_assert(rl_sw != NULL); + + qb_util_stopwatch_start(rl_sw); + +@@ -303,7 +303,7 @@ START_TEST(test_job_add_del) + { + int32_t res; + qb_loop_t *l = qb_loop_create(); +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + res = qb_loop_job_add(l, QB_LOOP_MED, l, job_1); + ck_assert_int_eq(res, 0); +@@ -374,7 +374,7 @@ START_TEST(test_loop_timer_input) + ck_assert_int_eq(res, -EINVAL); + + l = qb_loop_create(); +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + res = qb_loop_timer_add(NULL, QB_LOOP_LOW, 5*QB_TIME_NS_IN_MSEC, NULL, job_2, &test_th); + ck_assert_int_eq(res, 0); +@@ -414,7 +414,7 @@ START_TEST(test_loop_timer_basic) + { + int32_t res; + qb_loop_t *l = qb_loop_create(); +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + res = qb_loop_timer_add(l, QB_LOOP_LOW, 5*QB_TIME_NS_IN_MSEC, l, one_shot_tmo, &test_th); + ck_assert_int_eq(res, 0); +@@ -503,7 +503,7 @@ START_TEST(test_loop_timer_precision) + struct qb_stop_watch sw[11]; + qb_loop_t *l = qb_loop_create(); + +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + for (i = 0; i < 10; i++) { + tmo = ((1 + i * 9) * QB_TIME_NS_IN_MSEC) + 500000; +@@ -567,7 +567,7 @@ START_TEST(test_loop_timer_expire_leak) + qb_loop_timer_handle th; + qb_loop_t *l = qb_loop_create(); + +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + expire_leak_counter = 0; + for (i = 0; i < 300; i++) { +@@ -605,7 +605,7 @@ START_TEST(test_loop_sig_handling) + { + qb_loop_signal_handle handle; + qb_loop_t *l = qb_loop_create(); +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + qb_loop_signal_add(l, QB_LOOP_HIGH, SIGINT, + l, sig_handler, &handle); +@@ -638,7 +638,7 @@ START_TEST(test_loop_dont_override_other_signals) + qb_loop_signal_handle handle; + + this_l = qb_loop_create(); +- fail_if(this_l == NULL); ++ ck_assert(this_l != NULL); + + signal(SIGUSR1, handle_nonqb_signal); + +@@ -659,7 +659,7 @@ START_TEST(test_loop_sig_only_get_one) + int res; + qb_loop_signal_handle handle; + qb_loop_t *l = qb_loop_create(); +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + /* make sure we only get one call to the handler + * don't assume we are going to exit the loop. +@@ -708,7 +708,7 @@ START_TEST(test_loop_sig_delete) + { + int res; + qb_loop_t *l = qb_loop_create(); +- fail_if(l == NULL); ++ ck_assert(l != NULL); + + /* make sure we can remove a signal job from the job queue. + */ +diff --git a/tests/check_rb.c b/tests/check_rb.c +index 498cc71..7b6c01d 100644 +--- a/tests/check_rb.c ++++ b/tests/check_rb.c +@@ -45,7 +45,7 @@ START_TEST(test_ring_buffer1) + ssize_t avail; + + rb = qb_rb_open("test1", 200, QB_RB_FLAG_CREATE, 0); +- fail_if(rb == NULL); ++ ck_assert(rb != NULL); + + for (b = 0; b < 3; b++) { + memcpy(&hdr, my_buf, sizeof(struct qb_ipc_request_header)); +@@ -100,7 +100,7 @@ START_TEST(test_ring_buffer2) + ssize_t l; + + t = qb_rb_open("test2", 200 * sizeof(int64_t), QB_RB_FLAG_CREATE, 0); +- fail_if(t == NULL); ++ ck_assert(t != NULL); + for (i = 0; i < 200; i++) { + l = qb_rb_chunk_write(t, &v, sizeof(v)); + ck_assert_int_eq(l, sizeof(v)); +@@ -108,7 +108,7 @@ START_TEST(test_ring_buffer2) + for (i = 0; i < 100; i++) { + l = qb_rb_chunk_peek(t, (void **)&new_data, 0); + ck_assert_int_eq(l, sizeof(v)); +- fail_unless(v == *new_data); ++ ck_assert(v == *new_data); + qb_rb_chunk_reclaim(t); + } + for (i = 0; i < 100; i++) { +@@ -122,7 +122,7 @@ START_TEST(test_ring_buffer2) + break; + } + ck_assert_int_eq(l, sizeof(v)); +- fail_unless(v == *new_data); ++ ck_assert(v == *new_data); + qb_rb_chunk_reclaim(t); + } + qb_rb_close(t); +@@ -142,7 +142,7 @@ START_TEST(test_ring_buffer3) + size_t len = strlen(v) + 1; + + t = qb_rb_open("test3", 10, QB_RB_FLAG_CREATE | QB_RB_FLAG_OVERWRITE, 0); +- fail_if(t == NULL); ++ ck_assert(t != NULL); + for (i = 0; i < 9000; i++) { + l = qb_rb_chunk_write(t, v, len); + ck_assert_int_eq(l, len); +@@ -169,7 +169,7 @@ START_TEST(test_ring_buffer4) + ssize_t l; + + t = qb_rb_open("test4", 10, QB_RB_FLAG_CREATE | QB_RB_FLAG_OVERWRITE, 0); +- fail_if(t == NULL); ++ ck_assert(t != NULL); + for (i = 0; i < 2000; i++) { + l = qb_rb_chunk_write(t, data, strlen(data)); + ck_assert_int_eq(l, strlen(data)); diff --git a/libqb.spec b/libqb.spec new file mode 100644 index 0000000..f099455 --- /dev/null +++ b/libqb.spec @@ -0,0 +1,755 @@ +%bcond_without check + +Name: libqb +Version: 2.0.1 +Release: 2%{?dist} +Summary: Library providing high performance logging, tracing, ipc, and poll + +License: LGPLv2+ +URL: https://github.com/ClusterLabs/libqb +Source0: https://github.com/ClusterLabs/libqb/releases/download/v%{version}/%{name}-%{version}.tar.xz + +Patch1: libqb-2.0.1-remove-deprecated-check-macros.patch + +BuildRequires: autoconf automake libtool +BuildRequires: check-devel +BuildRequires: doxygen +BuildRequires: gcc +BuildRequires: procps +# for ipc.test only (part of check scriptlet) +BuildRequires: pkgconfig(glib-2.0) +# git-style patch application +BuildRequires: git-core +# For doxygen2man +BuildRequires: libxml2-devel + +%description +A "Quite Boring" library that provides high-performance, reusable features for client-server +architecture, such as logging, tracing, inter-process communication (IPC), +and polling. + +%prep +%autosetup -p1 -S git_am # for when patches around + +%build +./autogen.sh +%configure --disable-static +%{make_build} + +%if 0%{?with_check} +%check +make check V=1 +%endif + +%install +%{make_install} +find $RPM_BUILD_ROOT -name '*.la' -delete +rm -rf $RPM_BUILD_ROOT/%{_docdir}/* + +%ldconfig_scriptlets + +%files +%license COPYING +%{_sbindir}/qb-blackbox +%{_libdir}/libqb.so.* +%{_mandir}/man8/qb-blackbox.8* + +%package devel +Summary: Development files for %{name} +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 +%{_includedir}/qb/ +%{_libdir}/libqb.so +%{_libdir}/pkgconfig/libqb.pc +%{_mandir}/man3/qb*3* + + +%package -n doxygen2man +Summary: Program to create nicely-formatted man pages from Doxygen XML files +Requires: %{name}%{?_isa} = %{version}-%{release} + + +%description -n doxygen2man +This package contains a program to create nicely-formatted man pages from Doxygen XML files + +%files -n doxygen2man +%{_bindir}/doxygen2man +%{_mandir}/man1/doxygen2man.1.gz + + +%changelog +* Wed Jul 29 2020 Christine Caulfield 2.0.1-2 +- Replace deprecated check macros fail_if() and fail_unless() with ck_assert() + see check BZ: bz1850198 + +* Wed Jul 29 2020 Christine Caulfield 2.0.1-1 +- Rebase to version 2.0.1 + +* Tue Jul 28 2020 Fedora Release Engineering - 2.0.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed May 13 2020 Christine Caulfield 2.0.0-1 +- Rebase to version 2.0.0 + +* Thu Apr 23 2020 Christine Caulfield 1.0.5-6 +- Further fix for qblist when compiling on gcc10 + Affects users of the package rather than libqb itself + +* Mon Apr 6 2020 Peter Robinson 1.0.5-5 +- Upstream fix for test failures (fix FTBFS) +- spec cleanups + +* Wed Jan 29 2020 Fedora Release Engineering - 1.0.5-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jul 25 2019 Fedora Release Engineering - 1.0.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Jun 12 2019 Jan Pokorný - 1.0.5-2 +- Fix temporary channel priority loss, up to deadlock-worth + (upstream patchset https://github.com/ClusterLabs/libqb/pull/354) + +* Fri Apr 26 2019 Jan Pokorný - 1.0.5-1 +- Update to libqb-1.0.5, for list of changes see: + https://github.com/ClusterLabs/libqb/releases/tag/v1.0.4 + https://github.com/ClusterLabs/libqb/releases/tag/v1.0.5 + (note that 1.0.4 is botched from pacemaker/corosync cluster stack + perspective so that is intentionally skipped) +- Includes an important fix for a security issue (CVE-2019-12779, + https://github.com/ClusterLabs/libqb/issues/338) + +* Fri Feb 01 2019 Fedora Release Engineering - 1.0.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 1.0.3-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Mar 07 2018 Adam Williamson - 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 - 1.0.3-3 +- Escape macros in %%changelog + +* Wed Feb 07 2018 Fedora Release Engineering - 1.0.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Dec 21 2017 Jan Pokorný - 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ý - 1.0.2-15 +- Evolution of the previous (rhbz#1478089) + +* Wed Nov 15 2017 Jan Pokorný - 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ý - 1.0.2-13 +- Evolution of the previous (rhbz#1478089) + +* Wed Oct 25 2017 Jan Pokorný - 1.0.2-12 +- Evolution of the previous (rhbz#1478089) + +* Wed Oct 18 2017 Jan Pokorný - 1.0.2-11 +- Evolution of the previous (rhbz#1478089) + +* Fri Oct 13 2017 Jan Pokorný - 1.0.2-10 +- Evolution of the previous (rhbz#1478089) + +* Mon Oct 09 2017 Jan Pokorný - 1.0.2-9 +- Evolution of the previous (rhbz#1478089) + +* Fri Oct 06 2017 Jan Pokorný - 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ý - 1.0.2-7 +- Evolution of the previous (rhbz#1478089) + +* Fri Sep 01 2017 Jan Pokorný - 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 - 1.0.2-5 +- Bump and rebuild for an rpm signing issue + +* Thu Aug 10 2017 Jan Pokorný - 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 - 1.0.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.0.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri May 19 2017 Jan Pokorný - 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 - 1.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Nov 25 2016 Jan Pokorný - 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ý - 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 - 0.17.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Oct 15 2015 Jan Pokorný - 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 - 0.17.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Tue Aug 26 2014 David Vossel - 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 - 0.17.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 0.17.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + + +* Thu Feb 20 2014 David Vossel - 0.17.0-2 +Fix testsuite timing values + +* Wed Feb 19 2014 David Vossel - 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 - 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 - 0.14.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Jan 17 2013 Angus Salkeld - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 0.9.0-1 +- Rebased to 0.9.0 + +* Tue Jan 10 2012 Angus Salkeld - 0.8.1-2 +- fix qb_timespec_add_ms() + +* Thu Jan 5 2012 Angus Salkeld - 0.8.1-1 +- Rebased to 0.8.1 (#771914) + +* Thu Nov 17 2011 Angus Salkeld - 0.7.0-1 +- Rebased to 0.7.0 (#754610) + +* Thu Sep 1 2011 Angus Salkeld - 0.6.0-2 +- LOG: fix the default syslog filter + +* Tue Aug 30 2011 Angus Salkeld - 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 - 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 - 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 - 0.4.1-2 +- SPEC: improve devel files section +- SPEC: remove global variables + +* Mon Jan 31 2011 Angus Salkeld - 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 - 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 - 0.4.0-1 +- Initial release diff --git a/sources b/sources new file mode 100644 index 0000000..86da529 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (libqb-2.0.1.tar.xz) = 6d989d30b381253c7d7c4ff1e6400ad3445b92184906c859f10d6352dd604a309d7e2d9c8298d8b8d59a0e884e2d821608a39f043db7e96db2118a867ef57672