[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