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/lua.py ADDED
@@ -0,0 +1,54 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.pkgs import ninja
3
+ from jolt.plugins import git
4
+ from jolt.plugins.ninja import CXXLibrary
5
+ from jolt.tasks import TaskRegistry
6
+
7
+
8
+ @attributes.requires("requires_git")
9
+ @attributes.requires("requires_ninja")
10
+ class Lua(CXXLibrary):
11
+ name = "lua"
12
+ version = Parameter("5.4.8", help="Lua version.")
13
+ shared = BooleanParameter(False, help="Build shared libraries.")
14
+
15
+ requires_git = ["git:url=https://github.com/lua/lua.git,rev=v{version},hash=true"]
16
+ requires_ninja = ["ninja"]
17
+ sources = [
18
+ "{git[lua]}/lapi.c",
19
+ "{git[lua]}/lauxlib.c",
20
+ "{git[lua]}/lbaselib.c",
21
+ "{git[lua]}/lcode.c",
22
+ "{git[lua]}/lcorolib.c",
23
+ "{git[lua]}/lctype.c",
24
+ "{git[lua]}/ldblib.c",
25
+ "{git[lua]}/ldebug.c",
26
+ "{git[lua]}/ldo.c",
27
+ "{git[lua]}/ldump.c",
28
+ "{git[lua]}/lfunc.c",
29
+ "{git[lua]}/lgc.c",
30
+ "{git[lua]}/linit.c",
31
+ "{git[lua]}/liolib.c",
32
+ "{git[lua]}/llex.c",
33
+ "{git[lua]}/lmathlib.c",
34
+ "{git[lua]}/lmem.c",
35
+ "{git[lua]}/loadlib.c",
36
+ "{git[lua]}/lobject.c",
37
+ "{git[lua]}/lopcodes.c",
38
+ "{git[lua]}/loslib.c",
39
+ "{git[lua]}/lparser.c",
40
+ "{git[lua]}/lstate.c",
41
+ "{git[lua]}/lstring.c",
42
+ "{git[lua]}/lstrlib.c",
43
+ "{git[lua]}/ltable.c",
44
+ "{git[lua]}/ltablib.c",
45
+ "{git[lua]}/ltests.c",
46
+ "{git[lua]}/ltm.c",
47
+ "{git[lua]}/lundump.c",
48
+ "{git[lua]}/lutf8lib.c",
49
+ "{git[lua]}/lvm.c",
50
+ "{git[lua]}/lzio.c",
51
+ ]
52
+
53
+
54
+ TaskRegistry.get().add_task_class(Lua)
jolt/pkgs/lz4.py ADDED
@@ -0,0 +1,26 @@
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_git")
7
+ @cmake.requires()
8
+ @cmake.use_ninja()
9
+ class Lz4(cmake.CMake):
10
+ name = "lz4"
11
+ version = Parameter("1.10.0", help="LZ4 version.")
12
+ shared = BooleanParameter(False, help="Build shared libraries")
13
+ requires_git = ["git:url=https://github.com/lz4/lz4.git,rev=v{version}"]
14
+ srcdir = "{git[lz4]}/build/cmake"
15
+ options = [
16
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
17
+ ]
18
+
19
+ def publish(self, artifact, tools):
20
+ super().publish(artifact, tools)
21
+ artifact.cxxinfo.incpaths.append("include")
22
+ artifact.cxxinfo.libpaths.append("lib")
23
+ artifact.cxxinfo.libraries.append("lz4")
24
+
25
+
26
+ TaskRegistry.get().add_task_class(Lz4)
jolt/pkgs/m4.py ADDED
@@ -0,0 +1,14 @@
1
+ from jolt import attributes
2
+ from jolt.plugins import autotools, fetch
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_src")
7
+ class M4(autotools.Autotools):
8
+ name = "m4"
9
+ version = "1.4.20"
10
+ requires_src = ["fetch:alias=src,url=http://ftpmirror.gnu.org/m4/m4-{version}.tar.xz"]
11
+ srcdir = "{fetch[src]}/m4-{version}"
12
+
13
+
14
+ TaskRegistry.get().add_task_class(M4)
jolt/pkgs/make.py ADDED
@@ -0,0 +1,17 @@
1
+ from jolt import attributes, Parameter
2
+ from jolt.plugins import autotools, fetch
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 GnuMake(autotools.Autotools):
10
+ name = "make"
11
+ version = Parameter("4.4.1", help="Automake version.")
12
+ requires_git = ["fetch:alias=src,url=https://ftpmirror.gnu.org/gnu/make/make-{version}.tar.gz"]
13
+ requires_texinfo = ["texinfo"]
14
+ srcdir = "{fetch[src]}/make-{version}"
15
+
16
+
17
+ TaskRegistry.get().add_task_class(GnuMake)
jolt/pkgs/mesa.py ADDED
@@ -0,0 +1,81 @@
1
+ from jolt import attributes, Parameter, Task
2
+ from jolt.pkgs import cbindgen, glslang, libdrm, libglvnd, libva, x11
3
+ from jolt.pkgs import meson, rust, spirv_llvm, wayland
4
+ from jolt.plugins import git
5
+ from jolt.tasks import TaskRegistry
6
+
7
+
8
+ @attributes.requires("requires_cbindgen")
9
+ @attributes.requires("requires_git")
10
+ @attributes.requires("requires_glslang")
11
+ @attributes.requires("requires_libdrm")
12
+ @attributes.requires("requires_llvm")
13
+ @attributes.requires("requires_libglvnd")
14
+ @attributes.requires("requires_libva")
15
+ @attributes.requires("requires_libx11_xcb")
16
+ @attributes.requires("requires_libxshmfence")
17
+ @attributes.requires("requires_libxxf86vm")
18
+ @attributes.requires("requires_meson")
19
+ @attributes.requires("requires_rust")
20
+ @attributes.requires("requires_spirv_llvm")
21
+ @attributes.requires("requires_wayland")
22
+ @attributes.requires("requires_xrandr")
23
+ @attributes.common_metadata()
24
+ class Mesa(Task):
25
+ name = "mesa"
26
+ version = Parameter("25.3.2", help="Mesa version.")
27
+
28
+ requires_cbindgen = ["cbindgen"]
29
+ requires_git = ["git:url=https://gitlab.freedesktop.org/mesa/mesa.git,rev=mesa-{version}"]
30
+ requires_glslang = ["glslang"]
31
+ requires_libdrm = ["libdrm"]
32
+ requires_libglvnd = ["libglvnd"]
33
+ requires_libx11_xcb = ["libx11-xcb"]
34
+ requires_libxshmfence = ["libxshmfence"]
35
+ requires_libxxf86vm = ["libxxf86vm"]
36
+ requires_llvm = ["clang", "llvm"]
37
+ requires_libva = ["libva"]
38
+ requires_meson = ["meson"]
39
+ requires_rust = ["rust", "rust-bindgen"]
40
+ requires_spirv_llvm = ["spirv-llvm-translator"]
41
+ requires_wayland = ["wayland"]
42
+ requires_xrandr = ["libxrandr"]
43
+
44
+ def run(self, deps, tools):
45
+ try:
46
+ # Patch broken meson.build
47
+ with tools.cwd("{git[mesa]}"):
48
+ tools.replace_in_file(
49
+ "src/gbm/backends/dri/meson.build",
50
+ "deps_gbm_dri = []",
51
+ "deps_gbm_dri = [dep_xcb_dri3]"
52
+ )
53
+
54
+ ac = tools.meson()
55
+ ac.configure(
56
+ "{git[mesa]}",
57
+ "buildtype=release",
58
+ "gallium-drivers=auto",
59
+ "glvnd=true",
60
+ "glx=dri",
61
+ "platforms=x11,wayland",
62
+ "shared-llvm=disabled",
63
+ "vulkan-drivers=auto",
64
+ )
65
+ ac.build()
66
+ ac.install()
67
+ finally:
68
+ # Revert patch
69
+ with tools.cwd("{git[mesa]}"):
70
+ tools.replace_in_file(
71
+ "src/gbm/backends/dri/meson.build",
72
+ "deps_gbm_dri = [dep_xcb_dri3]",
73
+ "deps_gbm_dri = []"
74
+ )
75
+
76
+ def publish(self, artifact, tools):
77
+ ac = tools.meson()
78
+ ac.publish(artifact)
79
+
80
+
81
+ TaskRegistry.get().add_task_class(Mesa)
jolt/pkgs/meson.py ADDED
@@ -0,0 +1,17 @@
1
+ from jolt import Alias
2
+ from jolt.tasks import TaskRegistry
3
+ from jolt.pkgs import python
4
+
5
+
6
+ class Meson(Alias):
7
+ """
8
+ Alias for the Meson build system.
9
+
10
+ Meson is included in the Python virtual environment task.
11
+ """
12
+
13
+ name = "meson"
14
+ requires = ["python"]
15
+
16
+
17
+ TaskRegistry.get().add_task_class(Meson)
jolt/pkgs/mstch.py ADDED
@@ -0,0 +1,28 @@
1
+ from jolt import attributes, Parameter
2
+ from jolt.pkgs import boost
3
+ from jolt.plugins import cmake, fetch
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_boost")
8
+ @attributes.requires("requires_src")
9
+ @cmake.requires()
10
+ @cmake.use_ninja()
11
+ class MSTCH(cmake.CMake):
12
+ name = "mstch"
13
+ version = Parameter("1.0.2", help="MSTCH version.")
14
+ requires_boost = ["boost"]
15
+ requires_src = ["fetch:alias=src,url=https://github.com/no1msd/mstch/archive/refs/tags/{version}.tar.gz"]
16
+ srcdir = "{fetch[src]}/mstch-{version}"
17
+ options = [
18
+ "CMAKE_POLICY_VERSION_MINIMUM=3.5",
19
+ ]
20
+
21
+ def publish(self, artifact, tools):
22
+ super().publish(artifact, tools)
23
+ artifact.cxxinfo.incpaths.append("include")
24
+ artifact.cxxinfo.libpaths.append("lib")
25
+ artifact.cxxinfo.libraries.append("mstch")
26
+
27
+
28
+ TaskRegistry.get().add_task_class(MSTCH)
jolt/pkgs/mysql.py ADDED
@@ -0,0 +1,60 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.pkgs import boost, curl, libedit, libtirpc, lz4, openssl, rapidjson, zlib, zstd
3
+ from jolt.plugins import cmake, git, pkgconfig
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_curl")
8
+ @attributes.requires("requires_{system}_libedit")
9
+ @attributes.requires("requires_{system}_libtirpc")
10
+ @attributes.requires("requires_lz4")
11
+ @attributes.requires("requires_ncurses")
12
+ @attributes.requires("requires_rapidjson")
13
+ @attributes.requires("requires_src")
14
+ @attributes.requires("requires_ssl")
15
+ @attributes.requires("requires_zlib")
16
+ @attributes.requires("requires_zstd")
17
+ @attributes.system
18
+ @cmake.requires()
19
+ @cmake.use_ninja()
20
+ @pkgconfig.requires()
21
+ class MySQLBase(cmake.CMake):
22
+ abstract = True
23
+ version = Parameter("9.5.0", help="MySQL version.")
24
+ requires_curl = ["curl"]
25
+ requires_darwin_libedit = ["libedit:shared=true"]
26
+ requires_linux_libedit = requires_darwin_libedit
27
+ requires_linux_libtirpc = ["libtirpc"]
28
+ requires_lz4 = ["lz4"]
29
+ requires_rapidjson = ["rapidjson"]
30
+ requires_src = ["git:url=https://github.com/mysql/mysql-server,path={buildroot}/git-mysql,submodules=true"]
31
+ requires_ssl = ["openssl"]
32
+ requires_zlib = ["zlib"]
33
+ requires_zstd = ["zstd"]
34
+ srcdir = "{git[mysql-server]}"
35
+
36
+
37
+ class LibMySQLClient(MySQLBase):
38
+ name = "libmysqlclient"
39
+ shared = BooleanParameter(False, help="Build shared libraries")
40
+ options = [
41
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
42
+ "WITH_CURL=system",
43
+ "WITH_EDITLINE=system",
44
+ "WITH_LZ4=system",
45
+ "WITH_RAPIDJSON=system",
46
+ "WITH_SSL=system",
47
+ "WITH_UNIT_TESTS=OFF",
48
+ "WITH_ZLIB=system",
49
+ "WITH_ZSTD=system",
50
+ "WITHOUT_SERVER=ON",
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
+ artifact.cxxinfo.libraries.append("mysqlclient")
58
+
59
+
60
+ TaskRegistry.get().add_task_class(LibMySQLClient)
jolt/pkgs/nasm.py ADDED
@@ -0,0 +1,49 @@
1
+ from jolt import attributes, Parameter, Task
2
+ from jolt.pkgs import autoconf, automake, perl, zlib
3
+ from jolt.plugins import autotools, git
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_autotools_{system}")
8
+ @attributes.requires("requires_git")
9
+ @attributes.requires("requires_perl")
10
+ @attributes.requires("requires_zlib")
11
+ @attributes.system
12
+ class NASM(Task):
13
+ name = "nasm"
14
+ version = Parameter("3.01", help="nasm version.")
15
+ requires_autotools_darwin = ["autoconf", "automake"]
16
+ requires_autotools_linux = requires_autotools_darwin
17
+ requires_git = ["git:url=https://github.com/netwide-assembler/nasm.git,rev=nasm-{version}"]
18
+ requires_zlib = ["zlib"]
19
+ requires_perl = ["virtual/perl"]
20
+ srcdir = "{git[nasm]}"
21
+
22
+ def run(self, deps, tools):
23
+ self.srcdir = tools.expand_path(self.srcdir)
24
+ self.builddir = tools.builddir()
25
+
26
+ if self.system != "windows":
27
+ with tools.cwd(self.srcdir):
28
+ tools.run("{srcdir}/autogen.sh")
29
+
30
+ with tools.cwd(self.builddir):
31
+ tools.run("{srcdir}/configure")
32
+ tools.run("make -j{}", tools.thread_count())
33
+ else:
34
+ with tools.cwd(self.srcdir):
35
+ tools.run("nmake -f Mkfiles/msvc.mak")
36
+
37
+ def publish(self, artifact, tools):
38
+ if self.system == "windows":
39
+ with tools.cwd(self.srcdir):
40
+ artifact.collect("nasm.exe", "bin/")
41
+ artifact.collect("ndisasm.exe", "bin/")
42
+ else:
43
+ with tools.cwd(self.builddir):
44
+ artifact.collect("nasm", "bin/")
45
+ artifact.collect("ndisasm", "bin/")
46
+ artifact.environ.PATH.append("bin")
47
+
48
+
49
+ TaskRegistry.get().add_task_class(NASM)
jolt/pkgs/ncurses.py ADDED
@@ -0,0 +1,30 @@
1
+ from jolt import BooleanParameter, Parameter, attributes
2
+ from jolt.plugins import autotools, fetch, pkgconfig
3
+ from jolt.tasks import TaskRegistry
4
+ import os
5
+
6
+
7
+ @attributes.requires("requires_src")
8
+ @autotools.requires()
9
+ @pkgconfig.requires()
10
+ class Ncurses(autotools.Autotools):
11
+ name = "ncurses"
12
+ version = Parameter("6.6", help="Ncurses version.")
13
+ widechar = BooleanParameter(False, help="Build ncurses with wide character support.")
14
+ shared = BooleanParameter(False, help="Build shared libraries.")
15
+ requires_src = ["fetch:alias=src,url=https://invisible-mirror.net/archives/ncurses/ncurses-{version}.tar.gz"]
16
+ srcdir = "{fetch[src]}/ncurses-{version}"
17
+ options = [
18
+ "--{widechar[enable,disable]}-widec",
19
+ "--{shared[with,without]}-shared",
20
+ "--enable-pc-files",
21
+ "--with-pkg-config-libdir=/jolt-prefix/lib/pkgconfig",
22
+ ]
23
+
24
+ def publish(self, artifact, tools):
25
+ super().publish(artifact, tools)
26
+ if self.shared:
27
+ artifact.environ.LD_LIBRARY_PATH.append("lib")
28
+
29
+
30
+ TaskRegistry.get().add_task_class(Ncurses)
jolt/pkgs/ng_log.py ADDED
@@ -0,0 +1,25 @@
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 NgLog(cmake.CMake):
11
+ name = "ng-log"
12
+ version = Parameter("0.8.2", help="ng_log version.")
13
+ shared = BooleanParameter(False, help="Build shared libraries")
14
+ requires_git = ["git:url=https://github.com/ng-log/ng-log.git,rev=v{version}"]
15
+ srcdir = "{git[ng-log]}"
16
+ options = ["BUILD_SHARED_LIBS={shared[ON,OFF]}"]
17
+
18
+ def publish(self, artifact, tools):
19
+ super().publish(artifact, tools)
20
+ artifact.cxxinfo.incpaths.append("include")
21
+ artifact.cxxinfo.libpaths.append("lib")
22
+ artifact.cxxinfo.libraries.append("ng-log")
23
+
24
+
25
+ TaskRegistry.get().add_task_class(NgLog)
jolt/pkgs/ninja.py ADDED
@@ -0,0 +1,45 @@
1
+ from jolt import attributes, Alias, BooleanParameter, Download, Parameter
2
+ from jolt.pkgs import cmake, re2c
3
+ from jolt.plugins import git, cmake
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.system
8
+ @attributes.common_metadata()
9
+ class NinjaBin(Download):
10
+ name = "ninja/bin"
11
+ version = Parameter("1.13.2", help="Ninja version.")
12
+ url = ["https://github.com/ninja-build/ninja/releases/download/v{version}/ninja-{ninja_system}.zip"]
13
+ collect = [{"files": "*", "dest": "bin/"}]
14
+
15
+ @property
16
+ def ninja_system(self):
17
+ if self.system == "darwin":
18
+ return "mac"
19
+ if self.system == "windows":
20
+ return "win"
21
+ return self.system
22
+
23
+
24
+ @attributes.requires("requires_git")
25
+ @attributes.requires("requires_re2c")
26
+ @cmake.requires()
27
+ class NinjaSrc(cmake.CMake):
28
+ name = "ninja/src"
29
+ version = Parameter("1.13.2", help="Ninja version.")
30
+ tests = BooleanParameter(False, help="Build tests.")
31
+ requires_git = ["git:url=https://github.com/ninja-build/ninja.git,rev=v{version}"]
32
+ requires_re2c = ["re2c"]
33
+ srcdir = "{git[ninja]}"
34
+ options = ["BUILD_TESTING={tests[ON,OFF]}"]
35
+
36
+
37
+ class Ninja(Alias):
38
+ name = "ninja"
39
+ version = Parameter("1.13.2", help="Ninja version.")
40
+ requires = ["ninja/bin:version={version}"]
41
+
42
+
43
+ TaskRegistry.get().add_task_class(Ninja)
44
+ TaskRegistry.get().add_task_class(NinjaBin)
45
+ TaskRegistry.get().add_task_class(NinjaSrc)
@@ -0,0 +1,25 @@
1
+ from jolt import attributes, BooleanParameter, 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
+ class NlohmannJson(cmake.CMake):
11
+ name = "nlohmann/json"
12
+ version = Parameter("3.12.0", help="nlohmann/json version.")
13
+ tests = BooleanParameter(False, help="Build tests.")
14
+ requires_git = ["git:url=https://github.com/nlohmann/json.git,rev=v{version}"]
15
+ srcdir = "{git[json]}"
16
+ options = [
17
+ "JSON_BuildTests={tests[ON,OFF]}",
18
+ ]
19
+
20
+ def publish(self, artifact, tools):
21
+ super().publish(artifact, tools)
22
+ artifact.cxxinfo.incpaths.append("include")
23
+
24
+
25
+ TaskRegistry.get().add_task_class(NlohmannJson)
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)