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.
- jolt/__init__.py +80 -7
- jolt/__main__.py +9 -1
- jolt/bin/fstree-darwin-x86_64 +0 -0
- jolt/bin/fstree-linux-x86_64 +0 -0
- jolt/cache.py +596 -252
- jolt/chroot.py +36 -11
- jolt/cli.py +143 -130
- jolt/common_pb2.py +45 -45
- jolt/config.py +76 -40
- jolt/error.py +19 -4
- jolt/filesystem.py +2 -6
- jolt/graph.py +400 -82
- jolt/influence.py +110 -3
- jolt/loader.py +338 -174
- jolt/log.py +127 -31
- jolt/manifest.py +13 -46
- jolt/options.py +35 -11
- jolt/pkgs/abseil.py +42 -0
- jolt/pkgs/asio.py +25 -0
- jolt/pkgs/autoconf.py +41 -0
- jolt/pkgs/automake.py +41 -0
- jolt/pkgs/b2.py +31 -0
- jolt/pkgs/boost.py +111 -0
- jolt/pkgs/boringssl.py +32 -0
- jolt/pkgs/busybox.py +39 -0
- jolt/pkgs/bzip2.py +43 -0
- jolt/pkgs/cares.py +29 -0
- jolt/pkgs/catch2.py +36 -0
- jolt/pkgs/cbindgen.py +17 -0
- jolt/pkgs/cista.py +19 -0
- jolt/pkgs/clang.py +44 -0
- jolt/pkgs/cli11.py +24 -0
- jolt/pkgs/cmake.py +48 -0
- jolt/pkgs/cpython.py +196 -0
- jolt/pkgs/crun.py +29 -0
- jolt/pkgs/curl.py +38 -0
- jolt/pkgs/dbus.py +18 -0
- jolt/pkgs/double_conversion.py +24 -0
- jolt/pkgs/fastfloat.py +21 -0
- jolt/pkgs/ffmpeg.py +28 -0
- jolt/pkgs/flatbuffers.py +29 -0
- jolt/pkgs/fmt.py +27 -0
- jolt/pkgs/fstree.py +20 -0
- jolt/pkgs/gflags.py +18 -0
- jolt/pkgs/glib.py +18 -0
- jolt/pkgs/glog.py +25 -0
- jolt/pkgs/glslang.py +21 -0
- jolt/pkgs/golang.py +16 -11
- jolt/pkgs/googlebenchmark.py +18 -0
- jolt/pkgs/googletest.py +46 -0
- jolt/pkgs/gperf.py +15 -0
- jolt/pkgs/grpc.py +73 -0
- jolt/pkgs/hdf5.py +19 -0
- jolt/pkgs/help2man.py +14 -0
- jolt/pkgs/inja.py +28 -0
- jolt/pkgs/jsoncpp.py +31 -0
- jolt/pkgs/libarchive.py +43 -0
- jolt/pkgs/libcap.py +44 -0
- jolt/pkgs/libdrm.py +44 -0
- jolt/pkgs/libedit.py +42 -0
- jolt/pkgs/libevent.py +31 -0
- jolt/pkgs/libexpat.py +27 -0
- jolt/pkgs/libfastjson.py +21 -0
- jolt/pkgs/libffi.py +16 -0
- jolt/pkgs/libglvnd.py +30 -0
- jolt/pkgs/libogg.py +28 -0
- jolt/pkgs/libpciaccess.py +18 -0
- jolt/pkgs/libseccomp.py +21 -0
- jolt/pkgs/libtirpc.py +24 -0
- jolt/pkgs/libtool.py +42 -0
- jolt/pkgs/libunwind.py +35 -0
- jolt/pkgs/libva.py +18 -0
- jolt/pkgs/libvorbis.py +33 -0
- jolt/pkgs/libxml2.py +35 -0
- jolt/pkgs/libxslt.py +17 -0
- jolt/pkgs/libyajl.py +16 -0
- jolt/pkgs/llvm.py +81 -0
- jolt/pkgs/lua.py +54 -0
- jolt/pkgs/lz4.py +26 -0
- jolt/pkgs/m4.py +14 -0
- jolt/pkgs/make.py +17 -0
- jolt/pkgs/mesa.py +81 -0
- jolt/pkgs/meson.py +17 -0
- jolt/pkgs/mstch.py +28 -0
- jolt/pkgs/mysql.py +60 -0
- jolt/pkgs/nasm.py +49 -0
- jolt/pkgs/ncurses.py +30 -0
- jolt/pkgs/ng_log.py +25 -0
- jolt/pkgs/ninja.py +45 -0
- jolt/pkgs/nlohmann_json.py +25 -0
- jolt/pkgs/nodejs.py +19 -11
- jolt/pkgs/opencv.py +24 -0
- jolt/pkgs/openjdk.py +26 -0
- jolt/pkgs/openssl.py +103 -0
- jolt/pkgs/paho.py +76 -0
- jolt/pkgs/patchelf.py +16 -0
- jolt/pkgs/perl.py +42 -0
- jolt/pkgs/pkgconfig.py +64 -0
- jolt/pkgs/poco.py +39 -0
- jolt/pkgs/protobuf.py +77 -0
- jolt/pkgs/pugixml.py +27 -0
- jolt/pkgs/python.py +19 -0
- jolt/pkgs/qt.py +35 -0
- jolt/pkgs/rapidjson.py +26 -0
- jolt/pkgs/rapidyaml.py +28 -0
- jolt/pkgs/re2.py +30 -0
- jolt/pkgs/re2c.py +17 -0
- jolt/pkgs/readline.py +15 -0
- jolt/pkgs/rust.py +41 -0
- jolt/pkgs/sdl.py +28 -0
- jolt/pkgs/simdjson.py +27 -0
- jolt/pkgs/soci.py +46 -0
- jolt/pkgs/spdlog.py +29 -0
- jolt/pkgs/spirv_llvm.py +21 -0
- jolt/pkgs/spirv_tools.py +24 -0
- jolt/pkgs/sqlite.py +83 -0
- jolt/pkgs/ssl.py +12 -0
- jolt/pkgs/texinfo.py +15 -0
- jolt/pkgs/tomlplusplus.py +22 -0
- jolt/pkgs/wayland.py +26 -0
- jolt/pkgs/x11.py +58 -0
- jolt/pkgs/xerces_c.py +20 -0
- jolt/pkgs/xorg.py +360 -0
- jolt/pkgs/xz.py +29 -0
- jolt/pkgs/yamlcpp.py +30 -0
- jolt/pkgs/zeromq.py +47 -0
- jolt/pkgs/zlib.py +87 -0
- jolt/pkgs/zstd.py +33 -0
- jolt/plugins/alias.py +3 -0
- jolt/plugins/allure.py +2 -2
- jolt/plugins/autotools.py +66 -0
- jolt/plugins/cache.py +1 -1
- jolt/plugins/cmake.py +74 -6
- jolt/plugins/conan.py +238 -0
- jolt/plugins/cxxinfo.py +7 -0
- jolt/plugins/docker.py +76 -19
- jolt/plugins/email.xslt +141 -118
- jolt/plugins/environ.py +11 -0
- jolt/plugins/fetch.py +141 -0
- jolt/plugins/gdb.py +33 -14
- jolt/plugins/gerrit.py +0 -13
- jolt/plugins/git.py +248 -66
- jolt/plugins/googletest.py +1 -1
- jolt/plugins/http.py +1 -1
- jolt/plugins/libtool.py +63 -0
- jolt/plugins/linux.py +990 -0
- jolt/plugins/logstash.py +4 -4
- jolt/plugins/meson.py +61 -0
- jolt/plugins/ninja-compdb.py +96 -28
- jolt/plugins/ninja.py +424 -150
- jolt/plugins/paths.py +11 -1
- jolt/plugins/pkgconfig.py +219 -0
- jolt/plugins/podman.py +131 -87
- jolt/plugins/python.py +137 -0
- jolt/plugins/remote_execution/administration_pb2.py +27 -19
- jolt/plugins/remote_execution/log_pb2.py +12 -12
- jolt/plugins/remote_execution/scheduler_pb2.py +23 -23
- jolt/plugins/remote_execution/worker_pb2.py +19 -19
- jolt/plugins/report.py +7 -2
- jolt/plugins/rust.py +25 -0
- jolt/plugins/scheduler.py +135 -86
- jolt/plugins/selfdeploy/setup.py +6 -6
- jolt/plugins/selfdeploy.py +49 -31
- jolt/plugins/strings.py +35 -22
- jolt/plugins/symlinks.py +11 -4
- jolt/plugins/telemetry.py +1 -2
- jolt/plugins/timeline.py +13 -3
- jolt/scheduler.py +467 -165
- jolt/tasks.py +427 -111
- jolt/templates/timeline.html.template +44 -47
- jolt/timer.py +22 -0
- jolt/tools.py +527 -188
- jolt/utils.py +183 -3
- jolt/version.py +1 -1
- jolt/xmldom.py +12 -2
- {jolt-0.9.172.dist-info → jolt-0.9.435.dist-info}/METADATA +97 -41
- jolt-0.9.435.dist-info/RECORD +207 -0
- {jolt-0.9.172.dist-info → jolt-0.9.435.dist-info}/WHEEL +1 -1
- jolt/plugins/amqp.py +0 -855
- jolt/plugins/debian.py +0 -338
- jolt/plugins/repo.py +0 -253
- jolt/plugins/snap.py +0 -122
- jolt-0.9.172.dist-info/RECORD +0 -92
- {jolt-0.9.172.dist-info → jolt-0.9.435.dist-info}/entry_points.txt +0 -0
- {jolt-0.9.172.dist-info → jolt-0.9.435.dist-info}/top_level.txt +0 -0
jolt/common_pb2.py
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
3
|
# source: jolt/common.proto
|
|
4
4
|
"""Generated protocol buffer code."""
|
|
5
|
-
from google.protobuf.internal import builder as _builder
|
|
6
5
|
from google.protobuf import descriptor as _descriptor
|
|
7
6
|
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
7
|
from google.protobuf import symbol_database as _symbol_database
|
|
8
|
+
from google.protobuf.internal import builder as _builder
|
|
9
9
|
# @@protoc_insertion_point(imports)
|
|
10
10
|
|
|
11
11
|
_sym_db = _symbol_database.Default()
|
|
@@ -14,50 +14,50 @@ _sym_db = _symbol_database.Default()
|
|
|
14
14
|
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11jolt/common.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"-\n\x06\x44igest\x12\x16\n\talgorithm\x18\x01 \x01(\tR\x03\x61lg\x12\x0b\n\x03hex\x18\x02 \x01(\t\"o\n\x07LogLine\x12\x18\n\x05level\x18\x01 \x01(\x0e\x32\t.LogLevel\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07\x63ontext\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\t\"&\n\x08Property\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\")\n\x08Platform\x12\x1d\n\nproperties\x18\x01 \x03(\x0b\x32\t.Property\"\x83\x01\n\x04Task\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x10\n\x08instance\x18\x03 \x01(\t\x12\r\n\x05taint\x18\x04 \x01(\t\x12\x1d\n\nproperties\x18\x05 \x03(\x0b\x32\t.Property\x12\x1b\n\x08platform\x18\x06 \x01(\x0b\x32\t.Platform\"M\n\tTaskError\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x10\n\x08location\x18\x02 \x01(\t\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x0f\n\x07\x64\x65tails\x18\x04 \x01(\t\"5\n\x04\x46ile\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0e\n\x06\x64igest\x18\x02 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x03 \x01(\t\"\xf1\x01\n\x07Project\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\"\n\x05paths\x18\x02 \x03(\x0b\x32\x13.Project.SystemPath\x12 \n\x07recipes\x18\x03 \x03(\x0b\x32\x0f.Project.Recipe\x12$\n\tresources\x18\x04 \x03(\x0b\x32\x11.Project.Resource\x1a\x1a\n\nSystemPath\x12\x0c\n\x04path\x18\x01 \x01(\t\x1a\'\n\x08Resource\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05\x61lias\x18\x02 \x01(\t\x1a\'\n\x06Recipe\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0f\n\x07workdir\x18\x03 \x01(\t\"
|
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11jolt/common.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"-\n\x06\x44igest\x12\x16\n\talgorithm\x18\x01 \x01(\tR\x03\x61lg\x12\x0b\n\x03hex\x18\x02 \x01(\t\"o\n\x07LogLine\x12\x18\n\x05level\x18\x01 \x01(\x0e\x32\t.LogLevel\x12(\n\x04time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07\x63ontext\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\t\"&\n\x08Property\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\")\n\x08Platform\x12\x1d\n\nproperties\x18\x01 \x03(\x0b\x32\t.Property\"\x83\x01\n\x04Task\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x10\n\x08instance\x18\x03 \x01(\t\x12\r\n\x05taint\x18\x04 \x01(\t\x12\x1d\n\nproperties\x18\x05 \x03(\x0b\x32\t.Property\x12\x1b\n\x08platform\x18\x06 \x01(\x0b\x32\t.Platform\"M\n\tTaskError\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x10\n\x08location\x18\x02 \x01(\t\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x0f\n\x07\x64\x65tails\x18\x04 \x01(\t\"5\n\x04\x46ile\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0e\n\x06\x64igest\x18\x02 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x03 \x01(\t\"\xf1\x01\n\x07Project\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\"\n\x05paths\x18\x02 \x03(\x0b\x32\x13.Project.SystemPath\x12 \n\x07recipes\x18\x03 \x03(\x0b\x32\x0f.Project.Recipe\x12$\n\tresources\x18\x04 \x03(\x0b\x32\x11.Project.Resource\x1a\x1a\n\nSystemPath\x12\x0c\n\x04path\x18\x01 \x01(\t\x1a\'\n\x08Resource\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05\x61lias\x18\x02 \x01(\t\x1a\'\n\x06Recipe\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0f\n\x07workdir\x18\x03 \x01(\t\"\x8e\x01\n\tWorkspace\x12\x0f\n\x07rootdir\x18\x01 \x01(\t\x12\x10\n\x08\x63\x61\x63hedir\x18\x02 \x01(\t\x12\x14\n\x05\x66iles\x18\x03 \x03(\x0b\x32\x05.File\x12\x1a\n\x08projects\x18\x04 \x03(\x0b\x32\x08.Project\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x0c\n\x04tree\x18\x06 \x01(\t\x12\x10\n\x08\x62uilddir\x18\x07 \x01(\t\"i\n\x06\x43lient\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x0c\n\x04tree\x18\x02 \x01(\t\x12\x10\n\x08identity\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x14\n\x0crequirements\x18\x05 \x03(\t\x12\x0b\n\x03nix\x18\x06 \x01(\x08\"\x99\x02\n\x10\x42uildEnvironment\x12\x17\n\x06\x63lient\x18\x01 \x01(\x0b\x32\x07.Client\x12\x1d\n\tworkspace\x18\x02 \x01(\x0b\x32\n.Workspace\x12\x1d\n\nparameters\x18\x03 \x03(\x0b\x32\t.Property\x12\x1f\n\x17task_default_parameters\x18\x04 \x03(\t\x12+\n\x05tasks\x18\x05 \x03(\x0b\x32\x1c.BuildEnvironment.TasksEntry\x12\x1b\n\x08loglevel\x18\x06 \x01(\x0e\x32\t.LogLevel\x12\x0e\n\x06\x63onfig\x18\x07 \x01(\t\x1a\x33\n\nTasksEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x14\n\x05value\x18\x02 \x01(\x0b\x32\x05.Task:\x02\x38\x01*k\n\x08LogLevel\x12\r\n\tEXCEPTION\x10\x00\x12\t\n\x05\x44\x45\x42UG\x10\x01\x12\x0b\n\x07VERBOSE\x10\x02\x12\n\n\x06STDOUT\x10\x03\x12\x08\n\x04INFO\x10\x04\x12\x0b\n\x07WARNING\x10\x05\x12\t\n\x05\x45RROR\x10\x06\x12\n\n\x06STDERR\x10\x07*_\n\x0b\x42uildStatus\x12\x12\n\x0e\x42UILD_ACCEPTED\x10\x00\x12\x12\n\x0e\x42UILD_REJECTED\x10\x01\x12\x13\n\x0f\x42UILD_COMPLETED\x10\x03\x12\x13\n\x0f\x42UILD_CANCELLED\x10\x04*\xd4\x01\n\nTaskStatus\x12\x0f\n\x0bTASK_QUEUED\x10\x00\x12\x10\n\x0cTASK_RUNNING\x10\x01\x12\x0f\n\x0bTASK_FAILED\x10\x02\x12\x0f\n\x0bTASK_PASSED\x10\x03\x12\x11\n\rTASK_UNSTABLE\x10\x04\x12\x13\n\x0fTASK_DOWNLOADED\x10\x05\x12\x11\n\rTASK_UPLOADED\x10\x06\x12\x10\n\x0cTASK_SKIPPED\x10\x07\x12\x12\n\x0eTASK_CANCELLED\x10\x08\x12\x0e\n\nTASK_ERROR\x10\t\x12\x10\n\x0cTASK_CREATED\x10\nB\x0eZ\x0cpkg/protocolb\x06proto3')
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
_builder.
|
|
19
|
+
_globals = globals()
|
|
20
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
21
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'jolt.common_pb2', _globals)
|
|
21
22
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
22
|
-
|
|
23
|
-
DESCRIPTOR.
|
|
24
|
-
|
|
25
|
-
_BUILDENVIRONMENT_TASKSENTRY.
|
|
26
|
-
|
|
27
|
-
_LOGLEVEL.
|
|
28
|
-
|
|
29
|
-
_BUILDSTATUS.
|
|
30
|
-
|
|
31
|
-
_TASKSTATUS.
|
|
32
|
-
|
|
33
|
-
_DIGEST.
|
|
34
|
-
|
|
35
|
-
_LOGLINE.
|
|
36
|
-
|
|
37
|
-
_PROPERTY.
|
|
38
|
-
|
|
39
|
-
_PLATFORM.
|
|
40
|
-
|
|
41
|
-
_TASK.
|
|
42
|
-
|
|
43
|
-
_TASKERROR.
|
|
44
|
-
|
|
45
|
-
_FILE.
|
|
46
|
-
|
|
47
|
-
_PROJECT.
|
|
48
|
-
|
|
49
|
-
_PROJECT_SYSTEMPATH.
|
|
50
|
-
|
|
51
|
-
_PROJECT_RESOURCE.
|
|
52
|
-
|
|
53
|
-
_PROJECT_RECIPE.
|
|
54
|
-
|
|
55
|
-
_WORKSPACE.
|
|
56
|
-
|
|
57
|
-
_CLIENT.
|
|
58
|
-
|
|
59
|
-
_BUILDENVIRONMENT.
|
|
60
|
-
|
|
61
|
-
_BUILDENVIRONMENT_TASKSENTRY.
|
|
62
|
-
_BUILDENVIRONMENT_TASKSENTRY._serialized_end=1283
|
|
23
|
+
_globals['DESCRIPTOR']._options = None
|
|
24
|
+
_globals['DESCRIPTOR']._serialized_options = b'Z\014pkg/protocol'
|
|
25
|
+
_globals['_BUILDENVIRONMENT_TASKSENTRY']._options = None
|
|
26
|
+
_globals['_BUILDENVIRONMENT_TASKSENTRY']._serialized_options = b'8\001'
|
|
27
|
+
_globals['_LOGLEVEL']._serialized_start=1345
|
|
28
|
+
_globals['_LOGLEVEL']._serialized_end=1452
|
|
29
|
+
_globals['_BUILDSTATUS']._serialized_start=1454
|
|
30
|
+
_globals['_BUILDSTATUS']._serialized_end=1549
|
|
31
|
+
_globals['_TASKSTATUS']._serialized_start=1552
|
|
32
|
+
_globals['_TASKSTATUS']._serialized_end=1764
|
|
33
|
+
_globals['_DIGEST']._serialized_start=54
|
|
34
|
+
_globals['_DIGEST']._serialized_end=99
|
|
35
|
+
_globals['_LOGLINE']._serialized_start=101
|
|
36
|
+
_globals['_LOGLINE']._serialized_end=212
|
|
37
|
+
_globals['_PROPERTY']._serialized_start=214
|
|
38
|
+
_globals['_PROPERTY']._serialized_end=252
|
|
39
|
+
_globals['_PLATFORM']._serialized_start=254
|
|
40
|
+
_globals['_PLATFORM']._serialized_end=295
|
|
41
|
+
_globals['_TASK']._serialized_start=298
|
|
42
|
+
_globals['_TASK']._serialized_end=429
|
|
43
|
+
_globals['_TASKERROR']._serialized_start=431
|
|
44
|
+
_globals['_TASKERROR']._serialized_end=508
|
|
45
|
+
_globals['_FILE']._serialized_start=510
|
|
46
|
+
_globals['_FILE']._serialized_end=563
|
|
47
|
+
_globals['_PROJECT']._serialized_start=566
|
|
48
|
+
_globals['_PROJECT']._serialized_end=807
|
|
49
|
+
_globals['_PROJECT_SYSTEMPATH']._serialized_start=699
|
|
50
|
+
_globals['_PROJECT_SYSTEMPATH']._serialized_end=725
|
|
51
|
+
_globals['_PROJECT_RESOURCE']._serialized_start=727
|
|
52
|
+
_globals['_PROJECT_RESOURCE']._serialized_end=766
|
|
53
|
+
_globals['_PROJECT_RECIPE']._serialized_start=768
|
|
54
|
+
_globals['_PROJECT_RECIPE']._serialized_end=807
|
|
55
|
+
_globals['_WORKSPACE']._serialized_start=810
|
|
56
|
+
_globals['_WORKSPACE']._serialized_end=952
|
|
57
|
+
_globals['_CLIENT']._serialized_start=954
|
|
58
|
+
_globals['_CLIENT']._serialized_end=1059
|
|
59
|
+
_globals['_BUILDENVIRONMENT']._serialized_start=1062
|
|
60
|
+
_globals['_BUILDENVIRONMENT']._serialized_end=1343
|
|
61
|
+
_globals['_BUILDENVIRONMENT_TASKSENTRY']._serialized_start=1292
|
|
62
|
+
_globals['_BUILDENVIRONMENT_TASKSENTRY']._serialized_end=1343
|
|
63
63
|
# @@protoc_insertion_point(module_scope)
|
jolt/config.py
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from configparser import ConfigParser, NoOptionError, NoSectionError
|
|
2
2
|
from urllib.parse import urlparse
|
|
3
3
|
import os
|
|
4
|
+
import re
|
|
4
5
|
|
|
5
6
|
from jolt import common_pb2 as common_pb
|
|
6
7
|
from jolt import filesystem as fs
|
|
7
8
|
from jolt import utils
|
|
8
9
|
from jolt.error import raise_error_if
|
|
9
|
-
from jolt.manifest import ManifestExtension, ManifestExtensionRegistry
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
_workdir = os.getcwd()
|
|
@@ -15,13 +15,18 @@ _workdir = os.getcwd()
|
|
|
15
15
|
if os.getenv("JOLT_CONFIG_PATH"):
|
|
16
16
|
location = fs.path.join(os.getenv("JOLT_CONFIG_PATH"), "config")
|
|
17
17
|
location_user = fs.path.join(os.getenv("JOLT_CONFIG_PATH"), "user")
|
|
18
|
+
location_overlay = os.getenv("JOLT_CONFIG_OVERLAY")
|
|
19
|
+
if location_overlay:
|
|
20
|
+
location_overlay = fs.path.join(os.getenv("JOLT_CONFIG_PATH"), location_overlay)
|
|
18
21
|
elif os.name == "nt":
|
|
19
22
|
appdata = os.getenv("APPDATA", fs.path.join(fs.userhome(), "AppData", "Roaming"))
|
|
20
23
|
location = fs.path.join(appdata, "Jolt", "config")
|
|
21
24
|
location_user = fs.path.join(appdata, "Jolt", "user")
|
|
25
|
+
location_overlay = os.getenv("JOLT_CONFIG_OVERLAY")
|
|
22
26
|
else:
|
|
23
27
|
location = fs.path.join(fs.userhome(), ".config", "jolt", "config")
|
|
24
28
|
location_user = fs.path.join(fs.userhome(), ".config", "jolt", "user")
|
|
29
|
+
location_overlay = os.getenv("JOLT_CONFIG_OVERLAY")
|
|
25
30
|
|
|
26
31
|
|
|
27
32
|
class ConfigFile(ConfigParser):
|
|
@@ -132,6 +137,8 @@ class Config(object):
|
|
|
132
137
|
_config = Config()
|
|
133
138
|
_config.add_file("global", location)
|
|
134
139
|
_config.add_file("user", location_user)
|
|
140
|
+
if location_overlay:
|
|
141
|
+
_config.add_file("overlay", location_overlay)
|
|
135
142
|
_manifest = _config.add_file("manifest", None)
|
|
136
143
|
# Note: cli configs are added next to last in the chain,
|
|
137
144
|
# before manifest, and can therefore not override the
|
|
@@ -146,30 +153,51 @@ def get(section, key, default=None, expand=True, alias=None):
|
|
|
146
153
|
|
|
147
154
|
|
|
148
155
|
def getint(section, key, default=None, alias=None):
|
|
149
|
-
|
|
156
|
+
value = get(section, key, default=default, alias=alias)
|
|
157
|
+
if value is not None:
|
|
158
|
+
try:
|
|
159
|
+
return int(value)
|
|
160
|
+
except ValueError:
|
|
161
|
+
raise_error_if(True, "Config: value '{0}' invalid for '{1}.{2}', expected integer", value, section, key)
|
|
162
|
+
return None
|
|
150
163
|
|
|
151
164
|
|
|
152
165
|
def getsize(section, key, default=None, alias=None):
|
|
153
|
-
units = {
|
|
166
|
+
units = {
|
|
167
|
+
None: 1,
|
|
168
|
+
"B": 1,
|
|
169
|
+
|
|
170
|
+
"K": 1000,
|
|
171
|
+
"M": 1000**2,
|
|
172
|
+
"G": 1000**3,
|
|
173
|
+
"T": 1000**4,
|
|
174
|
+
"P": 1000**5,
|
|
175
|
+
"E": 1000**6,
|
|
176
|
+
|
|
177
|
+
"Ki": 1024,
|
|
178
|
+
"Mi": 1024**2,
|
|
179
|
+
"Gi": 1024**3,
|
|
180
|
+
"Ti": 1024**4,
|
|
181
|
+
"Pi": 1024**5,
|
|
182
|
+
"Ei": 1024**6,
|
|
183
|
+
}
|
|
184
|
+
|
|
154
185
|
value = get(section, key, default=None, alias=alias)
|
|
155
186
|
if value is None:
|
|
156
187
|
if type(default) is int:
|
|
157
188
|
return default
|
|
158
189
|
else:
|
|
159
190
|
value = str(default)
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
raise_error_if(
|
|
166
|
-
len(value) != 2,
|
|
167
|
-
"Config: size '{2}' invalid for '{0}.{1}', expected '<size> <unit>'", value, section, key)
|
|
168
|
-
size, unit = value[0], value[1]
|
|
191
|
+
|
|
192
|
+
m = re.search(r"^(0|[1-9][0-9]*) ?([KMGTPE]i?)?B?$", value)
|
|
193
|
+
raise_error_if(
|
|
194
|
+
not m,
|
|
195
|
+
"Config: size '{0}' invalid for '{1}.{2}', expected '<size> <unit>'", value, section, key)
|
|
169
196
|
raise_error_if(
|
|
170
|
-
|
|
171
|
-
"Config: unit invalid for '{0}.{1}', expected [B,K,M,G,T]", section, key)
|
|
172
|
-
|
|
197
|
+
m[2] not in units,
|
|
198
|
+
"Config: unit invalid for '{0}.{1}', expected [B,K,M,G,T,P,E,Mi,Gi,Ti,Pi,Ei]", section, key)
|
|
199
|
+
|
|
200
|
+
return int(m[1]) * units.get(m[2], 1)
|
|
173
201
|
|
|
174
202
|
|
|
175
203
|
def getfloat(section, key, default=None, alias=None):
|
|
@@ -183,6 +211,8 @@ def getboolean(section, key, default=None, alias=None):
|
|
|
183
211
|
|
|
184
212
|
def geturi(section, key, default=None, alias=None):
|
|
185
213
|
value = get(section, key, default=default, alias=alias)
|
|
214
|
+
if value is None:
|
|
215
|
+
return None
|
|
186
216
|
return urlparse(value)
|
|
187
217
|
|
|
188
218
|
|
|
@@ -216,6 +246,23 @@ def get_shell():
|
|
|
216
246
|
return get("jolt", "shell", cmd)
|
|
217
247
|
|
|
218
248
|
|
|
249
|
+
def get_keep_going():
|
|
250
|
+
return getboolean("params", "keep_going", False)
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
def is_incremental_build():
|
|
254
|
+
"""
|
|
255
|
+
Whether to enable incremental builds.
|
|
256
|
+
|
|
257
|
+
If disabled, all build directories are deleted upon completion of tasks.
|
|
258
|
+
"""
|
|
259
|
+
return getboolean("jolt", "incremental_dirs", True)
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
def set_keep_going(value=False):
|
|
263
|
+
return set("params", "keep_going", str(value).lower())
|
|
264
|
+
|
|
265
|
+
|
|
219
266
|
def set(section, key, value, alias=None):
|
|
220
267
|
_config.set(section, key, value, alias or "user")
|
|
221
268
|
|
|
@@ -270,39 +317,28 @@ def split(string):
|
|
|
270
317
|
return section, key
|
|
271
318
|
|
|
272
319
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
p = manifest.create_parameter()
|
|
279
|
-
p.key = "config." + key
|
|
280
|
-
p.value = value
|
|
281
|
-
|
|
282
|
-
def import_manifest(self, manifest):
|
|
283
|
-
if manifest.config:
|
|
284
|
-
_manifest.read_string(manifest.config)
|
|
285
|
-
from jolt.loader import JoltLoader
|
|
286
|
-
JoltLoader.get().load_plugins()
|
|
287
|
-
|
|
288
|
-
for param in manifest.parameters:
|
|
289
|
-
if param.key.startswith("config."):
|
|
290
|
-
set("params", param.key.split(".", 1)[1], param.value)
|
|
291
|
-
|
|
292
|
-
def import_protobuf(self, pb):
|
|
293
|
-
self.import_manifest(pb)
|
|
320
|
+
def import_config(snippet: str):
|
|
321
|
+
""" Apply extra configuration for the worker, provided by the client. """
|
|
322
|
+
_manifest.read_string(snippet)
|
|
323
|
+
from jolt.loader import JoltLoader
|
|
324
|
+
JoltLoader.get().load_plugins()
|
|
294
325
|
|
|
295
326
|
|
|
296
327
|
def export_config():
|
|
328
|
+
""" Get extra configuration for the worker. """
|
|
297
329
|
return get("network", "config", "", expand=False)
|
|
298
330
|
|
|
299
331
|
|
|
332
|
+
def import_params(params: dict):
|
|
333
|
+
""" Apply user-defined parameters (-c params.key=value). """
|
|
334
|
+
for key, value in params.items():
|
|
335
|
+
if key.startswith("config."):
|
|
336
|
+
set("params", key.split(".", 1)[1], value)
|
|
337
|
+
|
|
338
|
+
|
|
300
339
|
def export_params():
|
|
340
|
+
""" Get user-defined parameters (-c params.key=value). """
|
|
301
341
|
parameters = []
|
|
302
342
|
for key, value in options("params"):
|
|
303
343
|
parameters.append(common_pb.Property(key="config." + key, value=value))
|
|
304
344
|
return parameters
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
# High priority so that plugins are loaded before resources are acquired.
|
|
308
|
-
ManifestExtensionRegistry.add(ConfigExtension(), -10)
|
jolt/error.py
CHANGED
|
@@ -4,17 +4,30 @@ from jolt import utils
|
|
|
4
4
|
|
|
5
5
|
class JoltError(Exception):
|
|
6
6
|
def __init__(self, *args, **kwargs):
|
|
7
|
-
super(
|
|
7
|
+
super().__init__(*args, **kwargs)
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class JoltCommandError(JoltError):
|
|
11
11
|
def __init__(self, what, stdout=[], stderr=[], returncode=None, *args, **kwargs):
|
|
12
|
-
super(
|
|
12
|
+
super().__init__(what, *args, **kwargs)
|
|
13
13
|
self.stdout = stdout
|
|
14
14
|
self.stderr = stderr
|
|
15
15
|
self.returncode = returncode
|
|
16
16
|
|
|
17
17
|
|
|
18
|
+
class JoltTimeoutError(JoltError):
|
|
19
|
+
def __init__(self, *args, **kwargs):
|
|
20
|
+
super().__init__(*args, **kwargs)
|
|
21
|
+
|
|
22
|
+
def __str__(self):
|
|
23
|
+
return super().__str__() or "Timeout"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class LoggedJoltError(JoltError):
|
|
27
|
+
def __init__(self, exc):
|
|
28
|
+
self.exc = exc
|
|
29
|
+
|
|
30
|
+
|
|
18
31
|
def raise_error(msg, *args, **kwargs):
|
|
19
32
|
raise JoltError(msg.format(*args, **kwargs))
|
|
20
33
|
|
|
@@ -23,8 +36,10 @@ def raise_task_error(task, msg, *args, **kwargs):
|
|
|
23
36
|
if task:
|
|
24
37
|
with utils.ignore_exception():
|
|
25
38
|
with task.report() as report:
|
|
26
|
-
report.add_error(
|
|
27
|
-
|
|
39
|
+
report.add_error(
|
|
40
|
+
kwargs.pop("type", "Error"),
|
|
41
|
+
inspection.getfile(task.__class__),
|
|
42
|
+
msg.format(*args, **kwargs))
|
|
28
43
|
raise_error(msg + " (" + str(task) + ")", *args, **kwargs)
|
|
29
44
|
else:
|
|
30
45
|
raise_error(msg, *args, **kwargs)
|
jolt/filesystem.py
CHANGED
|
@@ -88,10 +88,10 @@ def move(src, dst):
|
|
|
88
88
|
|
|
89
89
|
def onerror_warning(func, path, exc_info):
|
|
90
90
|
from jolt import log
|
|
91
|
-
if
|
|
91
|
+
if hasattr(exc_info[1], "strerror"):
|
|
92
92
|
msg = exc_info[1].strerror
|
|
93
93
|
else:
|
|
94
|
-
msg = "Reason unknown"
|
|
94
|
+
msg = "Reason unknown: " + str(exc_info[1])
|
|
95
95
|
if os.path.exists(path):
|
|
96
96
|
log.warning("Could not remove file or directory: {} ({})", path, msg)
|
|
97
97
|
|
|
@@ -238,7 +238,3 @@ def scandir(scanpath, filterfn=lambda path: path[0] != ".", relative=False):
|
|
|
238
238
|
for path, dirs, files in os.walk(scanpath)
|
|
239
239
|
for f in files
|
|
240
240
|
if filterfn(f)]
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
def get_archive(path):
|
|
244
|
-
return path + ".tar.gz"
|