[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