Отправляет email-рассылки с помощью сервиса Sendsay

grammaticheskaya oshibka v /usr/include/libgnomeui-2.0/libgnomeui/gnome-entry.h

Доброго времени суток.

Система Slackware 10, ядро 2.4.26, gcc 3.3.4, gnome 2.6.1.

При использовании gnomeicu (0.99.5 из дистрибутива) обнаружилось, что он собран
без поддержки апплета. Решил перекомпилировать, благо исходники в дистрибутиве
имеются. Судя по выводу configure --help, апплет включается ключом --enable-applet.
Удалил установленный пакет, запустил configure с этим параметром, все вроде нормально,
но make выдал такое (привожу последюю часть вывода):

make[2]: Leaving directory `/usr/src/gnomeicu-0.99.5/src'
Making all in gnomeicu-applet
make[2]: Entering directory `/usr/src/gnomeicu-0.99.5/gnomeicu-applet'
source='applet.c' object='applet.o' libtool=no \
depfile='.deps/applet.Po' tmpdepfile='.deps/applet.TPo' \
depmode=gcc3 /bin/sh ../depcomp \
gcc -DHAVE_CONFIG_H -I. -I. -I.. -DORBIT2=1 -pthread -I/usr/include/libgnomeui-2.0
-I/usr/include/libgnome-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/gtk-2.0
-I/usr/include/libart-2.0 -I/usr/include/gconf/2 -I/usr/include/libbonoboui-2.0
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/orbit-2.0
-I/usr/include/libbonobo-2.0 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include
-I/usr/include/bonobo-activation-2.0 -I/usr/include/pango-1.0 -I/usr/X11R6/include
-I/usr/include/freetype2 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/libxml2
-I/usr/include/panel-2.0 -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED
-DGNOMEICU_APPLET_DATADIR=\""/usr/share"\" -DGNOMEICU_APPLET_UIDIR=\""/usr/share/gnome-2.0/ui"\"
-DGNOMELOCALEDIR=\""/usr/share/locale"\" -g -O2 -c `test -f 'applet.c' ||
echo './'`applet.c
In file included from /usr/include/libgnomeui-2.0/libgnomeui/libgnomeui.h:48,
from /usr/include/libgnomeui-2.0/gnome.h:7,
from applet.c:5:
/usr/include/libgnomeui-2.0/libgnomeui/gnome-entry.h:63: error: граматычная памылка
before "GtkCombo"
/usr/include/libgnomeui-2.0/libgnomeui/gnome-entry.h:63: warning: no semicolon
at end of struct or union
/usr/include/libgnomeui-2.0/libgnomeui/gnome-entry.h:67: error: граматычная памылка
before '}' token
/usr/include/libgnomeui-2.0/libgnomeui/gnome-entry.h:70: error: граматычная памылка
before "GtkComboClass"
/usr/include/libgnomeui-2.0/libgnomeui/gnome-entry.h:70: warning: no semicolon
at end of struct or union
/usr/include/libgnomeui-2.0/libgnomeui/gnome-entry.h:78: error: граматычная памылка
before '}' token
make[2]: *** [applet.o] Ошибка 1
make[2]: Leaving directory `/usr/src/gnomeicu-0.99.5/gnomeicu-applet'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Leaving directory `/usr/src/gnomeicu-0.99.5'
make: *** [all] Ошибка 2

И вывалился. Попробовал скомпилить без поддержки апплета - все нормально (уж
не потому ли так и собран в дистрибутиве, что разработчики не хотели с причиной
разбираться?). Попробовал (на всякий случай) собрать с такой строкой (за исключением
--enable-applet - так же, как было собрано в дистрибутиве):

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --enable-applet

Выдает ту же ошибку. Кусок /usr/include/libgnomeui-2.0/libgnomeui/gnome-entry.h
(для удобства указываю номера строк, на которые жалуется make):

typedef struct _GnomeEntry GnomeEntry;
typedef struct _GnomeEntryPrivate GnomeEntryPrivate;
typedef struct _GnomeEntryClass GnomeEntryClass;

struct _GnomeEntry {
GtkCombo combo; // Строка 63

/*< private >*/
GnomeEntryPrivate *_priv; // Строка 67
};

struct _GnomeEntryClass {
GtkComboClass parent_class; // Строка 70

/* Like the GtkEntry signals */
void (* activate) (GnomeEntry *entry);

gpointer reserved1, reserved2; /* Reserved for future use,
we'll need to proxy insert_text
and delete_text signals */
}; // Строка 78
Сам я не программер, так что не понимаю, что тут за ошибки. Может кто подскажет?
libgnomeui версии 2.6.1.1.

Ответить   Tue, 10 Aug 2004 03:21:44 +0300 (#208697)

 

Ответы:

-----BEGIN PGP SIGNED MESSAGEHash: SHA1

Здравствуйте Rygoravich
В сообщении от 10 Август 2004 04:21 Rygoravich написал(a):

Похоже, не установлен какой-то компонент libgtk...-devel (точне - там,
где идёт описание структуры GtkCombo,GtkComboClass )

- --
С уважением Хихин Руслан
-----BEGIN PGP SIGNATUREVersion: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBGEc5gDaarYH/1aQRAkUqAJ0fYk1pOeHlyIZvWT6OkFbAaUnb3wCcDG4j
2O0lM7La5kK7nW5Y3cDbxwA=
=8IRm
-----END PGP SIGNATURE-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 10639; Возраст листа: 381; Участников: 1252
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/208737



-*Информационный канал Subscribe.Ru
Адрес подписки:
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписать: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Tue, 10 Aug 2004 07:55:31 +0400 (#208737)

 

Доброго времени суток.

On Tue, 10 Aug 2004 07:55:31 +0400
Хихин Руслан <hih***@n*****.ru> wrote:

А можно поточнее? Дело в том, что я устанавливал дистрибутив полностью, кроме
kde, emacs, и пакетов для тестирования (kernel 2.6.7, gcc 3.4 и т.п.), т.е. все
имеющиеся в дистрибутиве gtk/gnome пакеты у меня стоят. devel-пакетов в slackware
вообще нет, все заголовки и библиотеки идут непосредственно в самих пакетах.
Я так полагаю, мне нужно скачать и поставить что-то с gnome.org, но что?

Ответить   Tue, 10 Aug 2004 15:47:45 +0300 (#209197)

 

Rygoravich wrote:

Попробуй создать ссылки: ln -s /usr/include/gtk-2.0/ /usr/include/gtk
или ln -s /usr/include/gtk-2.0/gtk/ /usr/include/gtk.

Возможно это можно поправить указав путь к заголовочным файлам gtk в
configure. (если там есть такая опция).

Andrew Gusev

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 10669; Возраст листа: 381; Участников: 1252
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/209256



-*Информационный канал Subscribe.Ru
Адрес подписки:
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписать: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Tue, 10 Aug 2004 20:51:06 +0400 (#209256)

 

Доброго времени суток.

On Tue, 10 Aug 2004 20:51:06 +0400
Andrew Gusev <a.gusev19***@m*****.ru> wrote:

Попробовал оба варианта - не помогает... Но что-то похожее на описание GtkCombo
и GtkComboClass имеется в /usr/include/gtk-2.0/gtk/gtkcombo.h:

#define GTK_TYPE_COMBO (gtk_combo_get_type ())
#define GTK_COMBO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_COMB#define
GTK_COMBO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_COMBO#define
GTK_IS_COMBO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_COMB#define
GTK_IS_COMBO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_COMBO#define
GTK_COMBO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_COMBO

typedef struct _GtkCombo GtkCombo;
typedef struct _GtkComboClass GtkComboClass;

/* you should access only the entry and list fields directly */
struct _GtkCombo {
GtkHBox hbox;

/*< public >*/
GtkWidget *entry;

/*< private >*/
GtkWidget *button;
GtkWidget *popup;
GtkWidget *popwin;

... и т.д.

Это то, чего не хватает компилятору? И если да, то как заставить его сюда обращаться?
Честно говоря, я слабо представляю механизм его работы:(.

Нет, там сравнительно немного опций.

Ответить   Tue, 10 Aug 2004 21:32:14 +0300 (#209341)

 

Rygoravich <rygoravi***@o*****.info> writes:

^^^^^^^^^^^ => gtk+ 2.4

-DGTK_DISABLE_DEPRECATED
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Дело в том, что в gtk+ 2.4 GtkCombo объявлен устаревшим. Программы
собранные с 2.0 <= gtk+ < 2.4 работать - бинарная совместимость
сохраняется, а совместимость на уровне исходников - только если макрос
препроцессора GTK_DISABLE_DEPRECATED не определен. gnomeicu явно
указывает запрет устаревших компонентов, но при --enable-applet
использует GtkCombo.

В принципе существуют два решения:
1. (Пишу по исходникам из Slackware 9.1, проверить не могу - Gnome не установлен)

в файле gnomeicu-applet/Makefile удалить строчки
-DG_DISABLE_DEPRECATED \
-DGDK_DISABLE_DEPRECATED \
-DGTK_DISABLE_DEPRECATED \
2. (Хакерский :-))
в файле /usr/include/gtk-2.0/gtk/gtkcombo.h
-#ifndef GTK_DISABLE_DEPRECATED
+//#ifndef GTK_DISABLE_DEPRECATED
-#endif /* GTK_DISABLE_DEPRECATED */
+//#endif /* GTK_DISABLE_DEPRECATED */

Надеюсь это поможет.

ЗЫ: И не забыть зарепортить багу авторам.

Ответить   Max Vasin Tue, 10 Aug 2004 22:00:40 +0400 (#209311)

 

Доброго времени суток.

On Tue, 10 Aug 2004 22:00:40 +0400
Max Vasin <max-appo***@m*****.ru> wrote:

Соответственно, огромное количество софта, написанного под gtk2 более старых
версий откажутся компилироваться без напильника в 2.4?

После этого действительно все заработало:). Вот что значит, когда знающий человек
отвечает! Спасибо!

Увы, они вряд ли по-русски (а тем более по-белорусски) поймут... Я даже до российских
разработчиков достучаться не могу (имеются в виду разработчики d4x)...

Ответить   Tue, 10 Aug 2004 22:25:34 +0300 (#209368)

 

Rygoravich <rygoravi***@o*****.info> writes:

Не факт. Никто ведь не заставляет авторов прог определять макросы
G_DISABLE_DEPRECATED, GDK_DISABLE_DEPRECATED, GTK_DISABLE_DEPRECATED.
pkg-config --cflags gtk-2.0 их не выводит, флаги для определения этих
макросов были добавлены разработчиками gnomeicu в Makefile.am
преднамеренно (а их никто не заставлял, между прочим).

Ответить   Max Vasin Wed, 11 Aug 2004 00:44:07 +0400 (#209422)