From dcee42e82ce95f8a9569add19cf1de2d23f0494f Mon Sep 17 00:00:00 2001 From: zhangtao2020 <18066722603@163.com> Date: Sat, 7 Aug 2021 14:49:15 +0800 Subject: [PATCH] fix gcc upgrade causes compilation failure --- fix-build-error-gcc10.patch | 204 ++++++++++++++++++++++++++++++++++++ the_silver_searcher.spec | 9 +- 2 files changed, 211 insertions(+), 2 deletions(-) create mode 100644 fix-build-error-gcc10.patch diff --git a/fix-build-error-gcc10.patch b/fix-build-error-gcc10.patch new file mode 100644 index 0000000..0593cbd --- /dev/null +++ b/fix-build-error-gcc10.patch @@ -0,0 +1,204 @@ +From 599abc8075063f7a29e47224e83135541118781c Mon Sep 17 00:00:00 2001 +From: zhangtao2020 +Date: Fri, 6 Aug 2021 23:49:25 -0400 +Subject: [PATCH] fix build error gcc10 + +--- + src/ignore.c | 2 ++ + src/ignore.h | 2 +- + src/log.c | 1 + + src/log.h | 2 +- + src/options.c | 2 ++ + src/options.h | 2 +- + src/search.c | 13 +++++++++++++ + src/search.h | 21 ++++++++++----------- + src/util.c | 3 +++ + src/util.h | 4 ++-- + 10 files changed, 36 insertions(+), 16 deletions(-) + +diff --git a/src/ignore.c b/src/ignore.c +index fa41889..32464d7 100644 +--- a/src/ignore.c ++++ b/src/ignore.c +@@ -20,6 +20,8 @@ + const int fnmatch_flags = FNM_PATHNAME; + #endif + ++ignores *root_ignores; ++ + /* TODO: build a huge-ass list of files we want to ignore by default (build cache stuff, pyc files, etc) */ + + const char *evil_hardcoded_ignore_files[] = { +diff --git a/src/ignore.h b/src/ignore.h +index 20d5a6a..8db0f37 100644 +--- a/src/ignore.h ++++ b/src/ignore.h +@@ -29,7 +29,7 @@ struct ignores { + }; + typedef struct ignores ignores; + +-ignores *root_ignores; ++extern ignores *root_ignores; + + extern const char *evil_hardcoded_ignore_files[]; + extern const char *ignore_pattern_files[]; +diff --git a/src/log.c b/src/log.c +index 1481b6d..f6f4e9a 100644 +--- a/src/log.c ++++ b/src/log.c +@@ -4,6 +4,7 @@ + #include "log.h" + #include "util.h" + ++pthread_mutex_t print_mtx = PTHREAD_MUTEX_INITIALIZER; + static enum log_level log_threshold = LOG_LEVEL_ERR; + + void set_log_level(enum log_level threshold) { +diff --git a/src/log.h b/src/log.h +index 85847ee..318622c 100644 +--- a/src/log.h ++++ b/src/log.h +@@ -9,7 +9,7 @@ + #include + #endif + +-pthread_mutex_t print_mtx; ++extern pthread_mutex_t print_mtx; + + enum log_level { + LOG_LEVEL_DEBUG = 10, +diff --git a/src/options.c b/src/options.c +index dbe3e24..2bc6d85 100644 +--- a/src/options.c ++++ b/src/options.c +@@ -20,6 +20,8 @@ const char *color_line_number = "\033[1;33m"; /* bold yellow */ + const char *color_match = "\033[30;43m"; /* black with yellow background */ + const char *color_path = "\033[1;32m"; /* bold green */ + ++cli_options opts; ++ + /* TODO: try to obey out_fd? */ + void usage(void) { + printf("\n"); +diff --git a/src/options.h b/src/options.h +index db3e896..fd7d1f0 100644 +--- a/src/options.h ++++ b/src/options.h +@@ -91,7 +91,7 @@ typedef struct { + } cli_options; + + /* global options. parse_options gives it sane values, everything else reads from it */ +-cli_options opts; ++extern cli_options opts; + + typedef struct option option_t; + +diff --git a/src/search.c b/src/search.c +index 14e9d41..829ab4b 100644 +--- a/src/search.c ++++ b/src/search.c +@@ -2,6 +2,19 @@ + #include "print.h" + #include "scandir.h" + ++size_t alpha_skip_lookup[256]; ++size_t *find_skip_lookup; ++uint8_t h_table[H_SIZE] __attribute__((aligned(64))); ++ ++work_queue_t *work_queue = NULL; ++work_queue_t *work_queue_tail = NULL; ++int done_adding_files = 0; ++pthread_cond_t files_ready = PTHREAD_COND_INITIALIZER; ++pthread_mutex_t stats_mtx = PTHREAD_MUTEX_INITIALIZER; ++pthread_mutex_t work_queue_mtx = PTHREAD_MUTEX_INITIALIZER; ++ ++symdir_t *symhash = NULL; ++ + void search_buf(const char *buf, const size_t buf_len, + const char *dir_full_path) { + int binary = -1; /* 1 = yes, 0 = no, -1 = don't know */ +diff --git a/src/search.h b/src/search.h +index 1071114..bbd3036 100644 +--- a/src/search.h ++++ b/src/search.h +@@ -31,9 +31,9 @@ + #include "uthash.h" + #include "util.h" + +-size_t alpha_skip_lookup[256]; +-size_t *find_skip_lookup; +-uint8_t h_table[H_SIZE] __attribute__((aligned(64))); ++extern size_t alpha_skip_lookup[256]; ++extern size_t *find_skip_lookup; ++extern uint8_t h_table[H_SIZE] __attribute__((aligned(64))); + + struct work_queue_t { + char *path; +@@ -41,13 +41,12 @@ struct work_queue_t { + }; + typedef struct work_queue_t work_queue_t; + +-work_queue_t *work_queue; +-work_queue_t *work_queue_tail; +-int done_adding_files; +-pthread_cond_t files_ready; +-pthread_mutex_t stats_mtx; +-pthread_mutex_t work_queue_mtx; +- ++extern work_queue_t *work_queue; ++extern work_queue_t *work_queue_tail; ++extern int done_adding_files; ++extern pthread_cond_t files_ready; ++extern pthread_mutex_t stats_mtx; ++extern pthread_mutex_t work_queue_mtx; + + /* For symlink loop detection */ + #define SYMLOOP_ERROR (-1) +@@ -64,7 +63,7 @@ typedef struct { + UT_hash_handle hh; + } symdir_t; + +-symdir_t *symhash; ++extern symdir_t *symhash; + + void search_buf(const char *buf, const size_t buf_len, + const char *dir_full_path); +diff --git a/src/util.c b/src/util.c +index e509e58..5ea71d1 100644 +--- a/src/util.c ++++ b/src/util.c +@@ -21,6 +21,9 @@ + } \ + return ptr; + ++FILE *out_fd = NULL; ++ag_stats stats; ++ + void *ag_malloc(size_t size) { + void *ptr = malloc(size); + CHECK_AND_RETURN(ptr) +diff --git a/src/util.h b/src/util.h +index 4350822..e158714 100644 +--- a/src/util.h ++++ b/src/util.h +@@ -12,7 +12,7 @@ + #include "log.h" + #include "options.h" + +-FILE *out_fd; ++extern FILE *out_fd; + + #ifndef TRUE + #define TRUE 1 +@@ -51,7 +51,7 @@ typedef struct { + } ag_stats; + + +-ag_stats stats; ++extern ag_stats stats; + + /* Union to translate between chars and words without violating strict aliasing */ + typedef union { +-- +2.23.0 + diff --git a/the_silver_searcher.spec b/the_silver_searcher.spec index 9b082eb..01b5658 100644 --- a/the_silver_searcher.spec +++ b/the_silver_searcher.spec @@ -7,13 +7,15 @@ Name: the_silver_searcher Version: 2.1.0 -Release: 2 +Release: 3 Summary: Super-fast text searching tool (ag) Group: Applications/Text License: ASL 2.0 and BSD URL: https://github.com/ggreer/the_silver_searcher Source: https://github.com/ggreer/the_silver_searcher/archive/%{commit}/%{version}-%{shortcommit}.tar.gz +Patch1: fix-build-error-gcc10.patch + BuildRequires: autoconf gcc BuildRequires: automake BuildRequires: pcre-devel @@ -29,7 +31,7 @@ with a focus on speed. %prep %setup -q -n %{name}-%{commit} - +%patch1 -p1 %build aclocal autoconf @@ -58,6 +60,9 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name} %{_datadir}/zsh/site-functions/_%{name} %changelog +* Sat 7 Aug 2021 zhangtao - 2.1.0-3 +- fix gcc upgrade causes compilation failure + * Tue 27 Jul 2021 sunguoshuai - 2.1.0-2 - Add gcc for buildrequires