jolt 0.9.76__py3-none-any.whl → 0.9.429__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 (201) hide show
  1. jolt/__init__.py +88 -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 +839 -367
  6. jolt/chroot.py +156 -0
  7. jolt/cli.py +362 -143
  8. jolt/common_pb2.py +63 -0
  9. jolt/common_pb2_grpc.py +4 -0
  10. jolt/config.py +99 -42
  11. jolt/error.py +19 -4
  12. jolt/expires.py +2 -2
  13. jolt/filesystem.py +8 -6
  14. jolt/graph.py +705 -117
  15. jolt/hooks.py +63 -1
  16. jolt/influence.py +129 -6
  17. jolt/loader.py +369 -121
  18. jolt/log.py +225 -63
  19. jolt/manifest.py +28 -38
  20. jolt/options.py +35 -10
  21. jolt/pkgs/abseil.py +42 -0
  22. jolt/pkgs/asio.py +25 -0
  23. jolt/pkgs/autoconf.py +41 -0
  24. jolt/pkgs/automake.py +41 -0
  25. jolt/pkgs/b2.py +31 -0
  26. jolt/pkgs/boost.py +111 -0
  27. jolt/pkgs/boringssl.py +32 -0
  28. jolt/pkgs/busybox.py +39 -0
  29. jolt/pkgs/bzip2.py +43 -0
  30. jolt/pkgs/cares.py +29 -0
  31. jolt/pkgs/catch2.py +36 -0
  32. jolt/pkgs/cbindgen.py +17 -0
  33. jolt/pkgs/cista.py +19 -0
  34. jolt/pkgs/clang.py +44 -0
  35. jolt/pkgs/cli11.py +23 -0
  36. jolt/pkgs/cmake.py +48 -0
  37. jolt/pkgs/cpython.py +196 -0
  38. jolt/pkgs/crun.py +29 -0
  39. jolt/pkgs/curl.py +38 -0
  40. jolt/pkgs/dbus.py +18 -0
  41. jolt/pkgs/double_conversion.py +24 -0
  42. jolt/pkgs/fastfloat.py +21 -0
  43. jolt/pkgs/ffmpeg.py +28 -0
  44. jolt/pkgs/flatbuffers.py +29 -0
  45. jolt/pkgs/fmt.py +27 -0
  46. jolt/pkgs/fstree.py +20 -0
  47. jolt/pkgs/gflags.py +18 -0
  48. jolt/pkgs/glib.py +18 -0
  49. jolt/pkgs/glog.py +25 -0
  50. jolt/pkgs/glslang.py +21 -0
  51. jolt/pkgs/golang.py +16 -11
  52. jolt/pkgs/googlebenchmark.py +18 -0
  53. jolt/pkgs/googletest.py +46 -0
  54. jolt/pkgs/gperf.py +15 -0
  55. jolt/pkgs/grpc.py +73 -0
  56. jolt/pkgs/hdf5.py +19 -0
  57. jolt/pkgs/help2man.py +14 -0
  58. jolt/pkgs/inja.py +28 -0
  59. jolt/pkgs/jsoncpp.py +31 -0
  60. jolt/pkgs/libarchive.py +43 -0
  61. jolt/pkgs/libcap.py +44 -0
  62. jolt/pkgs/libdrm.py +44 -0
  63. jolt/pkgs/libedit.py +42 -0
  64. jolt/pkgs/libevent.py +31 -0
  65. jolt/pkgs/libexpat.py +27 -0
  66. jolt/pkgs/libfastjson.py +21 -0
  67. jolt/pkgs/libffi.py +16 -0
  68. jolt/pkgs/libglvnd.py +30 -0
  69. jolt/pkgs/libogg.py +28 -0
  70. jolt/pkgs/libpciaccess.py +18 -0
  71. jolt/pkgs/libseccomp.py +21 -0
  72. jolt/pkgs/libtirpc.py +24 -0
  73. jolt/pkgs/libtool.py +42 -0
  74. jolt/pkgs/libunwind.py +35 -0
  75. jolt/pkgs/libva.py +18 -0
  76. jolt/pkgs/libvorbis.py +33 -0
  77. jolt/pkgs/libxml2.py +35 -0
  78. jolt/pkgs/libxslt.py +17 -0
  79. jolt/pkgs/libyajl.py +16 -0
  80. jolt/pkgs/llvm.py +81 -0
  81. jolt/pkgs/lua.py +54 -0
  82. jolt/pkgs/lz4.py +26 -0
  83. jolt/pkgs/m4.py +14 -0
  84. jolt/pkgs/make.py +17 -0
  85. jolt/pkgs/mesa.py +81 -0
  86. jolt/pkgs/meson.py +17 -0
  87. jolt/pkgs/mstch.py +28 -0
  88. jolt/pkgs/mysql.py +60 -0
  89. jolt/pkgs/nasm.py +49 -0
  90. jolt/pkgs/ncurses.py +30 -0
  91. jolt/pkgs/ng_log.py +25 -0
  92. jolt/pkgs/ninja.py +45 -0
  93. jolt/pkgs/nlohmann_json.py +25 -0
  94. jolt/pkgs/nodejs.py +19 -11
  95. jolt/pkgs/opencv.py +24 -0
  96. jolt/pkgs/openjdk.py +26 -0
  97. jolt/pkgs/openssl.py +103 -0
  98. jolt/pkgs/paho.py +76 -0
  99. jolt/pkgs/patchelf.py +16 -0
  100. jolt/pkgs/perl.py +42 -0
  101. jolt/pkgs/pkgconfig.py +64 -0
  102. jolt/pkgs/poco.py +39 -0
  103. jolt/pkgs/protobuf.py +77 -0
  104. jolt/pkgs/pugixml.py +27 -0
  105. jolt/pkgs/python.py +19 -0
  106. jolt/pkgs/qt.py +35 -0
  107. jolt/pkgs/rapidjson.py +26 -0
  108. jolt/pkgs/rapidyaml.py +28 -0
  109. jolt/pkgs/re2.py +30 -0
  110. jolt/pkgs/re2c.py +17 -0
  111. jolt/pkgs/readline.py +15 -0
  112. jolt/pkgs/rust.py +41 -0
  113. jolt/pkgs/sdl.py +28 -0
  114. jolt/pkgs/simdjson.py +27 -0
  115. jolt/pkgs/soci.py +46 -0
  116. jolt/pkgs/spdlog.py +29 -0
  117. jolt/pkgs/spirv_llvm.py +21 -0
  118. jolt/pkgs/spirv_tools.py +24 -0
  119. jolt/pkgs/sqlite.py +83 -0
  120. jolt/pkgs/ssl.py +12 -0
  121. jolt/pkgs/texinfo.py +15 -0
  122. jolt/pkgs/tomlplusplus.py +22 -0
  123. jolt/pkgs/wayland.py +26 -0
  124. jolt/pkgs/x11.py +58 -0
  125. jolt/pkgs/xerces_c.py +20 -0
  126. jolt/pkgs/xorg.py +360 -0
  127. jolt/pkgs/xz.py +29 -0
  128. jolt/pkgs/yamlcpp.py +30 -0
  129. jolt/pkgs/zeromq.py +47 -0
  130. jolt/pkgs/zlib.py +69 -0
  131. jolt/pkgs/zstd.py +33 -0
  132. jolt/plugins/alias.py +3 -0
  133. jolt/plugins/allure.py +5 -2
  134. jolt/plugins/autotools.py +66 -0
  135. jolt/plugins/cache.py +133 -0
  136. jolt/plugins/cmake.py +74 -6
  137. jolt/plugins/conan.py +238 -0
  138. jolt/plugins/cxx.py +698 -0
  139. jolt/plugins/cxxinfo.py +7 -0
  140. jolt/plugins/dashboard.py +1 -1
  141. jolt/plugins/docker.py +91 -23
  142. jolt/plugins/email.py +5 -2
  143. jolt/plugins/email.xslt +144 -101
  144. jolt/plugins/environ.py +11 -0
  145. jolt/plugins/fetch.py +141 -0
  146. jolt/plugins/gdb.py +44 -21
  147. jolt/plugins/gerrit.py +1 -14
  148. jolt/plugins/git.py +316 -101
  149. jolt/plugins/googletest.py +522 -1
  150. jolt/plugins/http.py +36 -38
  151. jolt/plugins/libtool.py +63 -0
  152. jolt/plugins/linux.py +990 -0
  153. jolt/plugins/logstash.py +4 -4
  154. jolt/plugins/meson.py +61 -0
  155. jolt/plugins/ninja-compdb.py +107 -31
  156. jolt/plugins/ninja.py +929 -134
  157. jolt/plugins/paths.py +11 -1
  158. jolt/plugins/pkgconfig.py +219 -0
  159. jolt/plugins/podman.py +148 -91
  160. jolt/plugins/python.py +137 -0
  161. jolt/plugins/remote_execution/__init__.py +0 -0
  162. jolt/plugins/remote_execution/administration_pb2.py +46 -0
  163. jolt/plugins/remote_execution/administration_pb2_grpc.py +170 -0
  164. jolt/plugins/remote_execution/log_pb2.py +32 -0
  165. jolt/plugins/remote_execution/log_pb2_grpc.py +68 -0
  166. jolt/plugins/remote_execution/scheduler_pb2.py +41 -0
  167. jolt/plugins/remote_execution/scheduler_pb2_grpc.py +141 -0
  168. jolt/plugins/remote_execution/worker_pb2.py +38 -0
  169. jolt/plugins/remote_execution/worker_pb2_grpc.py +112 -0
  170. jolt/plugins/report.py +12 -2
  171. jolt/plugins/rust.py +25 -0
  172. jolt/plugins/scheduler.py +710 -0
  173. jolt/plugins/selfdeploy/setup.py +9 -4
  174. jolt/plugins/selfdeploy.py +138 -88
  175. jolt/plugins/strings.py +35 -22
  176. jolt/plugins/symlinks.py +26 -11
  177. jolt/plugins/telemetry.py +5 -2
  178. jolt/plugins/timeline.py +13 -3
  179. jolt/plugins/volume.py +46 -48
  180. jolt/scheduler.py +591 -191
  181. jolt/tasks.py +1783 -245
  182. jolt/templates/export.sh.template +12 -6
  183. jolt/templates/timeline.html.template +44 -47
  184. jolt/timer.py +22 -0
  185. jolt/tools.py +749 -302
  186. jolt/utils.py +245 -18
  187. jolt/version.py +1 -1
  188. jolt/version_utils.py +2 -2
  189. jolt/xmldom.py +12 -2
  190. {jolt-0.9.76.dist-info → jolt-0.9.429.dist-info}/METADATA +98 -38
  191. jolt-0.9.429.dist-info/RECORD +207 -0
  192. {jolt-0.9.76.dist-info → jolt-0.9.429.dist-info}/WHEEL +1 -1
  193. jolt/plugins/amqp.py +0 -834
  194. jolt/plugins/debian.py +0 -338
  195. jolt/plugins/ftp.py +0 -181
  196. jolt/plugins/ninja-cache.py +0 -64
  197. jolt/plugins/ninjacli.py +0 -271
  198. jolt/plugins/repo.py +0 -253
  199. jolt-0.9.76.dist-info/RECORD +0 -79
  200. {jolt-0.9.76.dist-info → jolt-0.9.429.dist-info}/entry_points.txt +0 -0
  201. {jolt-0.9.76.dist-info → jolt-0.9.429.dist-info}/top_level.txt +0 -0
jolt/pkgs/nodejs.py CHANGED
@@ -1,4 +1,4 @@
1
- from jolt import attributes as jolt_attributes
1
+ from jolt import attributes
2
2
  from jolt import Download
3
3
  from jolt import Parameter
4
4
  from jolt.tasks import TaskRegistry
@@ -6,21 +6,29 @@ from jolt.tasks import TaskRegistry
6
6
  import platform
7
7
 
8
8
 
9
- @jolt_attributes.system
10
- @jolt_attributes.attribute("bin", "bin_{system}")
11
- @jolt_attributes.attribute("url", "url_{system}")
9
+ @attributes.system
12
10
  class NodeJS(Download):
13
11
  name = "nodejs"
14
- version = Parameter("16.15.1", help="NodeJS version.")
15
- url_linux = "https://nodejs.org/dist/v{version}/node-v{version}-linux-{arch}.tar.gz"
16
- url_windows = "https://nodejs.org/dist/v{version}/node-v{version}-win-{arch}.zip"
17
- bin_linux = "node-v{version}-linux-{arch}/bin"
18
- bin_windows = "node-v{version}-win-{arch}/bin"
12
+ version = Parameter("25.2.1", help="NodeJS version.")
13
+ url = "https://nodejs.org/dist/v{version}/node-v{version}-{os}-{arch}.{ext}"
14
+ bin = "node-v{version}-{os}-{arch}/bin"
15
+
16
+ @property
17
+ def os(self):
18
+ if self.system == "windows":
19
+ return "win"
20
+ return self.system
21
+
22
+ @property
23
+ def ext(self):
24
+ if self.system == "windows":
25
+ return "zip"
26
+ return "tar.gz"
19
27
 
20
28
  @property
21
29
  def arch(self):
22
- arch = platform.machine()
23
- if arch == "x86_64":
30
+ arch = platform.machine().lower()
31
+ if arch in ["amd64", "x86_64"]:
24
32
  return "x64"
25
33
  if arch in ["i386", "i486", "i586", "i686"]:
26
34
  return "x86"
jolt/pkgs/opencv.py ADDED
@@ -0,0 +1,24 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.pkgs import cmake, protobuf
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 OpenCV(cmake.CMake):
11
+ name = "opencv"
12
+ version = Parameter("4.12.0", help="OpenCV version.")
13
+ shared = BooleanParameter(False, help="Build shared libraries.")
14
+ requires_git = ["git:url=https://github.com/opencv/opencv.git,rev={version}"]
15
+ srcdir = "{git[opencv]}"
16
+ options = [
17
+ "BUILD_EXAMPLES=OFF",
18
+ "BUILD_TESTS=OFF",
19
+ "BUILD_PERF_TESTS=OFF",
20
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
21
+ ]
22
+
23
+
24
+ TaskRegistry.get().add_task_class(OpenCV)
jolt/pkgs/openjdk.py ADDED
@@ -0,0 +1,26 @@
1
+ from jolt import attributes
2
+ from jolt import Download
3
+ from jolt import Parameter
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.attribute("collect", "collect_{system}")
8
+ @attributes.attribute("url", "url_{system}")
9
+ @attributes.system
10
+ class OpenJDK(Download):
11
+ name = "openjdk"
12
+ version = Parameter("25.0.1", const=True, help="OpenJDK version.")
13
+
14
+ collect_darwin = [{"files": "*", "cwd": f"jdk-{version}.jdk/Contents/Home"}]
15
+ collect_linux = [{"files": "*", "cwd": f"jdk-{version}"}]
16
+ collect_windows = collect_linux
17
+ url_darwin = "https://download.java.net/java/GA/jdk25.0.1/2fbf10d8c78e40bd87641c434705079d/8/GPL/openjdk-25.0.1_macos-x64_bin.tar.gz"
18
+ url_linux = "https://download.java.net/java/GA/jdk25.0.1/2fbf10d8c78e40bd87641c434705079d/8/GPL/openjdk-25.0.1_linux-x64_bin.tar.gz"
19
+ url_windows = "https://download.java.net/java/GA/jdk25.0.1/2fbf10d8c78e40bd87641c434705079d/8/GPL/openjdk-25.0.1_windows-x64_bin.zip"
20
+
21
+ def publish(self, artifact, tools):
22
+ super().publish(artifact, tools)
23
+ artifact.environ.PATH.append("bin")
24
+
25
+
26
+ TaskRegistry.get().add_task_class(OpenJDK)
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)