jolt 0.9.419__tar.gz → 0.9.430__tar.gz

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 (213) hide show
  1. {jolt-0.9.419 → jolt-0.9.430}/PKG-INFO +19 -2
  2. {jolt-0.9.419 → jolt-0.9.430}/jolt/cache.py +19 -0
  3. {jolt-0.9.419 → jolt-0.9.430}/jolt/cli.py +3 -2
  4. {jolt-0.9.419 → jolt-0.9.430}/jolt/filesystem.py +2 -2
  5. {jolt-0.9.419 → jolt-0.9.430}/jolt/log.py +12 -2
  6. jolt-0.9.430/jolt/pkgs/abseil.py +42 -0
  7. jolt-0.9.430/jolt/pkgs/asio.py +25 -0
  8. jolt-0.9.430/jolt/pkgs/autoconf.py +41 -0
  9. jolt-0.9.430/jolt/pkgs/automake.py +41 -0
  10. jolt-0.9.430/jolt/pkgs/b2.py +31 -0
  11. jolt-0.9.430/jolt/pkgs/boost.py +111 -0
  12. jolt-0.9.430/jolt/pkgs/boringssl.py +32 -0
  13. jolt-0.9.430/jolt/pkgs/busybox.py +39 -0
  14. jolt-0.9.430/jolt/pkgs/bzip2.py +43 -0
  15. jolt-0.9.430/jolt/pkgs/cares.py +29 -0
  16. jolt-0.9.430/jolt/pkgs/catch2.py +36 -0
  17. jolt-0.9.430/jolt/pkgs/cbindgen.py +17 -0
  18. jolt-0.9.430/jolt/pkgs/cista.py +19 -0
  19. jolt-0.9.430/jolt/pkgs/clang.py +44 -0
  20. jolt-0.9.430/jolt/pkgs/cli11.py +23 -0
  21. jolt-0.9.430/jolt/pkgs/cmake.py +48 -0
  22. jolt-0.9.430/jolt/pkgs/cpython.py +196 -0
  23. jolt-0.9.430/jolt/pkgs/crun.py +29 -0
  24. jolt-0.9.430/jolt/pkgs/curl.py +38 -0
  25. jolt-0.9.430/jolt/pkgs/dbus.py +18 -0
  26. jolt-0.9.430/jolt/pkgs/double_conversion.py +24 -0
  27. jolt-0.9.430/jolt/pkgs/fastfloat.py +21 -0
  28. jolt-0.9.430/jolt/pkgs/ffmpeg.py +28 -0
  29. jolt-0.9.430/jolt/pkgs/flatbuffers.py +29 -0
  30. jolt-0.9.430/jolt/pkgs/fmt.py +27 -0
  31. jolt-0.9.430/jolt/pkgs/fstree.py +20 -0
  32. jolt-0.9.430/jolt/pkgs/gflags.py +18 -0
  33. jolt-0.9.430/jolt/pkgs/glib.py +18 -0
  34. jolt-0.9.430/jolt/pkgs/glog.py +25 -0
  35. jolt-0.9.430/jolt/pkgs/glslang.py +21 -0
  36. {jolt-0.9.419 → jolt-0.9.430}/jolt/pkgs/golang.py +16 -11
  37. jolt-0.9.430/jolt/pkgs/googlebenchmark.py +18 -0
  38. jolt-0.9.430/jolt/pkgs/googletest.py +46 -0
  39. jolt-0.9.430/jolt/pkgs/gperf.py +15 -0
  40. jolt-0.9.430/jolt/pkgs/grpc.py +73 -0
  41. jolt-0.9.430/jolt/pkgs/hdf5.py +19 -0
  42. jolt-0.9.430/jolt/pkgs/help2man.py +14 -0
  43. jolt-0.9.430/jolt/pkgs/inja.py +28 -0
  44. jolt-0.9.430/jolt/pkgs/jsoncpp.py +31 -0
  45. jolt-0.9.430/jolt/pkgs/libarchive.py +43 -0
  46. jolt-0.9.430/jolt/pkgs/libcap.py +44 -0
  47. jolt-0.9.430/jolt/pkgs/libdrm.py +44 -0
  48. jolt-0.9.430/jolt/pkgs/libedit.py +42 -0
  49. jolt-0.9.430/jolt/pkgs/libevent.py +31 -0
  50. jolt-0.9.430/jolt/pkgs/libexpat.py +27 -0
  51. jolt-0.9.430/jolt/pkgs/libfastjson.py +21 -0
  52. jolt-0.9.430/jolt/pkgs/libffi.py +16 -0
  53. jolt-0.9.430/jolt/pkgs/libglvnd.py +30 -0
  54. jolt-0.9.430/jolt/pkgs/libogg.py +28 -0
  55. jolt-0.9.430/jolt/pkgs/libpciaccess.py +18 -0
  56. jolt-0.9.430/jolt/pkgs/libseccomp.py +21 -0
  57. jolt-0.9.430/jolt/pkgs/libtirpc.py +24 -0
  58. jolt-0.9.430/jolt/pkgs/libtool.py +42 -0
  59. jolt-0.9.430/jolt/pkgs/libunwind.py +35 -0
  60. jolt-0.9.430/jolt/pkgs/libva.py +18 -0
  61. jolt-0.9.430/jolt/pkgs/libvorbis.py +33 -0
  62. jolt-0.9.430/jolt/pkgs/libxml2.py +35 -0
  63. jolt-0.9.430/jolt/pkgs/libxslt.py +17 -0
  64. jolt-0.9.430/jolt/pkgs/libyajl.py +16 -0
  65. jolt-0.9.430/jolt/pkgs/llvm.py +81 -0
  66. jolt-0.9.430/jolt/pkgs/lua.py +54 -0
  67. jolt-0.9.430/jolt/pkgs/lz4.py +26 -0
  68. jolt-0.9.430/jolt/pkgs/m4.py +14 -0
  69. jolt-0.9.430/jolt/pkgs/make.py +17 -0
  70. jolt-0.9.430/jolt/pkgs/mesa.py +81 -0
  71. jolt-0.9.430/jolt/pkgs/meson.py +17 -0
  72. jolt-0.9.430/jolt/pkgs/mstch.py +28 -0
  73. jolt-0.9.430/jolt/pkgs/mysql.py +60 -0
  74. jolt-0.9.430/jolt/pkgs/nasm.py +49 -0
  75. jolt-0.9.430/jolt/pkgs/ncurses.py +30 -0
  76. jolt-0.9.430/jolt/pkgs/ng_log.py +25 -0
  77. jolt-0.9.430/jolt/pkgs/ninja.py +45 -0
  78. jolt-0.9.430/jolt/pkgs/nlohmann_json.py +25 -0
  79. {jolt-0.9.419 → jolt-0.9.430}/jolt/pkgs/nodejs.py +19 -11
  80. jolt-0.9.430/jolt/pkgs/opencv.py +24 -0
  81. jolt-0.9.430/jolt/pkgs/openjdk.py +26 -0
  82. jolt-0.9.430/jolt/pkgs/openssl.py +103 -0
  83. jolt-0.9.430/jolt/pkgs/paho.py +76 -0
  84. jolt-0.9.430/jolt/pkgs/patchelf.py +16 -0
  85. jolt-0.9.430/jolt/pkgs/perl.py +42 -0
  86. jolt-0.9.430/jolt/pkgs/pkgconfig.py +64 -0
  87. jolt-0.9.430/jolt/pkgs/poco.py +39 -0
  88. jolt-0.9.430/jolt/pkgs/protobuf.py +77 -0
  89. jolt-0.9.430/jolt/pkgs/pugixml.py +27 -0
  90. jolt-0.9.430/jolt/pkgs/python.py +19 -0
  91. jolt-0.9.430/jolt/pkgs/qt.py +35 -0
  92. jolt-0.9.430/jolt/pkgs/rapidjson.py +26 -0
  93. jolt-0.9.430/jolt/pkgs/rapidyaml.py +28 -0
  94. jolt-0.9.430/jolt/pkgs/re2.py +30 -0
  95. jolt-0.9.430/jolt/pkgs/re2c.py +17 -0
  96. jolt-0.9.430/jolt/pkgs/readline.py +15 -0
  97. jolt-0.9.430/jolt/pkgs/rust.py +41 -0
  98. jolt-0.9.430/jolt/pkgs/sdl.py +28 -0
  99. jolt-0.9.430/jolt/pkgs/simdjson.py +27 -0
  100. jolt-0.9.430/jolt/pkgs/soci.py +46 -0
  101. jolt-0.9.430/jolt/pkgs/spdlog.py +29 -0
  102. jolt-0.9.430/jolt/pkgs/spirv_llvm.py +21 -0
  103. jolt-0.9.430/jolt/pkgs/spirv_tools.py +24 -0
  104. jolt-0.9.430/jolt/pkgs/sqlite.py +83 -0
  105. jolt-0.9.430/jolt/pkgs/ssl.py +12 -0
  106. jolt-0.9.430/jolt/pkgs/texinfo.py +15 -0
  107. jolt-0.9.430/jolt/pkgs/tomlplusplus.py +22 -0
  108. jolt-0.9.430/jolt/pkgs/wayland.py +26 -0
  109. jolt-0.9.430/jolt/pkgs/x11.py +58 -0
  110. jolt-0.9.430/jolt/pkgs/xerces_c.py +20 -0
  111. jolt-0.9.430/jolt/pkgs/xorg.py +360 -0
  112. jolt-0.9.430/jolt/pkgs/xz.py +29 -0
  113. jolt-0.9.430/jolt/pkgs/yamlcpp.py +30 -0
  114. jolt-0.9.430/jolt/pkgs/zeromq.py +47 -0
  115. jolt-0.9.430/jolt/pkgs/zlib.py +69 -0
  116. jolt-0.9.430/jolt/pkgs/zstd.py +33 -0
  117. jolt-0.9.430/jolt/plugins/autotools.py +66 -0
  118. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/cmake.py +74 -6
  119. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/cxxinfo.py +7 -0
  120. jolt-0.9.430/jolt/plugins/fetch.py +141 -0
  121. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/git.py +33 -11
  122. jolt-0.9.430/jolt/plugins/libtool.py +63 -0
  123. jolt-0.9.430/jolt/plugins/meson.py +61 -0
  124. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/ninja.py +236 -17
  125. jolt-0.9.430/jolt/plugins/pkgconfig.py +219 -0
  126. jolt-0.9.430/jolt/plugins/python.py +237 -0
  127. jolt-0.9.430/jolt/plugins/rust.py +25 -0
  128. {jolt-0.9.419 → jolt-0.9.430}/jolt/tasks.py +79 -14
  129. {jolt-0.9.419 → jolt-0.9.430}/jolt/tools.py +86 -42
  130. {jolt-0.9.419 → jolt-0.9.430}/jolt/utils.py +6 -0
  131. jolt-0.9.430/jolt/version.py +1 -0
  132. {jolt-0.9.419 → jolt-0.9.430}/jolt.egg-info/PKG-INFO +19 -2
  133. jolt-0.9.430/jolt.egg-info/SOURCES.txt +208 -0
  134. {jolt-0.9.419 → jolt-0.9.430}/jolt.egg-info/requires.txt +18 -1
  135. {jolt-0.9.419 → jolt-0.9.430}/setup.py +1 -0
  136. jolt-0.9.419/jolt/plugins/python.py +0 -100
  137. jolt-0.9.419/jolt/version.py +0 -1
  138. jolt-0.9.419/jolt.egg-info/SOURCES.txt +0 -93
  139. {jolt-0.9.419 → jolt-0.9.430}/README.rst +0 -0
  140. {jolt-0.9.419 → jolt-0.9.430}/jolt/__init__.py +0 -0
  141. {jolt-0.9.419 → jolt-0.9.430}/jolt/__main__.py +0 -0
  142. {jolt-0.9.419 → jolt-0.9.430}/jolt/bin/fstree-darwin-x86_64 +0 -0
  143. {jolt-0.9.419 → jolt-0.9.430}/jolt/bin/fstree-linux-x86_64 +0 -0
  144. {jolt-0.9.419 → jolt-0.9.430}/jolt/chroot.py +0 -0
  145. {jolt-0.9.419 → jolt-0.9.430}/jolt/colors.py +0 -0
  146. {jolt-0.9.419 → jolt-0.9.430}/jolt/common_pb2.py +0 -0
  147. {jolt-0.9.419 → jolt-0.9.430}/jolt/common_pb2_grpc.py +0 -0
  148. {jolt-0.9.419 → jolt-0.9.430}/jolt/config.py +0 -0
  149. {jolt-0.9.419 → jolt-0.9.430}/jolt/error.py +0 -0
  150. {jolt-0.9.419 → jolt-0.9.430}/jolt/expires.py +0 -0
  151. {jolt-0.9.419 → jolt-0.9.430}/jolt/graph.py +0 -0
  152. {jolt-0.9.419 → jolt-0.9.430}/jolt/hooks.py +0 -0
  153. {jolt-0.9.419 → jolt-0.9.430}/jolt/influence.py +0 -0
  154. {jolt-0.9.419 → jolt-0.9.430}/jolt/inspection.py +0 -0
  155. {jolt-0.9.419 → jolt-0.9.430}/jolt/loader.py +0 -0
  156. {jolt-0.9.419 → jolt-0.9.430}/jolt/manifest.py +0 -0
  157. {jolt-0.9.419 → jolt-0.9.430}/jolt/options.py +0 -0
  158. {jolt-0.9.419 → jolt-0.9.430}/jolt/pkgs/__init__.py +0 -0
  159. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/__init__.py +0 -0
  160. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/alias.py +0 -0
  161. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/allure.py +0 -0
  162. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/autoweight.py +0 -0
  163. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/cache.py +0 -0
  164. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/conan.py +0 -0
  165. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/cxx.py +0 -0
  166. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/dashboard.py +0 -0
  167. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/docker.py +0 -0
  168. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/email.py +0 -0
  169. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/email.xslt +0 -0
  170. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/environ.py +0 -0
  171. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/gdb.py +0 -0
  172. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/gerrit.py +0 -0
  173. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/golang.py +0 -0
  174. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/googletest.py +0 -0
  175. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/http.py +0 -0
  176. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/junit.py +0 -0
  177. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/linux.py +0 -0
  178. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/logstash.py +0 -0
  179. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/ninja-compdb.py +0 -0
  180. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/nodejs.py +0 -0
  181. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/paths.py +0 -0
  182. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/podman.py +0 -0
  183. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/remote_execution/__init__.py +0 -0
  184. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/remote_execution/administration_pb2.py +0 -0
  185. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/remote_execution/administration_pb2_grpc.py +0 -0
  186. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/remote_execution/log_pb2.py +0 -0
  187. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/remote_execution/log_pb2_grpc.py +0 -0
  188. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/remote_execution/scheduler_pb2.py +0 -0
  189. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/remote_execution/scheduler_pb2_grpc.py +0 -0
  190. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/remote_execution/worker_pb2.py +0 -0
  191. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/remote_execution/worker_pb2_grpc.py +0 -0
  192. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/report.py +0 -0
  193. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/scheduler.py +0 -0
  194. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/selfdeploy.py +0 -0
  195. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/strings.py +0 -0
  196. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/symlinks.py +0 -0
  197. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/telemetry.py +0 -0
  198. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/timeline.py +0 -0
  199. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/volume.py +0 -0
  200. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/yaml-ninja.py +0 -0
  201. {jolt-0.9.419 → jolt-0.9.430}/jolt/plugins/yamltask.py +0 -0
  202. {jolt-0.9.419 → jolt-0.9.430}/jolt/scheduler.py +0 -0
  203. {jolt-0.9.419 → jolt-0.9.430}/jolt/templates/cxxexecutable.cmake.template +0 -0
  204. {jolt-0.9.419 → jolt-0.9.430}/jolt/templates/cxxlibrary.cmake.template +0 -0
  205. {jolt-0.9.419 → jolt-0.9.430}/jolt/templates/export.sh.template +0 -0
  206. {jolt-0.9.419 → jolt-0.9.430}/jolt/templates/timeline.html.template +0 -0
  207. {jolt-0.9.419 → jolt-0.9.430}/jolt/timer.py +0 -0
  208. {jolt-0.9.419 → jolt-0.9.430}/jolt/version_utils.py +0 -0
  209. {jolt-0.9.419 → jolt-0.9.430}/jolt/xmldom.py +0 -0
  210. {jolt-0.9.419 → jolt-0.9.430}/jolt.egg-info/dependency_links.txt +0 -0
  211. {jolt-0.9.419 → jolt-0.9.430}/jolt.egg-info/entry_points.txt +0 -0
  212. {jolt-0.9.419 → jolt-0.9.430}/jolt.egg-info/top_level.txt +0 -0
  213. {jolt-0.9.419 → jolt-0.9.430}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jolt
3
- Version: 0.9.419
3
+ Version: 0.9.430
4
4
  Summary: A task executor
5
5
  Home-page: https://github.com/srand/jolt
6
6
  Author: Robert Andersson
@@ -26,12 +26,15 @@ Requires-Dist: Jinja2==3.1.4
26
26
  Requires-Dist: MarkupSafe==2.1.5
27
27
  Requires-Dist: PyJWT==2.9.0
28
28
  Requires-Dist: PyYAML==6.0.2
29
+ Requires-Dist: PyYAML==6.0.2
30
+ Requires-Dist: Pygments==2.18.0
29
31
  Requires-Dist: Pygments==2.18.0
30
32
  Requires-Dist: SecretStorage==3.3.3
31
33
  Requires-Dist: allure-python-commons==2.13.5
32
34
  Requires-Dist: attrs==24.2.0
33
35
  Requires-Dist: backports.tarfile==1.2.0
34
36
  Requires-Dist: bottle==0.12.25
37
+ Requires-Dist: brotli==1.2.0
35
38
  Requires-Dist: bz2file==0.98
36
39
  Requires-Dist: certifi==2024.8.30
37
40
  Requires-Dist: cffi==1.17.1
@@ -45,9 +48,11 @@ Requires-Dist: docutils==0.21.2
45
48
  Requires-Dist: fasteners==0.19
46
49
  Requires-Dist: flake8==7.1.1
47
50
  Requires-Dist: grpcio==1.66.1
51
+ Requires-Dist: id==1.5.0
48
52
  Requires-Dist: idna==3.10
49
53
  Requires-Dist: importlib_metadata==8.5.0
50
54
  Requires-Dist: importlib_metadata==8.5.0
55
+ Requires-Dist: inflate64==1.0.4
51
56
  Requires-Dist: jaraco.classes==3.4.0
52
57
  Requires-Dist: jaraco.context==6.0.1
53
58
  Requires-Dist: jaraco.functools==4.0.2
@@ -55,10 +60,12 @@ Requires-Dist: jeepney==0.8.0
55
60
  Requires-Dist: keyring==25.4.1
56
61
  Requires-Dist: keyrings.alt==5.0.2
57
62
  Requires-Dist: lxml==5.3.0
63
+ Requires-Dist: markdown-it-py==3.0.0
58
64
  Requires-Dist: mccabe==0.7.0
59
65
  Requires-Dist: more-itertools==10.5.0
60
66
  Requires-Dist: more-itertools==10.5.0
61
67
  Requires-Dist: multi_key_dict==2.0.3
68
+ Requires-Dist: multivolumefile==0.2.3
62
69
  Requires-Dist: nh3==0.2.19
63
70
  Requires-Dist: ninja==1.11.1.1
64
71
  Requires-Dist: packaging==24.2
@@ -68,17 +75,27 @@ Requires-Dist: pluggy==1.5.0
68
75
  Requires-Dist: pluginbase==1.0.1
69
76
  Requires-Dist: protobuf==5.28.2
70
77
  Requires-Dist: psutil==6.0.0
78
+ Requires-Dist: py7zr==1.0.0
79
+ Requires-Dist: pybcj==1.0.6
71
80
  Requires-Dist: pycodestyle==2.12.1
72
81
  Requires-Dist: pycparser==2.22
82
+ Requires-Dist: pycryptodomex==3.23.0
73
83
  Requires-Dist: pyflakes==3.2.0
74
84
  Requires-Dist: pygit2==1.15.1
85
+ Requires-Dist: pyppmd==1.2.0
75
86
  Requires-Dist: python-dateutil==2.9.0.post0
87
+ Requires-Dist: pyzstd==0.18.0
76
88
  Requires-Dist: readme_renderer==44.0
89
+ Requires-Dist: requests-toolbelt==1.0.0
77
90
  Requires-Dist: requests==2.32.3
91
+ Requires-Dist: rfc3986==2.0.0
92
+ Requires-Dist: rich==13.9.4
78
93
  Requires-Dist: setuptools==80.9.0
79
94
  Requires-Dist: six==1.16.0
95
+ Requires-Dist: texttable==1.7.0
80
96
  Requires-Dist: tqdm==4.66.5
81
- Requires-Dist: typing_extensions==4.12.2
97
+ Requires-Dist: twine==6.2.0
98
+ Requires-Dist: typing_extensions==4.15.0
82
99
  Requires-Dist: urllib3==1.26.20
83
100
  Requires-Dist: wheel==0.45.1
84
101
  Requires-Dist: zipp==3.20.2
@@ -214,6 +214,9 @@ class ArtifactListAttribute(ArtifactAttribute):
214
214
  def count(self):
215
215
  return len(self.items())
216
216
 
217
+ def __str__(self) -> str:
218
+ return fs.pathsep.join(str(v) for v in self._value)
219
+
217
220
 
218
221
  class ArtifactFileAttribute(object):
219
222
  """ An attribute that stores a list of source and destination path tuples for files collected into the artifact. """
@@ -285,6 +288,22 @@ class ArtifactAttributeSet(object):
285
288
  """ Get a dictionary representation of the attribute set. """
286
289
  return {key: str(value) for key, value in self.items()}
287
290
 
291
+ def __iter__(self):
292
+ """ Iterate over the attribute set. """
293
+ return iter(self.items())
294
+
295
+ def get(self, name, default=None):
296
+ """ Get an attribute by name.
297
+
298
+ Args:
299
+ name (str): The name of the attribute.
300
+
301
+ Returns:
302
+ The attribute object, or None if it does not exist.
303
+ """
304
+ attributes = self._get_attributes()
305
+ return attributes.get(name, default)
306
+
288
307
  def items(self):
289
308
  """ Get a list of tuples containing the attribute name and value. """
290
309
  return self._get_attributes().items()
@@ -91,6 +91,7 @@ class PluginGroup(click.Group):
91
91
  help="Add salt as task influence.")
92
92
  @click.option("-g", "--debug", is_flag=True, default=False, hidden=True,
93
93
  help="Start debug shell before executing task.")
94
+ @click.option("-m", "--mute", is_flag=True, help="Display task log only if it fails.")
94
95
  @click.option("-n", "--network", is_flag=True, default=False, hidden=True,
95
96
  help="Build on network.")
96
97
  @click.option("-l", "--local", is_flag=True, default=False, hidden=True,
@@ -102,7 +103,7 @@ class PluginGroup(click.Group):
102
103
  @click.option("-h", "--help", is_flag=True, help="Show this message and exit.")
103
104
  @click.pass_context
104
105
  def cli(ctx, verbose, config_file, debugger, profile,
105
- force, salt, debug, network, local, keep_going, jobs, help, machine_interface, chdir):
106
+ force, salt, debug, mute, network, local, keep_going, jobs, help, machine_interface, chdir):
106
107
  """
107
108
  A task execution tool.
108
109
 
@@ -171,7 +172,7 @@ def cli(ctx, verbose, config_file, debugger, profile,
171
172
  task = config.get("jolt", "default", "default")
172
173
  taskname, _ = utils.parse_task_name(task)
173
174
  if registry.get_task_class(taskname) is not None:
174
- ctx.invoke(build, task=[task], force=force, salt=salt, debug=debug,
175
+ ctx.invoke(build, task=[task], force=force, salt=salt, debug=debug, mute=mute,
175
176
  network=network, local=local, keep_going=keep_going, jobs=jobs)
176
177
  else:
177
178
  print(cli.get_help(ctx))
@@ -88,10 +88,10 @@ def move(src, dst):
88
88
 
89
89
  def onerror_warning(func, path, exc_info):
90
90
  from jolt import log
91
- if type(exc_info[1]) is OSError:
91
+ if hasattr(exc_info[1], "strerror"):
92
92
  msg = exc_info[1].strerror
93
93
  else:
94
- msg = "Reason unknown"
94
+ msg = "Reason unknown: " + str(exc_info[1])
95
95
  if os.path.exists(path):
96
96
  log.warning("Could not remove file or directory: {} ({})", path, msg)
97
97
 
@@ -364,6 +364,9 @@ class _Progress(object):
364
364
  def reset(self, *args, **kwargs):
365
365
  pass
366
366
 
367
+ def set_description(self, *args, **kwargs):
368
+ pass
369
+
367
370
 
368
371
  def progress_log(desc, count, unit):
369
372
  return _Progress(desc)
@@ -376,8 +379,15 @@ def progress(desc, count, unit, estimates=True, debug=False):
376
379
  else:
377
380
  bar_format = '{desc}{n_fmt}{unit} [{elapsed}]'
378
381
  if not debug and is_interactive() and not is_verbose():
379
- p = tqdm.tqdm(total=count, unit=unit, unit_scale=True, bar_format=bar_format, dynamic_ncols=True)
380
- p.set_description("[ INFO] " + desc)
382
+ class ProgressTqdm(tqdm.tqdm):
383
+ def __init__(self, *args, **kwargs):
384
+ super(ProgressTqdm, self).__init__(*args, **kwargs)
385
+
386
+ def set_description(self, desc=None, refresh=True):
387
+ return super().set_description("[ INFO] " + desc, refresh)
388
+
389
+ p = ProgressTqdm(total=count, unit=unit, unit_scale=True, bar_format=bar_format, dynamic_ncols=True)
390
+ p.set_description(desc)
381
391
  return p
382
392
  return progress_log(desc, count, unit)
383
393
 
@@ -0,0 +1,42 @@
1
+ from jolt import attributes, BooleanParameter, Parameter, Task
2
+ from jolt.plugins import cmake, git
3
+ from jolt.tasks import TaskRegistry
4
+ import os
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.system
9
+ @cmake.requires()
10
+ @cmake.use_ninja()
11
+ class Abseil(cmake.CMake):
12
+ """ Abseil C++ Common Libraries """
13
+
14
+ name = "abseil"
15
+ version = Parameter("20250814.1")
16
+ shared = BooleanParameter(False, help="Build shared libraries")
17
+ requires_git = ["git:url=https://github.com/abseil/abseil-cpp.git,rev={version}"]
18
+ srcdir = "{git[abseil-cpp]}"
19
+ options = [
20
+ "ABSL_MSVC_STATIC_RUNTIME=OFF",
21
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
22
+ "CMAKE_CXX_STANDARD=17",
23
+ ]
24
+
25
+ def publish(self, artifact, tools):
26
+ super().publish(artifact, tools)
27
+ artifact.cxxinfo.crt = "Dynamic"
28
+ artifact.cxxinfo.incpaths.append("include")
29
+ artifact.cxxinfo.libpaths.append("lib")
30
+ if self.shared:
31
+ artifact.environ.LD_LIBRARY_PATH.append("lib")
32
+
33
+ with tools.cwd(artifact.path, "lib"):
34
+ for libfile in tools.glob("*.lib"):
35
+ libname, _ = os.path.splitext(libfile)
36
+ artifact.cxxinfo.libraries.append(libname)
37
+ for libfile in tools.glob("lib*.a"):
38
+ libname, _ = os.path.splitext(libfile)
39
+ artifact.cxxinfo.libraries.append(libname[3:])
40
+
41
+
42
+ TaskRegistry.get().add_task_class(Abseil)
@@ -0,0 +1,25 @@
1
+ from jolt import attributes, Parameter
2
+ from jolt.plugins import cmake, git, autotools, pkgconfig
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_git")
7
+ @autotools.requires()
8
+ @pkgconfig.requires()
9
+ @pkgconfig.to_cxxinfo("asio")
10
+ class Asio(autotools.Autotools):
11
+ name = "asio"
12
+ version = Parameter("1.36.0", help="asio version.")
13
+ requires_git = ["git:url=https://github.com/chriskohlhoff/asio.git,rev=asio-{_version}"]
14
+ srcdir = "{git[asio]}/asio"
15
+
16
+ @property
17
+ def _version(self):
18
+ return str(self.version).replace(".", "-")
19
+
20
+ def publish(self, artifact, tools):
21
+ super().publish(artifact, tools)
22
+ artifact.environ.CMAKE_PREFIX_PATH.append(".")
23
+
24
+
25
+ TaskRegistry.get().add_task_class(Asio)
@@ -0,0 +1,41 @@
1
+ from jolt import attributes, Parameter
2
+ from jolt.pkgs import help2man, m4, texinfo
3
+ from jolt.plugins import git, autotools
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.requires("requires_help2man")
9
+ @attributes.requires("requires_m4")
10
+ @attributes.requires("requires_texinfo")
11
+ class Autoconf(autotools.Autotools):
12
+ name = "autoconf"
13
+ version = Parameter("2.72", help="Autoconf version.")
14
+ requires_git = ["fetch:alias=src,url=https://ftpmirror.gnu.org/gnu/autoconf/autoconf-{version}.tar.gz"]
15
+ requires_help2man = ["help2man"]
16
+ requires_m4 = ["m4"]
17
+ requires_texinfo = ["texinfo"]
18
+ srcdir = "{fetch[src]}/autoconf-{version}"
19
+
20
+ def publish(self, artifact, tools):
21
+ super().publish(artifact, tools)
22
+ self.unpack(artifact, tools)
23
+
24
+ def unpack(self, artifact, tools):
25
+ with tools.cwd(artifact.path, "bin"):
26
+ for file in tools.glob("*"):
27
+ tools.replace_in_file(
28
+ file,
29
+ artifact.strings.install_prefix,
30
+ artifact.final_path)
31
+
32
+ with tools.cwd(artifact.path, "share/autoconf"):
33
+ tools.replace_in_file(
34
+ "autom4te.cfg",
35
+ artifact.strings.install_prefix,
36
+ artifact.final_path)
37
+
38
+ artifact.strings.install_prefix = artifact.final_path
39
+
40
+
41
+ TaskRegistry.get().add_task_class(Autoconf)
@@ -0,0 +1,41 @@
1
+ from jolt import attributes, Parameter, Task
2
+ from jolt.plugins import git, autotools
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_git")
7
+ @attributes.requires("requires_texinfo")
8
+ @autotools.requires(automake=False, libtool=False)
9
+ class Automake(autotools.Autotools):
10
+ name = "automake"
11
+ version = Parameter("1.18.1", help="Automake version.")
12
+ requires_git = ["fetch:alias=src,url=https://ftpmirror.gnu.org/gnu/automake/automake-{version}.tar.xz"]
13
+ requires_texinfo = ["texinfo"]
14
+ srcdir = "{fetch[src]}/automake-{version}"
15
+
16
+ def publish(self, artifact, tools):
17
+ super().publish(artifact, tools)
18
+ self.unpack(artifact, tools)
19
+
20
+ def unpack(self, artifact, tools):
21
+ with tools.cwd(artifact.path, "bin"):
22
+ for file in tools.glob("*"):
23
+ tools.replace_in_file(
24
+ file,
25
+ artifact.strings.install_prefix,
26
+ artifact.final_path)
27
+
28
+ for file in tools.glob(artifact.path + "/share/automake-*/Automake/Config.pm"):
29
+ tools.replace_in_file(
30
+ file,
31
+ artifact.strings.install_prefix,
32
+ artifact.final_path)
33
+
34
+ with tools.cwd(artifact.path):
35
+ for file in tools.glob("share/aclocal-*"):
36
+ artifact.environ.ACLOCAL_PATH.append(file)
37
+
38
+ artifact.strings.install_prefix = artifact.final_path
39
+
40
+
41
+ TaskRegistry.get().add_task_class(Automake)
@@ -0,0 +1,31 @@
1
+ import os
2
+ from jolt import attributes, Parameter
3
+ from jolt.plugins import git
4
+ from jolt.tasks import Task, TaskRegistry
5
+
6
+
7
+ @attributes.common_metadata()
8
+ @attributes.requires("requires_git")
9
+ @attributes.system
10
+ class B2(Task):
11
+ name = "b2"
12
+ version = Parameter("5.4.2", help="B2 version.")
13
+ requires_git = ["git:url=https://github.com/bfgroup/b2.git"]
14
+
15
+ def run(self, artifact, tools):
16
+ self.builddir = tools.builddir("build", incremental=True)
17
+ self.installdir = tools.builddir("install")
18
+ with tools.cwd("{git[b2]}"):
19
+ if self.system == "windows":
20
+ tools.run(".\\bootstrap.bat")
21
+ tools.run(".\\b2 install --prefix={installdir} --build-dir={builddir} -j{}", tools.cpu_count())
22
+ else:
23
+ tools.run("./bootstrap.sh")
24
+ tools.run("./b2 install --prefix={installdir} --build-dir={builddir} -j{}", tools.cpu_count())
25
+
26
+ def publish(self, artifact, tools):
27
+ with tools.cwd(self.installdir):
28
+ artifact.collect("*", symlinks=True)
29
+
30
+
31
+ TaskRegistry.get().add_task_class(B2)
@@ -0,0 +1,111 @@
1
+ import os
2
+ from jolt import attributes, Alias, BooleanParameter, Download, IntParameter, Parameter
3
+ from jolt.pkgs import cpython
4
+ from jolt.plugins import git
5
+ from jolt.tasks import Task, TaskRegistry
6
+ from jolt.error import raise_task_error_if
7
+
8
+
9
+ @attributes.common_metadata()
10
+ @attributes.requires("requires_git")
11
+ @attributes.requires("requires_python_{python[on,off]}")
12
+ @attributes.system
13
+ class Boost(Task):
14
+ name = "boost"
15
+ version = Parameter("1.90.0", help="Boost version.")
16
+ shared = BooleanParameter(False, help="Build shared libraries")
17
+ python = BooleanParameter(False, help="Build Boost.Python")
18
+ bits = IntParameter(64, values=[32, 64], help="Boost address-model")
19
+ requires_git = ["git:url=https://github.com/boostorg/boost.git,path={buildroot}/git-boost,rev=boost-{version},submodules=true"]
20
+ requires_python_on = ["cpython"]
21
+
22
+ def write_user_config(self, deps, tools):
23
+ content = ""
24
+
25
+ if self.python:
26
+ py_exe = tools.which("python3")
27
+ raise_task_error_if(
28
+ py_exe is None, self,
29
+ "Boost.Python requested, but no Python interpreter found in PATH.",
30
+ )
31
+
32
+ # Find the dependency where the Python interpreter is located
33
+ py_dep = None
34
+ py_prefix = os.path.dirname(os.path.dirname(py_exe))
35
+ for _, dep in deps.items():
36
+ if dep.path == py_prefix:
37
+ py_dep = dep
38
+ break
39
+
40
+ raise_task_error_if(
41
+ py_dep is None, self,
42
+ "Boost.Python requested, but the Python dependency could not be found.",
43
+ )
44
+
45
+ py_version = str(py_dep.strings.version_major)
46
+ content += f"using python : {py_version} : {py_prefix}/bin/python{py_version} : {py_prefix}/include/python{py_version} : {py_prefix}/lib ;\n"
47
+
48
+ tools.write_file(
49
+ self.userconfigfile,
50
+ content,
51
+ )
52
+
53
+ def clean(self, tools):
54
+ self.builddir = tools.builddir("build", incremental=True)
55
+ self.installdir = tools.builddir("install")
56
+ tools.rmtree(self.builddir)
57
+ tools.rmtree(self.installdir)
58
+
59
+ def run(self, deps, tools):
60
+ self.builddir = tools.builddir("build", incremental=True)
61
+ self.installdir = tools.builddir("install")
62
+ self.userconfigfile = tools.expand_path("{builddir}/user-config.jam")
63
+ self.write_user_config(deps, tools)
64
+
65
+ without_libs = []
66
+ if not self.python:
67
+ without_libs.append("python")
68
+
69
+ bootstrap_cmd = []
70
+ if without_libs:
71
+ bootstrap_cmd = ["--without-libraries={}".format(",".join(without_libs))]
72
+
73
+ b2_cmd = [
74
+ "install",
75
+ "address-model={bits}",
76
+ "link={shared[shared,static]}",
77
+ "--prefix={installdir}",
78
+ "--build-dir={builddir}",
79
+ "--user-config={userconfigfile}",
80
+ "-j{}".format(tools.cpu_count()),
81
+ ]
82
+
83
+ with tools.cwd("{git[boost]}"):
84
+ if self.system == "windows":
85
+ bootstrap_cmd = [".\\bootstrap.bat", "msvc"] + bootstrap_cmd
86
+ b2_cmd = [".\\b2"] + b2_cmd
87
+ else:
88
+ bootstrap_cmd = ["./bootstrap.sh"] + bootstrap_cmd
89
+ b2_cmd = ["./b2"] + b2_cmd
90
+
91
+ tools.run(" ".join(bootstrap_cmd))
92
+ tools.run(" ".join(b2_cmd))
93
+
94
+ def publish(self, artifact, tools):
95
+ with tools.cwd(self.installdir):
96
+ artifact.collect("*", symlinks=True)
97
+ artifact.cxxinfo.incpaths.append("include")
98
+ artifact.cxxinfo.libpaths.append("lib")
99
+
100
+ with tools.cwd(self.installdir, "lib"):
101
+ for lib in tools.glob("libboost_*.a"):
102
+ name, _ = os.path.splitext(os.path.basename(lib))
103
+ artifact.cxxinfo.libraries.append(name[3:])
104
+
105
+ arch = tools.getenv("VSCMD_ARG_TGT_ARCH", "x64")
106
+ for lib in tools.glob(f"lib*-mt-{arch}-*.lib"):
107
+ name, _ = os.path.splitext(lib)
108
+ artifact.cxxinfo.libraries.append(name)
109
+
110
+
111
+ TaskRegistry.get().add_task_class(Boost)
@@ -0,0 +1,32 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.pkgs import nasm
3
+ from jolt.plugins import cmake, git
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.requires("requires_nasm_{system}")
9
+ @attributes.common_metadata()
10
+ @attributes.system
11
+ @cmake.requires()
12
+ @cmake.use_ninja()
13
+ class BoringSSL(cmake.CMake):
14
+ name = "boringssl"
15
+ version = Parameter("0.20251124.0", help="boringssl version.")
16
+ shared = BooleanParameter(False, help="Build shared libraries.")
17
+ requires_git = ["git:url=https://github.com/google/boringssl.git,rev={version}"]
18
+ requires_nasm_windows = ["nasm"]
19
+ srcdir = "{git[boringssl]}"
20
+ options = [
21
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
22
+ ]
23
+
24
+ def publish(self, artifact, tools):
25
+ super().publish(artifact, tools)
26
+ artifact.cxxinfo.incpaths.append("include")
27
+ artifact.cxxinfo.libpaths.append("lib")
28
+ artifact.cxxinfo.libraries.append("ssl")
29
+ artifact.cxxinfo.libraries.append("crypto")
30
+
31
+
32
+ TaskRegistry.get().add_task_class(BoringSSL)
@@ -0,0 +1,39 @@
1
+ from jolt import attributes, influence, Parameter, Task
2
+ from jolt.plugins import git
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_git")
7
+ class BusyBox(Task):
8
+ name = "busybox"
9
+ defconfig = Parameter(required=False, help="BusyBox defconfig file.")
10
+ version = Parameter("1.37.0", help="BusyBox version.")
11
+ requires_git = ["git:url=git://busybox.net/busybox.git,rev={version_tag}"]
12
+ srcdir = "{git[busybox]}"
13
+
14
+ @property
15
+ def version_tag(self):
16
+ return str(self.version).replace(".", "_")
17
+
18
+ @property
19
+ def defconfig_arg(self):
20
+ if self.defconfig:
21
+ return f"{self.defconfig}_defconfig"
22
+ return "defconfig"
23
+
24
+ def run(self, deps, tools):
25
+ self.outdir = tools.builddir()
26
+ self.installdir = tools.builddir("install")
27
+
28
+ with tools.cwd(self.srcdir):
29
+ tools.run("make O={outdir} {defconfig_arg}")
30
+ tools.run("make O={outdir} -j{}", tools.cpu_count())
31
+ tools.run("make O={outdir} install DESTDIR={installdir}")
32
+
33
+ def publish(self, artifact, tools):
34
+ artifact.environ.PATH.append("bin")
35
+ with tools.cwd(self.installdir):
36
+ artifact.collect("*", symlinks=True)
37
+
38
+
39
+ TaskRegistry.get().add_task_class(BusyBox)
@@ -0,0 +1,43 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.tasks import TaskRegistry
3
+ from jolt.plugins import fetch, ninja
4
+
5
+
6
+ @attributes.requires("requires_src")
7
+ @attributes.system
8
+ @ninja.attributes.cflags("cflags_linux_pic_{pic[on,off]}")
9
+ class LibBzip2(ninja.CXXLibrary):
10
+ name = "libbzip2"
11
+ binary = "bzip2"
12
+ version = Parameter("1.0.8", help="bzip2 version.")
13
+ pic = BooleanParameter(True, help="Build position independent code")
14
+ shared = BooleanParameter(False, help="Build shared libraries")
15
+ cstd = 90
16
+ cflags_darwin_pic_on = ["-fPIC"]
17
+ cflags_linux_pic_on = ["-fPIC"]
18
+ incremental = False
19
+ requires_src = ["fetch:alias=src,url=https://sourceware.org/pub/bzip2/bzip2-{version}.tar.gz"]
20
+ source_influence = False
21
+ sources = [
22
+ "{fetch[src]}/bzip2-{version}/blocksort.c",
23
+ "{fetch[src]}/bzip2-{version}/bzlib.c",
24
+ "{fetch[src]}/bzip2-{version}/bzlib.h",
25
+ "{fetch[src]}/bzip2-{version}/compress.c",
26
+ "{fetch[src]}/bzip2-{version}/crctable.c",
27
+ "{fetch[src]}/bzip2-{version}/decompress.c",
28
+ "{fetch[src]}/bzip2-{version}/huffman.c",
29
+ "{fetch[src]}/bzip2-{version}/randtable.c",
30
+ ]
31
+
32
+ def publish(self, artifact, tools):
33
+ super().publish(artifact, tools)
34
+ artifact.cxxinfo.incpaths.append("include")
35
+ artifact.cxxinfo.libpaths.append("lib")
36
+ artifact.cxxinfo.libraries.append("bz2")
37
+ artifact.environ.CMAKE_PREFIX_PATH.append(".")
38
+
39
+ with tools.cwd("{fetch[src]}/bzip2-{version}"):
40
+ artifact.collect("bzlib.h", "include/")
41
+
42
+
43
+ TaskRegistry.get().add_task_class(LibBzip2)
@@ -0,0 +1,29 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.pkgs import cmake
3
+ from jolt.plugins import git, cmake
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @cmake.requires()
9
+ @cmake.use_ninja()
10
+ class CAres(cmake.CMake):
11
+ name = "c-ares"
12
+ version = Parameter("1.34.6", help="c-ares version.")
13
+ shared = BooleanParameter(False, help="Build shared libraries.")
14
+ requires_git = ["git:url=https://github.com/c-ares/c-ares.git,rev=v{version}"]
15
+ srcdir = "{git[c-ares]}"
16
+ options = [
17
+ "CARES_SHARED={shared[ON,OFF]}",
18
+ "CARES_STATIC={shared[OFF,ON]}",
19
+ "CARES_BUILD_TESTS=OFF",
20
+ ]
21
+
22
+ def publish(self, artifact, tools):
23
+ super().publish(artifact, tools)
24
+ artifact.cxxinfo.incpaths.append("include")
25
+ artifact.cxxinfo.libpaths.append("lib")
26
+ artifact.cxxinfo.libraries.append("cares")
27
+
28
+
29
+ TaskRegistry.get().add_task_class(CAres)
@@ -0,0 +1,36 @@
1
+ from jolt import attributes, BooleanParameter, Parameter, Task
2
+ from jolt.pkgs import cmake
3
+ from jolt.plugins import git, cmake
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @cmake.requires()
9
+ @cmake.use_ninja()
10
+ class Catch2(cmake.CMake):
11
+ name = "catch2"
12
+ version = Parameter("3.11.0", help="catch2 version.")
13
+ shared = BooleanParameter(False, help="Build shared libraries.")
14
+ requires_git = ["git:url=https://github.com/catchorg/Catch2.git,rev=v{version}"]
15
+ srcdir = "{git[Catch2]}"
16
+ options = [
17
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
18
+ ]
19
+
20
+ def publish(self, artifact, tools):
21
+ super().publish(artifact, tools)
22
+ artifact.cxxinfo.incpaths.append("include")
23
+ artifact.cxxinfo.libpaths.append("lib")
24
+ artifact.cxxinfo.libraries.append("Catch2")
25
+
26
+
27
+ class Catch2Main(Task):
28
+ name = "catch2/main"
29
+ extends = "catch2"
30
+
31
+ def publish(self, artifact, tools):
32
+ artifact.cxxinfo.libraries.append("Catch2Main")
33
+
34
+
35
+ TaskRegistry.get().add_task_class(Catch2)
36
+ TaskRegistry.get().add_task_class(Catch2Main)
@@ -0,0 +1,17 @@
1
+ from jolt import attributes
2
+ from jolt.pkgs import rust
3
+ from jolt.plugins import rust
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.requires("requires_rust")
9
+ class CBindgen(rust.Rust):
10
+ name = "cbindgen"
11
+ version = "0.29.2"
12
+ requires_git = ["git:url=https://github.com/mozilla/cbindgen.git,rev=v{version},hash=true"]
13
+ requires_rust = ["rust"]
14
+ srcdir = "{git[cbindgen]}"
15
+
16
+
17
+ TaskRegistry.get().add_task_class(CBindgen)