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/cpython.py ADDED
@@ -0,0 +1,196 @@
1
+ from jolt import attributes, Alias, BooleanParameter, Parameter, Task
2
+ from jolt.pkgs import libffi, sqlite, ssl, zlib, zstd, xz
3
+ from jolt.plugins import autotools, git, pkgconfig
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ def _unpack_adjust_scripts(artifact, tools):
8
+ bindir = "Scripts" if artifact.strings.system == "windows" else "bin"
9
+
10
+ with tools.cwd(artifact.path, bindir):
11
+ # Adjust paths in scripts
12
+ for script in tools.glob("*"):
13
+ # Ignore python executables
14
+ if script.startswith("python"):
15
+ continue
16
+ tools.replace_in_file(script, artifact.strings.install_prefix, artifact.final_path)
17
+
18
+ artifact.strings.install_prefix = artifact.final_path
19
+
20
+
21
+ @attributes.requires("requires_git")
22
+ @attributes.requires("requires_libffi_{libffi[on,off]}")
23
+ @attributes.requires("requires_sqlite_{sqlite[on,off]}")
24
+ @attributes.requires("requires_ssl_{ssl[on,off]}")
25
+ @attributes.requires("requires_zlib_{zlib[on,off]}")
26
+ @attributes.requires("requires_zstd_{zstd[on,off]}")
27
+ @attributes.requires("requires_xz_{xz[on,off]}")
28
+ @pkgconfig.requires()
29
+ class CPythonPosix(autotools.Autotools):
30
+ """ Builds and publishes CPython libraries and headers. """
31
+
32
+ name = "cpython/posix"
33
+ version = Parameter("3.14.2", help="CPython version.")
34
+ libffi = BooleanParameter(True, help="Enable libffi support")
35
+ sqlite = BooleanParameter(True, help="Enable SQLite support")
36
+ ssl = BooleanParameter(True, help="Enable SSL support")
37
+ zlib = BooleanParameter(True, help="Enable zlib support")
38
+ zstd = BooleanParameter(True, help="Enable zstd support")
39
+ xz = BooleanParameter(True, help="Enable xz support")
40
+ requires_git = ["git:url=https://github.com/python/cpython.git,rev=v{version}"]
41
+ requires_libffi_on = ["libffi"]
42
+ requires_sqlite_on = ["sqlite"]
43
+ requires_ssl_on = ["virtual/ssl"]
44
+ requires_zlib_on = ["virtual/zlib"]
45
+ requires_zstd_on = ["zstd"]
46
+ requires_xz_on = ["xz:pic=true"]
47
+ srcdir = "{git[cpython]}"
48
+ options = [
49
+ "--enable-optimizations",
50
+ "--with-ensurepip=install",
51
+ ]
52
+
53
+ @property
54
+ def version_major(self):
55
+ ver = str(self.version).split(".")
56
+ return f"{ver[0]}.{ver[1]}"
57
+
58
+ def publish(self, artifact, tools):
59
+ super().publish(artifact, tools)
60
+ artifact.strings.version = str(self.version)
61
+ artifact.strings.version_major = str(self.version_major)
62
+
63
+ def unpack(self, artifact, tools):
64
+ super().unpack(artifact, tools)
65
+ _unpack_adjust_scripts(artifact, tools)
66
+
67
+
68
+ @attributes.requires("requires_git")
69
+ @attributes.requires("requires_ssl_{ssl[on,off]}")
70
+ @attributes.common_metadata()
71
+ class CPythonWin32(Task):
72
+ """ Builds and publishes CPython libraries and headers. """
73
+
74
+ name = "cpython/win32"
75
+ version = Parameter("3.14.2", help="CPython version.")
76
+ ssl = BooleanParameter(True, help="Enable SSL support")
77
+ requires_git = ["git:url=https://github.com/python/cpython.git,rev=v{version}"]
78
+ requires_ssl_on = ["virtual/ssl"]
79
+ srcdir = "{git[cpython]}"
80
+
81
+ @property
82
+ def version_major(self):
83
+ ver = str(self.version).split(".")
84
+ return f"{ver[0]}.{ver[1]}"
85
+
86
+ @property
87
+ def version_major_compact(self):
88
+ ver = str(self.version).split(".")
89
+ return f"{ver[0]}{ver[1]}"
90
+
91
+ def run(self, deps, tools):
92
+ with tools.cwd(self.srcdir, "PCbuild"):
93
+ tools.run("build.bat")
94
+
95
+ def publish(self, artifact, tools):
96
+ artifact.environ.CMAKE_PREFIX_PATH.append(".")
97
+ artifact.strings.version = str(self.version)
98
+ artifact.strings.version_major = str(self.version_major)
99
+ with tools.cwd(self.srcdir):
100
+ artifact.collect("Include", "include")
101
+ artifact.collect("Lib", "lib")
102
+ with tools.cwd(self.srcdir, "PCbuild", "amd64"):
103
+ artifact.collect("python.exe", "bin/python3.exe")
104
+ artifact.collect("python.exe", "bin/python{version_major}.exe")
105
+ artifact.collect("*.dll", "bin/")
106
+ artifact.collect("*.lib", "lib/")
107
+ with tools.tmpdir() as tmp, tools.cwd(tmp):
108
+ tools.write_file(
109
+ "python3.pc",
110
+ """
111
+ # See: man pkg-config
112
+ prefix=${{pcfiledir}}/../..
113
+ exec_prefix=${{prefix}}/bin
114
+ libdir=${{prefix}}/lib
115
+ includedir=${{prefix}}/include
116
+
117
+ Name: Python
118
+ Description: Build a C extension for Python
119
+ Version: {version}-{identity}
120
+ Libs: -L${{libdir}} -lpython3
121
+ Cflags: -I${{includedir}}
122
+ """)
123
+ tools.write_file(
124
+ "python3-embed.pc",
125
+ """
126
+ # See: man pkg-config
127
+ prefix=${{pcfiledir}}/../..
128
+ exec_prefix=${{prefix}}/bin
129
+ libdir=${{prefix}}/lib
130
+ includedir=${{prefix}}/include
131
+
132
+ Name: Python
133
+ Description: Embed Python into an application
134
+ Version: {version}-{identity}
135
+ Libs: -L${{libdir}} -lpython{version_major_compact}
136
+ Cflags: -I${{includedir}}
137
+ """)
138
+ artifact.collect("*.pc", "lib/pkgconfig/")
139
+
140
+ def unpack(self, artifact, tools):
141
+ super().unpack(artifact, tools)
142
+ _unpack_adjust_scripts(artifact, tools)
143
+
144
+
145
+ @attributes.requires("requires_{system}")
146
+ @attributes.system
147
+ class CPython(Alias):
148
+ """ Alias for CPython """
149
+ name = "cpython"
150
+ version = Parameter("3.14.2", help="CPython version.")
151
+ requires_darwin = ["cpython/posix:version={version}"]
152
+ requires_linux = requires_darwin
153
+ requires_windows = ["cpython/win32:version={version}"]
154
+
155
+
156
+ @pkgconfig.to_cxxinfo("python3-embed")
157
+ @attributes.common_metadata()
158
+ @attributes.system
159
+ @pkgconfig.requires()
160
+ class CPythonEmbed(Task):
161
+ name = "cpython/embed"
162
+ requires = ["cpython"]
163
+ selfsustained = True
164
+
165
+ def run(self, deps, tools):
166
+ name = "cpython/win32" if self.system == "windows" else "cpython/posix"
167
+ self.cpython = deps[name]
168
+
169
+ def publish(self, artifact, tools):
170
+ with tools.cwd(self.cpython.path):
171
+ artifact.collect("*", symlinks=True)
172
+
173
+
174
+ @pkgconfig.to_cxxinfo("python3")
175
+ @attributes.common_metadata()
176
+ @attributes.system
177
+ @pkgconfig.requires()
178
+ class CPythonExtend(Task):
179
+ name = "cpython/extend"
180
+ requires = ["cpython"]
181
+ selfsustained = True
182
+
183
+ def run(self, deps, tools):
184
+ name = "cpython/win32" if self.system == "windows" else "cpython/posix"
185
+ self.cpython = deps[name]
186
+
187
+ def publish(self, artifact, tools):
188
+ with tools.cwd(self.cpython.path):
189
+ artifact.collect("*", symlinks=True)
190
+
191
+
192
+ TaskRegistry.get().add_task_class(CPythonPosix)
193
+ TaskRegistry.get().add_task_class(CPythonWin32)
194
+ TaskRegistry.get().add_task_class(CPython)
195
+ TaskRegistry.get().add_task_class(CPythonEmbed)
196
+ TaskRegistry.get().add_task_class(CPythonExtend)
jolt/pkgs/crun.py ADDED
@@ -0,0 +1,29 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.pkgs import libcap
3
+ from jolt.plugins import git, autotools, pkgconfig
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.requires("requires_libcap_{caps[on,off]}")
9
+ @autotools.requires()
10
+ @pkgconfig.requires()
11
+ class CRun(autotools.Autotools):
12
+ name = "crun"
13
+ version = Parameter("1.26", help="crun version.")
14
+ caps = BooleanParameter(False, help="Enable capabilities support.")
15
+ systemd = BooleanParameter(False, help="Enable systemd support.")
16
+ requires_git = ["git:url=https://github.com/containers/crun.git,rev={version},submodules=true"]
17
+ requires_caps_on = ["libcap"]
18
+ srcdir = "{git[crun]}"
19
+ options = [
20
+ # Unable to get ./configure to pick these up from pkg-config
21
+ "--disable-criu",
22
+ "--disable-seccomp",
23
+ "--enable-embedded-yajl",
24
+ "{caps[,--disable-caps]}",
25
+ "{systemd[,--disable-systemd]}",
26
+ ]
27
+
28
+
29
+ TaskRegistry.get().add_task_class(CRun)
jolt/pkgs/curl.py ADDED
@@ -0,0 +1,38 @@
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
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.requires("requires_ssl")
9
+ @attributes.system
10
+ @cmake.requires()
11
+ @cmake.use_ninja()
12
+ class Curl(cmake.CMake):
13
+ name = "curl"
14
+ version = Parameter("8.17.0", help="Curl version.")
15
+ shared = BooleanParameter(False, help="Build shared libraries.")
16
+ requires_git = ["git:url=https://github.com/curl/curl.git,rev=curl-{_version_tag},submodules=true"]
17
+ requires_ssl = ["virtual/ssl"]
18
+ srcdir = "{git[curl]}"
19
+ options = [
20
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
21
+ "CURL_USE_LIBPSL=OFF",
22
+ ]
23
+
24
+ @property
25
+ def _version_tag(self):
26
+ return str(self.version).replace('.', '_')
27
+
28
+ def publish(self, artifact, tools):
29
+ super().publish(artifact, tools)
30
+ artifact.cxxinfo.incpaths.append("include")
31
+ artifact.cxxinfo.libpaths.append("lib")
32
+ if self.system == "windows":
33
+ artifact.cxxinfo.libraries.append("libcurl_imp")
34
+ else:
35
+ artifact.cxxinfo.libraries.append("curl")
36
+
37
+
38
+ TaskRegistry.get().add_task_class(Curl)
jolt/pkgs/dbus.py ADDED
@@ -0,0 +1,18 @@
1
+ from jolt import attributes, Parameter
2
+ from jolt.pkgs import cmake
3
+ from jolt.plugins import git, cmake, pkgconfig
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @cmake.requires()
9
+ @cmake.use_ninja()
10
+ @pkgconfig.requires()
11
+ class DBus(cmake.CMake):
12
+ name = "dbus"
13
+ version = Parameter("1.16.2", help="DBus version.")
14
+ requires_git = ["git:url=https://gitlab.freedesktop.org/dbus/dbus.git,rev=dbus-{version}"]
15
+ srcdir = "{git[dbus]}"
16
+
17
+
18
+ TaskRegistry.get().add_task_class(DBus)
@@ -0,0 +1,24 @@
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 DoubleConversion(cmake.CMake):
11
+ name = "double-conversion"
12
+ version = Parameter("3.4.0", help="double_conversion version.")
13
+ options = ["BUILD_SHARED_LIBS=ON"]
14
+ requires_git = ["git:url=https://github.com/google/double-conversion.git,rev=v{version}"]
15
+ srcdir = "{git[double-conversion]}"
16
+
17
+ def publish(self, artifact, tools):
18
+ super().publish(artifact, tools)
19
+ artifact.cxxinfo.incpaths.append("include")
20
+ artifact.cxxinfo.libpaths.append("lib")
21
+ artifact.cxxinfo.libraries.append("double-conversion")
22
+
23
+
24
+ TaskRegistry.get().add_task_class(DoubleConversion)
jolt/pkgs/fastfloat.py ADDED
@@ -0,0 +1,21 @@
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 FastFloat(cmake.CMake):
11
+ name = "fastfloat"
12
+ version = Parameter("8.1.0", help="fastfloat version.")
13
+ requires_git = ["git:url=https://github.com/fastfloat/fast_float.git,rev=v{version}"]
14
+ srcdir = "{git[fast_float]}"
15
+
16
+ def publish(self, artifact, tools):
17
+ super().publish(artifact, tools)
18
+ artifact.cxxinfo.incpaths.append("include")
19
+
20
+
21
+ TaskRegistry.get().add_task_class(FastFloat)
jolt/pkgs/ffmpeg.py ADDED
@@ -0,0 +1,28 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.pkgs import nasm, pkgconfig, xz, xorg
3
+ from jolt.plugins import git, autotools
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.requires("requires_{system}_libx11")
9
+ @attributes.requires("requires_nasm")
10
+ @attributes.requires("requires_xz")
11
+ @attributes.system
12
+ @autotools.requires()
13
+ class FFmpeg(autotools.Autotools):
14
+ name = "ffmpeg"
15
+ version = Parameter("8.0.1", help="ffmpeg version.")
16
+ shared = BooleanParameter(False, help="Build shared libraries.")
17
+ requires_git = ["git:url=https://github.com/FFmpeg/FFmpeg.git,rev=n{version}"]
18
+ requires_linux_libx11 = ["libx11"]
19
+ requires_nasm = ["nasm"]
20
+ requires_xz = ["xz"]
21
+ srcdir = "{git[FFmpeg]}"
22
+ options = [
23
+ "--{shared[enable,disable]}-shared",
24
+ "--{shared[disable,enable]}-static",
25
+ ]
26
+
27
+
28
+ TaskRegistry.get().add_task_class(FFmpeg)
@@ -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 Flatbuffers(cmake.CMake):
11
+ name = "flatbuffers"
12
+ version = Parameter("25.9.23", help="Flatbuffers version.")
13
+ shared = BooleanParameter(False, help="Build shared libraries.")
14
+ requires_git = ["git:url=https://github.com/google/flatbuffers.git,rev=v{version}"]
15
+ srcdir = "{git[flatbuffers]}"
16
+ options = [
17
+ "FLATBUFFERS_BUILD_FLATLIB={shared[OFF,ON]}",
18
+ "FLATBUFFERS_BUILD_SHAREDLIB={shared[ON,OFF]}",
19
+ "FLATBUFFERS_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("flatbuffers")
27
+
28
+
29
+ TaskRegistry.get().add_task_class(Flatbuffers)
jolt/pkgs/fmt.py ADDED
@@ -0,0 +1,27 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.plugins import git, cmake
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_git")
7
+ @cmake.requires()
8
+ @cmake.use_ninja()
9
+ class Fmt(cmake.CMake):
10
+ name = "fmt"
11
+ version = Parameter("12.1.0", help="Fmt version.")
12
+ shared = BooleanParameter(False, help="Build shared libraries.")
13
+ requires_git = ["git:url=https://github.com/fmtlib/fmt.git,rev={version}"]
14
+ srcdir = "{git[fmt]}"
15
+ options = [
16
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
17
+ "FMT_TEST=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("fmt")
25
+
26
+
27
+ TaskRegistry.get().add_task_class(Fmt)
jolt/pkgs/fstree.py ADDED
@@ -0,0 +1,20 @@
1
+ from jolt import attributes, Parameter, Task
2
+ from jolt.tasks import TaskRegistry
3
+
4
+
5
+ @attributes.system
6
+ class Fstree(Task):
7
+ name = "fstree"
8
+ version = Parameter("24.11.128")
9
+
10
+ def publish(self, artifact, tools):
11
+ self.ext = ".exe" if self.system == "windows" else ""
12
+ with tools.cwd(tools.builddir()):
13
+ tools.mkdir("jolt/bin")
14
+ tools.download("https://github.com/srand/fstree/releases/download/{version}/fstree-{system}-x86_64{ext}", "jolt/bin/fstree-{system}-x86_64{ext}")
15
+ tools.chmod("jolt/bin/fstree-{system}-x86_64{ext}", 0o755)
16
+ artifact.collect("jolt/bin/fstree-{system}-x86_64{ext}", "bin/fstree{ext}")
17
+ artifact.environ.PATH.append("bin")
18
+
19
+
20
+ TaskRegistry.get().add_task_class(Fstree)
jolt/pkgs/gflags.py ADDED
@@ -0,0 +1,18 @@
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 GFlags(cmake.CMake):
11
+ name = "gflags"
12
+ version = Parameter("2.3.0", help="gflags version.")
13
+ options = ["BUILD_SHARED_LIBS=ON"]
14
+ requires_git = ["git:url=https://github.com/gflags/gflags.git,rev=v{version}"]
15
+ srcdir = "{git[gflags]}"
16
+
17
+
18
+ TaskRegistry.get().add_task_class(GFlags)
jolt/pkgs/glib.py ADDED
@@ -0,0 +1,18 @@
1
+ from jolt import attributes, Parameter
2
+ from jolt.pkgs import meson, zlib
3
+ from jolt.plugins import git, meson
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.requires("requires_zlib")
9
+ @meson.requires()
10
+ class GLib(meson.Meson):
11
+ name = "glib"
12
+ version = Parameter("2.86.3", help="glib version.")
13
+ requires_git = ["git:url=https://gitlab.gnome.org/GNOME/glib.git,rev={version},submodules=true"]
14
+ requires_zlib = ["zlib"]
15
+ srcdir = "{git[glib]}"
16
+
17
+
18
+ TaskRegistry.get().add_task_class(GLib)
jolt/pkgs/glog.py ADDED
@@ -0,0 +1,25 @@
1
+ from jolt import attributes, Parameter
2
+ from jolt.pkgs import cmake, gflags
3
+ from jolt.plugins import git, cmake
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_gflags")
8
+ @attributes.requires("requires_git")
9
+ @cmake.requires()
10
+ @cmake.use_ninja()
11
+ class Glog(cmake.CMake):
12
+ name = "glog"
13
+ version = Parameter("0.7.1", help="glog version.")
14
+ options = ["BUILD_SHARED_LIBS=ON"]
15
+ requires_gflags = ["gflags"]
16
+ requires_git = ["git:url=https://github.com/google/glog.git,rev=v{version}"]
17
+ srcdir = "{git[glog]}"
18
+ options = ["CMAKE_CXX_STANDARD=14"]
19
+
20
+ def run(self, deps, tools):
21
+ self.warning("GLog is deprecated and unmaintained. Consider using ng-log instead.")
22
+ super().run(deps, tools)
23
+
24
+
25
+ TaskRegistry.get().add_task_class(Glog)
jolt/pkgs/glslang.py ADDED
@@ -0,0 +1,21 @@
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 Glslang(cmake.CMake):
11
+ name = "glslang"
12
+ version = Parameter("16.1.0", help="Glslang version.")
13
+ requires_git = ["git:url=https://github.com/KhronosGroup/glslang.git,rev={version}"]
14
+
15
+ def run(self, deps, tools):
16
+ with tools.cwd("{git[glslang]}"):
17
+ tools.run("python3 update_glslang_sources.py")
18
+ super().run(deps, tools)
19
+
20
+
21
+ TaskRegistry.get().add_task_class(Glslang)
jolt/pkgs/golang.py CHANGED
@@ -6,31 +6,36 @@ from jolt.tasks import TaskRegistry
6
6
  import platform
7
7
 
8
8
 
9
+ @jolt_attributes.arch
9
10
  @jolt_attributes.system
10
- @jolt_attributes.attribute("url", "url_{system}")
11
11
  class Golang(Download):
12
12
  name = "golang"
13
- version = Parameter("1.18.3", help="Go version.")
14
- url_linux = "https://go.dev/dl/go{version}.linux-{arch}.tar.gz"
15
- url_windows = "https://go.dev/dl/go{version}.windows-{arch}.zip"
13
+ version = Parameter("1.25.5", help="Go version.")
14
+ url = "https://go.dev/dl/go{version}.{system}-{go_arch}{go_ext}"
16
15
 
17
16
  @property
18
- def arch(self):
19
- arch = platform.machine()
20
- if arch == "x86_64":
17
+ def go_arch(self):
18
+ if self.arch in ["amd64", "x86_64"]:
21
19
  return "amd64"
22
- if arch in ["i386", "i486", "i586", "i686"]:
20
+ if self.arch in ["i386", "i486", "i586", "i686"]:
23
21
  return "i386"
24
- if arch in ["arm", "armv6l", "armv7l"]:
22
+ if self.arch in ["arm", "armv6l", "armv7l"]:
25
23
  return "armv6l"
26
- if arch in ["arm64", "armv8l", "aarch64"]:
24
+ if self.arch in ["arm64", "armv8l", "aarch64"]:
27
25
  return "arm64"
28
26
  return None
29
27
 
28
+ @property
29
+ def go_ext(self):
30
+ if self.system == "windows":
31
+ return ".zip"
32
+ return ".tar.gz"
33
+
30
34
  def publish(self, artifact, tools):
31
35
  super().publish(artifact, tools)
32
- artifact.environ.PATH.append("go/bin")
33
36
  artifact.paths.goroot = "go"
37
+ artifact.environ.GOROOT = str(artifact.paths.goroot)
38
+ artifact.environ.PATH.append("go/bin")
34
39
 
35
40
  def unpack(self, artifact, tools):
36
41
  artifact.environ.GOROOT = str(artifact.paths.goroot)
@@ -0,0 +1,18 @@
1
+ from jolt import attributes, Parameter
2
+ from jolt.pkgs import cmake
3
+ from jolt.tasks import TaskRegistry
4
+ from jolt.plugins import git, cmake
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @cmake.requires()
9
+ @cmake.use_ninja()
10
+ class GoogleBenchmark(cmake.CMake):
11
+ name = "google/benchmark"
12
+ version = Parameter("1.9.4", help="Benchmark version.")
13
+ requires_git = ["git:url=https://github.com/google/benchmark.git,rev=v{version},submodules=true"]
14
+ options = ["BENCHMARK_ENABLE_TESTING=OFF"]
15
+ srcdir = "{git[benchmark]}"
16
+
17
+
18
+ TaskRegistry.get().add_task_class(GoogleBenchmark)
@@ -0,0 +1,46 @@
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 GoogleTest(cmake.CMake):
11
+ name = "google/test"
12
+ version = Parameter("1.12.1", help="GoogleTest version.")
13
+ shared = BooleanParameter(False, help="Build shared libraries.")
14
+ requires_git = ["git:url=https://github.com/google/googletest.git,rev=release-{version}"]
15
+ srcdir = "{git[googletest]}"
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("gmock")
25
+ artifact.cxxinfo.libraries.append("gtest")
26
+
27
+
28
+ class GTestMain(Task):
29
+ name = "google/test/main"
30
+ extends = "google/test"
31
+
32
+ def publish(self, artifact, tools):
33
+ artifact.cxxinfo.libraries.append("gtest_main")
34
+
35
+
36
+ class GmockMain(Task):
37
+ name = "google/mock/main"
38
+ extends = "google/test"
39
+
40
+ def publish(self, artifact, tools):
41
+ artifact.cxxinfo.libraries.append("gmock_main")
42
+
43
+
44
+ TaskRegistry.get().add_task_class(GoogleTest)
45
+ TaskRegistry.get().add_task_class(GTestMain)
46
+ TaskRegistry.get().add_task_class(GmockMain)
jolt/pkgs/gperf.py ADDED
@@ -0,0 +1,15 @@
1
+ from jolt import attributes
2
+ from jolt.plugins import autotools, fetch
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.common_metadata()
7
+ @attributes.requires("requires_src")
8
+ class GPerf(autotools.Autotools):
9
+ name = "gperf"
10
+ version = "3.3"
11
+ requires_src = ["fetch:alias=src,url=http://ftpmirror.gnu.org/gperf/gperf-{version}.tar.gz"]
12
+ srcdir = "{fetch[src]}/gperf-{version}"
13
+
14
+
15
+ TaskRegistry.get().add_task_class(GPerf)