[devel] cmake_insource и _disable_check

Ilya Kurdyukov ilyakurdyukov на basealt.ru
Пн Июл 7 11:39:37 MSK 2025


Собираю libopentelemetry для e2k, потому что потребовался в зависимостях.

Компилятор не смог собрать тесты.

Отключаю сборку тестов:

%cmake_insource \
%ifarch %e2k
    -DBUILD_TESTING=OFF \
%endif
    -DCMAKE_MODULE_PATH=%_libdir/cmake \

Но потом же в спеке есть %check, и он не может найти тесты.

Отключаю тесты по правильному:

%ifarch %e2k
%def_disable check
%endif

...

%cmake_insource \
%if_disabled check
    -DBUILD_TESTING=OFF \
%endif
    -DCMAKE_MODULE_PATH=%_libdir/cmake \

Внезапно, %cmake_insource перестаёт работать как insource:

+ cd libopentelemetry-1.17.0.25
+ make 'INSTALL=/usr/libexec/rpm-build/install -p' install 
DESTDIR=/usr/src/tmp/libopentelemetry-buildroot -C e2kv5-alt-linux
make: Entering directory '/usr/src/RPM/BUILD/libopentelemetry-1.17.0.25'
make: *** e2kv5-alt-linux: No such file or directory.  Stop.

Хотя до %if_disabled работал так:

+ cd libopentelemetry-1.17.0.25
+ make 'INSTALL=/usr/libexec/rpm-build/install -p' install 
DESTDIR=/usr/src/tmp/libopentelemetry-buildroot -C .

Пробую:

%cmake_insource \
    %{?_disable_check:-DBUILD_TESTING=OFF} \
    -DCMAKE_MODULE_PATH=%_libdir/cmake \

Опять та же ошибка.

Пробую:

%cmake_insource \
    %{?!_enable_check:-DBUILD_TESTING=OFF} \
    -DCMAKE_MODULE_PATH=%_libdir/cmake \

Теперь работает.

Объясните что это за магия такая, для меня выглядит как баг.



Подробная информация о списке рассылки Devel