]> git.pld-linux.org Git - packages/the_silver_searcher.git/commitdiff
fix build with gcc 10
authorJan Palus <atler@pld-linux.org>
Sat, 21 Nov 2020 11:41:37 +0000 (12:41 +0100)
committerJan Palus <atler@pld-linux.org>
Sat, 21 Nov 2020 11:41:37 +0000 (12:41 +0100)
gcc10.patch [new file with mode: 0644]
the_silver_searcher.spec

diff --git a/gcc10.patch b/gcc10.patch
new file mode 100644 (file)
index 0000000..ab1fc09
--- /dev/null
@@ -0,0 +1,207 @@
+From 21eaa1c4160b868b0c5bbf59da17974429f30055 Mon Sep 17 00:00:00 2001
+From: Shlomi Fish <shlomif@shlomifish.org>
+Date: Wed, 15 Apr 2020 20:23:52 +0300
+Subject: [PATCH] Fix multiple global symbols definitions.
+
+See the use of extern here:
+
+* https://www.geeksforgeeks.org/understanding-extern-keyword-in-c/
+
+* https://en.wikipedia.org/wiki/External_variable
+
+*
+https://stackoverflow.com/questions/496448/how-to-correctly-use-the-extern-keyword-in-c
+---
+ 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  | 20 ++++++++++----------
+ src/util.c    |  2 ++
+ src/util.h    |  4 ++--
+ 10 files changed, 35 insertions(+), 15 deletions(-)
+
+diff --git a/src/ignore.c b/src/ignore.c
+index 7ae83f3e..88036eff 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 20d5a6af..8db0f377 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 1481b6d0..f6f4e9a8 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 85847ee7..318622c3 100644
+--- a/src/log.h
++++ b/src/log.h
+@@ -9,7 +9,7 @@
+ #include <pthread.h>
+ #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 4abf4dcd..69953013 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 aae93093..0d852167 100644
+--- a/src/options.h
++++ b/src/options.h
+@@ -92,7 +92,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 0f4ae211..0dad3c07 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 6bac4203..00aa018d 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,12 +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 */
+@@ -64,7 +64,7 @@ typedef struct {
+     UT_hash_handle hh;
+ } symdir_t;
+-symdir_t *symhash;
++extern symdir_t *symhash;
+ ssize_t 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 3949477b..90ffb6f1 100644
+--- a/src/util.c
++++ b/src/util.c
+@@ -21,6 +21,8 @@
+     }                                     \
+     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 0c9b9b11..338b05f4 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 {
index 0f62b748b245e1d6e8ee124adf2cad2f3ede795a..95599192a1455bcee01d4963a11e2bbf865ca1fa 100644 (file)
@@ -7,6 +7,7 @@ Group:          Applications
 Source0:       https://geoff.greer.fm/ag/releases/%{name}-%{version}.tar.gz
 # Source0-md5: 958a614cbebf47b2f27a7d00a5bb1bcb
 URL:           https://geoff.greer.fm/ag/
+Patch0:                gcc10.patch
 BuildRequires: autoconf >= 2.59
 BuildRequires: automake
 BuildRequires: pcre-devel
@@ -64,6 +65,7 @@ This package provides zsh-completion for the_silver_searcher.
 
 %prep
 %setup -q
+%patch0 -p1
 
 %build
 %{__aclocal} -I m4
This page took 0.071426 seconds and 4 git commands to generate.