Проблема сборки пакета app-shells/tcsh-6.17-r1 и ее решение. Проверка?! Критика?! Рекомендации?!

Добрый день коллеги!

Столкнулся с проблемой сборки пакета '=app-shells/tcsh-6.17-r1'. Если коротко, то ошибка сборки выглядит следующим образом:

[...skipped...]
x86_64-pc-linux-gnu-gcc  -o tcsh -Wl,-O1 -Wl,--as-needed		 -O2 -pipe -march=native -D_PATH_DOTCSHRC='"/etc/csh.cshrc"' -D_PATH_DOTLOGIN='"/etc/csh.login"' -D_PATH_DOTLOGOUT='"/etc/csh.logout"' -D_PATH_USRBIN='"/usr/bin"' -D_PATH_BIN='"/bin"'		 -I. -I. sh.o sh.dir.o sh.dol.o sh.err.o sh.exec.o sh.char.o sh.exp.o sh.file.o sh.func.o sh.glob.o sh.hist.o sh.init.o sh.lex.o sh.misc.o sh.parse.o sh.print.o sh.proc.o sh.sem.o sh.set.o sh.time.o glob.o mi.termios.o ma.setp.o vms.termcap.o tw.help.o tw.init.o tw.parse.o tw.spell.o tw.comp.o tw.color.o ed.chared.o ed.refresh.o ed.screen.o ed.init.o ed.inputl.o ed.defns.o ed.xmap.o ed.term.o tc.alloc.o tc.bind.o tc.const.o tc.defs.o tc.disc.o tc.func.o tc.nls.o tc.os.o tc.printf.o tc.prompt.o tc.sched.o tc.sig.o tc.str.o tc.vers.o tc.who.o  -lcrypt 	 			   
ed.screen.o: In function `StopHighlight':
ed.screen.c:(.text+0x5c6): undefined reference to `tputs'
ed.screen.o: In function `StartHighlight':
ed.screen.c:(.text+0x5f6): undefined reference to `tputs'
ed.screen.o: In function `SetAttributes':
ed.screen.c:(.text+0x678): undefined reference to `tputs'
ed.screen.c:(.text+0x774): undefined reference to `tputs'
ed.screen.c:(.text+0x7ac): undefined reference to `tputs'
ed.screen.o:ed.screen.c:(.text+0x80d): more undefined references to `tputs' follow
[...skipped...]

Как видно отсутствует в системе какая-то бибилиотека, с которой бы tcsh успешно слинковался.
Поиск такой бибилиотеки привел к ncurses, которая у меня собрана:

[I] sys-libs/ncurses
     Available versions:  (5) 5.7-r7 5.9 ~5.9-r1 5.9-r2 {{ada +cxx debug doc gpm minimal profile static-libs tinfo trace unicode}}
     Installed versions:  5.9-r2(5)(17:21:02 16.04.2013)(cxx gpm tinfo unicode -ada -debug -doc -minimal -profile -static-libs -trace)

с флагом tinfo. Этот флаг нужен для nvidia-cuda-toolkit[debugger]

Флаг tinfo здесь ключевая штука. Наличие этого флага дополнительно создает библиотеку libtinfo.so в составе ncurses, в которой, собственно, и расположены те неразрешенные ссылки, на которые ругается tcsh. Убрать tinfo я не могу, ибо мне нужен nvidia-cuda-toolkit[debugger].

Исследование невозможности tcsh линковаться с libtinfo привели к файлу /usr/posrtage/app-shells/tcsh/files/tcsh-6.14-use-ncurses.patch, содержимое которого элементарно:

--- configure.in
+++ configure.in
@@ -257,7 +257,7 @@
 dnl Checks for libraries
 AC_SEARCH_LIBS(crypt, crypt)
 AC_SEARCH_LIBS(getspnam, sec)
-AC_SEARCH_LIBS(tgetent, termlib termcap curses ncurses)
+AC_SEARCH_LIBS(tgetent, ncurses)
 AC_SEARCH_LIBS(gethostbyname, nsl)
 AC_SEARCH_LIBS(connect, socket)
 AC_SEARCH_LIBS([iconv], [iconv], [AC_DEFINE([HAVE_ICONV], [1],

Как мы видим, вследствие жизни ncurses какие-то вещи, связанные с ней, стали неактуальные и разрабы ebuild'а для tcsh тупо их убрали.
Но оказывается, если ncurses собрано c флагом tinfo, одной ncurses недостаточно, нужна еще и tinfo в кандидатах на внешние функции.

Итак сухой остаток решения проблемы состоит из двух шагов:
1. Исправляем /usr/posrtage/app-shells/tcsh/files/tcsh-6.14-use-ncurses.patch

+AC_SEARCH_LIBS(tgetent, ncurses tinfo)

2. Исправляем manifest

ebuild /usr/portage/app-shells/tcsh/tcsh-6.17-r1.ebuild manifest

Далее можем спокойно сделать emerge tcsh

Я уже давний пользователь gentoo, но именно пользователь! Как-то не приходилось заниматься исправлением portage'а. Хватало того, что делали другие люди.
Вопросы к общественности:
1. Является ли то, что я сделал действительно исправлением бага или это просто удачное решение проблемы?
2. Тянет ли весь этот пост на оформление баг-репорта?
3. Я никогда не делал баг-репорты и честно говорят не очень хочется тратить время на его правильное оформление. Может быть кто-то (у кого рука набита) сможет это дело туда запостить.

Буду благодарен за критику и комментарии.

p.s. Пост отнес к общим вопросам, ибо мои вопросы в конце - общие.

Мое мнение

georgedvo написал(а):
1. Является ли то, что я сделал действительно исправлением бага или это просто удачное решение проблемы?

В общем случае - нет.

georgedvo написал(а):
2. Тянет ли весь этот пост на оформление баг-репорта?

Да. Думаю, оформить баг необходимо.

georgedvo написал(а):
3. Я никогда не делал баг-репорты и честно говорят не очень хочется тратить время на его правильное оформление. Может быть кто-то (у кого рука набита) сможет это дело туда запостить.

Лично мне лень воспроизводить этот баг у себя, только для того, чтобы оформить багрепорт. Кое-кому, может, будет не лень. В любом случае рекомендую освоить-таки багзиллу. Это несложно.

georgedvo написал(а):
Буду благодарен за критику и комментарии.

Всегда пожалуйста.

Раскритиковать это мы завсегда за :)

georgedvo написал(а):
Итак сухой остаток решения проблемы состоит из двух шагов:
1. Исправляем /usr/posrtage/app-shells/tcsh/files/tcsh-6.14-use-ncurses.patch

+AC_SEARCH_LIBS(tgetent, ncurses tinfo)

Есть мнение, что _ручками_ править файлы вне домашнего каталога (root'у --- +конфиги, т.е. /etc/, но не подряд) --- порочный подход.
В качестве workaround: user_patch (см. http://megabaks.blogspot.co.uk/2012/10/portage.html)
В таком случае второй шаг оказывается лишним.

Ну и, как было справедливо отмечено, в обязательном порядке в родную багзиллу.

:wq
--
Live free or die

Баг на данную

Баг на данную проблему(исправлено в tcsh-6.18.01-r1): https://bugs.gentoo.org/show_bug.cgi?id=459484

Нейтральность - высшее достижение сознания!

2Anarchist: спасибо за

2Anarchist: спасибо за информацию! пригодится!
2Pinkbyte: Блин, искал же на багзиле. Все-таки не врубаюсь как там правильно поиском пользоваться.

Думаю тема исчерпана

Дописывать ALL перед запросом

Дописывать ALL перед запросом

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Спасибо! В хелпе там все

Спасибо!
В хелпе там все разжевано, надо было сразу прочитать.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".