Summary: | отсутствует mono-cecil | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Sergey V Turchin <zerg> |
Component: | mono | Assignee: | Anton Farygin <rider> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | enhancement | ||
Priority: | P2 | CC: | rider, 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 тоже |