Quando si eseguono le regole di gnu-make con -jN
make crea un jobserver per la gestione del conteggio dei lavori tra i sottomarini. Inoltre è possibile "passare l'ambiente Jobserver" per una ricetta make mettendo il prefisso con +
- ad esempio:È possibile "passare" GNU rendere l'ambiente di un server di lavoro a un sottotesto servito da terze parti (non-make)
target :
+./some/complex/call/to/another/make target
Ora, invece di un sub-make Ho uno script (Python) che gestisce alcune azioni di confezionamento complesse (troppo complesso per fare). Una delle azioni in cui può essere eseguito può effettivamente generare un comando make
.
package.stamp : $(DEPS)
+./packaging.py $(ARGS)
touch [email protected]
Ora, quando che rendono comando viene richiamato all'interno packaging.py
make[1]: warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
Questo rende un po 'di senso, perché qualsiasi ambiente sia di impostazione per marca, non possono essere onorato o attraversato da pitone.
È possibile passare i riferimenti jobserver
tramite il programma python al sotto-make - se sì, come?
Grazie - sì ho avuto 'close_fds' come vero. Lascerò Python fuori dalle etichette - quello che volevo rispondere e quello che hai risposto è "ciò che deve essere preservato da un sottoprocesso affinché il jobserver funzioni". Le variabili di ambiente di risposta e i descrittori di file aperti sono la risposta corretta indipendente dal fallimento del mio python. – Greg