Даже несмотря на то, что 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
этой переменной с эквивалентом для используемой системы сборки. Вы можете увидеть это в eclass/ninja-utils.eclass
(который используется cmake-utils.eclass
который используется llvm
). Этот фрагмент извлекает только параметр -j
и передает его ninja
потому что ninja
поддерживает этот параметр, хотя он может не поддерживать другие вещи, которые люди помещают в MAKEOPTS
.
Отказ от ответственности: я на самом деле не проверял это с последним llvm
. Пожалуйста, прокомментируйте, если есть проблемы с этим ответом!