Irssi: Текст начинается с правой стороны на ARM Mac

Созданный на 8 дек. 2020  ·  19Комментарии  ·  Источник: irssi/irssi

  1. Я установил Irssi на Arm Mac с помощью Homebrew
  2. Когда я запускаю Irssi и начинаю печатать, текст начинается с правой стороны, а затем продолжается на новой строке.
  3. Я не вижу, что печатаю, из-за этой ошибки
  4. Различные другие проблемы с прокруткой

Screenshot 2020-12-08 at 22 18 43

help wanted

Самый полезный комментарий

этот патч что-нибудь делает

diff --git a/src/fe-text/terminfo-core.c b/src/fe-text/terminfo-core.c
index d2273d71..be59b0a7 100644
--- a/src/fe-text/terminfo-core.c
+++ b/src/fe-text/terminfo-core.c
@@ -14,6 +14,8 @@ inline static int term_putchar(int c)

 /* Don't bother including curses.h because of these -
    they might not even be defined there */
+#include <ncursesw/term.h>
+#if 0
 char *tparm();
 int tputs();

@@ -21,6 +23,7 @@ int setupterm();
 char *tigetstr();
 int tigetnum();
 int tigetflag();
+#endif
 #define term_getstr(x, buffer) tigetstr(x.ti_name)
 #define term_getnum(x) tigetnum(x.ti_name);
 #define term_getflag(x) tigetflag(x.ti_name);

Все 19 Комментарий

Проверьте свой $ TERM

Я просто использую терминал Apple по умолчанию

Это ничего не говорит. Убедитесь, что $ TERM верен для используемого вами терминала.

Я не совсем понимаю, что вы имеете в виду,

Получаю: xterm-256color

Ну, это не очевидно, так что у меня действительно нет идей. Спросите у доморощенных, я думаю? Они испортили свой terminfo или что-то еще.

Посмотрите, будет ли у вас такое же поведение с другим терминалом, например iTerm2, который является «предпочтительным» терминалом для большинства пользователей irssi. По крайней мере, так все говорят, но опроса по этому поводу нет :)

Такая же проблема здесь, на нескольких терминалах (Terminal.app, упомянутый OP, и Rosetta'd Alacritty).

Homebrew просто запускает ./configure; make; make install для irssi на ARM (потому что ARM Homebrew не поддерживает бинарные бутылки) - я попытаюсь подтвердить в отдельной установке, но кажется возможным или даже вероятным не имеет ничего общего с Homebrew.

но кажется возможным или даже вероятным, что это не имеет ничего общего с Homebrew.

Я рассматриваю homebrew как систему сборки и как дистрибутив. Они отвечают за то, чтобы их сборки хорошо взаимодействовали с библиотеками, от которых они зависят. Кроме того, они знают о своей платформе больше, чем мы. Я не говорю, что это их вина, но они с большей вероятностью смогут помочь в этом вопросе, чем мы.

Я могу подтвердить, что приведенные здесь шаги по компиляции из исходного кода вручную создают сборку irssi на кремнии Apple, которая правильно работает в iTerm2 и Terminal.app

Это должно быть что-то, что делает hombrew.

Привет, ребята, я скомпилировал irssi вручную, но он все равно выровнял irssi по правому краю. Хотите знать, как вы, ребята, решили это?

Пытался отладить эту проблему с сообществом Homebrew (см. Https://github.com/Homebrew/homebrew-core/issues/68856), но они предположили, что это проблема восходящего потока.

@ 676339784 Единственное, что я могу придумать, это попробовать iTerm2 (есть ли у него сборка ARM?)

Я могу подтвердить, что у меня действительно такая же проблема. Я забыл сообщить об этом после этого, но когда я подтвердил, что это работает для меня, я случайно подключился к серверу на моей панели TMUX, а не на моем MacBook. Эта проблема возникает как во встроенном Terminal.app, так и в iTerm2 (у которого есть сборка ARM) с различными настройками $ TERM, протестированными между ними.

@ WA9ACE Да, у меня те же проблемы, что и у вас

Я не слишком хорош в C, но я попробую пройти через это сегодня вечером, чтобы посмотреть, смогу ли я точно определить проблему для PR.

Пытаюсь разобраться в этом, просто записывая кое-что, что может быть полезно кому-то при копании.
Я не делаю ирсси из самогона; вместо этого прибегли к построению из исходного кода как есть, чтобы исключить какие-либо причуды и тому подобное; кроме того, это вряд ли вина пивоварни, поэтому я пока исключил это из уравнения.

Ошибка полностью воспроизводится как на iterm2, так и на Terminal.app; это не ошибка терминала, потому что irssi на x86_64 и aarch64 Linux отлично отображается в обоих из них (через ssh).

Сборка irssi из исходных текстов с добавлением ncurses в PKG_CONFIG_PATH явно не помогает, и по-прежнему связывается с системными libncurses; возможно, поэтому https://github.com/Homebrew/homebrew-core/issues/68856#issuecomment -759016854 эта проба ничего не изменила.

Однако переопределение CFLAGS и LDFLAGS дает некоторый интересный результат - irssi теперь явно строит с libncurses-6.2 из установки homebrew и ссылается на нее, и полностью уничтожает iterm2 при запуске. Целый эмулятор терминала со всеми его приложениями просто бесконечно протекает и сильно зависает.

"Стандартный" Terminal.app выдерживает работу с новым двоичным кодом, но выдает черный экран.

Я попытаюсь отладить его / проверить ncurses, но, возможно, предоставленная информация поможет некоторым людям, которые более осведомлены, чем я.

Вывод otool -L irssi

src/fe-text/irssi:
    /System/Library/Perl/5.28/darwin-thread-multi-2level/CORE/libperl.dylib (compatibility version 5.28.0, current version 5.28.2)
    /opt/homebrew/opt/glib/lib/libgmodule-2.0.0.dylib (compatibility version 6601.0.0, current version 6601.4.0)
    /opt/homebrew/opt/glib/lib/libglib-2.0.0.dylib (compatibility version 6601.0.0, current version 6601.4.0)
    /opt/homebrew/opt/gettext/lib/libintl.8.dylib (compatibility version 11.0.0, current version 11.0.0)
    /opt/homebrew/opt/[email protected]/lib/libssl.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
    /opt/homebrew/opt/[email protected]/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
    /opt/homebrew/opt/ncurses/lib/libncursesw.6.dylib (compatibility version 6.0.0, current version 6.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.60.1)

Скриншот приложения Терминал с командами irssi -! и /help которые я пытался запустить внутри.
image

этот патч что-нибудь делает

diff --git a/src/fe-text/terminfo-core.c b/src/fe-text/terminfo-core.c
index d2273d71..be59b0a7 100644
--- a/src/fe-text/terminfo-core.c
+++ b/src/fe-text/terminfo-core.c
@@ -14,6 +14,8 @@ inline static int term_putchar(int c)

 /* Don't bother including curses.h because of these -
    they might not even be defined there */
+#include <ncursesw/term.h>
+#if 0
 char *tparm();
 int tputs();

@@ -21,6 +23,7 @@ int setupterm();
 char *tigetstr();
 int tigetnum();
 int tigetflag();
+#endif
 #define term_getstr(x, buffer) tigetstr(x.ti_name)
 #define term_getnum(x) tigetnum(x.ti_name);
 #define term_getflag(x) tigetflag(x.ti_name);

Да, этот патч и сборка с ncurses от homebrew, похоже, исправляют это.

Использовано мудрое понимание @ ailin-nemui, и следующее изменение позволило исправлению работать и со "стандартными" macos ncurses (работает и homebrew ncurses):

diff --git a/src/fe-text/terminfo-core.c b/src/fe-text/terminfo-core.c
index d2273d71..0cff18de 100644
--- a/src/fe-text/terminfo-core.c
+++ b/src/fe-text/terminfo-core.c
@@ -14,13 +14,13 @@ inline static int term_putchar(int c)

 /* Don't bother including curses.h because of these -
    they might not even be defined there */
-char *tparm();
-int tputs();
+char *tparm(const char *str, ...);
+int tputs(const char *str, int affcnt, int (*putc)(int));
+int setupterm(char *term, int fildes, int *errret);
+char *tigetstr(const char *capname);
+int tigetnum(const char *capname);
+int tigetflag(const char *capname);

-int setupterm();
-char *tigetstr();
-int tigetnum();
-int tigetflag();
 #define term_getstr(x, buffer) tigetstr(x.ti_name)
 #define term_getnum(x) tigetnum(x.ti_name);
 #define term_getflag(x) tigetflag(x.ti_name);
Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

CatPlanet picture CatPlanet  ·  5Комментарии

wilhelmy picture wilhelmy  ·  14Комментарии

ranieuwe picture ranieuwe  ·  5Комментарии

fratertenc picture fratertenc  ·  7Комментарии

valberg picture valberg  ·  3Комментарии