[devel] ctpp-2.7.1-alt2: Sisyphus/x86_64 test rebuild failed
Viacheslav Dubrovskyi
dubrsl на gmail.com
Вт Ноя 12 14:25:04 MSK 2013
12.11.2013 10:58, Viacheslav Dubrovskyi wrote:
> 12.11.2013 03:54, Денис Смирнов wrote:
>> On Mon, Nov 11, 2013 at 12:56:18PM +0000, ALT beekeeper wrote:
>>
>>> Verifying ELF objects in /usr/src/tmp/ctpp-buildroot
>>> (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal)
>>> verify-elf: ERROR: ./usr/bin/ctpp2json: RPATH contains illegal
>>> absolute entry "/usr/src/RPM/BUILD/ctpp-2.7.1":
>>> /usr/src/RPM/BUILD/ctpp-2.7.1
>>> verify-elf: ERROR: ./usr/bin/ctpp2json: RPATH contains illegal entry
>>> "/usr/src/RPM/BUILD": /usr/src/RPM/BUILD/ctpp-2.7.1
>>> verify-elf: ERROR: ./usr/bin/ctpp2i: RPATH contains illegal absolute
>>> entry "/usr/src/RPM/BUILD/ctpp-2.7.1": /usr/src/RPM/BUILD/ctpp-2.7.1
>>> verify-elf: ERROR: ./usr/bin/ctpp2i: RPATH contains illegal entry
>>> "/usr/src/RPM/BUILD": /usr/src/RPM/BUILD/ctpp-2.7.1
>>> verify-elf: ERROR: ./usr/bin/ctpp2c: RPATH contains illegal absolute
>>> entry "/usr/src/RPM/BUILD/ctpp-2.7.1": /usr/src/RPM/BUILD/ctpp-2.7.1
>>> verify-elf: ERROR: ./usr/bin/ctpp2c: RPATH contains illegal entry
>>> "/usr/src/RPM/BUILD": /usr/src/RPM/BUILD/ctpp-2.7.1
>>> verify-elf: ERROR: ./usr/bin/ctpp2vm: RPATH contains illegal
>>> absolute entry "/usr/src/RPM/BUILD/ctpp-2.7.1":
>>> /usr/src/RPM/BUILD/ctpp-2.7.1
>>> verify-elf: ERROR: ./usr/bin/ctpp2vm: RPATH contains illegal entry
>>> "/usr/src/RPM/BUILD": /usr/src/RPM/BUILD/ctpp-2.7.1
>>> error: Bad exit status from /usr/src/tmp/rpm-tmp.50101 (%install)
>> Как чинить?
> Это в результате изменения макроса %cmake: CMAKE_SKIP_RPATH заменен на
> CMAKE_SKIP_INSTALL_RPATH.
> И теоретически предполагалось, что RPATH будет удален на этапе
> %install Но это не происходит в некоторых случаях. :-(
> Разбираюсь почему. Если не разберусь, откачу изменения.
Ну в общем причина почему не отрабатывает CMAKE_SKIP_INSTALL_RPATH
потому, что, как написано в
http://www.cmake.org/Wiki/CMake_RPATH_handling#Caveats если используется
старая схема установки бинарников не через "INSTALL(TARGETS" (про старые
и новые варианты можно почитать тут
http://www.cmake.org/Wiki/CMake:Install_Commands ) то скрипты которые
удаляют RPATH не отрабатывают. Причем конкретно для этого пакета апстрим
для установки в Windows использует правильную схему, а для линукс нет. :(
И мне кажется что таких пакетов достаточно много. Подскажите как узнать?
Поэтому есть варианты:
1. Откатить изменения и не париться.
2. Workaround для каждого проблемного пакета: - добавить
-DCMAKE_SKIP_RPATH:BOOL=ON
3. Зафиксить и патч отправить в апстрим.
Для ctpp патч такой:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9cf180f..c56383b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -812,11 +812,16 @@ fi
FILE(WRITE ctpp2-config ${CTPP_COMPILER_HELPER})
# Install binaries
- INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ctpp2vm
- ${CMAKE_CURRENT_BINARY_DIR}/ctpp2c
- ${CMAKE_CURRENT_BINARY_DIR}/ctpp2i
- ${CMAKE_CURRENT_BINARY_DIR}/ctpp2json
- ctpp2-config
+ INSTALL(TARGETS ctpp2vm
+ ctpp2c
+ ctpp2i
+ ctpp2json
+ DESTINATION bin
+ PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE
+ GROUP_EXECUTE GROUP_READ
+ WORLD_EXECUTE WORLD_READ)
+
+ INSTALL(FILES ctpp2-config
DESTINATION bin
PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE
GROUP_EXECUTE GROUP_READ
Какие есть предложения?
--
WBR,
Viacheslav Dubrovskyi
Подробная информация о списке рассылки Devel