jolt 0.9.172__py3-none-any.whl → 0.9.435__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- jolt/__init__.py +80 -7
- jolt/__main__.py +9 -1
- jolt/bin/fstree-darwin-x86_64 +0 -0
- jolt/bin/fstree-linux-x86_64 +0 -0
- jolt/cache.py +596 -252
- jolt/chroot.py +36 -11
- jolt/cli.py +143 -130
- jolt/common_pb2.py +45 -45
- jolt/config.py +76 -40
- jolt/error.py +19 -4
- jolt/filesystem.py +2 -6
- jolt/graph.py +400 -82
- jolt/influence.py +110 -3
- jolt/loader.py +338 -174
- jolt/log.py +127 -31
- jolt/manifest.py +13 -46
- jolt/options.py +35 -11
- jolt/pkgs/abseil.py +42 -0
- jolt/pkgs/asio.py +25 -0
- jolt/pkgs/autoconf.py +41 -0
- jolt/pkgs/automake.py +41 -0
- jolt/pkgs/b2.py +31 -0
- jolt/pkgs/boost.py +111 -0
- jolt/pkgs/boringssl.py +32 -0
- jolt/pkgs/busybox.py +39 -0
- jolt/pkgs/bzip2.py +43 -0
- jolt/pkgs/cares.py +29 -0
- jolt/pkgs/catch2.py +36 -0
- jolt/pkgs/cbindgen.py +17 -0
- jolt/pkgs/cista.py +19 -0
- jolt/pkgs/clang.py +44 -0
- jolt/pkgs/cli11.py +24 -0
- jolt/pkgs/cmake.py +48 -0
- jolt/pkgs/cpython.py +196 -0
- jolt/pkgs/crun.py +29 -0
- jolt/pkgs/curl.py +38 -0
- jolt/pkgs/dbus.py +18 -0
- jolt/pkgs/double_conversion.py +24 -0
- jolt/pkgs/fastfloat.py +21 -0
- jolt/pkgs/ffmpeg.py +28 -0
- jolt/pkgs/flatbuffers.py +29 -0
- jolt/pkgs/fmt.py +27 -0
- jolt/pkgs/fstree.py +20 -0
- jolt/pkgs/gflags.py +18 -0
- jolt/pkgs/glib.py +18 -0
- jolt/pkgs/glog.py +25 -0
- jolt/pkgs/glslang.py +21 -0
- jolt/pkgs/golang.py +16 -11
- jolt/pkgs/googlebenchmark.py +18 -0
- jolt/pkgs/googletest.py +46 -0
- jolt/pkgs/gperf.py +15 -0
- jolt/pkgs/grpc.py +73 -0
- jolt/pkgs/hdf5.py +19 -0
- jolt/pkgs/help2man.py +14 -0
- jolt/pkgs/inja.py +28 -0
- jolt/pkgs/jsoncpp.py +31 -0
- jolt/pkgs/libarchive.py +43 -0
- jolt/pkgs/libcap.py +44 -0
- jolt/pkgs/libdrm.py +44 -0
- jolt/pkgs/libedit.py +42 -0
- jolt/pkgs/libevent.py +31 -0
- jolt/pkgs/libexpat.py +27 -0
- jolt/pkgs/libfastjson.py +21 -0
- jolt/pkgs/libffi.py +16 -0
- jolt/pkgs/libglvnd.py +30 -0
- jolt/pkgs/libogg.py +28 -0
- jolt/pkgs/libpciaccess.py +18 -0
- jolt/pkgs/libseccomp.py +21 -0
- jolt/pkgs/libtirpc.py +24 -0
- jolt/pkgs/libtool.py +42 -0
- jolt/pkgs/libunwind.py +35 -0
- jolt/pkgs/libva.py +18 -0
- jolt/pkgs/libvorbis.py +33 -0
- jolt/pkgs/libxml2.py +35 -0
- jolt/pkgs/libxslt.py +17 -0
- jolt/pkgs/libyajl.py +16 -0
- jolt/pkgs/llvm.py +81 -0
- jolt/pkgs/lua.py +54 -0
- jolt/pkgs/lz4.py +26 -0
- jolt/pkgs/m4.py +14 -0
- jolt/pkgs/make.py +17 -0
- jolt/pkgs/mesa.py +81 -0
- jolt/pkgs/meson.py +17 -0
- jolt/pkgs/mstch.py +28 -0
- jolt/pkgs/mysql.py +60 -0
- jolt/pkgs/nasm.py +49 -0
- jolt/pkgs/ncurses.py +30 -0
- jolt/pkgs/ng_log.py +25 -0
- jolt/pkgs/ninja.py +45 -0
- jolt/pkgs/nlohmann_json.py +25 -0
- jolt/pkgs/nodejs.py +19 -11
- jolt/pkgs/opencv.py +24 -0
- jolt/pkgs/openjdk.py +26 -0
- jolt/pkgs/openssl.py +103 -0
- jolt/pkgs/paho.py +76 -0
- jolt/pkgs/patchelf.py +16 -0
- jolt/pkgs/perl.py +42 -0
- jolt/pkgs/pkgconfig.py +64 -0
- jolt/pkgs/poco.py +39 -0
- jolt/pkgs/protobuf.py +77 -0
- jolt/pkgs/pugixml.py +27 -0
- jolt/pkgs/python.py +19 -0
- jolt/pkgs/qt.py +35 -0
- jolt/pkgs/rapidjson.py +26 -0
- jolt/pkgs/rapidyaml.py +28 -0
- jolt/pkgs/re2.py +30 -0
- jolt/pkgs/re2c.py +17 -0
- jolt/pkgs/readline.py +15 -0
- jolt/pkgs/rust.py +41 -0
- jolt/pkgs/sdl.py +28 -0
- jolt/pkgs/simdjson.py +27 -0
- jolt/pkgs/soci.py +46 -0
- jolt/pkgs/spdlog.py +29 -0
- jolt/pkgs/spirv_llvm.py +21 -0
- jolt/pkgs/spirv_tools.py +24 -0
- jolt/pkgs/sqlite.py +83 -0
- jolt/pkgs/ssl.py +12 -0
- jolt/pkgs/texinfo.py +15 -0
- jolt/pkgs/tomlplusplus.py +22 -0
- jolt/pkgs/wayland.py +26 -0
- jolt/pkgs/x11.py +58 -0
- jolt/pkgs/xerces_c.py +20 -0
- jolt/pkgs/xorg.py +360 -0
- jolt/pkgs/xz.py +29 -0
- jolt/pkgs/yamlcpp.py +30 -0
- jolt/pkgs/zeromq.py +47 -0
- jolt/pkgs/zlib.py +87 -0
- jolt/pkgs/zstd.py +33 -0
- jolt/plugins/alias.py +3 -0
- jolt/plugins/allure.py +2 -2
- jolt/plugins/autotools.py +66 -0
- jolt/plugins/cache.py +1 -1
- jolt/plugins/cmake.py +74 -6
- jolt/plugins/conan.py +238 -0
- jolt/plugins/cxxinfo.py +7 -0
- jolt/plugins/docker.py +76 -19
- jolt/plugins/email.xslt +141 -118
- jolt/plugins/environ.py +11 -0
- jolt/plugins/fetch.py +141 -0
- jolt/plugins/gdb.py +33 -14
- jolt/plugins/gerrit.py +0 -13
- jolt/plugins/git.py +248 -66
- jolt/plugins/googletest.py +1 -1
- jolt/plugins/http.py +1 -1
- jolt/plugins/libtool.py +63 -0
- jolt/plugins/linux.py +990 -0
- jolt/plugins/logstash.py +4 -4
- jolt/plugins/meson.py +61 -0
- jolt/plugins/ninja-compdb.py +96 -28
- jolt/plugins/ninja.py +424 -150
- jolt/plugins/paths.py +11 -1
- jolt/plugins/pkgconfig.py +219 -0
- jolt/plugins/podman.py +131 -87
- jolt/plugins/python.py +137 -0
- jolt/plugins/remote_execution/administration_pb2.py +27 -19
- jolt/plugins/remote_execution/log_pb2.py +12 -12
- jolt/plugins/remote_execution/scheduler_pb2.py +23 -23
- jolt/plugins/remote_execution/worker_pb2.py +19 -19
- jolt/plugins/report.py +7 -2
- jolt/plugins/rust.py +25 -0
- jolt/plugins/scheduler.py +135 -86
- jolt/plugins/selfdeploy/setup.py +6 -6
- jolt/plugins/selfdeploy.py +49 -31
- jolt/plugins/strings.py +35 -22
- jolt/plugins/symlinks.py +11 -4
- jolt/plugins/telemetry.py +1 -2
- jolt/plugins/timeline.py +13 -3
- jolt/scheduler.py +467 -165
- jolt/tasks.py +427 -111
- jolt/templates/timeline.html.template +44 -47
- jolt/timer.py +22 -0
- jolt/tools.py +527 -188
- jolt/utils.py +183 -3
- jolt/version.py +1 -1
- jolt/xmldom.py +12 -2
- {jolt-0.9.172.dist-info → jolt-0.9.435.dist-info}/METADATA +97 -41
- jolt-0.9.435.dist-info/RECORD +207 -0
- {jolt-0.9.172.dist-info → jolt-0.9.435.dist-info}/WHEEL +1 -1
- jolt/plugins/amqp.py +0 -855
- jolt/plugins/debian.py +0 -338
- jolt/plugins/repo.py +0 -253
- jolt/plugins/snap.py +0 -122
- jolt-0.9.172.dist-info/RECORD +0 -92
- {jolt-0.9.172.dist-info → jolt-0.9.435.dist-info}/entry_points.txt +0 -0
- {jolt-0.9.172.dist-info → jolt-0.9.435.dist-info}/top_level.txt +0 -0
jolt/chroot.py
CHANGED
|
@@ -20,27 +20,31 @@ MS_BIND = 4096
|
|
|
20
20
|
MS_REC = 16384
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
def
|
|
23
|
+
def prepare_bind(root, src):
|
|
24
24
|
src = os.path.normpath(src)
|
|
25
|
-
dst = os.path.normpath(
|
|
25
|
+
dst = os.path.normpath(os.path.join(root, src.lstrip("/")))
|
|
26
26
|
|
|
27
27
|
if os.path.isdir(src):
|
|
28
28
|
os.makedirs(dst, exist_ok=True)
|
|
29
29
|
else:
|
|
30
30
|
os.makedirs(os.path.dirname(dst), exist_ok=True)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
with open(dst, "w"):
|
|
32
|
+
pass
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def mount_bind(src, dst, ro=False):
|
|
36
|
+
src = os.path.normpath(src)
|
|
37
|
+
dst = os.path.normpath(dst)
|
|
34
38
|
|
|
35
39
|
assert libc.mount(
|
|
36
40
|
c_char_p(src.encode("utf-8")),
|
|
37
41
|
c_char_p(dst.encode("utf-8")),
|
|
38
42
|
None,
|
|
39
43
|
MS_BIND | MS_REC | (MS_RDONLY if ro else 0),
|
|
40
|
-
None) == 0
|
|
44
|
+
None) == 0, f"Failed to bind mount {src}"
|
|
41
45
|
|
|
42
46
|
|
|
43
|
-
def mount_overlay(src, dst, temp):
|
|
47
|
+
def mount_overlay(src, binds, dst, temp):
|
|
44
48
|
src = os.path.normpath(src)
|
|
45
49
|
dst = os.path.normpath(dst)
|
|
46
50
|
|
|
@@ -54,7 +58,7 @@ def mount_overlay(src, dst, temp):
|
|
|
54
58
|
c_char_p(dst.encode("utf-8")),
|
|
55
59
|
c_char_p("overlay".encode("utf-8")),
|
|
56
60
|
0,
|
|
57
|
-
f"lowerdir={src},upperdir={upper},workdir={work}".encode("utf-8")) == 0
|
|
61
|
+
f"lowerdir={src}:{binds},upperdir={upper},workdir={work}".encode("utf-8")) == 0
|
|
58
62
|
|
|
59
63
|
|
|
60
64
|
def mount_tmpfs(path):
|
|
@@ -71,11 +75,16 @@ def main():
|
|
|
71
75
|
description='Runs a command in a chroot using linux namespaces')
|
|
72
76
|
parser.add_argument('command', nargs='+')
|
|
73
77
|
parser.add_argument('-b', '--bind', nargs="*")
|
|
78
|
+
parser.add_argument('-t', '--temp', required=True)
|
|
74
79
|
parser.add_argument('-c', '--chroot', required=True)
|
|
75
80
|
parser.add_argument('-d', '--chdir')
|
|
76
81
|
parser.add_argument('--shell', default="True")
|
|
77
82
|
args = parser.parse_args()
|
|
78
83
|
|
|
84
|
+
# Prepare bind mount targets outside userns
|
|
85
|
+
for path in args.bind or []:
|
|
86
|
+
prepare_bind(args.temp, path)
|
|
87
|
+
|
|
79
88
|
cwd = os.getcwd()
|
|
80
89
|
gid = os.getegid()
|
|
81
90
|
uid = os.geteuid()
|
|
@@ -83,8 +92,9 @@ def main():
|
|
|
83
92
|
uidmap = [uid, uid, 1]
|
|
84
93
|
gidmap = [str(i) for i in gidmap]
|
|
85
94
|
uidmap = [str(i) for i in uidmap]
|
|
86
|
-
|
|
87
|
-
|
|
95
|
+
|
|
96
|
+
newgidmap = shutil.which("newgidmap") or shutil.which("/usr/bin/newgidmap")
|
|
97
|
+
newuidmap = shutil.which("newuidmap") or shutil.which("/usr/bin/newuidmap")
|
|
88
98
|
|
|
89
99
|
sem = multiprocessing.Semaphore(0)
|
|
90
100
|
parent = os.getpid()
|
|
@@ -106,7 +116,7 @@ def main():
|
|
|
106
116
|
assert status == 0, f"Failed to map GIDs: newgidmap exit status: {status}"
|
|
107
117
|
|
|
108
118
|
mount_tmpfs("/mnt")
|
|
109
|
-
if not mount_overlay(args.chroot, "/mnt", "/mnt"):
|
|
119
|
+
if not mount_overlay(args.chroot, args.temp, "/mnt", "/mnt"):
|
|
110
120
|
mount_bind(args.chroot, "/mnt", True)
|
|
111
121
|
mount_bind("/proc", "/mnt/proc", True)
|
|
112
122
|
|
|
@@ -116,6 +126,21 @@ def main():
|
|
|
116
126
|
os.chroot("/mnt")
|
|
117
127
|
os.chdir(args.chdir or cwd)
|
|
118
128
|
|
|
129
|
+
# Adjust PATH to include standard paths, if missing
|
|
130
|
+
path = os.environ.get("PATH", None)
|
|
131
|
+
if path is None:
|
|
132
|
+
path = "/usr/local/bin:/usr/bin:/bin"
|
|
133
|
+
else:
|
|
134
|
+
path = path.split(os.pathsep)
|
|
135
|
+
if "/usr/local/bin" not in path:
|
|
136
|
+
path.append("/usr/local/bin")
|
|
137
|
+
if "/usr/bin" not in path:
|
|
138
|
+
path.append("/usr/bin")
|
|
139
|
+
if "/bin" not in path:
|
|
140
|
+
path.append("/bin")
|
|
141
|
+
path = os.pathsep.join(path)
|
|
142
|
+
os.environ["PATH"] = path
|
|
143
|
+
|
|
119
144
|
if args.shell in ["True", "true"]:
|
|
120
145
|
os.execve("/bin/sh", ["sh", "-c", " ".join(args.command)], os.environ)
|
|
121
146
|
else:
|