Проблемы VAPI с GTK+ 3

Я пытаюсь скомпилировать Vala на ArchLinux, и когда я пытаюсь включить пакет gtk+-3.0кажется, GDK и GTK+ 2.0 также включены; valac --pkg gtk+-3.0 test.vala дает следующие ошибки:

gdk-2.0.vapi:8.3-8.28: error: `Gdk.Selection' already contains a definition for `convert'
    public static void convert (Gdk.Window requestor, Gdk.Atom selection,     Gdk.Atom target, uint32 time_);
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
gdk-3.0.vapi:8.3-8.28: note: previous definition of `convert' was here
    public static void convert (Gdk.Window requestor, Gdk.Atom selection, Gdk.Atom target, uint32 time_);
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
gdk-2.0.vapi:10.3-10.44: error: `Gdk.Selection' already contains a definition for `owner_get'
    public static unowned Gdk.Window owner_get (Gdk.Atom selection);
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gdk-3.0.vapi:10.3-10.44: note: previous definition of `owner_get' was here
    public static unowned Gdk.Window owner_get (Gdk.Atom selection);
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
--snip--
Compilation failed: 942 error(s), 0 warning(s)

Есть ли способ указать, чтобы не включать gtk+-2.0 или изготовления valac игнорировать эти ошибки?

2 ответа

Какая версия Вала? Я боюсь, что это должно быть что-то запутано в вашем распространении. Можете ли вы вставить содержимое /usr/share/.../gtk+-3.0.deps?

Также попробуйте использовать valac --verbose, чтобы увидеть все загружаемые vapis. Для каждого vapi посмотрите соответствующий файл.deps и проверьте, есть ли где-нибудь gdk-2.0.

Без доступа к исходному коду или среде сборки (при условии, что вы не просто набираете valac Команда напрямую), это трудно устранить неисправность. Используя очень простой test.vala с Vala 0.12.1, он прекрасно работает на моей системе.

В прошлом я видел плохую среду Vala из-за старых версий Vala (и ее файлов поддержки), скрывающихся вокруг. Я рекомендую полностью удалить Vala 0.12.1, а затем пройти /usr для любых остатков. Простой и тщательный способ (хотя и трудоемкий) заключается в следующем:

$ find /usr -name "*vala*"
$ find /usr -name "*.vapi"

Удалите все, что явно не является частью другого пакета. (Обратите внимание, что некоторые пакеты устанавливают свои собственные VAPI, такие как libgee.) Затем переустановите Vala 0.12.1 и посмотрите, сохраняется ли проблема.

Другие вопросы по тегам