| Summary: | отсутствует mono-cecil | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Sergey V Turchin <zerg> |
| Component: | mono | Assignee: | Andrey Cherepanov <cas> |
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
| Severity: | enhancement | ||
| Priority: | P2 | CC: | cas, serjigva, wrar |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
|
Description
Sergey V Turchin
2008-08-05 19:47:44 MSD
Я специально модифицировал сборку mono, что бы cecil собирался из него, а не отдельным пакетом. присутствует /usr/lib/pkgconfig/cecil.pc. Если он не устраивает или в нём чего-то не хватает или надо обновить - сделаю, не вопрос. Посмотри на него с начала. Нужно чтоб отработало на выбор pkg-config mono-cecil --variable=assemblies_dir или pkg-config cecil --variable=assemblies_dir KDE4 по ней определяет наличие cecil и записывает результат в переменную для дальнейшего использования. в том и дело, что эта переменная нужна, если 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)
(In reply to comment #3) > #!!! ${GAC_ASSEMBLY_DIR} - должен быть /usr/lib/mono/gac (%_monogacdir) Меня устроит этот макрос. Единственное, если у кого-то еще придется патчить, удобнее в 1-м месте. Кстати, в /usr/lib/pkgconfig/cecil.pc относительные пути написаны. @prefix@/lib/mono на @libdir@/mono менять не надо - у нас используется именно @prefix@/lib/mono. или ты про что хотел сказать предыдущей ссылкой? (In reply to comment #7) > или ты про что хотел сказать предыдущей ссылкой? 1. Что у них есть assemblies_dir в .pc 2. Что это может помочь поправить относительные пути (я ж не вдавался в подробности) Оказывается, у нас специально убирается assemblies_dir http://sisyphus.ru/srpm/Sisyphus/mono/patches/1 Исправьте, пожалуйста. Коллеги, проблема, как я вижу, выглядит так: 0. Cecil ещё пока официально не публичный, но в Альте мы впереди паровоза. Я уверен, что для этого есть свои причины. 1. Сторонние программы думают, что Cecil не публичный, поэтому хотят видеть assemblies_dir Моё предложение: а чего бы им не дать assemblies_dir=@prefix@/lib/mono/2.0 ? Шабалин, с Новым Годом! ping! P.S. Хочешь, на тебя перевешаю? да, я её возьму себе.(а то забыл совсем про неё). С новым годом всех! :) kde-шных биндингов в сизифе. В 4.1 тоже |