1d8d2d382SMasahiro Yamada#!/usr/bin/env python3 251e46c7aSKees Cook# SPDX-License-Identifier: GPL-2.0+ 351e46c7aSKees Cook 4a84a5d0bSMauro Carvalho Chehab""" 5a84a5d0bSMauro Carvalho ChehabDetermines how many parallel tasks "make" is expecting, as it is 6a84a5d0bSMauro Carvalho Chehabnot exposed via any special variables, reserves them all, runs a subprocess 7a84a5d0bSMauro Carvalho Chehabwith PARALLELISM environment variable set, and releases the jobs back again. 8a84a5d0bSMauro Carvalho Chehab 9a84a5d0bSMauro Carvalho ChehabSee: 10a84a5d0bSMauro Carvalho Chehab https://www.gnu.org/software/make/manual/html_node/POSIX-Jobserver.html#POSIX-Jobserver 11a84a5d0bSMauro Carvalho Chehab""" 12a84a5d0bSMauro Carvalho Chehab 132a14f021SMauro Carvalho Chehabimport os 142a14f021SMauro Carvalho Chehabimport sys 152a14f021SMauro Carvalho Chehab 16*778b8ebeSJonathan CorbetLIB_DIR = "../tools/lib/python" 17fce6df7eSMauro Carvalho ChehabSRC_DIR = os.path.dirname(os.path.realpath(__file__)) 182a14f021SMauro Carvalho Chehab 19fce6df7eSMauro Carvalho Chehabsys.path.insert(0, os.path.join(SRC_DIR, LIB_DIR)) 20fce6df7eSMauro Carvalho Chehab 21fce6df7eSMauro Carvalho Chehabfrom jobserver import JobserverExec # pylint: disable=C0415 22fce6df7eSMauro Carvalho Chehab 23fce6df7eSMauro Carvalho Chehab 242a14f021SMauro Carvalho Chehabdef main(): 252a14f021SMauro Carvalho Chehab """Main program""" 26a84a5d0bSMauro Carvalho Chehab if len(sys.argv) < 2: 27a84a5d0bSMauro Carvalho Chehab name = os.path.basename(__file__) 28a84a5d0bSMauro Carvalho Chehab sys.exit("usage: " + name +" command [args ...]\n" + __doc__) 29a84a5d0bSMauro Carvalho Chehab 302a14f021SMauro Carvalho Chehab with JobserverExec() as jobserver: 312a14f021SMauro Carvalho Chehab jobserver.run(sys.argv[1:]) 322a14f021SMauro Carvalho Chehab 332a14f021SMauro Carvalho Chehab 342a14f021SMauro Carvalho Chehabif __name__ == "__main__": 352a14f021SMauro Carvalho Chehab main() 36