xref: /linux/scripts/jobserver-exec (revision f96163865a1346b199cc38e827269296f0f24ab0)
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