LINUX.ORG.RU

Не собирается i3 на Fedora 15


0

2

Решил попробовать i3, но тк в репах версия старовата, скачал последнюю версию с сайта, собираю:

bash-4.2$ make all
CC src/load_layout.c
src/load_layout.c:70:5: ошибка: токен «{» не допустим в препроцессорных расширениях
src/load_layout.c:91:5: ошибка: токен «{» не допустим в препроцессорных расширениях
src/load_layout.c:154:5: ошибка: токен «{» не допустим в препроцессорных расширениях
src/load_layout.c: В функции «tree_append_json»:
src/load_layout.c:239:28: предупреждение: несовместимый тип указателя в присваивании [по умолчанию включена]
src/load_layout.c:243:5: ошибка: токен «{» не допустим в препроцессорных расширениях
src/load_layout.c:266:5: ошибка: токен «{» не допустим в препроцессорных расширениях
make: *** [src/load_layout.o] Ошибка 1
bash-4.2$ make all
CC src/load_layout.c
src/load_layout.c:70:5: ошибка: токен «{» не допустим в препроцессорных расширениях
src/load_layout.c:91:5: ошибка: токен «{» не допустим в препроцессорных расширениях
src/load_layout.c:154:5: ошибка: токен «{» не допустим в препроцессорных расширениях
src/load_layout.c: В функции «tree_append_json»:
src/load_layout.c:239:28: предупреждение: несовместимый тип указателя в присваивании [по умолчанию включена]
src/load_layout.c:243:5: ошибка: токен «{» не допустим в препроцессорных расширениях
src/load_layout.c:266:5: ошибка: токен «{» не допустим в препроцессорных расширениях
make: *** [src/load_layout.o] Ошибка 1

Погуглил нашел это https://bugzilla.redhat.com/show_bug.cgi?id=728776

Понял, что ошибка в заголовочном файле yajl_version.h Но не понял можно ли это исправить не дожидаясь пока maintainer разберется. Может кто сталкивался?

★★

У меня это файл имеет суффикс `.cmake`.

$ ls -l /usr/include/yajl/
total 28
-rw-r--r-- 1 root root 3131 Jul 22  2010 yajl_common.h
-rw-r--r-- 1 root root 7213 Jul 22  2010 yajl_gen.h
-rw-r--r-- 1 root root 8503 Jul 22  2010 yajl_parse.h
-rw-r--r-- 1 root root  399 Jul 22  2010 yajl_version.h.cmake

И наверно используется вот это.

common.mk:

100 # Fallback for libyajl 1 which did not include yajl_version.h. We need
101 # YAJL_MAJOR from that file to decide which code path should be used.
102 CFLAGS += -idirafter $(TOPDIR)/yajl-fallback

Для начала можно попробовать удалить/переименовать заголовок в /usr/include.

amaora ★★
()
Ответ на: комментарий от amaora

Хотя не понятно как оно там работает, лучше не трогать, а исправить common.mk как-то вот так,

--- common.mk.back      2011-10-16 18:47:41.000000000 +0400
+++ common.mk   2011-10-16 18:49:04.000000000 +0400
@@ -47,7 +47,7 @@
 CFLAGS += $(call cflags_for_lib, xcb)
 CFLAGS += $(call cflags_for_lib, xcursor)
 CFLAGS += $(call cflags_for_lib, x11)
-CFLAGS += $(call cflags_for_lib, yajl)
+#CFLAGS += $(call cflags_for_lib, yajl)
 CFLAGS += $(call cflags_for_lib, libev)
 CPPFLAGS += -DI3_VERSION=\"${GIT_VERSION}\"
 CPPFLAGS += -DSYSCONFDIR=\"${SYSCONFDIR}\"
@@ -99,7 +99,7 @@
 
 # Fallback for libyajl 1 which did not include yajl_version.h. We need
 # YAJL_MAJOR from that file to decide which code path should be used.
-CFLAGS += -idirafter $(TOPDIR)/yajl-fallback
+CFLAGS += -I $(TOPDIR)/yajl-fallback
 
 ifneq (,$(filter Linux GNU GNU/%, $(UNAME)))
 CPPFLAGS += -D_GNU_SOURCE
amaora ★★
()

Когда пересобираешь то, что уже собрано в рпмку, надо не make & make install делать, а использовать spec от собранного пакета. Там флаги сборки и патчи нужные применены и зависимости проставлены.

Возьми src.rpm от 4-ой версии хоть вот от f16 http://koji.fedoraproject.org/koji/packageinfo?packageID=9595 и попробуй собрать rpm-ку.

alpha ★★★★★
()
Ответ на: комментарий от amaora

Спасибо огромное, собралось! :) Эх, еще расти и расти..

Sora ★★
() автор топика
Ответ на: комментарий от alpha

The requested URL /packages/i3/4.0.1/1.fc16/src/i3-4.0.1-1.fc16.src.rpm was not found on this server.

Все равно спасибо, может позже поэкспериментирую.

Sora ★★
() автор топика
Ответ на: комментарий от alpha

Ай, уже сделал make install, так что ладно :)

Sora ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.