CPack: исключить конкретную зависимость RPM - PullRequest
0 голосов
/ 04 августа 2020

Итак, вот моя библиотека C ++, которая правильно построена с помощью CMake на CentOS 7, и я пытаюсь создать из нее пакет RPM. Что ж, CPack делает это довольно просто, но в данном конкретном случае это предостережение, которое портит все удовольствие.

Моя библиотека косвенно зависит от некоторых сторонних материалов следующим образом: my_lib <- stuff <- fubar и этот «fubar» - это пара библиотек, которые развертываются через run-пакеты, а не через обычные RPM, yum ничего о них не знает, и это не может быть исправлено.

Здесь я проверяю зависимости RPM:

rpm -qp ./build-centos/my-awesome-lib-2.0.2.0-264-ga003c47+264.ga003c47-Linux.rpm --requires

/bin/sh
/bin/sh
/bin/sh
/bin/sh
config(my-awesome-lib) = 2.0.2.0_264_ga003c47+264.ga003c47-1
ld-linux-aarch64.so.1()(64bit)
ld-linux-aarch64.so.1(GLIBC_2.17)(64bit)
fubar.so()(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.17)(64bit)
libcrypto.so.10()(64bit)
libcrypto.so.10(libcrypto.so.10)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.17)(64bit)
libgcc_s.so.1()(64bit)
libgcc_s.so.1(GCC_3.0)(64bit)
libgcc_s.so.1(GCC_4.2.0)(64bit)
...

Если вы обратите внимание на строку fubar.so()(64bit), у меня возникнут проблемы - библиотека имеет аккуратные встроенные проверки, сообщающие пользователю установить «fubar», правильно настроить env и т. Д. c, но из-за этой прямой зависимости RPM он вообще не сможет установить пакет!

И да, я действительно хочу «исключить» эту неприятную зависимость.

Итак, первый вариант - использовать что-то вроде ...

set(CPACK_RPM_PACKAGE_AUTOREQ " no")
set(CPACK_RPM_PACKAGE_REQUIRES <dependencies here>)
include(CPack)

, но мне пришлось бы перечислить все , кроме fubar, и это довольно длинный список, не говоря уже о необходимости просматривать этот список перед каждым выпуском.

* 1 022 * Другой вариант может быть что-то вроде ...
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION, "/usr/local/FuBar /usr/local/FuBar/lib64 /usr/local/FuBar/lib64/stub")
include(CPack)

но, увы, он никогда не работает, даже с другими аналогичными переменными, такими как CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIS.

Я также пробовал следующее:

    set(SOMEEXCLUDE
         /usr/local/FuBar
         /usr/local/FuBar/lib64
         /usr/local/FuBar/lib64/stub)
    list(APPEND CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST ${SOMEEXCLUDE})
    include(CPack)

Не работает = (

Может ли кто-нибудь указать мне на рецепт, который просто «убрал бы» нежелательную зависимость, если это возможно? Заранее благодарим за ваши усилия.

...