Даже если ninjaэто не так make, его ebuild должен распознавать и уважать любой -jпараметр, указанный в MAKEOPTSпеременной окружения. Это означает, что вы должны быть в состоянии форсировать максимум одну работу через MAKEOPTS=-j1. Вы можете сделать это на разовой основе:
MAKEOPTS=-j1 emerge -a llvm Вы также можете установить это изменение глобально / постоянно для всех пакетов в вашей системе, отредактировав MAKEOPTS=строку в /etc/portage/make.conf.
Однако, если вы установите MAKEOPTS=-j1через свою оболочку или make.conf, параметры распараллеливания будут применены ко всем пакетам, которые emergeустанавливаются. Если вы хотите применить его только к этому одному пакету, вы можете создать файл с именем /etc/portage/env/sys-devel/llvm(создайте все недостающие каталоги, если необходимо) и поместить в него следующее содержимое:
MAKEOPTS=-j1 Это будет применять переменную только к самому пакету llvm.
Как это сделать в оболочке:
mkdir -p /etc/portage/env/sys-devel echo MAKEOPTS=-j1>>/etc/portage/env/sys-devel/llvm Ниндзя и MAKEOPTS
В Gentoo, поскольку люди полагаются на MAKEOPTS=-j«n»управление количеством заданий, различные eclasses и ebuild будут отображать параметр этой переменной -jв эквивалент для используемой системы сборок acutal. Вы можете увидеть это в eclass/ninja-utils.eclass(который используется, cmake-utils.eclassкоторый используется llvm). Этот фрагмент извлекает только -jпараметр и передает его, ninjaпотому что ninjaподдерживает этот параметр, в то время как он может не поддерживать другие вещи, в которые люди помещают MAKEOPTS.
Отказ от ответственности: я на самом деле не проверял это с последним llvmebuild. Пожалуйста, прокомментируйте, если есть проблемы с этим ответом!