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.
Files changed (185) hide show
  1. jolt/__init__.py +80 -7
  2. jolt/__main__.py +9 -1
  3. jolt/bin/fstree-darwin-x86_64 +0 -0
  4. jolt/bin/fstree-linux-x86_64 +0 -0
  5. jolt/cache.py +596 -252
  6. jolt/chroot.py +36 -11
  7. jolt/cli.py +143 -130
  8. jolt/common_pb2.py +45 -45
  9. jolt/config.py +76 -40
  10. jolt/error.py +19 -4
  11. jolt/filesystem.py +2 -6
  12. jolt/graph.py +400 -82
  13. jolt/influence.py +110 -3
  14. jolt/loader.py +338 -174
  15. jolt/log.py +127 -31
  16. jolt/manifest.py +13 -46
  17. jolt/options.py +35 -11
  18. jolt/pkgs/abseil.py +42 -0
  19. jolt/pkgs/asio.py +25 -0
  20. jolt/pkgs/autoconf.py +41 -0
  21. jolt/pkgs/automake.py +41 -0
  22. jolt/pkgs/b2.py +31 -0
  23. jolt/pkgs/boost.py +111 -0
  24. jolt/pkgs/boringssl.py +32 -0
  25. jolt/pkgs/busybox.py +39 -0
  26. jolt/pkgs/bzip2.py +43 -0
  27. jolt/pkgs/cares.py +29 -0
  28. jolt/pkgs/catch2.py +36 -0
  29. jolt/pkgs/cbindgen.py +17 -0
  30. jolt/pkgs/cista.py +19 -0
  31. jolt/pkgs/clang.py +44 -0
  32. jolt/pkgs/cli11.py +24 -0
  33. jolt/pkgs/cmake.py +48 -0
  34. jolt/pkgs/cpython.py +196 -0
  35. jolt/pkgs/crun.py +29 -0
  36. jolt/pkgs/curl.py +38 -0
  37. jolt/pkgs/dbus.py +18 -0
  38. jolt/pkgs/double_conversion.py +24 -0
  39. jolt/pkgs/fastfloat.py +21 -0
  40. jolt/pkgs/ffmpeg.py +28 -0
  41. jolt/pkgs/flatbuffers.py +29 -0
  42. jolt/pkgs/fmt.py +27 -0
  43. jolt/pkgs/fstree.py +20 -0
  44. jolt/pkgs/gflags.py +18 -0
  45. jolt/pkgs/glib.py +18 -0
  46. jolt/pkgs/glog.py +25 -0
  47. jolt/pkgs/glslang.py +21 -0
  48. jolt/pkgs/golang.py +16 -11
  49. jolt/pkgs/googlebenchmark.py +18 -0
  50. jolt/pkgs/googletest.py +46 -0
  51. jolt/pkgs/gperf.py +15 -0
  52. jolt/pkgs/grpc.py +73 -0
  53. jolt/pkgs/hdf5.py +19 -0
  54. jolt/pkgs/help2man.py +14 -0
  55. jolt/pkgs/inja.py +28 -0
  56. jolt/pkgs/jsoncpp.py +31 -0
  57. jolt/pkgs/libarchive.py +43 -0
  58. jolt/pkgs/libcap.py +44 -0
  59. jolt/pkgs/libdrm.py +44 -0
  60. jolt/pkgs/libedit.py +42 -0
  61. jolt/pkgs/libevent.py +31 -0
  62. jolt/pkgs/libexpat.py +27 -0
  63. jolt/pkgs/libfastjson.py +21 -0
  64. jolt/pkgs/libffi.py +16 -0
  65. jolt/pkgs/libglvnd.py +30 -0
  66. jolt/pkgs/libogg.py +28 -0
  67. jolt/pkgs/libpciaccess.py +18 -0
  68. jolt/pkgs/libseccomp.py +21 -0
  69. jolt/pkgs/libtirpc.py +24 -0
  70. jolt/pkgs/libtool.py +42 -0
  71. jolt/pkgs/libunwind.py +35 -0
  72. jolt/pkgs/libva.py +18 -0
  73. jolt/pkgs/libvorbis.py +33 -0
  74. jolt/pkgs/libxml2.py +35 -0
  75. jolt/pkgs/libxslt.py +17 -0
  76. jolt/pkgs/libyajl.py +16 -0
  77. jolt/pkgs/llvm.py +81 -0
  78. jolt/pkgs/lua.py +54 -0
  79. jolt/pkgs/lz4.py +26 -0
  80. jolt/pkgs/m4.py +14 -0
  81. jolt/pkgs/make.py +17 -0
  82. jolt/pkgs/mesa.py +81 -0
  83. jolt/pkgs/meson.py +17 -0
  84. jolt/pkgs/mstch.py +28 -0
  85. jolt/pkgs/mysql.py +60 -0
  86. jolt/pkgs/nasm.py +49 -0
  87. jolt/pkgs/ncurses.py +30 -0
  88. jolt/pkgs/ng_log.py +25 -0
  89. jolt/pkgs/ninja.py +45 -0
  90. jolt/pkgs/nlohmann_json.py +25 -0
  91. jolt/pkgs/nodejs.py +19 -11
  92. jolt/pkgs/opencv.py +24 -0
  93. jolt/pkgs/openjdk.py +26 -0
  94. jolt/pkgs/openssl.py +103 -0
  95. jolt/pkgs/paho.py +76 -0
  96. jolt/pkgs/patchelf.py +16 -0
  97. jolt/pkgs/perl.py +42 -0
  98. jolt/pkgs/pkgconfig.py +64 -0
  99. jolt/pkgs/poco.py +39 -0
  100. jolt/pkgs/protobuf.py +77 -0
  101. jolt/pkgs/pugixml.py +27 -0
  102. jolt/pkgs/python.py +19 -0
  103. jolt/pkgs/qt.py +35 -0
  104. jolt/pkgs/rapidjson.py +26 -0
  105. jolt/pkgs/rapidyaml.py +28 -0
  106. jolt/pkgs/re2.py +30 -0
  107. jolt/pkgs/re2c.py +17 -0
  108. jolt/pkgs/readline.py +15 -0
  109. jolt/pkgs/rust.py +41 -0
  110. jolt/pkgs/sdl.py +28 -0
  111. jolt/pkgs/simdjson.py +27 -0
  112. jolt/pkgs/soci.py +46 -0
  113. jolt/pkgs/spdlog.py +29 -0
  114. jolt/pkgs/spirv_llvm.py +21 -0
  115. jolt/pkgs/spirv_tools.py +24 -0
  116. jolt/pkgs/sqlite.py +83 -0
  117. jolt/pkgs/ssl.py +12 -0
  118. jolt/pkgs/texinfo.py +15 -0
  119. jolt/pkgs/tomlplusplus.py +22 -0
  120. jolt/pkgs/wayland.py +26 -0
  121. jolt/pkgs/x11.py +58 -0
  122. jolt/pkgs/xerces_c.py +20 -0
  123. jolt/pkgs/xorg.py +360 -0
  124. jolt/pkgs/xz.py +29 -0
  125. jolt/pkgs/yamlcpp.py +30 -0
  126. jolt/pkgs/zeromq.py +47 -0
  127. jolt/pkgs/zlib.py +87 -0
  128. jolt/pkgs/zstd.py +33 -0
  129. jolt/plugins/alias.py +3 -0
  130. jolt/plugins/allure.py +2 -2
  131. jolt/plugins/autotools.py +66 -0
  132. jolt/plugins/cache.py +1 -1
  133. jolt/plugins/cmake.py +74 -6
  134. jolt/plugins/conan.py +238 -0
  135. jolt/plugins/cxxinfo.py +7 -0
  136. jolt/plugins/docker.py +76 -19
  137. jolt/plugins/email.xslt +141 -118
  138. jolt/plugins/environ.py +11 -0
  139. jolt/plugins/fetch.py +141 -0
  140. jolt/plugins/gdb.py +33 -14
  141. jolt/plugins/gerrit.py +0 -13
  142. jolt/plugins/git.py +248 -66
  143. jolt/plugins/googletest.py +1 -1
  144. jolt/plugins/http.py +1 -1
  145. jolt/plugins/libtool.py +63 -0
  146. jolt/plugins/linux.py +990 -0
  147. jolt/plugins/logstash.py +4 -4
  148. jolt/plugins/meson.py +61 -0
  149. jolt/plugins/ninja-compdb.py +96 -28
  150. jolt/plugins/ninja.py +424 -150
  151. jolt/plugins/paths.py +11 -1
  152. jolt/plugins/pkgconfig.py +219 -0
  153. jolt/plugins/podman.py +131 -87
  154. jolt/plugins/python.py +137 -0
  155. jolt/plugins/remote_execution/administration_pb2.py +27 -19
  156. jolt/plugins/remote_execution/log_pb2.py +12 -12
  157. jolt/plugins/remote_execution/scheduler_pb2.py +23 -23
  158. jolt/plugins/remote_execution/worker_pb2.py +19 -19
  159. jolt/plugins/report.py +7 -2
  160. jolt/plugins/rust.py +25 -0
  161. jolt/plugins/scheduler.py +135 -86
  162. jolt/plugins/selfdeploy/setup.py +6 -6
  163. jolt/plugins/selfdeploy.py +49 -31
  164. jolt/plugins/strings.py +35 -22
  165. jolt/plugins/symlinks.py +11 -4
  166. jolt/plugins/telemetry.py +1 -2
  167. jolt/plugins/timeline.py +13 -3
  168. jolt/scheduler.py +467 -165
  169. jolt/tasks.py +427 -111
  170. jolt/templates/timeline.html.template +44 -47
  171. jolt/timer.py +22 -0
  172. jolt/tools.py +527 -188
  173. jolt/utils.py +183 -3
  174. jolt/version.py +1 -1
  175. jolt/xmldom.py +12 -2
  176. {jolt-0.9.172.dist-info → jolt-0.9.435.dist-info}/METADATA +97 -41
  177. jolt-0.9.435.dist-info/RECORD +207 -0
  178. {jolt-0.9.172.dist-info → jolt-0.9.435.dist-info}/WHEEL +1 -1
  179. jolt/plugins/amqp.py +0 -855
  180. jolt/plugins/debian.py +0 -338
  181. jolt/plugins/repo.py +0 -253
  182. jolt/plugins/snap.py +0 -122
  183. jolt-0.9.172.dist-info/RECORD +0 -92
  184. {jolt-0.9.172.dist-info → jolt-0.9.435.dist-info}/entry_points.txt +0 -0
  185. {jolt-0.9.172.dist-info → jolt-0.9.435.dist-info}/top_level.txt +0 -0
jolt/plugins/strings.py CHANGED
@@ -1,31 +1,50 @@
1
- from jolt.cache import ArtifactAttributeSet
2
1
  from jolt.cache import ArtifactAttributeSetProvider
3
- from jolt.cache import ArtifactStringAttribute
4
2
 
5
3
 
6
- class StringVariable(ArtifactStringAttribute):
7
- def __init__(self, artifact, name):
8
- super(StringVariable, self).__init__(artifact, name)
9
- self._old_value = None
4
+ class StringVariableSet(object):
5
+ """
6
+ A set of string variables for an artifact.
10
7
 
11
- def apply(self, task, artifact):
12
- pass
8
+ Example:
13
9
 
14
- def unapply(self, task, artifact):
15
- pass
10
+ .. code-block:: python
16
11
 
12
+ artifact.strings.foo = "bar"
13
+ print(artifact.strings.foo)
14
+
15
+ """
17
16
 
18
- class StringVariableSet(ArtifactAttributeSet):
19
17
  def __init__(self, artifact):
20
- super(StringVariableSet, self).__init__()
21
- super(ArtifactAttributeSet, self).__setattr__("_artifact", artifact)
18
+ super(StringVariableSet, self).__setattr__("_attributes", {})
19
+ super(StringVariableSet, self).__setattr__("_artifact", artifact)
20
+
21
+ def _get_attributes(self):
22
+ return self._attributes
23
+
24
+ def __getattr__(self, name):
25
+ attributes = self._get_attributes()
26
+ return attributes.get(name, None)
27
+
28
+ def __setattr__(self, name, value):
29
+ if not isinstance(value, str):
30
+ raise ValueError(f"Value assigned to artifact.strings.{name} must be a string, got {type(value)}")
31
+ attributes = self._get_attributes()
32
+ attributes[name] = self._artifact.tools.expand(value)
33
+ return value
22
34
 
23
- def create(self, name):
24
- return StringVariable(self._artifact, name)
35
+ def __dict__(self):
36
+ return {key: str(value) for key, value in self.items()}
37
+
38
+ def items(self):
39
+ return self._get_attributes().items()
25
40
 
26
41
 
27
42
  @ArtifactAttributeSetProvider.Register
28
43
  class StringVariableSetProvider(ArtifactAttributeSetProvider):
44
+ """
45
+ A provider of string variable sets.
46
+ """
47
+
29
48
  def create(self, artifact):
30
49
  setattr(artifact, "strings", StringVariableSet(artifact))
31
50
 
@@ -34,7 +53,7 @@ class StringVariableSetProvider(ArtifactAttributeSetProvider):
34
53
  return
35
54
 
36
55
  for key, value in content["strings"].items():
37
- getattr(artifact.strings, key).set_value(value, expand=False)
56
+ setattr(artifact.strings, key, value)
38
57
 
39
58
  def format(self, artifact, content):
40
59
  if "strings" not in content:
@@ -42,9 +61,3 @@ class StringVariableSetProvider(ArtifactAttributeSetProvider):
42
61
 
43
62
  for key, value in artifact.strings.items():
44
63
  content["strings"][key] = str(value)
45
-
46
- def apply(self, task, artifact):
47
- artifact.strings.apply(task, artifact)
48
-
49
- def unapply(self, task, artifact):
50
- artifact.strings.unapply(task, artifact)
jolt/plugins/symlinks.py CHANGED
@@ -18,6 +18,15 @@ class SymlinkTaskHooks(TaskHook):
18
18
  self._path = config.get("symlinks", "path", "artifacts")
19
19
  raise_error_if(not self._path, "symlinks.path not configured")
20
20
 
21
+ @property
22
+ def rootpath(self):
23
+ return fs.path.normpath(
24
+ fs.path.join(
25
+ fs.path.dirname(loader.JoltLoader.get().build_path),
26
+ self._path
27
+ )
28
+ )
29
+
21
30
  def task_finished(self, task):
22
31
  if not task.has_artifact():
23
32
  return
@@ -26,14 +35,12 @@ class SymlinkTaskHooks(TaskHook):
26
35
  srcpath = artifact.final_path
27
36
  if artifact.name == "main":
28
37
  destpath = fs.path.join(
29
- loader.get_workspacedir(),
30
- self._path,
38
+ self.rootpath,
31
39
  utils.canonical(task.short_qualified_name),
32
40
  )
33
41
  else:
34
42
  destpath = fs.path.join(
35
- loader.get_workspacedir(),
36
- self._path,
43
+ self.rootpath,
37
44
  artifact.name + "@" + utils.canonical(task.short_qualified_name),
38
45
  )
39
46
 
jolt/plugins/telemetry.py CHANGED
@@ -1,4 +1,3 @@
1
- from socket import gethostname
2
1
  from requests.exceptions import RequestException
3
2
  from requests.api import post
4
3
 
@@ -38,7 +37,7 @@ class TelemetryHooks(TaskHook):
38
37
  "name": task.short_qualified_name,
39
38
  "identity": task.identity,
40
39
  "instance": task.task._instance.value,
41
- "hostname": gethostname(),
40
+ "hostname": utils.hostname(),
42
41
  "role": "client" if client else "worker",
43
42
  "event": event,
44
43
  "routing_key": getattr(task.task, "routing_key", "default")
jolt/plugins/timeline.py CHANGED
@@ -1,15 +1,25 @@
1
1
  from datetime import datetime
2
2
  import os
3
3
 
4
+ from jolt import log
5
+ from jolt import tools
4
6
  from jolt import utils
5
7
  from jolt.hooks import TaskHook, TaskHookFactory
6
- from jolt.config import get_workdir
8
+ from jolt import config
9
+
10
+
11
+ NAME_LOG = "Timeline"
7
12
 
8
13
 
9
14
  class TimelineHooks(TaskHook):
10
15
  def __init__(self):
16
+ self.path = os.path.join(
17
+ config.get_workdir(),
18
+ config.get("timeline", "path", "timeline.html")
19
+ )
11
20
  self.tasks = []
12
21
  self.task_ids = {}
22
+ self.tools = tools.Tools()
13
23
 
14
24
  def started(self, task):
15
25
  task._timeline_started = datetime.now().isoformat()
@@ -27,8 +37,7 @@ class TimelineHooks(TaskHook):
27
37
  enumerate=enumerate,
28
38
  tasks=self.tasks)
29
39
 
30
- with open(os.path.join(get_workdir(), "timeline.html"), "w") as f:
31
- f.write(timeline)
40
+ self.tools.write_file(self.path, timeline, expand=False)
32
41
 
33
42
  def deps(self, task):
34
43
  ids = []
@@ -59,4 +68,5 @@ class TimelineHooks(TaskHook):
59
68
  @TaskHookFactory.register
60
69
  class TimelineFactory(TaskHookFactory):
61
70
  def create(self, env):
71
+ log.verbose(NAME_LOG + " Loaded")
62
72
  return TimelineHooks()