При этом %make_build, и %cmake_build до версии rpm-macros-cmake-3.19.7-alt3, эту переменную окружения используют, если она определена. Воспроизведение: 1) Убедиться, что используется много потоков для сборки пакета. Например, на сборочнице сейчас выдаётся 32 потока по-умолчанию 2) Пересобрать embree. Результат: Сборка идёт в 32 потока вместо указанных 4, и падает из-за недостатка ресурсов. Релевантный отрывок лога: + cmake --build x86_64-alt-linux --verbose -j32 Ожидаемый результат: Успешная сборка embree в 4 потока.
(In reply to Aleksei Nikiforov from comment #0) > При этом %make_build, и %cmake_build до версии rpm-macros-cmake-3.19.7-alt3, > эту переменную окружения используют, если она определена. Странно. Usage: cmake --build <dir> [options] [-- [native-options]] Options: <dir> = Project binary directory to be built. --parallel [<jobs>], -j [<jobs>] = Build in parallel using the given number of jobs. If <jobs> is omitted the native build tool's default number is used. The CMAKE_BUILD_PARALLEL_LEVEL environment variable specifies a default parallel level when this option is not given. --target <tgt>..., -t <tgt>... = Build <tgt> instead of default targets. --config <cfg> = For multi-configuration tools, choose <cfg>. --clean-first = Build target 'clean' first, then build. (To clean only, use --target 'clean'.) --verbose, -v = Enable verbose output - if supported - including the build commands to be executed. -- = Pass remaining options to the native tool. Передача количества потоков сборки программе make(1) при помощи переменной окружения NPROCS не является задокументированным свойством CMake. > Воспроизведение: > 1) Убедиться, что используется много потоков для сборки пакета. Например, на > сборочнице сейчас выдаётся 32 потока по умолчанию > 2) Пересобрать embree. > > Результат: > Сборка идёт в 32 потока вместо указанных 4, и падает из-за недостатка > ресурсов. Релевантный отрывок лога: > + cmake --build x86_64-alt-linux --verbose -j32 > > Ожидаемый результат: > Успешная сборка embree в 4 потока.
Смотрю в хешерницу из-под embree: [builder@localhost embree-3.13.0]$ rpmbuild --showrc | grep %__nprocs -14: _smp_mflags -j${NPROCS:-%__nprocs} -14: cmake_build %__cmake --build "%_cmake__builddir" --verbose -j%__nprocs Т. е. эту переменную NPROCS не cmake придумал, а пакет, в котором _smp_mflags. Тогда надо её поддерживать.
(Ответ для Arseny Maslennikov на комментарий #1) > (In reply to Aleksei Nikiforov from comment #0) > > При этом %make_build, и %cmake_build до версии rpm-macros-cmake-3.19.7-alt3, > > эту переменную окружения используют, если она определена. > > Странно. > Usage: cmake --build <dir> [options] [-- [native-options]] ... > Передача количества потоков сборки программе make(1) при помощи переменной > окружения NPROCS не является задокументированным свойством CMake. > Я и не утверждал этого. Я утверждаю, что раньше, когда макрос %cmake_build вызывал %make_build, эта переменная окружения подхватывалась макросом %make_build, и соответственно макросом %cmake_build тоже, а теперь она не подхватывается макросом %cmake_build.
Fixed by task 273814.
Спасибо!