Даже если 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
.
Отказ от ответственности: я на самом деле не проверял это с последним llvm
ebuild. Пожалуйста, прокомментируйте, если есть проблемы с этим ответом!