[devel] I: cmake macros
Arseny Maslennikov
arseny на altlinux.org
Вт Июн 15 21:26:43 MSK 2021
On Tue, Jun 15, 2021 at 08:26:29PM +0300, Mikhail Novosyolov wrote:
>
> А в чем цель отказа от Unix Makefiles и перехода на cmake --build?
cmake сама не собирает и не инсталлирует артефакты, а генерирует файлы для
некоторого исполнителя сборочных правил (бекенда, см.
cmake-generators(7)). Команда «cmake --build $builddir» не зависит от
используемого бекенда, поэтому её можно использовать с любыми бекендами.
Никакого «отказа от Unix Makefiles» я не предлагаю, несмотря на
тот факт, что make(1) на роль исполнителя генератных сборочных правил
годится так себе по ряду причин[*]. Но, если пакет по той или иной
причине зависит от некоторого конкретного генератора правил, лучше его
явно в спеке передать с -G.
> В таблице по ссылке на вики приведено " %makeinstall_std -C BUILD" в качестве рекомендуемого макроса.Вы хотите отказаться отпривязки к BUILD и тут же предлагаете прямо в спек ее прописывать?
В таблице в левом столбце описаны разные выражения в старых макросах,
которые встречаются (или встречались) в спеках, и аналогичные выражения
в новых. Она предназначена для случая, если кому-то неохота или некогда
прочесть файл с макросами[1], но хочется понять, что изменилось.
> Рассматривался ли вариант cmake --install?
Сейчас %cmake_install именно в эту команду и раскрывается и
рекомендуется для типичных случаев. Предыдущий %cmake_install был просто
бесполезен.
> В общем , прочитав тред, не понял, зачем эти изменения. В audacity.spec [1] сейчас так:
>
> %cmake \
> -Daudacity_lib_preference:STRING=system \
> -Daudacity_use_ffmpeg:STRING=linked \
> -Daudacity_use_lame:STRING=system \
> -Daudacity_use_libflac:STRING=system \
> -Daudacity_use_libid3tag:STRING=system \
> -Daudacity_use_libsndfile:STRING=system \
> -Daudacity_use_libsoxr:STRING=system \
> -Daudacity_use_libtwolame:STRING=system \
> -Daudacity_use_libvamp:STRING=system \
> -Daudacity_use_libvorbis:STRING=system \
> -Daudacity_use_libv2:STRING=system \
> -Daudacity_use_sbsms:STRING=system \
> -Daudacity_use_soundtouch:STRING=system \
> -Daudacity_use_portaudio:STRING=local \
> -Daudacity_use_midi:STRING=local \
> -DAUDACITY_SUFFIX:STRING=""
>
> %cmake_build
>
> %install
> %cmakeinstall_std
>
> Нужно ли здесь что-то менять?
Разве что %cmakeinstall_std на %cmake_install.
В целом, здесь достаточно тривиальный случай, поэтому и адаптировать
ничего не пришлось.
Изначально я задумывался о том, чтобы убрать %cmakeinstall_std вообще,
но очень много спеков сизифа его используют, а часть из них не сломались
после task 269879, как audacity. Поэтому (только после того, как в p9
пройдёт задание 272559) планируется снабдить его %warning-ом и
пояснительной надписью и потихоньку вытеснять.
[1] http://git.altlinux.org/people/arseny/packages/cmake.git?p=cmake.git;a=blob;f=.gear/cmake.macros;h=e9bc3f055dc25457d2072748e5b7dc5e5b7db812;hb=33e1f9d741a2439266bb2e72c5a763b58ae112f4
[*] JT: Вообще, если адаптировать Unix Haters' handbook к современности,
то make(1) будет главным уродом в программе цирка.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : signature.asc
Тип : application/pgp-signature
Размер : 833 байтов
Описание: отсутствует
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20210615/72f6c4c4/attachment.bin>
Подробная информация о списке рассылки Devel