Nawet jeśli ninja
nie jest make
, jego ebuild powinien rozpoznać i respektować każdy -j
parametr określony w MAKEOPTS
Zmienna środowiskowa. Oznacza to, że powinieneś być w stanie wymusić maksymalnie jedną pracę MAKEOPTS=-j1
. Możesz to zrobić jednorazowo:
MAKEOPTS=-j1 emerge -a llvm
Możesz także ustawić tę zmianę globalnie / na stałe dla wszystkich pakietów w systemie, edytując MAKEOPTS=
wyrysować /etc/portage/make.conf
.
Jeśli jednak ustawisz MAKEOPTS=-j1
przez twoją powłokę lub make.conf
, ustawienia równoległości zostaną zastosowane do wszystkich pakietów, które emerge
instaluje. Jeśli chcesz zastosować go tylko do jednego pakietu, możesz utworzyć plik o nazwie /etc/portage/env/sys-devel/llvm
(w razie potrzeby utwórz brakujące katalogi) i umieść w nim te treści:
MAKEOPTS=-j1
To zastosuje zmienną tylko do samego pakietu llvm.
Jak to zrobić w powłoce:
mkdir -p /etc/portage/env/sys-devel
echo MAKEOPTS=-j1>>/etc/portage/env/sys-devel/llvm
Ninja i MAKEOPTS
W Gentoo, ponieważ ludzie polegają na MAKEOPTS=-j«n»
aby kontrolować liczbę zadań, różne klasy i kompilacje będą mapować te zmienne -j
parametr do odpowiednika dla aktualnie używanego systemu kompilacji. Możesz to zobaczyć eclass/ninja-utils.eclass
(który jest używany przez cmake-utils.eclass
który jest używany przez llvm
). Ten fragment wyodrębnia tylko -j
parametr i przekazuje go do ninja
bo ninja
obsługuje ten parametr, podczas gdy może nie obsługiwać innych rzeczy, w których umieszczają się ludzie MAKEOPTS
.
Zastrzeżenie: Nie przetestowałem tego z najnowszymi llvm
ebuild. Proszę skomentować, jeśli są problemy z tą odpowiedzią!
MAKEFLAGS
, skończyło się przypadkowym wywołaniemMAKEFAGS
zamiast tego, a jednak żaden z nich nie obsługuje envvarów. JegoMAKEOPTS
;-)