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/pkgs/openssl.py ADDED
@@ -0,0 +1,103 @@
1
+ from jolt import attributes, BooleanParameter, Parameter, Task
2
+ from jolt.pkgs import nasm, perl
3
+ from jolt.plugins import git
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.requires("requires_perl")
9
+ @attributes.requires("requires_{system}_nasm")
10
+ @attributes.common_metadata()
11
+ @attributes.system
12
+ class OpenSSL(Task):
13
+ name = "openssl"
14
+ version = Parameter("3.6.0", help="openssl version.")
15
+ shared = BooleanParameter(False, "Enable shared libraries.")
16
+
17
+ requires_git = ["git:url=https://github.com/openssl/openssl.git,rev=openssl-{version}"]
18
+ requires_perl = ["virtual/perl"]
19
+ requires_windows_nasm = ["nasm"]
20
+
21
+ def clean(self):
22
+ pass
23
+
24
+ def run(self, deps, tools):
25
+ self.builddir = tools.builddir(incremental=True)
26
+ self.installdir = tools.builddir("install")
27
+ self.srcdir = tools.expand_path("{git[openssl]}")
28
+ with tools.cwd(self.builddir):
29
+ self.info("Configuring OpenSSL... {builddir}")
30
+
31
+ if self.system == "windows":
32
+ tools.run("perl {srcdir}/Configure --prefix={installdir} --openssldir=ssl no-tests {shared[,no-shared]}")
33
+ tools.run("nmake")
34
+ tools.run("nmake install")
35
+ else:
36
+ tools.run("{srcdir}/config --prefix={installdir} no-tests {shared[,no-shared]}")
37
+ tools.run("make -j{}", tools.cpu_count())
38
+ tools.run("make install")
39
+
40
+ def publish(self, artifact, tools):
41
+ with tools.cwd(self.installdir):
42
+ artifact.collect("*", symlinks=True)
43
+ artifact.cxxinfo.incpaths.append("include")
44
+ artifact.cxxinfo.libpaths.append("lib")
45
+ artifact.cxxinfo.libraries.append("ssl")
46
+ artifact.cxxinfo.libraries.append("crypto")
47
+ artifact.strings.install_prefix = self.installdir
48
+ if self.system == "windows":
49
+ self.publish_pkgconfig(artifact, tools)
50
+
51
+ def publish_pkgconfig(self, artifact, tools):
52
+ with tools.tmpdir() as tmp, tools.cwd(tmp):
53
+ tools.write_file(
54
+ "openssl.pc",
55
+ """
56
+ # See: man pkg-config
57
+ prefix=${{pcfiledir}}/../..
58
+ exec_prefix=${{prefix}}/bin
59
+ libdir=${{prefix}}/lib
60
+ includedir=${{prefix}}/include
61
+
62
+ Name: OpenSSL
63
+ Description: Secure Sockets Layer and cryptography libraries and tools
64
+ Version: {version}-{identity}
65
+ Requires: libssl libcrypto
66
+ """)
67
+ tools.write_file(
68
+ "libcrypto.pc",
69
+ """
70
+ # See: man pkg-config
71
+ prefix=${{pcfiledir}}/../..
72
+ exec_prefix=${{prefix}}/bin
73
+ libdir=${{prefix}}/lib
74
+ includedir=${{prefix}}/include
75
+ enginesdir=${{libdir}}/engines-3
76
+
77
+ Name: OpenSSL-libcrypto
78
+ Description: OpenSSL cryptography library
79
+ Version: {version}-{identity}
80
+ Libs: -L${{libdir}} -lcrypto
81
+ Cflags: -I${{includedir}}
82
+ """)
83
+ tools.write_file(
84
+ "libssl.pc",
85
+ """
86
+ # See: man pkg-config
87
+ prefix=${{pcfiledir}}/../..
88
+ exec_prefix=${{prefix}}/bin
89
+ libdir=${{prefix}}/lib
90
+ includedir=${{prefix}}/include
91
+
92
+ Name: OpenSSL-libssl
93
+ Description: Secure Sockets Layer and cryptography libraries
94
+ Version: {version}-{identity}
95
+ Libs: -L${{libdir}} -lssl
96
+ Cflags: -I${{includedir}}
97
+ """)
98
+ artifact.collect("openssl.pc", "lib/pkgconfig/")
99
+ artifact.collect("libcrypto.pc", "lib/pkgconfig/")
100
+ artifact.collect("libssl.pc", "lib/pkgconfig/")
101
+
102
+
103
+ TaskRegistry.get().add_task_class(OpenSSL)
jolt/pkgs/paho.py ADDED
@@ -0,0 +1,76 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.pkgs import openssl
3
+ from jolt.plugins import cmake, git
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.requires("requires_ssl_{ssl[on,off]}")
9
+ @cmake.requires()
10
+ @cmake.use_ninja()
11
+ class PahoMQTT_C(cmake.CMake):
12
+ name = "paho/mqtt-c"
13
+ version = Parameter("1.3.15", help="Paho MQTT C version.")
14
+ shared = BooleanParameter(False, help="Build shared libraries")
15
+ ssl = BooleanParameter(True, help="Enable SSL support")
16
+ requires_git = ["git:url=https://github.com/eclipse/paho.mqtt.c.git,rev=v{version}"]
17
+ requires_ssl_on = ["openssl"]
18
+ srcdir = "{git[paho.mqtt.c]}"
19
+ options = [
20
+ "PAHO_BUILD_SHARED={shared[ON,OFF]}",
21
+ "PAHO_BUILD_STATIC={shared[OFF,ON]}",
22
+ "PAHO_WITH_SSL={ssl[ON,OFF]}",
23
+ ]
24
+
25
+ def publish(self, artifact, tools):
26
+ super().publish(artifact, tools)
27
+ artifact.cxxinfo.incpaths.append("include")
28
+ artifact.cxxinfo.libpaths.append("lib")
29
+ if self.shared:
30
+ artifact.cxxinfo.libraries.append("paho-mqtt3c")
31
+ else:
32
+ artifact.cxxinfo.libraries.append("paho-mqtt3c-static")
33
+
34
+
35
+ @attributes.requires("requires_git")
36
+ @attributes.requires("requires_mqtt_c")
37
+ @cmake.requires()
38
+ @cmake.use_ninja()
39
+ class PahoMQTT_CXX(cmake.CMake):
40
+ name = "paho/mqtt-cxx"
41
+ version = Parameter("1.5.2", help="Paho MQTT C++ version.")
42
+ shared = BooleanParameter(False, help="Build shared libraries")
43
+ ssl = BooleanParameter(True, help="Enable SSL support")
44
+ requires_git = ["git:url=https://github.com/eclipse/paho.mqtt.cpp.git,rev=v{version}"]
45
+ requires_mqtt_c = ["paho/mqtt-c:shared={shared},ssl={ssl}"]
46
+ srcdir = "{git[paho.mqtt.cpp]}"
47
+ options = [
48
+ "PAHO_BUILD_SHARED={shared[ON,OFF]}",
49
+ "PAHO_BUILD_STATIC={shared[OFF,ON]}",
50
+ "PAHO_WITH_SSL={ssl[ON,OFF]}",
51
+ ]
52
+
53
+ def publish(self, artifact, tools):
54
+ super().publish(artifact, tools)
55
+ artifact.cxxinfo.incpaths.append("include")
56
+ artifact.cxxinfo.libpaths.append("lib")
57
+ if self.shared:
58
+ artifact.cxxinfo.libraries.append("paho-mqttpp3")
59
+ else:
60
+ artifact.cxxinfo.libraries.append("paho-mqttpp3-static")
61
+
62
+
63
+ @attributes.requires("requires_git")
64
+ @cmake.requires()
65
+ @cmake.use_ninja()
66
+ class PahoMQTT_Embedded_C(cmake.CMake):
67
+ name = "paho/mqtt-embedded-c"
68
+ version = "1.1.0"
69
+ requires_git = ["git:url=https://github.com/eclipse/paho.mqtt.embedded-c.git,rev=v{version}"]
70
+ srcdir = "{git[paho.mqtt.embedded-c]}"
71
+ options = ["CMAKE_POLICY_VERSION_MINIMUM=3.5"]
72
+
73
+
74
+ TaskRegistry.get().add_task_class(PahoMQTT_C)
75
+ TaskRegistry.get().add_task_class(PahoMQTT_CXX)
76
+ TaskRegistry.get().add_task_class(PahoMQTT_Embedded_C)
jolt/pkgs/patchelf.py ADDED
@@ -0,0 +1,16 @@
1
+ from jolt import attributes, Parameter
2
+ from jolt.plugins import cmake, fetch
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_src")
7
+ @cmake.requires()
8
+ @cmake.use_ninja()
9
+ class Patchelf(cmake.CMake):
10
+ name = "patchelf"
11
+ version = Parameter("0.15.5", help="patchelf version.")
12
+ requires_src = ["fetch:alias=src,url=https://github.com/NixOS/patchelf/archive/refs/tags/{version}.tar.gz"]
13
+ srcdir = "{fetch[src]}/patchelf-{version}"
14
+
15
+
16
+ TaskRegistry.get().add_task_class(Patchelf)
jolt/pkgs/perl.py ADDED
@@ -0,0 +1,42 @@
1
+ from jolt import attributes, influence
2
+ from jolt import Alias, Download, Parameter, Task
3
+ from jolt.tasks import TaskRegistry
4
+ from jolt.error import raise_task_error_if
5
+
6
+
7
+ class StrawberryPerl(Download):
8
+ name = "perl/strawberry"
9
+ version = Parameter("5.42.0.1", help="poco version.")
10
+ url = "https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/download/SP_{version_compact}_64bit/strawberry-perl-{version}-64bit-portable.zip"
11
+
12
+ @property
13
+ def version_compact(self):
14
+ return str(self.version).replace(".", "")
15
+
16
+ def publish(self, artifact, tools):
17
+ super().publish(artifact, tools)
18
+ artifact.environ.PATH.append("perl/bin")
19
+
20
+
21
+ @attributes.system
22
+ @influence.string("{system}")
23
+ class HostPerl(Task):
24
+ name = "perl/host"
25
+
26
+ def run(self, deps, tools):
27
+ raise_task_error_if(not tools.which("perl"), "Perl is not installed on the host system.")
28
+
29
+
30
+ @attributes.system
31
+ @attributes.requires("requires_{system}")
32
+ class Perl(Alias):
33
+ name = "virtual/perl"
34
+
35
+ requires_darwin = ["perl/host"]
36
+ requires_linux = ["perl/host"]
37
+ requires_windows = ["perl/strawberry"]
38
+
39
+
40
+ TaskRegistry.get().add_task_class(Perl)
41
+ TaskRegistry.get().add_task_class(HostPerl)
42
+ TaskRegistry.get().add_task_class(StrawberryPerl)
jolt/pkgs/pkgconfig.py ADDED
@@ -0,0 +1,64 @@
1
+ import os
2
+ from jolt import attributes, Alias, Task, Parameter
3
+ from jolt.plugins import autotools, git, meson
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @autotools.requires()
9
+ class PkgConfPosix(autotools.Autotools):
10
+ """ Package that provides the 'pkgconf' binary, an alternative implementation of 'pkg-config'. """
11
+
12
+ name = "pkgconf/posix"
13
+ version = Parameter("2.5.1", help="pkg-config version.")
14
+ requires_git = ["git:url=https://github.com/pkgconf/pkgconf.git,rev=pkgconf-{version}"]
15
+ srcdir = "{git[pkgconf]}"
16
+ options = ["--enable-static", "--disable-shared"]
17
+
18
+ def publish(self, artifact, tools):
19
+ super().publish(artifact, tools)
20
+ artifact.environ.PKG_CONFIG = "pkgconf"
21
+
22
+ # Install pkg-config symlink
23
+ with tools.cwd(artifact.path, "bin"):
24
+ tools.symlink("pkgconf", "pkg-config")
25
+
26
+
27
+ @attributes.requires("requires_git")
28
+ @meson.requires()
29
+ class PkgConfWin32(meson.Meson):
30
+ """ Package that provides the 'pkgconf' binary, an alternative implementation of 'pkg-config'. """
31
+
32
+ name = "pkgconf/win32"
33
+ version = Parameter("2.5.1", help="pkg-config version.")
34
+ requires_git = ["git:url=https://github.com/pkgconf/pkgconf.git,rev=pkgconf-{version}"]
35
+ srcdir = "{git[pkgconf]}"
36
+ options = [
37
+ "default_library=static",
38
+ "tests=disabled",
39
+ ]
40
+
41
+ def publish(self, artifact, tools):
42
+ super().publish(artifact, tools)
43
+ artifact.environ.PKG_CONFIG = "pkgconf"
44
+
45
+ # Install pkg-config copy
46
+ with tools.cwd(artifact.path, "bin"):
47
+ tools.copy("pkgconf", "pkg-config")
48
+
49
+
50
+ @attributes.requires("requires_{system}")
51
+ @attributes.system
52
+ class PkgConf(Alias):
53
+ """ Alias for pkgconf package. """
54
+
55
+ name = "pkgconf"
56
+ version = Parameter("2.5.1", help="pkg-config version.")
57
+ requires_darwin = ["pkgconf/posix:version={version}"]
58
+ requires_linux = requires_darwin
59
+ requires_windows = ["pkgconf/win32:version={version}"]
60
+
61
+
62
+ TaskRegistry.get().add_task_class(PkgConf)
63
+ TaskRegistry.get().add_task_class(PkgConfPosix)
64
+ TaskRegistry.get().add_task_class(PkgConfWin32)
jolt/pkgs/poco.py ADDED
@@ -0,0 +1,39 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.pkgs import cmake, ssl
3
+ from jolt.plugins import git, cmake
4
+ from jolt.tasks import TaskRegistry
5
+ import os
6
+
7
+
8
+ @attributes.requires("requires_git")
9
+ @attributes.requires("requires_ssl")
10
+ @cmake.requires()
11
+ @cmake.use_ninja()
12
+ class Poco(cmake.CMake):
13
+ name = "poco"
14
+ version = Parameter("1.14.2", help="Poco version")
15
+ shared = BooleanParameter(False, help="Build shared libraries")
16
+ requires_git = ["git:url=https://github.com/pocoproject/poco.git,rev=poco-{version}-release"]
17
+ requires_ssl = ["virtual/ssl"]
18
+ srcdir = "{git[poco]}"
19
+ options = [
20
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
21
+ "POCO_MT=OFF",
22
+ ]
23
+
24
+ def publish(self, artifact, tools):
25
+ super().publish(artifact, tools)
26
+ artifact.cxxinfo.crt = "Dynamic"
27
+ artifact.cxxinfo.incpaths.append("include")
28
+ artifact.cxxinfo.libpaths.append("lib")
29
+
30
+ with tools.cwd(artifact.path, "lib"):
31
+ for libfile in tools.glob("*.lib"):
32
+ libname, _ = os.path.splitext(libfile)
33
+ artifact.cxxinfo.libraries.append(libname)
34
+ for libfile in tools.glob("lib*.a"):
35
+ libname, _ = os.path.splitext(libfile)
36
+ artifact.cxxinfo.libraries.append(libname[3:])
37
+
38
+
39
+ TaskRegistry.get().add_task_class(Poco)
jolt/pkgs/protobuf.py ADDED
@@ -0,0 +1,77 @@
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_abseil")
8
+ @attributes.requires("requires_git")
9
+ @cmake.requires()
10
+ @cmake.use_ninja()
11
+ class Protobuf(cmake.CMake):
12
+ """
13
+ Protocol buffers main package.
14
+
15
+ For linking, require protobuf/lib and friends.
16
+ """
17
+
18
+ name = "protobuf"
19
+ version = Parameter("33.2", help="Protobuf version.")
20
+ shared = BooleanParameter(False, help="Build shared libraries")
21
+ requires_abseil = ["abseil:shared={shared}"]
22
+ requires_git = ["git:url=https://github.com/protocolbuffers/protobuf.git,rev=v{version}"]
23
+ srcdir = "{git[protobuf]}"
24
+ options = [
25
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
26
+ "CMAKE_CXX_STANDARD=17",
27
+ "protobuf_BUILD_TESTS=OFF",
28
+ "protobuf_MSVC_STATIC_RUNTIME=OFF",
29
+ ]
30
+
31
+ def publish(self, artifact, tools):
32
+ super().publish(artifact, tools)
33
+ artifact.cxxinfo.crt = "Dynamic"
34
+ artifact.cxxinfo.incpaths.append("include")
35
+ artifact.cxxinfo.libpaths.append("lib")
36
+
37
+
38
+ class ProtobufLib(Task):
39
+ """ Protobuf library """
40
+
41
+ name = "protobuf/lib"
42
+ version = Parameter("33.2", help="Protobuf version.")
43
+ shared = BooleanParameter(False, help="Build shared libraries")
44
+ extends = "protobuf:version={version},shared={shared}"
45
+
46
+ def publish(self, artifact, tools):
47
+ artifact.cxxinfo.libraries.append("protobuf")
48
+
49
+
50
+ class ProtobufLite(Task):
51
+ """ Protobuf Lite library """
52
+
53
+ name = "protobuf/lib-lite"
54
+ version = Parameter("33.2", help="Protobuf version.")
55
+ shared = BooleanParameter(False, help="Build shared libraries")
56
+ extends = "protobuf:version={version},shared={shared}"
57
+
58
+ def publish(self, artifact, tools):
59
+ artifact.cxxinfo.libraries.append("protobuf-lite")
60
+
61
+
62
+ class ProtobufLibProtoc(Task):
63
+ """ Protobuf compiler library (libprotoc) """
64
+
65
+ name = "protobuf/lib-compiler"
66
+ version = Parameter("33.2", help="Protobuf version.")
67
+ shared = BooleanParameter(False, help="Build shared libraries")
68
+ extends = "protobuf:version={version},shared={shared}"
69
+
70
+ def publish(self, artifact, tools):
71
+ artifact.cxxinfo.libraries.append("protoc")
72
+
73
+
74
+ TaskRegistry.get().add_task_class(Protobuf)
75
+ TaskRegistry.get().add_task_class(ProtobufLib)
76
+ TaskRegistry.get().add_task_class(ProtobufLite)
77
+ TaskRegistry.get().add_task_class(ProtobufLibProtoc)
jolt/pkgs/pugixml.py ADDED
@@ -0,0 +1,27 @@
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 PugiXML(cmake.CMake):
11
+ name = "pugixml"
12
+ version = Parameter("1.15", help="PugiXML version.")
13
+ shared = BooleanParameter(False, help="Build shared libraries.")
14
+ requires_git = ["git:url=https://github.com/zeux/pugixml.git,rev=v{version}"]
15
+ srcdir = "{git[pugixml]}"
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("pugixml")
25
+
26
+
27
+ TaskRegistry.get().add_task_class(PugiXML)
jolt/pkgs/python.py ADDED
@@ -0,0 +1,19 @@
1
+ from jolt.plugins import python
2
+ from jolt.tasks import TaskRegistry
3
+
4
+
5
+ @python.requires()
6
+ class Python(python.PythonEnv):
7
+ """ Builds and publishes a Python virtual environment with specified packages. """
8
+
9
+ name = "python"
10
+
11
+ requirements = [
12
+ "setuptools",
13
+ "mako",
14
+ "meson",
15
+ "pyyaml",
16
+ ]
17
+
18
+
19
+ TaskRegistry.get().add_task_class(Python)
jolt/pkgs/qt.py ADDED
@@ -0,0 +1,35 @@
1
+ from jolt import attributes, Parameter, BooleanParameter
2
+ from jolt.pkgs import cmake, dbus, ninja, libglvnd, protobuf
3
+ from jolt.plugins import git, cmake
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_dbus_{system}")
8
+ @attributes.requires("requires_git")
9
+ @attributes.requires("requires_{system}_gl_{gl}")
10
+ @attributes.requires("requires_ninja")
11
+ @attributes.requires("requires_protobuf")
12
+ @attributes.system
13
+ @cmake.options("options_{system}_gl_{gl}")
14
+ @cmake.requires()
15
+ @cmake.use_ninja()
16
+ class Qt(cmake.CMake):
17
+ name = "qt"
18
+ version = Parameter("6.10.1", help="Qt version.")
19
+ gl = BooleanParameter(True, help="Enable OpenGL support.")
20
+ webengine = BooleanParameter(False, help="Enable WebEngine module.")
21
+
22
+ generator = "Ninja"
23
+ requires_dbus_linux = ["dbus"]
24
+ requires_git = ["git:path={buildroot}/git-qt,url=https://github.com/qt/qt5.git,rev=v{version},submodules=true"]
25
+ requires_ninja = ["ninja"]
26
+ requires_linux_gl_true = ["libglvnd"]
27
+ requires_protobuf = ["protobuf"]
28
+ srcdir = "{git[qt5]}"
29
+
30
+ options = [
31
+ "BUILD_qtwebengine={webengine[ON,OFF]}",
32
+ ]
33
+
34
+
35
+ TaskRegistry.get().add_task_class(Qt)
jolt/pkgs/rapidjson.py ADDED
@@ -0,0 +1,26 @@
1
+ from jolt import attributes, 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 RapidJSON(cmake.CMake):
11
+ name = "rapidjson"
12
+ version = Parameter("24b5e7a", help="rapidjson version.")
13
+ options = ["CMAKE_POLICY_VERSION_MINIMUM=3.5"]
14
+ requires_git = ["git:url=https://github.com/Tencent/rapidjson.git,rev={version}"]
15
+ srcdir = "{git[rapidjson]}"
16
+ options = [
17
+ "RAPIDJSON_BUILD_EXAMPLES=OFF",
18
+ "RAPIDJSON_BUILD_TESTS=OFF",
19
+ ]
20
+
21
+ def publish(self, artifact, tools):
22
+ super().publish(artifact, tools)
23
+ artifact.cxxinfo.incpaths.append("include")
24
+
25
+
26
+ TaskRegistry.get().add_task_class(RapidJSON)
jolt/pkgs/rapidyaml.py ADDED
@@ -0,0 +1,28 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.plugins import cmake, git
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_src")
7
+ @cmake.requires()
8
+ @cmake.use_ninja()
9
+ class RapidYAML(cmake.CMake):
10
+ name = "rapidyaml"
11
+ version = Parameter("0.7.0", help="RapidYAML version.")
12
+ shared = BooleanParameter(False, help="Build shared libraries.")
13
+ requires_src = ["git:url=https://github.com/biojppm/rapidyaml.git,rev=v{version},submodules=true"]
14
+ srcdir = "{git[rapidyaml]}"
15
+ options = [
16
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
17
+ "RYML_BUILD_TESTS=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("ryml")
25
+ artifact.cxxinfo.libraries.append("c4core")
26
+
27
+
28
+ TaskRegistry.get().add_task_class(RapidYAML)
jolt/pkgs/re2.py ADDED
@@ -0,0 +1,30 @@
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_abseil")
8
+ @attributes.requires("requires_git")
9
+ @cmake.requires()
10
+ @cmake.use_ninja()
11
+ class RE2(cmake.CMake):
12
+ name = "re2"
13
+ version = Parameter("2025-11-05", help="re2 version.")
14
+ shared = BooleanParameter(False, help="Build shared libraries.")
15
+ requires_abseil = ["abseil:shared={shared}"]
16
+ requires_git = ["git:url=https://github.com/google/re2.git,rev={version}"]
17
+ srcdir = "{git[re2]}"
18
+ options = [
19
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
20
+ "RE2_BUILD_TESTING=OFF",
21
+ ]
22
+
23
+ def publish(self, artifact, tools):
24
+ super().publish(artifact, tools)
25
+ artifact.cxxinfo.incpaths.append("include")
26
+ artifact.cxxinfo.libpaths.append("lib")
27
+ artifact.cxxinfo.libraries.append("re2")
28
+
29
+
30
+ TaskRegistry.get().add_task_class(RE2)
jolt/pkgs/re2c.py ADDED
@@ -0,0 +1,17 @@
1
+ from jolt import attributes, 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 Re2c(cmake.CMake):
11
+ name = "re2c"
12
+ version = Parameter("4.4", help="re2c version.")
13
+ requires_git = ["git:url=https://github.com/skvadrik/re2c.git,rev={version}"]
14
+ srcdir = "{git[re2c]}"
15
+
16
+
17
+ TaskRegistry.get().add_task_class(Re2c)
jolt/pkgs/readline.py ADDED
@@ -0,0 +1,15 @@
1
+ from jolt import Parameter, attributes
2
+ from jolt.plugins import autotools, fetch, pkgconfig
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_src")
7
+ @pkgconfig.to_cxxinfo(["readline"])
8
+ class Readline(autotools.Autotools):
9
+ name = "readline"
10
+ version = Parameter("8.2", help="Readline version.")
11
+ requires_src = ["fetch:alias=src,url=https://ftpmirror.gnu.org/gnu/readline/readline-{version}.tar.gz"]
12
+ srcdir = "{fetch[src]}/readline-{version}"
13
+
14
+
15
+ TaskRegistry.get().add_task_class(Readline)
jolt/pkgs/rust.py ADDED
@@ -0,0 +1,41 @@
1
+ from jolt import Download, Parameter, attributes
2
+ from jolt.pkgs import rust
3
+ from jolt.plugins import git, rust
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.attribute("triple", "triple_{system}_{arch}")
8
+ @attributes.arch
9
+ @attributes.system
10
+ class Rust(Download):
11
+ name = "rust"
12
+ version = Parameter("1.92.0", help="Rust version.")
13
+ url = "https://static.rust-lang.org/dist/rust-{version}-{triple}.tar.xz"
14
+ collect = [{"files": "*", "cwd": "rust-{version}-{triple}"}]
15
+ components = ["cargo", "rustc", "rust-std-{triple}"]
16
+
17
+ triple_linux_x86_64 = "x86_64-unknown-linux-gnu"
18
+ triple_windows_x86_64 = "x86_64-pc-windows-msvc"
19
+ triple_darwin_x86_64 = "x86_64-apple-darwin"
20
+
21
+ def publish(self, artifact, tools):
22
+ self.installdir = tools.builddir("install")
23
+ with tools.cwd(self._extractdir, "rust-{version}-{triple}"):
24
+ for component in tools.expand(self.components):
25
+ artifact.collect("*", cwd=component)
26
+ artifact.environ.PATH.append("bin")
27
+
28
+
29
+ @attributes.requires("requires_git")
30
+ @attributes.requires("requires_rust")
31
+ class RustBindgen(rust.Rust):
32
+ name = "rust-bindgen"
33
+ version = Parameter("0.72.1", help="Rust Bindgen version.")
34
+
35
+ requires_git = ["git:url=https://github.com/rust-lang/rust-bindgen.git,rev=v{version}"]
36
+ requires_rust = ["rust"]
37
+ srcdir = "{git[rust-bindgen]}/bindgen-cli"
38
+
39
+
40
+ TaskRegistry.get().add_task_class(Rust)
41
+ TaskRegistry.get().add_task_class(RustBindgen)