Bug 16566 - отсутствует mono-cecil
Summary: отсутствует mono-cecil
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: mono (show other bugs)
Version: unstable
Hardware: all Linux
: P2 enhancement
Assignee: Anton Farygin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-08-05 19:47 MSD by Sergey V Turchin
Modified: 2009-01-19 19:56 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey V Turchin 2008-08-05 19:47:44 MSD
http://mono-project.com/Cecil
Мне б для сборки kde-шных биндингов пакет mono-cecil поиметь, чтоб заработала команда
pkg-config mono-cecil --variable=assemblies_dir
Comment 1 Alexey Shabalin 2008-08-06 12:06:21 MSD
Я специально модифицировал сборку mono, что бы cecil собирался из него, а не отдельным пакетом. присутствует /usr/lib/pkgconfig/cecil.pc. Если он не устраивает или в нём чего-то не хватает или надо обновить - сделаю, не вопрос. Посмотри на него с начала.
Comment 2 Sergey V Turchin 2008-08-20 16:37:37 MSD
Нужно чтоб отработало на выбор
pkg-config mono-cecil --variable=assemblies_dir
или
pkg-config cecil --variable=assemblies_dir
KDE4 по ней определяет наличие cecil и записывает результат в переменную для дальнейшего использования.
Comment 3 Alexey Shabalin 2008-08-20 19:00:13 MSD
в том и дело, что эта переменная нужна, если cecil установлен в нестандартные пути (хотя конечно можно считать что это у нас нестандартный cecil, хотя установлен стандартно). У нас cecil нормально находится через GAC.
В csharp/CMakeLists.txt определяется наличие cecil и этого достаточно.
Мне не понятно, почему макрос MACRO(INSTALL_GAC target) в cmake/modules/CSharpMacros.cmake - это же установка любых mono библионек(я правильно понял?) - основывется на cecil. Я думаю, переменные, куда устанавливать, должны вычислятся как-то иначе, на базе mono.pc например, или libdir например.

в cmake/modules/CSharpMacros.cmake должно быть что-то типа этого.
(обрати внимание - я подставил абсолютные пути вместо переменных - какие они должны быть в cmake не знаю)


МACRO(INSTALL_GAC target)
	GET_CS_LIBRARY_TARGET_DIR()

	IF(NOT WIN32)
		INCLUDE(FindPkgConfig)
		PKG_SEARCH_MODULE(MONO_CECIL mono-cecil)

		PKG_SEARCH_MODULE(CECIL cecil)

		if(CECIL_FOUND OR MONO_CECIL_FOUND)

#!!!  ${CMAKE_CURRENT_BINARY_DIR} - должен быть /usr/lib (%_libdir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
			INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${GACUTIL_EXECUTABLE} -i ${CS_LIBRARY_TARGET_DIR}/${target}.dll -package 2.0 -root ${CMAKE_CURRENT_BINARY_DIR})")
			MAKE_DIRECTORY(${CMAKE_CURRENT_BINARY_DIR}/mono/)
#!!! ${GAC_ASSEMBLY_DIR} - должен быть /usr/lib/mono/gac (%_monogacdir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
			INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mono/ DESTINATION ${GAC_ASSEMBLY_DIR} )
		endif(CECIL_FOUND OR MONO_CECIL_FOUND)
	ELSE(NOT WIN32)
		INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${GACUTIL_EXECUTABLE} -i ${CS_LIBRARY_TARGET_DIR}/${target}.dll -package 2.0)")
	ENDIF(NOT WIN32)

ENDMACRO(INSTALL_GAC target)
Comment 4 Sergey V Turchin 2008-08-20 19:22:08 MSD
(In reply to comment #3)
> #!!! ${GAC_ASSEMBLY_DIR} - должен быть /usr/lib/mono/gac (%_monogacdir)
Меня устроит этот макрос.
Единственное, если у кого-то еще придется патчить, удобнее в 1-м месте.
Comment 5 Sergey V Turchin 2008-08-20 19:25:57 MSD
Кстати, в /usr/lib/pkgconfig/cecil.pc относительные пути написаны.
Comment 7 Alexey Shabalin 2008-08-20 23:51:18 MSD
@prefix@/lib/mono на @libdir@/mono менять не надо - у нас используется именно @prefix@/lib/mono.
или ты про что хотел сказать предыдущей ссылкой?
Comment 8 Sergey V Turchin 2008-08-21 16:16:43 MSD
(In reply to comment #7)
> или ты про что хотел сказать предыдущей ссылкой?
1. Что у них есть assemblies_dir в .pc
2. Что это может помочь поправить относительные пути (я ж не вдавался в подробности)
Comment 9 Sergey V Turchin 2008-08-22 12:55:02 MSD
Оказывается, у нас специально убирается assemblies_dir
http://sisyphus.ru/srpm/Sisyphus/mono/patches/1
Исправьте, пожалуйста.
Comment 10 ildar 2008-08-22 13:42:05 MSD
Коллеги,
проблема, как я вижу, выглядит так:
0. Cecil ещё пока официально не публичный, но в Альте мы впереди паровоза. Я уверен, что для этого есть свои причины.
1. Сторонние программы думают, что Cecil не публичный, поэтому хотят видеть assemblies_dir

Моё предложение:
а чего бы им не дать 
assemblies_dir=@prefix@/lib/mono/2.0
?
Comment 11 ildar 2009-01-04 20:40:16 MSK
Шабалин, с Новым Годом!
ping!
P.S. Хочешь, на тебя перевешаю?
Comment 12 Alexey Shabalin 2009-01-04 21:34:26 MSK
да, я её возьму себе.(а то забыл совсем про неё).
С новым годом всех! :)
Comment 13 Alexey Shabalin 2009-01-19 18:09:28 MSK
kde-шных биндингов в сизифе.
Comment 14 Sergey V Turchin 2009-01-19 19:56:36 MSK
В 4.1 тоже