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
This commit is contained in:
Ailin Nemui 2022-06-14 16:57:04 +00:00 committed by Git OBS Bridge
parent 8a7d94e7b8
commit d870fb86b4
5 changed files with 307 additions and 0 deletions

28
default-hash-chan.patch Normal file
View File

@ -0,0 +1,28 @@
From 4864c334fcb45d64441ddafdec814b787829fc10 Mon Sep 17 00:00:00 2001
From: ailin-nemui <ailin-nemui@users.noreply.github.com>
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

174
fix-textbuffer-view.patch Normal file
View File

@ -0,0 +1,174 @@
From 6a4400f9041a2bb110db5fee45ad07c06172f6f6 Mon Sep 17 00:00:00 2001
From: Ailin Nemui <ailin@d5421s.localdomain>
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

View File

@ -1,3 +1,14 @@
-------------------------------------------------------------------
Tue Jun 14 14:52:59 UTC 2022 - Ailin Nemui <ailin.nemui@gmail.com>
- 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 <ailin.nemui@gmail.com>

View File

@ -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

View File

@ -0,0 +1,86 @@
From 0658076c0ddee8663b2eb8f8a1bf73b0b9c95ec8 Mon Sep 17 00:00:00 2001
From: Ailin Nemui <ailin@d5421s.localdomain>
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