Как мне лучше всего обработать необходимый патч для Perl / Tk? - PullRequest
4 голосов
/ 21 мая 2010

Я делаю изменения в Perl / Tk для приложения, которое имеет собственную инсталляцию Perl и модулей (так что мы можем оставить приложение и начать работу).

Я обнаружил проблему, с которой столкнулся, просто наткнулся на то, что мне кажется здесь нужным патчем: http://osdir.com/ml/lang.perl.tk/2004-10/msg00030.html


    Bug confirmed. Here's the patch against Tk804.027:

<code>
--- Tk-804.027/pTk/mTk/generic/tkEntry.c Sat Mar 20 19:54:48 2004
+++ Tk-804.027-perl5.8.3d/pTk/mTk/generic/tkEntry.c Tue Oct 19 22:50:31 2004
@@ -3478,6 +3478,18 @@
Tcl_DStringFree(&script);
#else

+ switch (type) {
+ case VALIDATE_INSERT:
+ type = 1;
+ break;
+ case VALIDATE_DELETE:
+ type = 0;
+ break;
+ default:
+ type = -1;
+ break;
+ }
+
code = LangDoCallback(entryPtr->interp, entryPtr->validateCmd, 1, 5, "%s
%s %s %d %d",
new, change, entryPtr->string, index, type);
if (code != TCL_OK && code != TCL_RETURN) {
</code>

Regards,
Slaven

Я бы хотел применить этот патч или, если есть более новая версия модуля Perl / Tk, которую я могу обновить до уже включенного этого патча, который не требует изменения версии Perl, сделайте это. *

Вот что я могу найти из установки для этого приложения:

perl -v = 5.8.4 $ Tk :: version = '8,4' $ Tk :: patchlevel = '8,4' $ Tk :: VERSION = '804.027'

Итак ..

1a) если есть более новая версия Tk VERSION, включающая патч по ссылке выше, как мне обновить только этот модуль в определенном месте установки Perl для этого приложения?

1b) как узнать, совместимо ли это обновление с 5.8.4 Perl (я не хочу обновлять perl на этом этапе)

2) если нет, как мне применить этот патч, определенный в этой ссылке?

1 Ответ

3 голосов
/ 22 мая 2010

Сначала проверьте CPAN , чтобы увидеть текущую версию Tk . На момент получения этого ответа это 804.028, поэтому возможно, что ваша ошибка была исправлена. Вы можете проверить очередь ошибок Tk , чтобы увидеть состояние сообщений об ошибках, хотя я не знаю, был ли ваш конкретный когда-либо внесен в очередь. Вы также можете проверить файл Changes для выпуска, чтобы увидеть, упоминается ли там ваша проблема.

Если вы не видите ничего конкретного, вы можете заметить, что автором вашего цитируемого сообщения является сопровождающий Tk, так что вполне вероятно, что патч был применен. :)

Tk - это дистрибутив. Вы не можете обновить отдельные модули.

Проверьте Матрицу версии Perl / платформы , чтобы увидеть, какие версии Tk работают на каких платформах и под какими версиями Perl.

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

...