jolt 0.9.342__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 (158) hide show
  1. jolt/__init__.py +47 -0
  2. jolt/cache.py +358 -159
  3. jolt/cli.py +71 -104
  4. jolt/config.py +14 -26
  5. jolt/filesystem.py +2 -2
  6. jolt/graph.py +56 -28
  7. jolt/influence.py +67 -2
  8. jolt/loader.py +150 -186
  9. jolt/log.py +12 -2
  10. jolt/manifest.py +0 -46
  11. jolt/options.py +35 -12
  12. jolt/pkgs/abseil.py +42 -0
  13. jolt/pkgs/asio.py +25 -0
  14. jolt/pkgs/autoconf.py +41 -0
  15. jolt/pkgs/automake.py +41 -0
  16. jolt/pkgs/b2.py +31 -0
  17. jolt/pkgs/boost.py +111 -0
  18. jolt/pkgs/boringssl.py +32 -0
  19. jolt/pkgs/busybox.py +39 -0
  20. jolt/pkgs/bzip2.py +43 -0
  21. jolt/pkgs/cares.py +29 -0
  22. jolt/pkgs/catch2.py +36 -0
  23. jolt/pkgs/cbindgen.py +17 -0
  24. jolt/pkgs/cista.py +19 -0
  25. jolt/pkgs/clang.py +44 -0
  26. jolt/pkgs/cli11.py +23 -0
  27. jolt/pkgs/cmake.py +48 -0
  28. jolt/pkgs/cpython.py +196 -0
  29. jolt/pkgs/crun.py +29 -0
  30. jolt/pkgs/curl.py +38 -0
  31. jolt/pkgs/dbus.py +18 -0
  32. jolt/pkgs/double_conversion.py +24 -0
  33. jolt/pkgs/fastfloat.py +21 -0
  34. jolt/pkgs/ffmpeg.py +28 -0
  35. jolt/pkgs/flatbuffers.py +29 -0
  36. jolt/pkgs/fmt.py +27 -0
  37. jolt/pkgs/fstree.py +20 -0
  38. jolt/pkgs/gflags.py +18 -0
  39. jolt/pkgs/glib.py +18 -0
  40. jolt/pkgs/glog.py +25 -0
  41. jolt/pkgs/glslang.py +21 -0
  42. jolt/pkgs/golang.py +16 -11
  43. jolt/pkgs/googlebenchmark.py +18 -0
  44. jolt/pkgs/googletest.py +46 -0
  45. jolt/pkgs/gperf.py +15 -0
  46. jolt/pkgs/grpc.py +73 -0
  47. jolt/pkgs/hdf5.py +19 -0
  48. jolt/pkgs/help2man.py +14 -0
  49. jolt/pkgs/inja.py +28 -0
  50. jolt/pkgs/jsoncpp.py +31 -0
  51. jolt/pkgs/libarchive.py +43 -0
  52. jolt/pkgs/libcap.py +44 -0
  53. jolt/pkgs/libdrm.py +44 -0
  54. jolt/pkgs/libedit.py +42 -0
  55. jolt/pkgs/libevent.py +31 -0
  56. jolt/pkgs/libexpat.py +27 -0
  57. jolt/pkgs/libfastjson.py +21 -0
  58. jolt/pkgs/libffi.py +16 -0
  59. jolt/pkgs/libglvnd.py +30 -0
  60. jolt/pkgs/libogg.py +28 -0
  61. jolt/pkgs/libpciaccess.py +18 -0
  62. jolt/pkgs/libseccomp.py +21 -0
  63. jolt/pkgs/libtirpc.py +24 -0
  64. jolt/pkgs/libtool.py +42 -0
  65. jolt/pkgs/libunwind.py +35 -0
  66. jolt/pkgs/libva.py +18 -0
  67. jolt/pkgs/libvorbis.py +33 -0
  68. jolt/pkgs/libxml2.py +35 -0
  69. jolt/pkgs/libxslt.py +17 -0
  70. jolt/pkgs/libyajl.py +16 -0
  71. jolt/pkgs/llvm.py +81 -0
  72. jolt/pkgs/lua.py +54 -0
  73. jolt/pkgs/lz4.py +26 -0
  74. jolt/pkgs/m4.py +14 -0
  75. jolt/pkgs/make.py +17 -0
  76. jolt/pkgs/mesa.py +81 -0
  77. jolt/pkgs/meson.py +17 -0
  78. jolt/pkgs/mstch.py +28 -0
  79. jolt/pkgs/mysql.py +60 -0
  80. jolt/pkgs/nasm.py +49 -0
  81. jolt/pkgs/ncurses.py +30 -0
  82. jolt/pkgs/ng_log.py +25 -0
  83. jolt/pkgs/ninja.py +45 -0
  84. jolt/pkgs/nlohmann_json.py +25 -0
  85. jolt/pkgs/nodejs.py +19 -11
  86. jolt/pkgs/opencv.py +24 -0
  87. jolt/pkgs/openjdk.py +26 -0
  88. jolt/pkgs/openssl.py +103 -0
  89. jolt/pkgs/paho.py +76 -0
  90. jolt/pkgs/patchelf.py +16 -0
  91. jolt/pkgs/perl.py +42 -0
  92. jolt/pkgs/pkgconfig.py +64 -0
  93. jolt/pkgs/poco.py +39 -0
  94. jolt/pkgs/protobuf.py +77 -0
  95. jolt/pkgs/pugixml.py +27 -0
  96. jolt/pkgs/python.py +19 -0
  97. jolt/pkgs/qt.py +35 -0
  98. jolt/pkgs/rapidjson.py +26 -0
  99. jolt/pkgs/rapidyaml.py +28 -0
  100. jolt/pkgs/re2.py +30 -0
  101. jolt/pkgs/re2c.py +17 -0
  102. jolt/pkgs/readline.py +15 -0
  103. jolt/pkgs/rust.py +41 -0
  104. jolt/pkgs/sdl.py +28 -0
  105. jolt/pkgs/simdjson.py +27 -0
  106. jolt/pkgs/soci.py +46 -0
  107. jolt/pkgs/spdlog.py +29 -0
  108. jolt/pkgs/spirv_llvm.py +21 -0
  109. jolt/pkgs/spirv_tools.py +24 -0
  110. jolt/pkgs/sqlite.py +83 -0
  111. jolt/pkgs/ssl.py +12 -0
  112. jolt/pkgs/texinfo.py +15 -0
  113. jolt/pkgs/tomlplusplus.py +22 -0
  114. jolt/pkgs/wayland.py +26 -0
  115. jolt/pkgs/x11.py +58 -0
  116. jolt/pkgs/xerces_c.py +20 -0
  117. jolt/pkgs/xorg.py +360 -0
  118. jolt/pkgs/xz.py +29 -0
  119. jolt/pkgs/yamlcpp.py +30 -0
  120. jolt/pkgs/zeromq.py +47 -0
  121. jolt/pkgs/zlib.py +69 -0
  122. jolt/pkgs/zstd.py +33 -0
  123. jolt/plugins/autotools.py +66 -0
  124. jolt/plugins/cmake.py +74 -6
  125. jolt/plugins/conan.py +238 -0
  126. jolt/plugins/cxxinfo.py +7 -0
  127. jolt/plugins/docker.py +3 -3
  128. jolt/plugins/environ.py +11 -0
  129. jolt/plugins/fetch.py +141 -0
  130. jolt/plugins/gdb.py +10 -6
  131. jolt/plugins/git.py +60 -11
  132. jolt/plugins/libtool.py +63 -0
  133. jolt/plugins/linux.py +990 -0
  134. jolt/plugins/meson.py +61 -0
  135. jolt/plugins/ninja-compdb.py +11 -7
  136. jolt/plugins/ninja.py +245 -26
  137. jolt/plugins/paths.py +11 -1
  138. jolt/plugins/pkgconfig.py +219 -0
  139. jolt/plugins/podman.py +15 -41
  140. jolt/plugins/python.py +137 -0
  141. jolt/plugins/rust.py +25 -0
  142. jolt/plugins/scheduler.py +18 -14
  143. jolt/plugins/selfdeploy/setup.py +2 -1
  144. jolt/plugins/selfdeploy.py +21 -30
  145. jolt/plugins/strings.py +19 -10
  146. jolt/scheduler.py +428 -138
  147. jolt/tasks.py +159 -7
  148. jolt/tools.py +105 -51
  149. jolt/utils.py +16 -1
  150. jolt/version.py +1 -1
  151. {jolt-0.9.342.dist-info → jolt-0.9.429.dist-info}/METADATA +64 -9
  152. jolt-0.9.429.dist-info/RECORD +207 -0
  153. {jolt-0.9.342.dist-info → jolt-0.9.429.dist-info}/WHEEL +1 -1
  154. jolt/plugins/debian.py +0 -338
  155. jolt/plugins/repo.py +0 -253
  156. jolt-0.9.342.dist-info/RECORD +0 -93
  157. {jolt-0.9.342.dist-info → jolt-0.9.429.dist-info}/entry_points.txt +0 -0
  158. {jolt-0.9.342.dist-info → jolt-0.9.429.dist-info}/top_level.txt +0 -0
jolt/options.py CHANGED
@@ -1,16 +1,39 @@
1
1
 
2
2
  class JoltOptions(object):
3
+ """ Jolt options that control the behavior of builds. """
4
+
5
+ debug = False
6
+ """ Enable debug mode. Break into debugger on exceptions. """
7
+
8
+ download = True
9
+ """ Enable downloading of remote artifacts, both session and persistent. """
10
+
11
+ download_session = True
12
+ """ Enable downloading of remote session artifacts. """
13
+
14
+ keep_going = False
15
+ """ Keep going with the build after a task fails. """
16
+
17
+ local = False
18
+ """ Disable network access. """
19
+
20
+ network = False
21
+ """ Distribute tasks to workers. """
22
+
23
+ upload = True
24
+ """ Enable uploading of artifacts. """
25
+
26
+ worker = False
27
+ """ Running as a worker. """
28
+
29
+ salt = None
30
+ """ Salt for hashing (--salt). """
31
+
32
+ jobs = 1
33
+ """ Number of concurrent local tasks to run (1). """
34
+
35
+ mute = False
36
+ """ Mute task output, until a task fails. """
37
+
3
38
  def __init__(self, **kwargs):
4
- self.debug = False
5
- self.default = []
6
- self.download = True
7
- self.download_session = True
8
- self.keep_going = False
9
- self.local = False
10
- self.network = False
11
- self.upload = True
12
- self.worker = False
13
- self.salt = None
14
- self.jobs = 1
15
- self.mute = False
16
39
  self.__dict__.update(kwargs)
jolt/pkgs/abseil.py ADDED
@@ -0,0 +1,42 @@
1
+ from jolt import attributes, BooleanParameter, Parameter, Task
2
+ from jolt.plugins import cmake, git
3
+ from jolt.tasks import TaskRegistry
4
+ import os
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.system
9
+ @cmake.requires()
10
+ @cmake.use_ninja()
11
+ class Abseil(cmake.CMake):
12
+ """ Abseil C++ Common Libraries """
13
+
14
+ name = "abseil"
15
+ version = Parameter("20250814.1")
16
+ shared = BooleanParameter(False, help="Build shared libraries")
17
+ requires_git = ["git:url=https://github.com/abseil/abseil-cpp.git,rev={version}"]
18
+ srcdir = "{git[abseil-cpp]}"
19
+ options = [
20
+ "ABSL_MSVC_STATIC_RUNTIME=OFF",
21
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
22
+ "CMAKE_CXX_STANDARD=17",
23
+ ]
24
+
25
+ def publish(self, artifact, tools):
26
+ super().publish(artifact, tools)
27
+ artifact.cxxinfo.crt = "Dynamic"
28
+ artifact.cxxinfo.incpaths.append("include")
29
+ artifact.cxxinfo.libpaths.append("lib")
30
+ if self.shared:
31
+ artifact.environ.LD_LIBRARY_PATH.append("lib")
32
+
33
+ with tools.cwd(artifact.path, "lib"):
34
+ for libfile in tools.glob("*.lib"):
35
+ libname, _ = os.path.splitext(libfile)
36
+ artifact.cxxinfo.libraries.append(libname)
37
+ for libfile in tools.glob("lib*.a"):
38
+ libname, _ = os.path.splitext(libfile)
39
+ artifact.cxxinfo.libraries.append(libname[3:])
40
+
41
+
42
+ TaskRegistry.get().add_task_class(Abseil)
jolt/pkgs/asio.py ADDED
@@ -0,0 +1,25 @@
1
+ from jolt import attributes, Parameter
2
+ from jolt.plugins import cmake, git, autotools, pkgconfig
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_git")
7
+ @autotools.requires()
8
+ @pkgconfig.requires()
9
+ @pkgconfig.to_cxxinfo("asio")
10
+ class Asio(autotools.Autotools):
11
+ name = "asio"
12
+ version = Parameter("1.36.0", help="asio version.")
13
+ requires_git = ["git:url=https://github.com/chriskohlhoff/asio.git,rev=asio-{_version}"]
14
+ srcdir = "{git[asio]}/asio"
15
+
16
+ @property
17
+ def _version(self):
18
+ return str(self.version).replace(".", "-")
19
+
20
+ def publish(self, artifact, tools):
21
+ super().publish(artifact, tools)
22
+ artifact.environ.CMAKE_PREFIX_PATH.append(".")
23
+
24
+
25
+ TaskRegistry.get().add_task_class(Asio)
jolt/pkgs/autoconf.py ADDED
@@ -0,0 +1,41 @@
1
+ from jolt import attributes, Parameter
2
+ from jolt.pkgs import help2man, m4, texinfo
3
+ from jolt.plugins import git, autotools
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.requires("requires_help2man")
9
+ @attributes.requires("requires_m4")
10
+ @attributes.requires("requires_texinfo")
11
+ class Autoconf(autotools.Autotools):
12
+ name = "autoconf"
13
+ version = Parameter("2.72", help="Autoconf version.")
14
+ requires_git = ["fetch:alias=src,url=https://ftpmirror.gnu.org/gnu/autoconf/autoconf-{version}.tar.gz"]
15
+ requires_help2man = ["help2man"]
16
+ requires_m4 = ["m4"]
17
+ requires_texinfo = ["texinfo"]
18
+ srcdir = "{fetch[src]}/autoconf-{version}"
19
+
20
+ def publish(self, artifact, tools):
21
+ super().publish(artifact, tools)
22
+ self.unpack(artifact, tools)
23
+
24
+ def unpack(self, artifact, tools):
25
+ with tools.cwd(artifact.path, "bin"):
26
+ for file in tools.glob("*"):
27
+ tools.replace_in_file(
28
+ file,
29
+ artifact.strings.install_prefix,
30
+ artifact.final_path)
31
+
32
+ with tools.cwd(artifact.path, "share/autoconf"):
33
+ tools.replace_in_file(
34
+ "autom4te.cfg",
35
+ artifact.strings.install_prefix,
36
+ artifact.final_path)
37
+
38
+ artifact.strings.install_prefix = artifact.final_path
39
+
40
+
41
+ TaskRegistry.get().add_task_class(Autoconf)
jolt/pkgs/automake.py ADDED
@@ -0,0 +1,41 @@
1
+ from jolt import attributes, Parameter, Task
2
+ from jolt.plugins import git, autotools
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_git")
7
+ @attributes.requires("requires_texinfo")
8
+ @autotools.requires(automake=False, libtool=False)
9
+ class Automake(autotools.Autotools):
10
+ name = "automake"
11
+ version = Parameter("1.18.1", help="Automake version.")
12
+ requires_git = ["fetch:alias=src,url=https://ftpmirror.gnu.org/gnu/automake/automake-{version}.tar.xz"]
13
+ requires_texinfo = ["texinfo"]
14
+ srcdir = "{fetch[src]}/automake-{version}"
15
+
16
+ def publish(self, artifact, tools):
17
+ super().publish(artifact, tools)
18
+ self.unpack(artifact, tools)
19
+
20
+ def unpack(self, artifact, tools):
21
+ with tools.cwd(artifact.path, "bin"):
22
+ for file in tools.glob("*"):
23
+ tools.replace_in_file(
24
+ file,
25
+ artifact.strings.install_prefix,
26
+ artifact.final_path)
27
+
28
+ for file in tools.glob(artifact.path + "/share/automake-*/Automake/Config.pm"):
29
+ tools.replace_in_file(
30
+ file,
31
+ artifact.strings.install_prefix,
32
+ artifact.final_path)
33
+
34
+ with tools.cwd(artifact.path):
35
+ for file in tools.glob("share/aclocal-*"):
36
+ artifact.environ.ACLOCAL_PATH.append(file)
37
+
38
+ artifact.strings.install_prefix = artifact.final_path
39
+
40
+
41
+ TaskRegistry.get().add_task_class(Automake)
jolt/pkgs/b2.py ADDED
@@ -0,0 +1,31 @@
1
+ import os
2
+ from jolt import attributes, Parameter
3
+ from jolt.plugins import git
4
+ from jolt.tasks import Task, TaskRegistry
5
+
6
+
7
+ @attributes.common_metadata()
8
+ @attributes.requires("requires_git")
9
+ @attributes.system
10
+ class B2(Task):
11
+ name = "b2"
12
+ version = Parameter("5.4.2", help="B2 version.")
13
+ requires_git = ["git:url=https://github.com/bfgroup/b2.git"]
14
+
15
+ def run(self, artifact, tools):
16
+ self.builddir = tools.builddir("build", incremental=True)
17
+ self.installdir = tools.builddir("install")
18
+ with tools.cwd("{git[b2]}"):
19
+ if self.system == "windows":
20
+ tools.run(".\\bootstrap.bat")
21
+ tools.run(".\\b2 install --prefix={installdir} --build-dir={builddir} -j{}", tools.cpu_count())
22
+ else:
23
+ tools.run("./bootstrap.sh")
24
+ tools.run("./b2 install --prefix={installdir} --build-dir={builddir} -j{}", tools.cpu_count())
25
+
26
+ def publish(self, artifact, tools):
27
+ with tools.cwd(self.installdir):
28
+ artifact.collect("*", symlinks=True)
29
+
30
+
31
+ TaskRegistry.get().add_task_class(B2)
jolt/pkgs/boost.py ADDED
@@ -0,0 +1,111 @@
1
+ import os
2
+ from jolt import attributes, Alias, BooleanParameter, Download, IntParameter, Parameter
3
+ from jolt.pkgs import cpython
4
+ from jolt.plugins import git
5
+ from jolt.tasks import Task, TaskRegistry
6
+ from jolt.error import raise_task_error_if
7
+
8
+
9
+ @attributes.common_metadata()
10
+ @attributes.requires("requires_git")
11
+ @attributes.requires("requires_python_{python[on,off]}")
12
+ @attributes.system
13
+ class Boost(Task):
14
+ name = "boost"
15
+ version = Parameter("1.90.0", help="Boost version.")
16
+ shared = BooleanParameter(False, help="Build shared libraries")
17
+ python = BooleanParameter(False, help="Build Boost.Python")
18
+ bits = IntParameter(64, values=[32, 64], help="Boost address-model")
19
+ requires_git = ["git:url=https://github.com/boostorg/boost.git,path={buildroot}/git-boost,rev=boost-{version},submodules=true"]
20
+ requires_python_on = ["cpython"]
21
+
22
+ def write_user_config(self, deps, tools):
23
+ content = ""
24
+
25
+ if self.python:
26
+ py_exe = tools.which("python3")
27
+ raise_task_error_if(
28
+ py_exe is None, self,
29
+ "Boost.Python requested, but no Python interpreter found in PATH.",
30
+ )
31
+
32
+ # Find the dependency where the Python interpreter is located
33
+ py_dep = None
34
+ py_prefix = os.path.dirname(os.path.dirname(py_exe))
35
+ for _, dep in deps.items():
36
+ if dep.path == py_prefix:
37
+ py_dep = dep
38
+ break
39
+
40
+ raise_task_error_if(
41
+ py_dep is None, self,
42
+ "Boost.Python requested, but the Python dependency could not be found.",
43
+ )
44
+
45
+ py_version = str(py_dep.strings.version_major)
46
+ content += f"using python : {py_version} : {py_prefix}/bin/python{py_version} : {py_prefix}/include/python{py_version} : {py_prefix}/lib ;\n"
47
+
48
+ tools.write_file(
49
+ self.userconfigfile,
50
+ content,
51
+ )
52
+
53
+ def clean(self, tools):
54
+ self.builddir = tools.builddir("build", incremental=True)
55
+ self.installdir = tools.builddir("install")
56
+ tools.rmtree(self.builddir)
57
+ tools.rmtree(self.installdir)
58
+
59
+ def run(self, deps, tools):
60
+ self.builddir = tools.builddir("build", incremental=True)
61
+ self.installdir = tools.builddir("install")
62
+ self.userconfigfile = tools.expand_path("{builddir}/user-config.jam")
63
+ self.write_user_config(deps, tools)
64
+
65
+ without_libs = []
66
+ if not self.python:
67
+ without_libs.append("python")
68
+
69
+ bootstrap_cmd = []
70
+ if without_libs:
71
+ bootstrap_cmd = ["--without-libraries={}".format(",".join(without_libs))]
72
+
73
+ b2_cmd = [
74
+ "install",
75
+ "address-model={bits}",
76
+ "link={shared[shared,static]}",
77
+ "--prefix={installdir}",
78
+ "--build-dir={builddir}",
79
+ "--user-config={userconfigfile}",
80
+ "-j{}".format(tools.cpu_count()),
81
+ ]
82
+
83
+ with tools.cwd("{git[boost]}"):
84
+ if self.system == "windows":
85
+ bootstrap_cmd = [".\\bootstrap.bat", "msvc"] + bootstrap_cmd
86
+ b2_cmd = [".\\b2"] + b2_cmd
87
+ else:
88
+ bootstrap_cmd = ["./bootstrap.sh"] + bootstrap_cmd
89
+ b2_cmd = ["./b2"] + b2_cmd
90
+
91
+ tools.run(" ".join(bootstrap_cmd))
92
+ tools.run(" ".join(b2_cmd))
93
+
94
+ def publish(self, artifact, tools):
95
+ with tools.cwd(self.installdir):
96
+ artifact.collect("*", symlinks=True)
97
+ artifact.cxxinfo.incpaths.append("include")
98
+ artifact.cxxinfo.libpaths.append("lib")
99
+
100
+ with tools.cwd(self.installdir, "lib"):
101
+ for lib in tools.glob("libboost_*.a"):
102
+ name, _ = os.path.splitext(os.path.basename(lib))
103
+ artifact.cxxinfo.libraries.append(name[3:])
104
+
105
+ arch = tools.getenv("VSCMD_ARG_TGT_ARCH", "x64")
106
+ for lib in tools.glob(f"lib*-mt-{arch}-*.lib"):
107
+ name, _ = os.path.splitext(lib)
108
+ artifact.cxxinfo.libraries.append(name)
109
+
110
+
111
+ TaskRegistry.get().add_task_class(Boost)
jolt/pkgs/boringssl.py ADDED
@@ -0,0 +1,32 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.pkgs import nasm
3
+ from jolt.plugins import cmake, git
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.requires("requires_nasm_{system}")
9
+ @attributes.common_metadata()
10
+ @attributes.system
11
+ @cmake.requires()
12
+ @cmake.use_ninja()
13
+ class BoringSSL(cmake.CMake):
14
+ name = "boringssl"
15
+ version = Parameter("0.20251124.0", help="boringssl version.")
16
+ shared = BooleanParameter(False, help="Build shared libraries.")
17
+ requires_git = ["git:url=https://github.com/google/boringssl.git,rev={version}"]
18
+ requires_nasm_windows = ["nasm"]
19
+ srcdir = "{git[boringssl]}"
20
+ options = [
21
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
22
+ ]
23
+
24
+ def publish(self, artifact, tools):
25
+ super().publish(artifact, tools)
26
+ artifact.cxxinfo.incpaths.append("include")
27
+ artifact.cxxinfo.libpaths.append("lib")
28
+ artifact.cxxinfo.libraries.append("ssl")
29
+ artifact.cxxinfo.libraries.append("crypto")
30
+
31
+
32
+ TaskRegistry.get().add_task_class(BoringSSL)
jolt/pkgs/busybox.py ADDED
@@ -0,0 +1,39 @@
1
+ from jolt import attributes, influence, Parameter, Task
2
+ from jolt.plugins import git
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_git")
7
+ class BusyBox(Task):
8
+ name = "busybox"
9
+ defconfig = Parameter(required=False, help="BusyBox defconfig file.")
10
+ version = Parameter("1.37.0", help="BusyBox version.")
11
+ requires_git = ["git:url=git://busybox.net/busybox.git,rev={version_tag}"]
12
+ srcdir = "{git[busybox]}"
13
+
14
+ @property
15
+ def version_tag(self):
16
+ return str(self.version).replace(".", "_")
17
+
18
+ @property
19
+ def defconfig_arg(self):
20
+ if self.defconfig:
21
+ return f"{self.defconfig}_defconfig"
22
+ return "defconfig"
23
+
24
+ def run(self, deps, tools):
25
+ self.outdir = tools.builddir()
26
+ self.installdir = tools.builddir("install")
27
+
28
+ with tools.cwd(self.srcdir):
29
+ tools.run("make O={outdir} {defconfig_arg}")
30
+ tools.run("make O={outdir} -j{}", tools.cpu_count())
31
+ tools.run("make O={outdir} install DESTDIR={installdir}")
32
+
33
+ def publish(self, artifact, tools):
34
+ artifact.environ.PATH.append("bin")
35
+ with tools.cwd(self.installdir):
36
+ artifact.collect("*", symlinks=True)
37
+
38
+
39
+ TaskRegistry.get().add_task_class(BusyBox)
jolt/pkgs/bzip2.py ADDED
@@ -0,0 +1,43 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.tasks import TaskRegistry
3
+ from jolt.plugins import fetch, ninja
4
+
5
+
6
+ @attributes.requires("requires_src")
7
+ @attributes.system
8
+ @ninja.attributes.cflags("cflags_linux_pic_{pic[on,off]}")
9
+ class LibBzip2(ninja.CXXLibrary):
10
+ name = "libbzip2"
11
+ binary = "bzip2"
12
+ version = Parameter("1.0.8", help="bzip2 version.")
13
+ pic = BooleanParameter(True, help="Build position independent code")
14
+ shared = BooleanParameter(False, help="Build shared libraries")
15
+ cstd = 90
16
+ cflags_darwin_pic_on = ["-fPIC"]
17
+ cflags_linux_pic_on = ["-fPIC"]
18
+ incremental = False
19
+ requires_src = ["fetch:alias=src,url=https://sourceware.org/pub/bzip2/bzip2-{version}.tar.gz"]
20
+ source_influence = False
21
+ sources = [
22
+ "{fetch[src]}/bzip2-{version}/blocksort.c",
23
+ "{fetch[src]}/bzip2-{version}/bzlib.c",
24
+ "{fetch[src]}/bzip2-{version}/bzlib.h",
25
+ "{fetch[src]}/bzip2-{version}/compress.c",
26
+ "{fetch[src]}/bzip2-{version}/crctable.c",
27
+ "{fetch[src]}/bzip2-{version}/decompress.c",
28
+ "{fetch[src]}/bzip2-{version}/huffman.c",
29
+ "{fetch[src]}/bzip2-{version}/randtable.c",
30
+ ]
31
+
32
+ def publish(self, artifact, tools):
33
+ super().publish(artifact, tools)
34
+ artifact.cxxinfo.incpaths.append("include")
35
+ artifact.cxxinfo.libpaths.append("lib")
36
+ artifact.cxxinfo.libraries.append("bz2")
37
+ artifact.environ.CMAKE_PREFIX_PATH.append(".")
38
+
39
+ with tools.cwd("{fetch[src]}/bzip2-{version}"):
40
+ artifact.collect("bzlib.h", "include/")
41
+
42
+
43
+ TaskRegistry.get().add_task_class(LibBzip2)
jolt/pkgs/cares.py ADDED
@@ -0,0 +1,29 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.pkgs import cmake
3
+ from jolt.plugins import git, cmake
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @cmake.requires()
9
+ @cmake.use_ninja()
10
+ class CAres(cmake.CMake):
11
+ name = "c-ares"
12
+ version = Parameter("1.34.6", help="c-ares version.")
13
+ shared = BooleanParameter(False, help="Build shared libraries.")
14
+ requires_git = ["git:url=https://github.com/c-ares/c-ares.git,rev=v{version}"]
15
+ srcdir = "{git[c-ares]}"
16
+ options = [
17
+ "CARES_SHARED={shared[ON,OFF]}",
18
+ "CARES_STATIC={shared[OFF,ON]}",
19
+ "CARES_BUILD_TESTS=OFF",
20
+ ]
21
+
22
+ def publish(self, artifact, tools):
23
+ super().publish(artifact, tools)
24
+ artifact.cxxinfo.incpaths.append("include")
25
+ artifact.cxxinfo.libpaths.append("lib")
26
+ artifact.cxxinfo.libraries.append("cares")
27
+
28
+
29
+ TaskRegistry.get().add_task_class(CAres)
jolt/pkgs/catch2.py ADDED
@@ -0,0 +1,36 @@
1
+ from jolt import attributes, BooleanParameter, Parameter, Task
2
+ from jolt.pkgs import cmake
3
+ from jolt.plugins import git, cmake
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @cmake.requires()
9
+ @cmake.use_ninja()
10
+ class Catch2(cmake.CMake):
11
+ name = "catch2"
12
+ version = Parameter("3.11.0", help="catch2 version.")
13
+ shared = BooleanParameter(False, help="Build shared libraries.")
14
+ requires_git = ["git:url=https://github.com/catchorg/Catch2.git,rev=v{version}"]
15
+ srcdir = "{git[Catch2]}"
16
+ options = [
17
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
18
+ ]
19
+
20
+ def publish(self, artifact, tools):
21
+ super().publish(artifact, tools)
22
+ artifact.cxxinfo.incpaths.append("include")
23
+ artifact.cxxinfo.libpaths.append("lib")
24
+ artifact.cxxinfo.libraries.append("Catch2")
25
+
26
+
27
+ class Catch2Main(Task):
28
+ name = "catch2/main"
29
+ extends = "catch2"
30
+
31
+ def publish(self, artifact, tools):
32
+ artifact.cxxinfo.libraries.append("Catch2Main")
33
+
34
+
35
+ TaskRegistry.get().add_task_class(Catch2)
36
+ TaskRegistry.get().add_task_class(Catch2Main)
jolt/pkgs/cbindgen.py ADDED
@@ -0,0 +1,17 @@
1
+ from jolt import attributes
2
+ from jolt.pkgs import rust
3
+ from jolt.plugins import rust
4
+ from jolt.tasks import TaskRegistry
5
+
6
+
7
+ @attributes.requires("requires_git")
8
+ @attributes.requires("requires_rust")
9
+ class CBindgen(rust.Rust):
10
+ name = "cbindgen"
11
+ version = "0.29.2"
12
+ requires_git = ["git:url=https://github.com/mozilla/cbindgen.git,rev=v{version},hash=true"]
13
+ requires_rust = ["rust"]
14
+ srcdir = "{git[cbindgen]}"
15
+
16
+
17
+ TaskRegistry.get().add_task_class(CBindgen)
jolt/pkgs/cista.py ADDED
@@ -0,0 +1,19 @@
1
+ from jolt import attributes, Parameter, Task
2
+ from jolt.plugins import git
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_git")
7
+ class Cista(Task):
8
+ name = "cista"
9
+ version = Parameter("0.16", help="Cista version.")
10
+ requires_git = ["git:url=https://github.com/felixguendling/cista.git,rev=v{version}"]
11
+ srcdir = "{git[cista]}"
12
+
13
+ def publish(self, artifact, tools):
14
+ with tools.cwd(self.srcdir):
15
+ artifact.collect("include/")
16
+ artifact.cxxinfo.incpaths.append("include")
17
+
18
+
19
+ TaskRegistry.get().add_task_class(Cista)
jolt/pkgs/clang.py ADDED
@@ -0,0 +1,44 @@
1
+ from jolt import attributes, Parameter, Task
2
+ from jolt.pkgs import llvm
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_llvm")
7
+ class Clang(Task):
8
+ name = "clang"
9
+ version = Parameter(llvm.VERSION, help="Clang version.")
10
+
11
+ requires_llvm = ["llvm:version={version}"]
12
+
13
+ def publish(self, artifact, tools):
14
+ artifact.environ.LLVM_TOOL_clang = "clang"
15
+ artifact.environ.LLVM_TOOL_clangpp = "clang++"
16
+ artifact.environ.AR = "llvm-ar"
17
+ artifact.environ.CC = "clang"
18
+ artifact.environ.CXX = "clang++"
19
+ artifact.environ.LD = "clang++"
20
+ artifact.environ.NM = "llvm-nm"
21
+ artifact.environ.OBJCOPY = "llvm-objcopy"
22
+ artifact.environ.OBJDUMP = "llvm-objdump"
23
+ artifact.environ.PATH.append("bin")
24
+ artifact.environ.RANLIB = "llvm-ranlib"
25
+ artifact.environ.STRIP = "llvm-strip"
26
+
27
+
28
+ class ClangFormat(llvm.LLVMFromSrc):
29
+ name = "clang-format"
30
+ projects = ["clang", "clang-tools-extra"]
31
+ targets = []
32
+ install = ["install-clang-format"]
33
+
34
+
35
+ class ClangTidy(llvm.LLVMFromSrc):
36
+ name = "clang-tidy"
37
+ projects = ["clang", "clang-tools-extra"]
38
+ targets = []
39
+ install = ["install-clang-tidy"]
40
+
41
+
42
+ TaskRegistry.get().add_task_class(Clang)
43
+ TaskRegistry.get().add_task_class(ClangFormat)
44
+ TaskRegistry.get().add_task_class(ClangTidy)
jolt/pkgs/cli11.py ADDED
@@ -0,0 +1,23 @@
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 CLI11(cmake.CMake):
10
+ name = "cli11"
11
+ version = Parameter("2.6.1", help="CLI11 version.")
12
+ requires_src = ["fetch:alias=src,url=https://github.com/CLIUtils/CLI11/archive/refs/tags/v{version}.tar.gz"]
13
+ srcdir = "{fetch[src]}/CLI11-{version}"
14
+ options = [
15
+ "CLI11_BUILD_TESTS=OFF",
16
+ ]
17
+
18
+ def publish(self, artifact, tools):
19
+ super().publish(artifact, tools)
20
+ artifact.cxxinfo.incpaths.append("include")
21
+
22
+
23
+ TaskRegistry.get().add_task_class(CLI11)