From 032a03d3f96137aca4a7a9b725b174102819dab2 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 14 May 2025 15:53:20 +0000 Subject: [PATCH] import UBI memcached-1.6.23-7.el10 --- .gitignore | 3 +- .memcached.metadata | 1 - SOURCES/memcached-fix-rejconn-counting.patch | 23 -- SOURCES/memcached-issue685.patch | 39 --- SOURCES/memcached-low-conns-segfault.patch | 26 -- SOURCES/memcached-metaget-errstr-init.patch | 19 - SOURCES/memcached-restart-corrupted.patch | 30 -- .../memcached-restart-del-items-fail.patch | 13 - SOURCES/memcached-restart-double-free.patch | 26 -- .../memcached-restart-shutdown-segfault.patch | 97 ------ SOURCES/memcached-sasl-config.patch | 62 ---- SOURCES/memcached-sig-handler.patch | 84 ----- SOURCES/memcached-stats.patch | 83 ----- SOURCES/memcached-test-cache-dump.patch | 94 ----- SOURCES/memcached-tls-crt-refresh-crash.patch | 25 -- SOURCES/memcached-tls-hand-errs.patch | 22 -- SOURCES/memcached-unit.patch | 12 - memcached-unit.patch | 11 + memcached.conf | 1 + SPECS/memcached.spec => memcached.spec | 326 +++++++++++++++--- ...memcached.sysconfig => memcached.sysconfig | 0 sources | 2 + 22 files changed, 291 insertions(+), 708 deletions(-) delete mode 100644 .memcached.metadata delete mode 100644 SOURCES/memcached-fix-rejconn-counting.patch delete mode 100644 SOURCES/memcached-issue685.patch delete mode 100644 SOURCES/memcached-low-conns-segfault.patch delete mode 100644 SOURCES/memcached-metaget-errstr-init.patch delete mode 100644 SOURCES/memcached-restart-corrupted.patch delete mode 100644 SOURCES/memcached-restart-del-items-fail.patch delete mode 100644 SOURCES/memcached-restart-double-free.patch delete mode 100644 SOURCES/memcached-restart-shutdown-segfault.patch delete mode 100644 SOURCES/memcached-sasl-config.patch delete mode 100644 SOURCES/memcached-sig-handler.patch delete mode 100644 SOURCES/memcached-stats.patch delete mode 100644 SOURCES/memcached-test-cache-dump.patch delete mode 100644 SOURCES/memcached-tls-crt-refresh-crash.patch delete mode 100644 SOURCES/memcached-tls-hand-errs.patch delete mode 100644 SOURCES/memcached-unit.patch create mode 100644 memcached-unit.patch create mode 100644 memcached.conf rename SPECS/memcached.spec => memcached.spec (56%) rename SOURCES/memcached.sysconfig => memcached.sysconfig (100%) create mode 100644 sources diff --git a/.gitignore b/.gitignore index 855d624..66b2132 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -SOURCES/memcached-1.5.22.tar.gz +memcached-1.6.23.tar.gz +memcached-selinux-1.0.2.tar.gz diff --git a/.memcached.metadata b/.memcached.metadata deleted file mode 100644 index 2531f40..0000000 --- a/.memcached.metadata +++ /dev/null @@ -1 +0,0 @@ -3fe5d3929130e860efcfde18d4d396a29db006b7 SOURCES/memcached-1.5.22.tar.gz diff --git a/SOURCES/memcached-fix-rejconn-counting.patch b/SOURCES/memcached-fix-rejconn-counting.patch deleted file mode 100644 index b7beb8b..0000000 --- a/SOURCES/memcached-fix-rejconn-counting.patch +++ /dev/null @@ -1,23 +0,0 @@ -commit d5b1c3f5f8abc2f51ed493e5a41826d510f95cbb -Author: dormando -Date: Fri Mar 6 00:36:39 2020 -0800 - - fix: all new connections were counted as rejected - - from an earlier patch from a static analyzer... :( - -diff --git a/memcached.c b/memcached.c -index b560b32..ed3fc7d 100644 ---- a/memcached.c -+++ b/memcached.c -@@ -6668,7 +6668,9 @@ static void drive_machine(conn *c) { - if (settings.maxconns_fast) { - STATS_LOCK(); - reject = stats_state.curr_conns + stats_state.reserved_fds >= settings.maxconns - 1; -- stats.rejected_conns++; -+ if (reject) { -+ stats.rejected_conns++; -+ } - STATS_UNLOCK(); - } else { - reject = false; diff --git a/SOURCES/memcached-issue685.patch b/SOURCES/memcached-issue685.patch deleted file mode 100644 index c637bd7..0000000 --- a/SOURCES/memcached-issue685.patch +++ /dev/null @@ -1,39 +0,0 @@ -commit 48c2d30efef24270ea94fa133945b8ecd3a015e3 -Author: Tomas Korbar -Date: Wed May 20 15:28:10 2020 +0200 - - Do not join lru and slab maintainer threads if they do not exist - - If no_modern option was supplied then these threads did not run - but memcached still attempted to join them, which resulted in a - segfault. - - resolve #685 - -diff --git a/thread.c b/thread.c -index f162d26..abbfca1 100644 ---- a/thread.c -+++ b/thread.c -@@ -226,12 +226,16 @@ void stop_threads(void) { - stop_item_crawler_thread(CRAWLER_WAIT); - if (settings.verbose > 0) - fprintf(stderr, "stopped lru crawler\n"); -- stop_lru_maintainer_thread(); -- if (settings.verbose > 0) -- fprintf(stderr, "stopped maintainer\n"); -- stop_slab_maintenance_thread(); -- if (settings.verbose > 0) -- fprintf(stderr, "stopped slab mover\n"); -+ if (settings.lru_maintainer_thread) { -+ stop_lru_maintainer_thread(); -+ if (settings.verbose > 0) -+ fprintf(stderr, "stopped maintainer\n"); -+ } -+ if (settings.slab_reassign) { -+ stop_slab_maintenance_thread(); -+ if (settings.verbose > 0) -+ fprintf(stderr, "stopped slab mover\n"); -+ } - logger_stop(); - if (settings.verbose > 0) - fprintf(stderr, "stopped logger thread\n"); diff --git a/SOURCES/memcached-low-conns-segfault.patch b/SOURCES/memcached-low-conns-segfault.patch deleted file mode 100644 index 126451f..0000000 --- a/SOURCES/memcached-low-conns-segfault.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit dfb7eb468f06dbcb9abca68c0ff3a89eb3bf80de -Author: dormando -Date: Thu Mar 26 12:51:27 2020 -0700 - - fix startup segfault for low conns + idle thread - - < 100 connection limit plus idle_timeout feature caused a fault. Set a - minimum sleep instead. - -diff --git a/memcached.c b/memcached.c -index dd52dd0..6bfa131 100644 ---- a/memcached.c -+++ b/memcached.c -@@ -341,7 +341,11 @@ static void *conn_timeout_thread(void *arg) { - char buf[TIMEOUT_MSG_SIZE]; - rel_time_t oldest_last_cmd; - int sleep_time; -- useconds_t timeslice = 1000000 / (max_fds / CONNS_PER_SLICE); -+ int sleep_slice = max_fds / CONNS_PER_SLICE; -+ if (sleep_slice == 0) -+ sleep_slice = CONNS_PER_SLICE; -+ -+ useconds_t timeslice = 1000000 / sleep_slice; - - while(do_run_conn_timeout_thread) { - if (settings.verbose > 2) diff --git a/SOURCES/memcached-metaget-errstr-init.patch b/SOURCES/memcached-metaget-errstr-init.patch deleted file mode 100644 index 3ad8477..0000000 --- a/SOURCES/memcached-metaget-errstr-init.patch +++ /dev/null @@ -1,19 +0,0 @@ -commit 7e0270468aa4da5c82826c3c903442b8d6a670c4 -Author: Tomas Korbar -Date: Mon May 18 15:23:12 2020 +0200 - - crash fix: errstr wasn't initialized in metaget - -diff --git a/memcached.c b/memcached.c -index 3010236..2af1738 100644 ---- a/memcached.c -+++ b/memcached.c -@@ -4434,7 +4434,7 @@ static void process_mget_command(conn *c, token_t *tokens, const size_t ntokens) - bool item_created = false; - bool won_token = false; - bool ttl_set = false; -- char *errstr; -+ char *errstr = "CLIENT_ERROR bad command line format"; - - assert(c != NULL); - diff --git a/SOURCES/memcached-restart-corrupted.patch b/SOURCES/memcached-restart-corrupted.patch deleted file mode 100644 index dfa9e63..0000000 --- a/SOURCES/memcached-restart-corrupted.patch +++ /dev/null @@ -1,30 +0,0 @@ -commit fa40655b49cc73194acc0e2410930f3e9a8322a7 -Author: dormando -Date: Thu Mar 26 11:59:22 2020 -0700 - - restart: fix corrupted restart in some scenarios - - If the mmap file is reused but the memory isn't supposed to be reused, - pages are thrown into the global page pool. Normally when pages are - released into the pool the header of the page is zero'ed so the - restart_check() code will know to place it back into the global pool. - - When restarting multiple times the slabs_prefill() part of the startup - code was missing this zero'ing step, so the _next_ time restart happens - properly restart_check() could attempt to recover that memory. - -diff --git a/slabs.c b/slabs.c -index 56b5840..ca8a8f2 100644 ---- a/slabs.c -+++ b/slabs.c -@@ -299,6 +299,10 @@ void slabs_prefill_global(void) { - while (mem_malloced < mem_limit - && (ptr = memory_allocate(len)) != NULL) { - grow_slab_list(0); -+ // Ensure the front header is zero'd to avoid confusing restart code. -+ // It's probably good enough to cast it and just zero slabs_clsid, but -+ // this is extra paranoid. -+ memset(ptr, 0, sizeof(item)); - p->slab_list[p->slabs++] = ptr; - } - mem_limit_reached = true; diff --git a/SOURCES/memcached-restart-del-items-fail.patch b/SOURCES/memcached-restart-del-items-fail.patch deleted file mode 100644 index 2174216..0000000 --- a/SOURCES/memcached-restart-del-items-fail.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/slabs.c b/slabs.c -index 047d45a..577304d 100644 ---- a/slabs.c -+++ b/slabs.c -@@ -456,6 +456,8 @@ static void do_slabs_free_chunked(item *it, const size_t size) { - it->prev = 0; - // header object's original classid is stored in chunk. - p = &slabclass[chunk->orig_clsid]; -+ // original class id needs to be set on free memory. -+ it->slabs_clsid = chunk->orig_clsid; - if (chunk->next) { - chunk = chunk->next; - chunk->prev = 0; diff --git a/SOURCES/memcached-restart-double-free.patch b/SOURCES/memcached-restart-double-free.patch deleted file mode 100644 index 89d3cd1..0000000 --- a/SOURCES/memcached-restart-double-free.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit 0d4901071c74f9c3b63162ef5887a5c5b981f385 -Author: David Carlier -Date: Sat Feb 22 01:24:54 2020 +0000 - - restart: fix potential double free - -diff --git a/restart.c b/restart.c -index 92a7295..9a83d3a 100644 ---- a/restart.c -+++ b/restart.c -@@ -148,6 +148,7 @@ enum restart_get_kv_ret restart_get_kv(void *ctx, char **key, char **val) { - // have to re-assign it into the structure anyway. - if (c->line != NULL) { - free(c->line); -+ c->line = NULL; - } - - if (getline(&line, &len, c->f) != -1) { -@@ -198,6 +199,7 @@ enum restart_get_kv_ret restart_get_kv(void *ctx, char **key, char **val) { - } else { - // FIXME: proper error chain. - fprintf(stderr, "[restart] invalid metadata line:\n\n%s\n", line); -+ free(line); - return RESTART_BADLINE; - } - } else { diff --git a/SOURCES/memcached-restart-shutdown-segfault.patch b/SOURCES/memcached-restart-shutdown-segfault.patch deleted file mode 100644 index 255f993..0000000 --- a/SOURCES/memcached-restart-shutdown-segfault.patch +++ /dev/null @@ -1,97 +0,0 @@ -commit e360e34b1fd2cd69c3a08bfb7fa4fe75281b942a -Author: Tomas Korbar -Date: Tue May 19 08:42:12 2020 +0200 - - restart: fix rare segfault on shutdown - -diff --git a/memcached.c b/memcached.c -index d769b4a..ac03b93 100644 ---- a/memcached.c -+++ b/memcached.c -@@ -1009,6 +1009,18 @@ static void conn_shrink(conn *c) { - } - } - -+// Since some connections might be off on side threads and some are managed as -+// listeners we need to walk through them all from a central point. -+// Must be called with all worker threads hung or in the process of closing. -+void conn_close_all(void) { -+ int i; -+ for (i = 0; i < max_fds; i++) { -+ if (conns[i] && conns[i]->state != conn_closed) { -+ conn_close(conns[i]); -+ } -+ } -+} -+ - /** - * Convert a state name to a human readable form. - */ -@@ -9860,13 +9872,6 @@ int main (int argc, char **argv) { - } - - stop_threads(); -- int i; -- // FIXME: make a function callable from threads.c -- for (i = 0; i < max_fds; i++) { -- if (conns[i] && conns[i]->state != conn_closed) { -- conn_close(conns[i]); -- } -- } - if (memory_file != NULL && stop_main_loop == GRACE_STOP) { - restart_mmap_close(); - } -diff --git a/memcached.h b/memcached.h -index 6b1fe4a..bc2b395 100644 ---- a/memcached.h -+++ b/memcached.h -@@ -814,9 +814,8 @@ enum delta_result_type add_delta(conn *c, const char *key, - const int64_t delta, char *buf, - uint64_t *cas); - void accept_new_conns(const bool do_accept); --conn *conn_from_freelist(void); --bool conn_add_to_freelist(conn *c); - void conn_close_idle(conn *c); -+void conn_close_all(void); - item *item_alloc(char *key, size_t nkey, int flags, rel_time_t exptime, int nbytes); - #define DO_UPDATE true - #define DONT_UPDATE false -diff --git a/thread.c b/thread.c -index 7cba01e..6e19a2e 100644 ---- a/thread.c -+++ b/thread.c -@@ -205,6 +205,7 @@ void stop_threads(void) { - if (settings.verbose > 0) - fprintf(stderr, "asking workers to stop\n"); - buf[0] = 's'; -+ pthread_mutex_lock(&worker_hang_lock); - pthread_mutex_lock(&init_lock); - init_count = 0; - for (i = 0; i < settings.num_threads; i++) { -@@ -216,6 +217,8 @@ void stop_threads(void) { - wait_for_thread_registration(settings.num_threads); - pthread_mutex_unlock(&init_lock); - -+ // All of the workers are hung but haven't done cleanup yet. -+ - if (settings.verbose > 0) - fprintf(stderr, "asking background threads to stop\n"); - -@@ -237,6 +240,17 @@ void stop_threads(void) { - if (settings.verbose > 0) - fprintf(stderr, "stopped idle timeout thread\n"); - -+ // Close all connections then let the workers finally exit. -+ if (settings.verbose > 0) -+ fprintf(stderr, "closing connections\n"); -+ conn_close_all(); -+ pthread_mutex_unlock(&worker_hang_lock); -+ if (settings.verbose > 0) -+ fprintf(stderr, "reaping worker threads\n"); -+ for (i = 0; i < settings.num_threads; i++) { -+ pthread_join(threads[i].thread_id, NULL); -+ } -+ - if (settings.verbose > 0) - fprintf(stderr, "all background threads stopped\n"); - diff --git a/SOURCES/memcached-sasl-config.patch b/SOURCES/memcached-sasl-config.patch deleted file mode 100644 index 9d2eb58..0000000 --- a/SOURCES/memcached-sasl-config.patch +++ /dev/null @@ -1,62 +0,0 @@ -commit 6207330c2705fdb5f02de13b99a0d994f7c4f14a -Author: Zheng Gu -Date: Fri Nov 22 22:34:16 2019 +0800 - - fix bug where sasl will load config the wrong path - - /etc/sasl2/memcached.conf/memcached.conf instead of - /etc/sasl2/memcached.conf - -diff --git a/sasl_defs.c b/sasl_defs.c -index c60d1bf..370f947 100644 ---- a/sasl_defs.c -+++ b/sasl_defs.c -@@ -16,6 +16,23 @@ const char * const locations[] = { - "/etc/sasl2/memcached.conf", - NULL - }; -+ -+/* If the element of locations is file, locations_dir_path stores the -+ * directory path of these elements */ -+const char *const locations_dir_path[] = { -+ "/etc/sasl", -+ "/etc/sasl2", -+ NULL -+}; -+ -+/* If the element of locations is directory, locations_file_path stores -+ * the actual configue file which used by sasl, when GETCONFPATH is -+ * enabled */ -+const char *const locations_file_path[] = { -+ "/etc/sasl/memcached.conf/memcached.conf", -+ "/etc/sasl2/memcached.conf/memcached.conf", -+ NULL -+}; - #endif - - #ifndef HAVE_SASL_CALLBACK_FT -@@ -88,12 +105,24 @@ static int sasl_getconf(void *context, const char **path) - *path = getenv("SASL_CONF_PATH"); - - if (*path == NULL) { -+#if defined(HAVE_SASL_CB_GETCONF) - for (int i = 0; locations[i] != NULL; ++i) { - if (access(locations[i], F_OK) == 0) { - *path = locations[i]; - break; - } - } -+#elif defined(HAVE_SASL_CB_GETCONFPATH) -+ for (int i = 0; locations[i] != NULL; ++i) { -+ if (access(locations_file_path[i], F_OK) == 0) { -+ *path = locations[i]; -+ break; -+ } else if (access(locations[i], F_OK) == 0) { -+ *path = locations_dir_path[i]; -+ break; -+ } -+ } -+#endif - } - - if (settings.verbose) { diff --git a/SOURCES/memcached-sig-handler.patch b/SOURCES/memcached-sig-handler.patch deleted file mode 100644 index a22cfb6..0000000 --- a/SOURCES/memcached-sig-handler.patch +++ /dev/null @@ -1,84 +0,0 @@ -commit 8bbf383316f1bb16e45b05ad6e2ba9def88ba420 -Author: Tomas Korbar -Date: Mon May 18 14:57:39 2020 +0200 - - improve sig_handler function - -diff --git a/memcached.c b/memcached.c -index 3916a8c..2547305 100644 ---- a/memcached.c -+++ b/memcached.c -@@ -189,7 +189,7 @@ static enum transmit_result transmit(conn *c); - * can block the listener via a condition. - */ - static volatile bool allow_new_conns = true; --static bool stop_main_loop = false; -+static int stop_main_loop = NOT_STOP; - static struct event maxconnsevent; - static void maxconns_handler(const int fd, const short which, void *arg) { - struct timeval t = {.tv_sec = 0, .tv_usec = 10000}; -@@ -7850,8 +7850,8 @@ static void remove_pidfile(const char *pid_file) { - } - - static void sig_handler(const int sig) { -+ stop_main_loop = EXIT_NORMALLY; - printf("Signal handled: %s.\n", strsignal(sig)); -- exit(EXIT_SUCCESS); - } - - static void sighup_handler(const int sig) { -@@ -7860,7 +7860,7 @@ static void sighup_handler(const int sig) { - - static void sig_usrhandler(const int sig) { - printf("Graceful shutdown signal handled: %s.\n", strsignal(sig)); -- stop_main_loop = true; -+ stop_main_loop = GRACE_STOP; - } - - #ifndef HAVE_SIGIGNORE -@@ -9839,7 +9839,18 @@ int main (int argc, char **argv) { - } - } - -- fprintf(stderr, "Gracefully stopping\n"); -+ switch (stop_main_loop) { -+ case GRACE_STOP: -+ fprintf(stderr, "Gracefully stopping\n"); -+ break; -+ case EXIT_NORMALLY: -+ fprintf(stderr, "Exiting normally\n"); -+ break; -+ default: -+ fprintf(stderr, "Exiting on error\n"); -+ break; -+ } -+ - stop_threads(); - int i; - // FIXME: make a function callable from threads.c -@@ -9848,7 +9859,7 @@ int main (int argc, char **argv) { - conn_close(conns[i]); - } - } -- if (memory_file != NULL) { -+ if (memory_file != NULL && stop_main_loop == GRACE_STOP) { - restart_mmap_close(); - } - -diff --git a/memcached.h b/memcached.h -index 77f52aa..795ea8f 100644 ---- a/memcached.h -+++ b/memcached.h -@@ -236,6 +236,12 @@ enum pause_thread_types { - RESUME_WORKER_THREADS - }; - -+enum stop_reasons { -+ NOT_STOP, -+ GRACE_STOP, -+ EXIT_NORMALLY -+}; -+ - #define IS_TCP(x) (x == tcp_transport) - #define IS_UDP(x) (x == udp_transport) - diff --git a/SOURCES/memcached-stats.patch b/SOURCES/memcached-stats.patch deleted file mode 100644 index 74e2e7a..0000000 --- a/SOURCES/memcached-stats.patch +++ /dev/null @@ -1,83 +0,0 @@ -commit 3b78790b2575daf0e8b3c2822a7e160273df20bd -Author: Tomas Korbar -Date: Tue May 19 08:35:29 2020 +0200 - - Include ssl errors in the stats - -diff --git a/doc/protocol.txt b/doc/protocol.txt -index abe70b2..55479b7 100644 ---- a/doc/protocol.txt -+++ b/doc/protocol.txt -@@ -1509,6 +1509,23 @@ The value of the "state" stat may be one of the following: - | | sending back multiple lines of response data). | - |----------------+-----------------------------------------------------------| - -+TLS statistics -+-------------- -+ -+TLS is a compile-time opt-in feature available in versions 1.5.13 and later. -+When compiled with TLS support and TLS termination is enabled at runtime, the -+following additional statistics are available via the "stats" command. -+ -+|--------------------------------+----------+--------------------------------| -+| Name | Type | Meaning | -+|--------------------------------+----------+--------------------------------| -+| ssl_handshake_errors | 64u | Number of times the server has | -+| | | encountered an OpenSSL error | -+| | | during handshake (SSL_accept). | -+| time_since_server_cert_refresh | 32u | Number of seconds that have | -+| | | elapsed since the last time | -+| | | certs were reloaded from disk. | -+|--------------------------------+----------+--------------------------------| - - - Other commands -diff --git a/memcached.c b/memcached.c -index d81a71f..d769b4a 100644 ---- a/memcached.c -+++ b/memcached.c -@@ -3428,6 +3428,7 @@ static void server_stats(ADD_STAT add_stats, conn *c) { - #endif - #ifdef TLS - if (settings.ssl_enabled) { -+ APPEND_STAT("ssl_handshake_errors", "%llu", (unsigned long long)stats.ssl_handshake_errors); - APPEND_STAT("time_since_server_cert_refresh", "%u", now - settings.ssl_last_cert_refresh_time); - } - #endif -@@ -6779,6 +6780,9 @@ static void drive_machine(conn *c) { - } - SSL_free(ssl); - close(sfd); -+ STATS_LOCK(); -+ stats.ssl_handshake_errors++; -+ STATS_UNLOCK(); - break; - } - } -diff --git a/memcached.h b/memcached.h -index 795ea8f..6b1fe4a 100644 ---- a/memcached.h -+++ b/memcached.h -@@ -357,6 +357,9 @@ struct stats { - uint64_t extstore_compact_lost; /* items lost because they were locked */ - uint64_t extstore_compact_rescues; /* items re-written during compaction */ - uint64_t extstore_compact_skipped; /* unhit items skipped during compaction */ -+#endif -+#ifdef TLS -+ uint64_t ssl_handshake_errors; /* TLS failures at accept/handshake time */ - #endif - struct timeval maxconns_entered; /* last time maxconns entered */ - }; -diff --git a/t/stats.t b/t/stats.t -index 028a60a..f1dcd54 100755 ---- a/t/stats.t -+++ b/t/stats.t -@@ -26,7 +26,7 @@ my $stats = mem_stats($sock); - # Test number of keys - if (MemcachedTest::enabled_tls_testing()) { - # when TLS is enabled, stats contains time_since_server_cert_refresh -- is(scalar(keys(%$stats)), 72, "expected count of stats values"); -+ is(scalar(keys(%$stats)), 73, "expected count of stats values"); - } else { - is(scalar(keys(%$stats)), 71, "expected count of stats values"); - } diff --git a/SOURCES/memcached-test-cache-dump.patch b/SOURCES/memcached-test-cache-dump.patch deleted file mode 100644 index 357bd10..0000000 --- a/SOURCES/memcached-test-cache-dump.patch +++ /dev/null @@ -1,94 +0,0 @@ -commit 026ca5390c4ee5e3674e3c8fcb7e5b4a940e7725 -Author: Tomas Korbar -Date: Thu Jun 4 19:17:57 2020 +0200 - - Update test_stats_prefix_dump - - - the test was failing on big endian architectures - -diff --git a/testapp.c b/testapp.c -index b670708..5a758b4 100644 ---- a/testapp.c -+++ b/testapp.c -@@ -322,38 +322,45 @@ static enum test_return test_stats_prefix_record_set(void) { - static enum test_return test_stats_prefix_dump(void) { - int hashval = hash("abc", 3) % PREFIX_HASH_SIZE; - char tmp[500]; -- char *expected; -+ char *buf; -+ const char *expected; - int keynum; - int length; - - stats_prefix_clear(); - -- assert(strcmp("END\r\n", stats_prefix_dump(&length)) == 0); -+ assert(strcmp("END\r\n", (buf = stats_prefix_dump(&length))) == 0); - assert(5 == length); - stats_prefix_record_set("abc:123", 7); -+ free(buf); - expected = "PREFIX abc get 0 hit 0 set 1 del 0\r\nEND\r\n"; -- assert(strcmp(expected, stats_prefix_dump(&length)) == 0); -+ assert(strcmp(expected, (buf = stats_prefix_dump(&length))) == 0); - assert(strlen(expected) == length); - stats_prefix_record_get("abc:123", 7, false); -+ free(buf); - expected = "PREFIX abc get 1 hit 0 set 1 del 0\r\nEND\r\n"; -- assert(strcmp(expected, stats_prefix_dump(&length)) == 0); -+ assert(strcmp(expected, (buf = stats_prefix_dump(&length))) == 0); - assert(strlen(expected) == length); - stats_prefix_record_get("abc:123", 7, true); -+ free(buf); - expected = "PREFIX abc get 2 hit 1 set 1 del 0\r\nEND\r\n"; -- assert(strcmp(expected, stats_prefix_dump(&length)) == 0); -+ assert(strcmp(expected, (buf = stats_prefix_dump(&length))) == 0); - assert(strlen(expected) == length); - stats_prefix_record_delete("abc:123", 7); -+ free(buf); - expected = "PREFIX abc get 2 hit 1 set 1 del 1\r\nEND\r\n"; -- assert(strcmp(expected, stats_prefix_dump(&length)) == 0); -+ assert(strcmp(expected, (buf = stats_prefix_dump(&length))) == 0); - assert(strlen(expected) == length); - -- /* The order of results might change if we switch hash functions. */ - stats_prefix_record_delete("def:123", 7); -- expected = "PREFIX abc get 2 hit 1 set 1 del 1\r\n" -- "PREFIX def get 0 hit 0 set 0 del 1\r\n" -- "END\r\n"; -- assert(strcmp(expected, stats_prefix_dump(&length)) == 0); -- assert(strlen(expected) == length); -+ free(buf); -+ /* NOTE: Prefixes can be dumped in any order, so we verify that -+ each expected line is present in the string. */ -+ buf = stats_prefix_dump(&length); -+ assert(strstr(buf, "PREFIX abc get 2 hit 1 set 1 del 1\r\n") != NULL); -+ assert(strstr(buf, "PREFIX def get 0 hit 0 set 0 del 1\r\n") != NULL); -+ assert(strstr(buf, "END\r\n") != NULL); -+ free(buf); - - /* Find a key that hashes to the same bucket as "abc" */ - bool found_match = false; -@@ -367,13 +374,16 @@ static enum test_return test_stats_prefix_dump(void) { - } - assert(found_match); - stats_prefix_record_set(tmp, strlen(tmp)); -- snprintf(tmp, sizeof(tmp), -- "PREFIX %d get 0 hit 0 set 1 del 0\r\n" -- "PREFIX abc get 2 hit 1 set 1 del 1\r\n" -- "PREFIX def get 0 hit 0 set 0 del 1\r\n" -- "END\r\n", keynum); -- assert(strcmp(tmp, stats_prefix_dump(&length)) == 0); -- assert(strlen(tmp) == length); -+ buf = stats_prefix_dump(&length); -+ assert(strstr(buf, "PREFIX abc get 2 hit 1 set 1 del 1\r\n") != NULL); -+ assert(strstr(buf, "PREFIX def get 0 hit 0 set 0 del 1\r\n") != NULL); -+ assert(strstr(buf, "END\r\n") != NULL); -+ snprintf(tmp, sizeof(tmp), "PREFIX %d get 0 hit 0 set 1 del 0\r\n", keynum); -+ assert(strstr(buf, tmp) != NULL); -+ free(buf); -+ -+ /* Marking the end of these tests */ -+ stats_prefix_clear(); - - return TEST_PASS; - } diff --git a/SOURCES/memcached-tls-crt-refresh-crash.patch b/SOURCES/memcached-tls-crt-refresh-crash.patch deleted file mode 100644 index e8ec497..0000000 --- a/SOURCES/memcached-tls-crt-refresh-crash.patch +++ /dev/null @@ -1,25 +0,0 @@ -commit 79140c7033519cdbcc9d59f08425ddda0a79bff7 -Author: dormando -Date: Mon Mar 23 14:40:34 2020 -0700 - - tls: fix refresh_certs crash when disabled - - segfaults server if refresh_certs command is run with TLS compiled in - but not enabled. - -diff --git a/tls.c b/tls.c -index c440a7e..ae1cb4d 100644 ---- a/tls.c -+++ b/tls.c -@@ -94,6 +94,11 @@ static bool load_server_certificates(char **errmsg) { - *errmsg = NULL; - return false; - } -+ if (settings.ssl_ctx == NULL) { -+ snprintf(error_msg, errmax, "Error TLS not enabled\r\n"); -+ *errmsg = error_msg; -+ return false; -+ } - SSL_LOCK(); - if (!SSL_CTX_use_certificate_chain_file(settings.ssl_ctx, - settings.ssl_chain_cert)) { diff --git a/SOURCES/memcached-tls-hand-errs.patch b/SOURCES/memcached-tls-hand-errs.patch deleted file mode 100644 index 75f80a5..0000000 --- a/SOURCES/memcached-tls-hand-errs.patch +++ /dev/null @@ -1,22 +0,0 @@ -commit aac7d69207fa08c0114625fbfb35a11d88a0cace -Author: dormando -Date: Mon Mar 16 19:46:12 2020 -0700 - - tls: handle accept errors properly - - 0 return from accept is also an error. pointed out by @tharanga on - review. - -diff --git a/memcached.c b/memcached.c -index be93474..b9ce8b1 100644 ---- a/memcached.c -+++ b/memcached.c -@@ -7021,7 +7021,7 @@ static void drive_machine(conn *c) { - } - SSL_set_fd(ssl, sfd); - int ret = SSL_accept(ssl); -- if (ret < 0) { -+ if (ret <= 0) { - int err = SSL_get_error(ssl, ret); - if (err == SSL_ERROR_SYSCALL || err == SSL_ERROR_SSL) { - if (settings.verbose) { diff --git a/SOURCES/memcached-unit.patch b/SOURCES/memcached-unit.patch deleted file mode 100644 index 29a1d0a..0000000 --- a/SOURCES/memcached-unit.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/scripts/memcached.service b/scripts/memcached.service -index 88a4b8a..a328a9a 100644 ---- a/scripts/memcached.service -+++ b/scripts/memcached.service -@@ -11,6 +11,7 @@ - - [Unit] - Description=memcached daemon -+Before=httpd.service - After=network.target - - [Service] diff --git a/memcached-unit.patch b/memcached-unit.patch new file mode 100644 index 0000000..4d745f2 --- /dev/null +++ b/memcached-unit.patch @@ -0,0 +1,11 @@ +diff -up memcached-1.4.28/scripts/memcached.service.unit memcached-1.4.28/scripts/memcached.service +--- memcached-1.4.28/scripts/memcached.service.unit 2016-07-02 03:14:25.000000000 +0200 ++++ memcached-1.4.28/scripts/memcached.service 2016-07-12 13:54:54.275782170 +0200 +@@ -9,6 +9,7 @@ + + [Unit] + Description=memcached daemon ++Before=httpd.service + After=network.target + + [Service] diff --git a/memcached.conf b/memcached.conf new file mode 100644 index 0000000..6148205 --- /dev/null +++ b/memcached.conf @@ -0,0 +1 @@ +u memcached - "memcached daemon" - diff --git a/SPECS/memcached.spec b/memcached.spec similarity index 56% rename from SPECS/memcached.spec rename to memcached.spec index 6a6d1e1..ee7a422 100644 --- a/SPECS/memcached.spec +++ b/memcached.spec @@ -1,47 +1,46 @@ %define username memcached %define groupname memcached %bcond_without sasl -%bcond_without tls %bcond_with seccomp +%bcond_without tls %bcond_with tests +%global selinuxtype targeted +%global selinuxmoduletype contrib +%global selinuxmodulename memcached +%global selinuxmodulever 1.0.2 +%global selinuxmoduledir %{selinuxmodulename}-selinux-%{selinuxmodulever} Name: memcached -Version: 1.5.22 -Release: 2%{?dist} +Version: 1.6.23 +Release: 7%{?dist} Epoch: 0 Summary: High Performance, Distributed Memory Object Cache -Group: System Environment/Daemons -License: BSD +License: BSD-3-clause AND Zlib AND BSD-2-Clause AND LicenseRef-Fedora-Public-Domain URL: https://www.memcached.org/ Source0: https://www.memcached.org/files/%{name}-%{version}.tar.gz Source1: memcached.sysconfig +# SELinux policy sources: https://pagure.io/memcached-selinux/tree/master +Source2: https://releases.pagure.org/memcached-selinux/memcached-selinux-1.0.2.tar.gz +Source3: memcached.conf Patch1: memcached-unit.patch -# patches which fix severe known issues found until version 1.6.6 -Patch2: memcached-restart-corrupted.patch -Patch3: memcached-fix-rejconn-counting.patch -Patch4: memcached-low-conns-segfault.patch -Patch5: memcached-metaget-errstr-init.patch -Patch6: memcached-sasl-config.patch -Patch7: memcached-sig-handler.patch -Patch8: memcached-tls-crt-refresh-crash.patch -Patch9: memcached-tls-hand-errs.patch -Patch10: memcached-stats.patch -Patch11: memcached-restart-shutdown-segfault.patch -Patch12: memcached-restart-del-items-fail.patch -Patch13: memcached-restart-double-free.patch -Patch14: memcached-issue685.patch -Patch15: memcached-test-cache-dump.patch +BuildRequires: make BuildRequires: gcc libevent-devel systemd BuildRequires: perl-generators BuildRequires: perl(Test::More), perl(Test::Harness) %{?with_sasl:BuildRequires: cyrus-sasl-devel} %{?with_seccomp:BuildRequires: libseccomp-devel} %{?with_tls:BuildRequires: openssl-devel} +BuildRequires: systemd-rpm-macros Requires(pre): shadow-utils +# Rich dependency syntax - require selinux policy subpackage +# when selinux-policy-targeted is installed +# This ensures that the selinux subpackage is not installed when not needed +# (e.g. inside a container) +Requires: (%{name}-selinux if selinux-policy-targeted) %{?systemd_requires} %description @@ -51,27 +50,40 @@ web applications by alleviating database load. %package devel Summary: Files needed for development using memcached protocol -Group: Development/Libraries Requires: %{name} = %{epoch}:%{version}-%{release} %description devel Install memcached-devel if you are developing C/C++ applications that require access to the memcached binary include files. +%package selinux +Summary: Selinux policy module +License: GPL-2.0-only +BuildRequires: selinux-policy +%{?selinux_requires} + +%description selinux +Install memcached-selinux to ensure your system contains the latest SELinux policy +optimised for use with this version of memcached. + %prep -%autosetup -p1 +# Unpack memcached sources into memcached-X.X.X directory +# and SELinux policy sources into memcached-selinux-X.X +%setup -q -b 2 +%patch 1 -p1 -b .unit %build -# compile with full RELRO -export CFLAGS="%{optflags} -pie -fpie" -export LDFLAGS="-Wl,-z,relro,-z,now" - %configure \ - %{?with_sasl: --enable-sasl} \ + %{?with_sasl: --enable-sasl --enable-sasl-pwdb} \ %{?with_seccomp: --enable-seccomp} \ %{?with_tls: --enable-tls} + make %{?_smp_mflags} +pushd ../%{selinuxmoduledir} +make +popd + %check # tests are disabled by default as they are unreliable on build systems %{!?with_tests: exit 0} @@ -104,18 +116,29 @@ install -Dp -m0644 scripts/memcached.service \ # Default configs install -Dp -m0644 %{SOURCE1} %{buildroot}/%{_sysconfdir}/sysconfig/%{name} +# install SELinux policy module +pushd ../%{selinuxmoduledir} +install -d %{buildroot}%{_datadir}/selinux/packages +install -d -p %{buildroot}%{_datadir}/selinux/devel/include/%{selinuxmoduletype} +# Not installing memcached.if - interface file from selinux-policy-devel will be used +# see. "Independant product policy" documentation for more details +install -m 0644 %{selinuxmodulename}.pp.bz2 %{buildroot}%{_datadir}/selinux/packages +popd + +install -p -D -m 0644 %{SOURCE3} %{buildroot}%{_sysusersdir}/memcached.conf %pre -getent group %{groupname} >/dev/null || groupadd -r %{groupname} -getent passwd %{username} >/dev/null || \ -useradd -r -g %{groupname} -d /run/memcached \ - -s /sbin/nologin -c "Memcached daemon" %{username} -exit 0 +%sysusers_create_compat %{SOURCE3} +%pre selinux +%selinux_relabel_pre -s %{selinuxtype} %post %systemd_post memcached.service +%post selinux +# install selinux policy module with priority 200 to override the default policy +%selinux_modules_install -s %{selinuxtype} -p 200 %{_datadir}/selinux/packages/%{selinuxmodulename}.pp.bz2 &> /dev/null %preun %systemd_preun memcached.service @@ -124,6 +147,13 @@ exit 0 %postun %systemd_postun_with_restart memcached.service +%postun selinux +if [ $1 -eq 0 ]; then + %selinux_modules_uninstall -s %{selinuxtype} -p 200 %{selinuxmodulename} +fi + +%posttrans selinux +%selinux_relabel_post -s %{selinuxtype} &> /dev/null %files %doc AUTHORS ChangeLog COPYING NEWS README.md doc/CONTRIBUTORS doc/*.txt @@ -133,37 +163,231 @@ exit 0 %{_mandir}/man1/memcached-tool.1* %{_mandir}/man1/memcached.1* %{_unitdir}/memcached.service - +%{_sysusersdir}/memcached.conf %files devel %{_includedir}/memcached/* +%files selinux +%attr(0644,root,root) %{_datadir}/selinux/packages/%{selinuxmodulename}.pp.bz2 +%ghost %verify(not md5 size mode mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{selinuxmodulename} +%license ../%{selinuxmoduledir}/COPYING + %changelog -* Thu Jun 04 2020 Tomas Korbar - 0:1.5.22-2 -- Update testing (#1809536) +* Tue Oct 29 2024 Troy Dawson - 0:1.6.23-7 +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 -* Mon May 18 2020 Tomas Korbar - 0:1.5.22-1 -- Rebase to version 1.5.22 (#1809536) +* Wed Aug 07 2024 Tomas Korbar - 0:1.6.23-6 +- Stop verifying active selinux module -* Mon Mar 30 2020 Tomas Korbar - 0:1.5.16-1 -- Rebase to version 1.5.16 (#1809536) +* Wed Aug 07 2024 Tomas Korbar - 0:1.6.23-5 +- Remove obsolete tests -* Mon Sep 30 2019 Tomas Korbar - 0:1.5.9-3 -- fix null-pointer dereference in "lru mode" and "lru temp_ttl" (#1709408) -- CVE-2019-11596 +* Mon Jun 24 2024 Troy Dawson - 0:1.6.23-4 +- Bump release for June 2024 mass rebuild -* Fri Feb 08 2019 Miroslav Lichvar - 0:1.5.9-2 -- fix lru-maintainer test (#1671666) +* Tue May 28 2024 Tomas Korbar - 0:1.6.23-3 +- Fix License tags to conform with SPDX +- Resolves: RHEL-35721 -* Wed Aug 08 2018 Miroslav Lichvar - 0:1.5.9-1 -- update to 1.5.9 (#1613690) +* Thu Jan 25 2024 Fedora Release Engineering - 0:1.6.23-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild -* Wed Aug 01 2018 Miroslav Lichvar - 0:1.5.7-3 -- disable tests in check stage by default (#1610006) +* Sat Jan 20 2024 Tomas Korbar - 0:1.6.23-1 +- Update to 1.6.23 +- Resolves: rhbz#2257644 -* Tue Jul 24 2018 Miroslav Lichvar - 0:1.5.7-2 -- add missing va_end() call (#1602616) -- enable tests in check stage again +* Tue Oct 31 2023 Tomas Korbar - 0:1.6.22-2 +- Update license tag to fully conform to SPDX + +* Wed Oct 25 2023 Tomas Korbar - 0:1.6.22-1 +- Update to 1.6.22 +- Resolves: rhbz#2244603 + +* Thu Jul 20 2023 Fedora Release Engineering - 0:1.6.21-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Mon Jun 19 2023 Tomas Korbar - 0:1.6.21-1 +- Update to 1.6.21 +- Resolves: rhbz#2215568 + +* Mon May 15 2023 Tomas Korbar - 0:1.6.20-1 +- Update to 1.6.20 +- Resolves: rhbz#2203537 + +* Sat Mar 11 2023 Tomas Korbar - 0:1.6.19-2 +- Change the License tag to the SPDX format + +* Thu Mar 09 2023 Tomas Korbar - 0:1.6.19-1 +- Update to 1.6.19 +- Resolves: rhbz#2176684 + +* Thu Jan 19 2023 Fedora Release Engineering - 0:1.6.18-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Jan 12 2023 Tomas Korbar - 0:1.6.18-1 +- Update to 1.6.18 +- Resolves: rhbz#2160271 + +* Tue Aug 30 2022 Tomas Korbar - 0:1.6.17-1 +- Update to 1.6.17 +- Resolves: rhbz#2121978 + +* Tue Aug 09 2022 Tomas Korbar - 0:1.6.16-1 +- Update to 1.6.16 +- Resolves: rhbz#2115502 + +* Thu Jul 21 2022 Fedora Release Engineering - 0:1.6.15-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jun 14 2022 Tomas Korbar - 1.6.15-2 +- Resolves: rhbz#2096850 + +* Fri Apr 08 2022 Tomas Korbar - 1.6.15-1 +- Update to 1.6.15 +- Resolves: rhbz#2070493 + +* Tue Feb 15 2022 Tomas Korbar - 1.6.14-1 +- Update to 1.6.14 +- Resolves: rhbz#2053327 + +* Fri Jan 28 2022 Tomas Korbar - 1.6.13-3 +- Fix complete_incr_bin function +- Resolves: rhbz#2046734 + +* Thu Jan 20 2022 Fedora Release Engineering - 0:1.6.13-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jan 14 2022 Tomas Korbar - 0:1.6.13-1 +- Update to 1.6.13 +- Resolves: rhbz#2040188 + +* Wed Sep 29 2021 Tomas Korbar - 0:1.6.12-1 +- Update to 1.6.12 + +* Tue Sep 14 2021 Sahana Prasad - 0:1.6.10-2 +- Rebuilt with OpenSSL 3.0.0 + +* Tue Jul 27 2021 Tomas Korbar - 0:1.6.10-1 +- Update to 1.6.10 +- Resolves: rhbz#1985842 + +* Thu Jul 22 2021 Fedora Release Engineering - 0:1.6.9-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 0:1.6.9-4 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Tue Jan 26 2021 Fedora Release Engineering - 0:1.6.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jan 25 2021 Tomas Korbar - 0:1.6.9-2 +- Enable sasl pwdb (#1909724) + +* Tue Nov 24 2020 Tomas Korbar - 0:1.6.9-1 +- Update to 1.6.9 + +* Thu Oct 29 2020 Tomas Korbar - 0:1.6.8-1 +- Update to 1.6.8 + +* Tue Sep 15 2020 Tomas Korbar - 0:1.6.7-2 +- Rebuilt with libevent-2.1.12 + +* Mon Sep 07 2020 Tomas Korbar - 0:1.6.7-1 +- Update to 1.6.7 + +* Tue Aug 04 2020 Tomas Korbar - 0:1.6.6-4 +- Resolve FTBFS (#1863678) + +* Sat Aug 01 2020 Fedora Release Engineering - 0:1.6.6-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 0:1.6.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon May 18 2020 Tomas Korbar - 0:1.6.6-1 +- Update to 1.6.6 + +* Wed Apr 22 2020 Tomas Korbar - 0:1.6.5-1 +- Update to 1.6.5 + +* Mon Apr 06 2020 Tomas Korbar - 0:1.6.3-2 +- Fix undefined behaviour on build with -D_FORTIFY_SOURCE=2 +- Found by tstellar@redhat.com + +* Sun Mar 29 2020 Tomas Korbar - 0:1.6.3-1 +- Update to 1.6.3 + +* Tue Mar 24 2020 Tomas Korbar - 0:1.6.2-1 +- Update to 1.6.2 + +* Thu Mar 19 2020 Tomas Korbar - 0:1.6.1-1 +- Update to 1.6.1 + +* Wed Mar 04 2020 Tomas Korbar - 0:1.5.22-2 +- Enable TLS by default + +* Fri Feb 07 2020 Tomas Korbar - 0:1.5.22-1 +- update to 1.5.22 + +* Thu Jan 30 2020 Tomas Korbar - 0:1.5.21-1 +- update to 1.5.21 +- make memcached gcc 10 compliant + +* Wed Jan 29 2020 Fedora Release Engineering - 0:1.5.20-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Nov 25 2019 Tomas Korbar - 0:1.5.20-1 +- update to 1.5.20 + +* Sun Sep 22 2019 Tomas Korbar - 0:1.5.18-1 +- update to 1.5.18 + +* Tue Sep 03 2019 Tomas Korbar - 0:1.5.17-1 +- update to 1.5.17 + +* Thu Jul 25 2019 Fedora Release Engineering - 0:1.5.16-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon May 27 2019 Miroslav Lichvar - 0:1.5.16-1 +- update to 1.5.16 + +* Wed May 22 2019 Miroslav Lichvar - 0:1.5.15-1 +- update to 1.5.15 + +* Mon May 06 2019 Miroslav Lichvar - 0:1.5.14-1 +- update to 1.5.14 (CVE-2019-11596) + +* Tue Apr 16 2019 Miroslav Lichvar - 0:1.5.13-1 +- update to 1.5.13 + +* Fri Feb 01 2019 Fedora Release Engineering - 0:1.5.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Aug 30 2018 Vit Mojzis - 0:1.5.10-2 +- selinux: Update to 1.0.2 +- selinux: Use license file from memcached-selinux tar +- add "Requires" for selinux subpackage + +* Mon Aug 13 2018 Miroslav Lichvar - 0:1.5.10-1 +- update to 1.5.10 +- add conditional for running tests in check stage + +* Fri Jul 13 2018 Fedora Release Engineering - 0:1.5.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Jul 09 2018 Miroslav Lichvar - 0:1.5.9-1 +- update to 1.5.9 + +* Tue Jun 05 2018 Vit Mojzis - 0:1.5.8-2 +- add "selinux" subpackage containing SELinux policy module + +* Fri May 25 2018 Miroslav Lichvar - 0:1.5.8-1 +- update to 1.5.8 +- use system CFLAGS and LDFLAGS * Thu Mar 29 2018 Miroslav Lichvar - 0:1.5.7-1 - update to 1.5.7 diff --git a/SOURCES/memcached.sysconfig b/memcached.sysconfig similarity index 100% rename from SOURCES/memcached.sysconfig rename to memcached.sysconfig diff --git a/sources b/sources new file mode 100644 index 0000000..0f7e296 --- /dev/null +++ b/sources @@ -0,0 +1,2 @@ +SHA512 (memcached-1.6.23.tar.gz) = b531a58f8fd1ff9ae821319302093ccf44a6c911ad680a15cc29390144a153340814f45c0a1ea9eebf999743399579e655abea671b27b85c1202d70945ce902a +SHA512 (memcached-selinux-1.0.2.tar.gz) = 7db24bbf10d002cfa5870aa0f937197c26d7b885b0652fc5c426919a4e7039274963a5677e7306e7b05927a40cecfef9054de523e273b36a4b3bee7ca27ae48c