From d870fb86b46a7d95e3830445a00bf056f20f561c1195ba41e1c75887757b80d3 Mon Sep 17 00:00:00 2001 From: Ailin Nemui Date: Tue, 14 Jun 2022 16:57:04 +0000 Subject: [PATCH] Accepting request 982650 from home:ailin_nemui:branches:server:irc - backport first set of fixes: - add use-isystem-for-include.patch, fixes build with perl 5.36 (#1381) - add fix-textbuffer-view.patch, fixes lost lines on display (#1382) - add default-hash-chan.patch, default to joining #-channels again (#1385) OBS-URL: https://build.opensuse.org/request/show/982650 OBS-URL: https://build.opensuse.org/package/show/server:irc/irssi?expand=0&rev=128 --- default-hash-chan.patch | 28 ++++++ fix-textbuffer-view.patch | 174 ++++++++++++++++++++++++++++++++++ irssi.changes | 11 +++ irssi.spec | 8 ++ use-isystem-for-include.patch | 86 +++++++++++++++++ 5 files changed, 307 insertions(+) create mode 100644 default-hash-chan.patch create mode 100644 fix-textbuffer-view.patch create mode 100644 use-isystem-for-include.patch diff --git a/default-hash-chan.patch b/default-hash-chan.patch new file mode 100644 index 0000000..0ec581f --- /dev/null +++ b/default-hash-chan.patch @@ -0,0 +1,28 @@ +From 4864c334fcb45d64441ddafdec814b787829fc10 Mon Sep 17 00:00:00 2001 +From: ailin-nemui +Date: Mon, 13 Jun 2022 07:39:29 +0200 +Subject: [PATCH] Merge pull request #1388 from ailin-nemui/default-hash-chan + +default to hash channels + +(cherry picked from commit a5f5ea7d79274fcf547ef81f019b0c38c6863051) +--- + src/irc/core/irc-channels.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/irc/core/irc-channels.c b/src/irc/core/irc-channels.c +index b0fba9b1..24f57f8d 100644 +--- a/src/irc/core/irc-channels.c ++++ b/src/irc/core/irc-channels.c +@@ -71,7 +71,7 @@ static char *force_channel_name(IRC_SERVER_REC *server, const char *name) + return g_strdup(name); + + chantypes = g_hash_table_lookup(server->isupport, "chantypes"); +- if (chantypes == NULL || *chantypes == '\0') ++ if (chantypes == NULL || *chantypes == '\0' || strchr(chantypes, '#') != NULL) + chantypes = "#"; + + return g_strdup_printf("%c%s", *chantypes, name); +-- +2.36.1 + diff --git a/fix-textbuffer-view.patch b/fix-textbuffer-view.patch new file mode 100644 index 0000000..1368f57 --- /dev/null +++ b/fix-textbuffer-view.patch @@ -0,0 +1,174 @@ +From 6a4400f9041a2bb110db5fee45ad07c06172f6f6 Mon Sep 17 00:00:00 2001 +From: Ailin Nemui +Date: Mon, 13 Jun 2022 09:03:18 +0200 +Subject: [PATCH 2/4] Merge branch 'fix-textbuffer-view-1.4.1' into + fix-textbuffer-view-1.4.1-squash + +(cherry picked from commit b0979a77b2a602cb8875e23f38208af902ca10db) +--- + .github/workflows/clangformat.yml | 6 ++-- + src/fe-text/textbuffer-commands.c | 1 + + src/fe-text/textbuffer-view.c | 52 +++++++++++++++++++------------ + 3 files changed, 36 insertions(+), 23 deletions(-) + +diff --git a/src/fe-text/textbuffer-commands.c b/src/fe-text/textbuffer-commands.c +index f30eab0e..6ed7c39c 100644 +--- a/src/fe-text/textbuffer-commands.c ++++ b/src/fe-text/textbuffer-commands.c +@@ -393,6 +393,7 @@ static void cmd_scrollback_redraw(void) + + term_refresh_freeze(); + textbuffer_view_reset_cache(gui->view); ++ textbuffer_view_resize(gui->view, gui->view->width, gui->view->height); + gui_window_redraw(active_win); + term_refresh_thaw(); + } +diff --git a/src/fe-text/textbuffer-view.c b/src/fe-text/textbuffer-view.c +index 79f3522c..ba353288 100644 +--- a/src/fe-text/textbuffer-view.c ++++ b/src/fe-text/textbuffer-view.c +@@ -402,10 +402,9 @@ view_update_line_cache(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line) + + if (rec->count > 1) { + for (pos = 0; lines != NULL; pos++) { +- void *data = lines->data; ++ LINE_CACHE_SUB_REC *data = lines->data; + +- memcpy(&rec->lines[pos], data, +- sizeof(LINE_CACHE_SUB_REC)); ++ memcpy(&rec->lines[pos], data, sizeof(LINE_CACHE_SUB_REC)); + + lines = g_slist_remove(lines, data); + g_free(data); +@@ -427,7 +426,7 @@ static void view_remove_cache(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line, + + cache = g_hash_table_lookup(view->cache->line_cache, line); + if (cache != NULL) { +- g_free(cache); ++ line_cache_destroy(NULL, cache); + g_hash_table_remove(view->cache->line_cache, line); + } + } +@@ -438,7 +437,7 @@ static void view_update_cache(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line, + view_remove_cache(view, line, update_counter); + + if (view->buffer->cur_line == line) +- view->cache->last_linecount = view_get_linecount(view, line); ++ view_get_linecount(view, line); + } + + void textbuffer_view_reset_cache(TEXT_BUFFER_VIEW_REC *view) +@@ -467,6 +466,7 @@ static int view_line_draw(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line, + unichar chr; + int xpos, color, drawcount, first, need_move, need_clrtoeol, char_width; + unsigned int fg24, bg24; ++ fg24 = bg24 = UINT_MAX; + + if (view->dirty) /* don't bother drawing anything - redraw is coming */ + return 0; +@@ -767,7 +767,6 @@ static void view_unregister_indent_func(TEXT_BUFFER_VIEW_REC *view, + /* recreate cache so it won't contain references + to the indent function */ + textbuffer_view_reset_cache(view); +- view->cache = textbuffer_cache_get(view->siblings, view->width); + } + + void textbuffer_views_unregister_indent_func(INDENT_FUNC indent_func) +@@ -1033,13 +1032,17 @@ void textbuffer_view_clear(TEXT_BUFFER_VIEW_REC *view) + /* Scroll the view up/down */ + void textbuffer_view_scroll(TEXT_BUFFER_VIEW_REC *view, int lines) + { +- int count; ++ int count, ypos; + + g_return_if_fail(view != NULL); + +- count = view_scroll(view, &view->startline, &view->subline, +- lines, TRUE); +- view->ypos += lines < 0 ? count : -count; ++ count = view_scroll(view, &view->startline, &view->subline, lines, TRUE); ++ ++ ypos = view->ypos + (lines < 0 ? count : -count); ++ textbuffer_view_init_ypos(view); ++ if (ypos != view->ypos) ++ textbuffer_view_resize(view, view->width, view->height); ++ + view->bottom = view_is_bottom(view); + if (view->bottom) view->more_text = FALSE; + +@@ -1079,10 +1082,10 @@ LINE_CACHE_REC *textbuffer_view_get_line_cache(TEXT_BUFFER_VIEW_REC *view, + cache = g_hash_table_lookup(view->cache->line_cache, line); + if (cache == NULL) + cache = view_update_line_cache(view, line); +- else ++ else + cache->last_access = time(NULL); + +- return cache; ++ return cache; + } + + static void view_insert_line(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line) +@@ -1263,12 +1266,13 @@ static void view_remove_line(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line, + view_bookmarks_check(view, line); + + if (view->buffer->cur_line == line) { +- /* the last line is being removed */ ++ /* the last line is being removed */ + LINE_REC *prevline; + +- prevline = view->buffer->first_line == line ? NULL : +- textbuffer_line_last(view->buffer)->prev; +- view->cache->last_linecount = prevline == NULL ? 0 : ++ prevline = view->buffer->first_line == line ? ++ NULL : ++ textbuffer_line_last(view->buffer)->prev; ++ if (prevline != NULL) + view_get_linecount(view, prevline); + } + +@@ -1474,8 +1478,10 @@ void textbuffer_view_set_window(TEXT_BUFFER_VIEW_REC *view, + + if (view->window != window) { + view->window = window; +- if (window != NULL) ++ if (window != NULL) { ++ textbuffer_view_resize(view, view->width, view->height); + view->dirty = TRUE; ++ } + } + } + +@@ -1504,12 +1510,18 @@ static int line_cache_check_remove(void *key, LINE_CACHE_REC *cache, + static int sig_check_linecache(void) + { + GSList *tmp, *caches; +- time_t now; ++ time_t now; + +- now = time(NULL); caches = NULL; ++ now = time(NULL); ++ caches = NULL; + for (tmp = views; tmp != NULL; tmp = tmp->next) { + TEXT_BUFFER_VIEW_REC *rec = tmp->data; + ++ if (rec->window != NULL) { ++ /* keep visible lines mapped */ ++ view_get_lines_height(rec, rec->startline, rec->subline, NULL); ++ } ++ + if (g_slist_find(caches, rec->cache) != NULL) + continue; + +@@ -1519,7 +1531,7 @@ static int sig_check_linecache(void) + &now); + } + +- g_slist_free(caches); ++ g_slist_free(caches); + return 1; + } + +-- +2.36.1 + diff --git a/irssi.changes b/irssi.changes index 99bafb4..7d4da55 100644 --- a/irssi.changes +++ b/irssi.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Tue Jun 14 14:52:59 UTC 2022 - Ailin Nemui + +- backport first set of fixes: + - add use-isystem-for-include.patch, fixes build with perl 5.36 + (#1381) + - add fix-textbuffer-view.patch, fixes lost lines on display + (#1382) + - add default-hash-chan.patch, default to joining #-channels + again (#1385) + ------------------------------------------------------------------- Sat Jun 11 17:47:05 UTC 2022 - Ailin Nemui diff --git a/irssi.spec b/irssi.spec index 07932f0..ecd7a82 100644 --- a/irssi.spec +++ b/irssi.spec @@ -29,6 +29,12 @@ Source2: irssi.png Source3: https://github.com/irssi/irssi/releases/download/%{version}/irssi-%{version}.tar.xz.asc # https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x7EE65E3082A5FB06AC7C368D00CCB587DDBEF0E1 Source4: %{name}.keyring +# PATCH-FIX-UPSTREAM use-isystem-for-include.patch -- based on PR 1384 +Patch1: use-isystem-for-include.patch +# PATCH-FIX-UPSTREAM fix-textbuffer-view.patch -- based on PR 1387 +Patch2: fix-textbuffer-view.patch +# PATCH-FIX-UPSTREAM default-hash-chan.patch -- based on PR 1388 +Patch3: default-hash-chan.patch BuildRequires: meson BuildRequires: glib2-devel BuildRequires: ncurses-devel @@ -72,6 +78,7 @@ compile plugins for the irssi package. %prep %setup -q +%autopatch -p1 %build %meson \ @@ -83,6 +90,7 @@ compile plugins for the irssi package. %if 0%{?suse_version} > 1330 -Dwith-otr=yes \ %endif + -DPACKAGE_VERSION="%{version}-oS1" \ # %meson_build diff --git a/use-isystem-for-include.patch b/use-isystem-for-include.patch new file mode 100644 index 0000000..4f511bd --- /dev/null +++ b/use-isystem-for-include.patch @@ -0,0 +1,86 @@ +From 0658076c0ddee8663b2eb8f8a1bf73b0b9c95ec8 Mon Sep 17 00:00:00 2001 +From: Ailin Nemui +Date: Sun, 12 Jun 2022 17:13:28 +0200 +Subject: [PATCH 1/4] use -isystem instead of -I for include directories + +limits warnings to our own code + +(cherry picked from commit 528632bba2257cd9532417163f0952275a25da1f) +--- + meson.build | 21 ++++++++++++--------- + 1 file changed, 12 insertions(+), 9 deletions(-) + +diff --git a/meson.build b/meson.build +index 71dacead..d9eb935f 100644 +--- a/meson.build ++++ b/meson.build +@@ -168,7 +168,7 @@ message('*** Or alternatively install your distribution\'s package') + message('*** On Debian: sudo apt-get install libglib2.0-dev') + message('*** On Redhat: dnf install glib2-devel') + if not require_glib_internal +- glib_dep = dependency('glib-2.0', version : '>=2.32', required : not want_glib_internal, static : want_static_dependency) ++ glib_dep = dependency('glib-2.0', version : '>=2.32', required : not want_glib_internal, static : want_static_dependency, include_type : 'system') + else + glib_dep = dependency('', required : false) + endif +@@ -250,9 +250,9 @@ if not glib_dep.found() + dependencies : glib_internal_dependencies, + sources : glib_internal_build_t, + compile_args : [ +- '-I' + (meson.current_source_dir() / 'subprojects' / glib_internal_version / 'glib'), +- '-I' + (meson.current_source_dir() / 'subprojects' / glib_internal_version), +- '-I' + (meson.current_build_dir() / 'build-subprojects' / 'glib' / 'glib'), ++ '-isystem' + (meson.current_source_dir() / 'subprojects' / glib_internal_version / 'glib'), ++ '-isystem' + (meson.current_source_dir() / 'subprojects' / glib_internal_version), ++ '-isystem' + (meson.current_build_dir() / 'build-subprojects' / 'glib' / 'glib'), + ], + link_args : [ meson.current_build_dir() / 'build-subprojects' / 'glib' / 'glib' / 'libglib-2.0.a' ], + ) +@@ -265,12 +265,12 @@ if not glib_dep.found() + gmodule_dep = declare_dependency(sources : glib_internal_build_t, + dependencies : libdl_dep, + compile_args : [ +- '-I' + (meson.current_source_dir() / 'subprojects' / glib_internal_version / 'gmodule'), ++ '-isystem' + (meson.current_source_dir() / 'subprojects' / glib_internal_version / 'gmodule'), + ], + link_args : [ meson.current_build_dir() / 'build-subprojects' / 'glib' / 'gmodule' / 'libgmodule-2.0.a' ], + ) + else +- gmodule_dep = dependency('gmodule-2.0', static : want_static_dependency) ++ gmodule_dep = dependency('gmodule-2.0', static : want_static_dependency, include_type : 'system') + endif + dep += glib_dep + dep += gmodule_dep +@@ -279,7 +279,7 @@ if glib_internal and want_static_dependency and want_fuzzer + openssl_proj = subproject('openssl', default_options : ['default_library=static', 'asm=disabled']) + openssl_dep = openssl_proj.get_variable('openssl_dep') + else +- openssl_dep = dependency('openssl', static : want_static_dependency) ++ openssl_dep = dependency('openssl', static : want_static_dependency, include_type : 'system') + endif + dep += openssl_dep + +@@ -338,6 +338,9 @@ if want_perl + endif + foreach fl : perl_ccopts + if fl.startswith('-D') or fl.startswith('-U') or fl.startswith('-I') or fl.startswith('-i') or fl.startswith('-f') or fl.startswith('-m') ++ if fl.startswith('-I') ++ fl = '-isystem' + fl.split('-I')[1] ++ endif + perl_cflags += fl + endif + endforeach +@@ -469,8 +472,8 @@ endif + + have_otr = false + if want_otr +- libgcrypt = dependency('libgcrypt', version : '>=1.2.0', required : require_otr, static : want_static_dependency) +- libotr = dependency('libotr', version : '>=4.1.0', required : require_otr, static : want_static_dependency) ++ libgcrypt = dependency('libgcrypt', version : '>=1.2.0', required : require_otr, static : want_static_dependency, include_type : 'system') ++ libotr = dependency('libotr', version : '>=4.1.0', required : require_otr, static : want_static_dependency, include_type : 'system') + if libgcrypt.found() and libotr.found() + dep += libgcrypt + dep += libotr +-- +2.36.1 +