Проблемы 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 и посмотрите, сохраняется ли проблема.