jolt 0.9.449__tar.gz → 0.9.456__tar.gz
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-0.9.449 → jolt-0.9.456}/PKG-INFO +1 -1
- {jolt-0.9.449 → jolt-0.9.456}/jolt/config.py +13 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/abseil.py +2 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/blake3.py +7 -1
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/brotli.py +2 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/cares.py +2 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/curl.py +6 -4
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/grpc.py +8 -6
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/protobuf.py +3 -1
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/re2.py +2 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/ssl.py +1 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/zlib.py +7 -1
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/zstd.py +2 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/cache.py +1 -1
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/scheduler.py +16 -3
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/selfdeploy.py +1 -1
- {jolt-0.9.449 → jolt-0.9.456}/jolt/utils.py +38 -0
- jolt-0.9.456/jolt/version.py +1 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt.egg-info/PKG-INFO +1 -1
- jolt-0.9.449/jolt/version.py +0 -1
- {jolt-0.9.449 → jolt-0.9.456}/README.rst +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/__init__.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/__main__.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/bin/fstree-darwin-x86_64 +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/bin/fstree-linux-x86_64 +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/cache.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/chroot.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/cli.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/colors.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/common_pb2.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/common_pb2_grpc.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/error.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/expires.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/filesystem.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/graph.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/hooks.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/influence.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/inspection.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/loader.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/log.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/manifest.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/options.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/__init__.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/asio.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/autoconf.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/automake.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/b2.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/boost.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/boringssl.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/busybox.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/bzip2.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/catch2.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/cbindgen.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/cista.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/clang.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/cli11.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/cmake.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/cpython.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/crun.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/dbus.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/double_conversion.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/fastfloat.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/ffmpeg.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/flatbuffers.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/fmt.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/fstree.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/gflags.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/glib.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/glog.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/glslang.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/golang.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/googlebenchmark.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/googletest.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/gperf.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/hdf5.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/help2man.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/inja.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/jsoncpp.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libarchive.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libcap.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libdrm.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libedit.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libevent.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libexpat.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libfastjson.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libffi.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libglvnd.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libogg.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libpciaccess.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libseccomp.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libtirpc.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libtool.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libunwind.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libva.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libvorbis.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libxml2.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libxslt.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/libyajl.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/llvm.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/lua.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/lz4.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/m4.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/make.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/mesa.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/meson.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/mstch.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/mysql.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/nasm.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/ncurses.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/ng_log.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/ninja.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/nlohmann_json.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/nodejs.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/opencv.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/openjdk.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/openssl.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/paho.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/patchelf.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/perl.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/pkgconfig.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/poco.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/pugixml.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/python.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/qt.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/rapidjson.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/rapidyaml.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/re2c.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/readline.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/rust.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/sdl.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/simdjson.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/soci.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/spdlog.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/spirv_llvm.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/spirv_tools.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/sqlite.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/texinfo.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/tomlplusplus.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/wayland.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/x11.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/xerces_c.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/xorg.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/xz.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/yamlcpp.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/pkgs/zeromq.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/__init__.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/alias.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/allure.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/autotools.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/autoweight.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/cmake.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/conan.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/cxx.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/cxxinfo.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/dashboard.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/docker.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/email.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/email.xslt +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/environ.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/fetch.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/gdb.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/gerrit.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/git.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/golang.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/googletest.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/http.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/junit.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/libtool.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/linux.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/logstash.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/meson.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/ninja-compdb.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/ninja.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/nodejs.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/paths.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/pkgconfig.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/podman.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/python.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/remote_execution/__init__.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/remote_execution/administration_pb2.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/remote_execution/administration_pb2_grpc.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/remote_execution/log_pb2.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/remote_execution/log_pb2_grpc.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/remote_execution/scheduler_pb2.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/remote_execution/scheduler_pb2_grpc.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/remote_execution/worker_pb2.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/remote_execution/worker_pb2_grpc.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/report.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/rust.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/strings.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/symlinks.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/telemetry.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/timeline.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/volume.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/yaml-ninja.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/plugins/yamltask.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/scheduler.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/tasks.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/templates/cxxexecutable.cmake.template +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/templates/cxxlibrary.cmake.template +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/templates/export.sh.template +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/templates/timeline.html.template +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/timer.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/tools.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/version_utils.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt/xmldom.py +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt.egg-info/SOURCES.txt +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt.egg-info/dependency_links.txt +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt.egg-info/entry_points.txt +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt.egg-info/requires.txt +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/jolt.egg-info/top_level.txt +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/setup.cfg +0 -0
- {jolt-0.9.449 → jolt-0.9.456}/setup.py +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from configparser import ConfigParser, NoOptionError, NoSectionError
|
|
2
|
+
from datetime import timedelta
|
|
2
3
|
from urllib.parse import urlparse
|
|
3
4
|
import os
|
|
4
5
|
import re
|
|
@@ -152,6 +153,18 @@ def get(section, key, default=None, expand=True, alias=None):
|
|
|
152
153
|
return utils.expand(val) if expand and val is not None else val
|
|
153
154
|
|
|
154
155
|
|
|
156
|
+
def getduration(section, key, default=None, alias=None):
|
|
157
|
+
value = get(section, key, default=None, alias=alias)
|
|
158
|
+
if value is None:
|
|
159
|
+
if type(default) is timedelta:
|
|
160
|
+
return default
|
|
161
|
+
elif default is not None:
|
|
162
|
+
value = str(default)
|
|
163
|
+
else:
|
|
164
|
+
return None
|
|
165
|
+
return utils.parse_duration(value)
|
|
166
|
+
|
|
167
|
+
|
|
155
168
|
def getint(section, key, default=None, alias=None):
|
|
156
169
|
value = get(section, key, default=default, alias=alias)
|
|
157
170
|
if value is not None:
|
|
@@ -13,6 +13,7 @@ class Abseil(cmake.CMake):
|
|
|
13
13
|
|
|
14
14
|
name = "abseil"
|
|
15
15
|
version = Parameter("20250814.1")
|
|
16
|
+
pic = BooleanParameter(False, help="Build with position independent code.")
|
|
16
17
|
shared = BooleanParameter(False, help="Build shared libraries")
|
|
17
18
|
requires_git = ["git:url=https://github.com/abseil/abseil-cpp.git,rev={version}"]
|
|
18
19
|
srcdir = "{git[abseil-cpp]}"
|
|
@@ -20,6 +21,7 @@ class Abseil(cmake.CMake):
|
|
|
20
21
|
"ABSL_MSVC_STATIC_RUNTIME=OFF",
|
|
21
22
|
"BUILD_SHARED_LIBS={shared[ON,OFF]}",
|
|
22
23
|
"CMAKE_CXX_STANDARD=17",
|
|
24
|
+
"CMAKE_POSITION_INDEPENDENT_CODE={pic[ON,OFF]}",
|
|
23
25
|
]
|
|
24
26
|
|
|
25
27
|
def publish(self, artifact, tools):
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from jolt import attributes, Parameter
|
|
1
|
+
from jolt import attributes, BooleanParameter, Parameter
|
|
2
2
|
from jolt.plugins import cmake, git
|
|
3
3
|
from jolt.tasks import TaskRegistry
|
|
4
4
|
|
|
@@ -8,8 +8,14 @@ from jolt.tasks import TaskRegistry
|
|
|
8
8
|
class Blake3(cmake.CMake):
|
|
9
9
|
name = "blake3"
|
|
10
10
|
version = Parameter("1.8.3", help="blake3 version.")
|
|
11
|
+
pic = BooleanParameter(False, help="Build with position independent code.")
|
|
12
|
+
shared = BooleanParameter(False, help="Build shared libraries.")
|
|
11
13
|
requires_git = ["git:url=https://github.com/BLAKE3-team/BLAKE3.git,rev={version}"]
|
|
12
14
|
srcdir = "{git[BLAKE3]}/c"
|
|
15
|
+
options = [
|
|
16
|
+
"BUILD_SHARED_LIBS={shared[ON,OFF]}",
|
|
17
|
+
"CMAKE_POSITION_INDEPENDENT_CODE={pic[ON,OFF]}",
|
|
18
|
+
]
|
|
13
19
|
|
|
14
20
|
|
|
15
21
|
TaskRegistry.get().add_task_class(Blake3)
|
|
@@ -9,11 +9,13 @@ from jolt.tasks import TaskRegistry
|
|
|
9
9
|
class Brotli(cmake.CMake):
|
|
10
10
|
name = "brotli"
|
|
11
11
|
version = Parameter("1.2.0", help="Brotli version.")
|
|
12
|
+
pic = BooleanParameter(False, help="Build with position independent code.")
|
|
12
13
|
shared = BooleanParameter(False, help="Build shared libraries.")
|
|
13
14
|
requires_git = ["git:url=https://github.com/google/brotli.git,rev=v{version},submodules=true"]
|
|
14
15
|
srcdir = "{git[brotli]}"
|
|
15
16
|
options = [
|
|
16
17
|
"BUILD_SHARED_LIBS={shared[ON,OFF]}",
|
|
18
|
+
"CMAKE_POSITION_INDEPENDENT_CODE={pic[ON,OFF]}",
|
|
17
19
|
]
|
|
18
20
|
|
|
19
21
|
|
|
@@ -11,6 +11,7 @@ from jolt.tasks import TaskRegistry
|
|
|
11
11
|
class CAres(cmake.CMake):
|
|
12
12
|
name = "c-ares"
|
|
13
13
|
version = Parameter("1.34.6", help="c-ares version.")
|
|
14
|
+
pic = BooleanParameter(False, help="Build with position independent code.")
|
|
14
15
|
shared = BooleanParameter(False, help="Build shared libraries.")
|
|
15
16
|
requires_git = ["git:url=https://github.com/c-ares/c-ares.git,rev=v{version}"]
|
|
16
17
|
srcdir = "{git[c-ares]}"
|
|
@@ -18,6 +19,7 @@ class CAres(cmake.CMake):
|
|
|
18
19
|
"CARES_SHARED={shared[ON,OFF]}",
|
|
19
20
|
"CARES_STATIC={shared[OFF,ON]}",
|
|
20
21
|
"CARES_BUILD_TESTS=OFF",
|
|
22
|
+
"CMAKE_POSITION_INDEPENDENT_CODE={pic[ON,OFF]}",
|
|
21
23
|
]
|
|
22
24
|
|
|
23
25
|
|
|
@@ -16,18 +16,20 @@ from jolt.tasks import TaskRegistry
|
|
|
16
16
|
class Curl(cmake.CMake):
|
|
17
17
|
name = "curl"
|
|
18
18
|
version = Parameter("8.17.0", help="Curl version.")
|
|
19
|
+
pic = BooleanParameter(False, help="Build with position independent code.")
|
|
19
20
|
shared = BooleanParameter(False, help="Build shared libraries.")
|
|
20
|
-
requires_brotli = ["brotli"]
|
|
21
|
+
requires_brotli = ["brotli:pic={pic},shared={shared}"]
|
|
21
22
|
requires_git = ["git:url=https://github.com/curl/curl.git,rev=curl-{_version_tag},submodules=true"]
|
|
22
|
-
requires_ssl = ["virtual/ssl:shared={shared}"]
|
|
23
|
-
requires_zlib = ["virtual/zlib"]
|
|
24
|
-
requires_zstd = ["zstd"]
|
|
23
|
+
requires_ssl = ["virtual/ssl:pic={pic},shared={shared}"]
|
|
24
|
+
requires_zlib = ["virtual/zlib:pic={pic},shared={shared}"]
|
|
25
|
+
requires_zstd = ["zstd:pic={pic},shared={shared}"]
|
|
25
26
|
srcdir = "{git[curl]}"
|
|
26
27
|
options = [
|
|
27
28
|
"BUILD_SHARED_LIBS={shared[ON,OFF]}",
|
|
28
29
|
"CURL_USE_LIBPSL=OFF",
|
|
29
30
|
"USE_LIBIDN2=OFF",
|
|
30
31
|
"OPENSSL_USE_STATIC_LIBS={shared[OFF,ON]}",
|
|
32
|
+
"CMAKE_POSITION_INDEPENDENT_CODE={pic[ON,OFF]}",
|
|
31
33
|
]
|
|
32
34
|
|
|
33
35
|
@property
|
|
@@ -19,19 +19,21 @@ from jolt.tasks import TaskRegistry
|
|
|
19
19
|
class Grpc(cmake.CMake):
|
|
20
20
|
name = "grpc"
|
|
21
21
|
version = Parameter("1.76.0", help="Grpc version.")
|
|
22
|
+
pic = BooleanParameter(False, help="Build with position independent code.")
|
|
22
23
|
shared = BooleanParameter(False, help="Build shared libraries.")
|
|
23
24
|
generator = "Ninja"
|
|
24
|
-
requires_abseil = ["abseil:shared={shared}"]
|
|
25
|
-
requires_cares = ["c-ares:shared={shared}"]
|
|
25
|
+
requires_abseil = ["abseil:pic={pic},shared={shared}"]
|
|
26
|
+
requires_cares = ["c-ares:pic={pic},shared={shared}"]
|
|
26
27
|
requires_git = ["git:url=https://github.com/grpc/grpc.git,path={buildroot}/git_grpc,rev=v{version},submodules=true"]
|
|
27
28
|
requires_nasm_windows = ["nasm"]
|
|
28
|
-
requires_protobuf = ["protobuf:shared={shared}"]
|
|
29
|
-
requires_re2 = ["re2:shared={shared}"]
|
|
30
|
-
requires_ssl = ["virtual/ssl:shared={shared}"]
|
|
31
|
-
requires_zlib = ["zlib"]
|
|
29
|
+
requires_protobuf = ["protobuf:pic={pic},shared={shared}"]
|
|
30
|
+
requires_re2 = ["re2:pic={pic},shared={shared}"]
|
|
31
|
+
requires_ssl = ["virtual/ssl:pic={pic},shared={shared}"]
|
|
32
|
+
requires_zlib = ["virtual/zlib:pic={pic},shared={shared}"]
|
|
32
33
|
srcdir = "{git[grpc]}"
|
|
33
34
|
options = [
|
|
34
35
|
"BUILD_SHARED_LIBS={shared[ON,OFF]}",
|
|
36
|
+
"CMAKE_POSITION_INDEPENDENT_CODE={pic[ON,OFF]}",
|
|
35
37
|
"CMAKE_CXX_STANDARD=17",
|
|
36
38
|
"gRPC_ABSL_PROVIDER=package",
|
|
37
39
|
"gRPC_BUILD_TESTS=OFF",
|
|
@@ -19,13 +19,15 @@ class Protobuf(cmake.CMake):
|
|
|
19
19
|
|
|
20
20
|
name = "protobuf"
|
|
21
21
|
version = Parameter("33.2", help="Protobuf version.")
|
|
22
|
+
pic = BooleanParameter(False, help="Build with position independent code.")
|
|
22
23
|
shared = BooleanParameter(False, help="Build shared libraries")
|
|
23
|
-
requires_abseil = ["abseil:shared={shared}"]
|
|
24
|
+
requires_abseil = ["abseil:pic={pic},shared={shared}"]
|
|
24
25
|
requires_git = ["git:url=https://github.com/protocolbuffers/protobuf.git,rev=v{version}"]
|
|
25
26
|
srcdir = "{git[protobuf]}"
|
|
26
27
|
options = [
|
|
27
28
|
"BUILD_SHARED_LIBS={shared[ON,OFF]}",
|
|
28
29
|
"CMAKE_CXX_STANDARD=17",
|
|
30
|
+
"CMAKE_POSITION_INDEPENDENT_CODE={pic[ON,OFF]}",
|
|
29
31
|
"protobuf_BUILD_TESTS=OFF",
|
|
30
32
|
"protobuf_MSVC_STATIC_RUNTIME=OFF",
|
|
31
33
|
]
|
|
@@ -12,12 +12,14 @@ from jolt.tasks import TaskRegistry
|
|
|
12
12
|
class RE2(cmake.CMake):
|
|
13
13
|
name = "re2"
|
|
14
14
|
version = Parameter("2025-11-05", help="re2 version.")
|
|
15
|
+
pic = BooleanParameter(False, help="Build with position independent code.")
|
|
15
16
|
shared = BooleanParameter(False, help="Build shared libraries.")
|
|
16
17
|
requires_abseil = ["abseil:shared={shared}"]
|
|
17
18
|
requires_git = ["git:url=https://github.com/google/re2.git,rev={version}"]
|
|
18
19
|
srcdir = "{git[re2]}"
|
|
19
20
|
options = [
|
|
20
21
|
"BUILD_SHARED_LIBS={shared[ON,OFF]}",
|
|
22
|
+
"CMAKE_POSITION_INDEPENDENT_CODE={pic[ON,OFF]}",
|
|
21
23
|
"RE2_BUILD_TESTING=OFF",
|
|
22
24
|
]
|
|
23
25
|
|
|
@@ -5,6 +5,7 @@ from jolt.tasks import TaskRegistry
|
|
|
5
5
|
|
|
6
6
|
class VirtualSsl(Alias):
|
|
7
7
|
name = "virtual/ssl"
|
|
8
|
+
pic = BooleanParameter(False, "Build with position independent code.")
|
|
8
9
|
shared = BooleanParameter(False, help="Use shared libraries.")
|
|
9
10
|
requires = ["openssl:shared={shared}"]
|
|
10
11
|
|
|
@@ -12,11 +12,13 @@ from jolt.tasks import TaskRegistry
|
|
|
12
12
|
class Zlib(cmake.CMake):
|
|
13
13
|
name = "zlib"
|
|
14
14
|
version = Parameter("1.3.1", help="Zlib version.")
|
|
15
|
+
pic = BooleanParameter(False, "Build with position independent code.")
|
|
15
16
|
shared = BooleanParameter(False, "Enable shared libraries.")
|
|
16
17
|
requires_git = ["git:clean=true,url=https://github.com/madler/zlib.git,rev=v{version}"]
|
|
17
18
|
srcdir = "{git[zlib]}"
|
|
18
19
|
options = [
|
|
19
20
|
"BUILD_SHARED_LIBS={shared[ON,OFF]}",
|
|
21
|
+
"CMAKE_POSITION_INDEPENDENT_CODE={pic[ON,OFF]}",
|
|
20
22
|
"ZLIB_BUILD_EXAMPLES=OFF",
|
|
21
23
|
]
|
|
22
24
|
|
|
@@ -58,12 +60,14 @@ class Zlib(cmake.CMake):
|
|
|
58
60
|
class ZlibNg(cmake.CMake):
|
|
59
61
|
name = "zlib-ng"
|
|
60
62
|
version = Parameter("2.3.2", help="Zlib version.")
|
|
63
|
+
pic = BooleanParameter(False, "Build with position independent code.")
|
|
61
64
|
shared = BooleanParameter(False, "Enable shared libraries.")
|
|
62
65
|
requires_git = ["git:url=https://github.com/zlib-ng/zlib-ng.git,rev={version}"]
|
|
63
66
|
srcdir = "{git[zlib-ng]}"
|
|
64
67
|
options = [
|
|
65
68
|
"BUILD_SHARED_LIBS={shared[ON,OFF]}",
|
|
66
69
|
"BUILD_TESTING=OFF",
|
|
70
|
+
"CMAKE_POSITION_INDEPENDENT_CODE={pic[ON,OFF]}",
|
|
67
71
|
]
|
|
68
72
|
|
|
69
73
|
def publish(self, artifact, tools):
|
|
@@ -77,7 +81,9 @@ class ZlibNg(cmake.CMake):
|
|
|
77
81
|
|
|
78
82
|
class VirtualZlib(Alias):
|
|
79
83
|
name = "virtual/zlib"
|
|
80
|
-
|
|
84
|
+
pic = BooleanParameter(False, "Build with position independent code.")
|
|
85
|
+
shared = BooleanParameter(False, "Enable shared libraries.")
|
|
86
|
+
requires = ["zlib:pic={pic},shared={shared}"]
|
|
81
87
|
|
|
82
88
|
|
|
83
89
|
TaskRegistry.get().add_task_class(Zlib)
|
|
@@ -12,10 +12,12 @@ from jolt.tasks import TaskRegistry
|
|
|
12
12
|
class Zstd(cmake.CMake):
|
|
13
13
|
name = "zstd"
|
|
14
14
|
version = Parameter("ebc93b0", help="zstd version.")
|
|
15
|
+
pic = BooleanParameter(False, "Build with position independent code.")
|
|
15
16
|
shared = BooleanParameter(False, "Enable shared libraries.")
|
|
16
17
|
requires_git = ["git:url=https://github.com/facebook/zstd.git,rev={version}"]
|
|
17
18
|
srcdir = "{git[zstd]}"
|
|
18
19
|
options = [
|
|
20
|
+
"CMAKE_POSITION_INDEPENDENT_CODE={pic[ON,OFF]}",
|
|
19
21
|
"ZSTD_BUILD_SHARED={shared[ON,OFF]}",
|
|
20
22
|
"ZSTD_BUILD_STATIC={shared[OFF,ON]}",
|
|
21
23
|
"ZSTD_BUILD_TESTS=OFF",
|
|
@@ -20,7 +20,7 @@ class Cache(cache.StorageProvider):
|
|
|
20
20
|
def __init__(self, cache):
|
|
21
21
|
super().__init__()
|
|
22
22
|
self._cache = cache
|
|
23
|
-
self._uri = config.get(NAME, "uri", "http://cache")
|
|
23
|
+
self._uri = config.get(NAME, "http_uri", config.get(NAME, "uri", "http://cache"))
|
|
24
24
|
self._uri = self._uri.rstrip("/")
|
|
25
25
|
raise_error_if(not self._uri, "Cache Service URI not configured")
|
|
26
26
|
self._file_uri = self._uri + "/files"
|
|
@@ -33,6 +33,18 @@ NAME = "scheduler"
|
|
|
33
33
|
TYPE = "Remote execution"
|
|
34
34
|
|
|
35
35
|
|
|
36
|
+
grpc_keepalive_opts = []
|
|
37
|
+
grpc_keepalive_time = config.getduration(NAME, "grpc_keepalive_time")
|
|
38
|
+
grpc_keepalive_timeout = config.getduration(NAME, "grpc_keepalive_timeout")
|
|
39
|
+
grpc_keepalive_without_calls = config.getboolean(NAME, "grpc_keepalive_without_calls", False)
|
|
40
|
+
if grpc_keepalive_time is not None:
|
|
41
|
+
grpc_keepalive_opts.append(("grpc.keepalive_time_ms", int(grpc_keepalive_time.total_seconds() * 1000)))
|
|
42
|
+
if grpc_keepalive_timeout is not None:
|
|
43
|
+
grpc_keepalive_opts.append(("grpc.keepalive_timeout_ms", int(grpc_keepalive_timeout.total_seconds() * 1000)))
|
|
44
|
+
if grpc_keepalive_without_calls:
|
|
45
|
+
grpc_keepalive_opts.append(("grpc.keepalive_permit_without_calls", 1))
|
|
46
|
+
|
|
47
|
+
|
|
36
48
|
def locked(func):
|
|
37
49
|
""" Decorator to lock a method. """
|
|
38
50
|
def _f(self, *args, **kwargs):
|
|
@@ -394,7 +406,7 @@ class RemoteSession(object):
|
|
|
394
406
|
self.factory = factory
|
|
395
407
|
|
|
396
408
|
# Address of the scheduler.
|
|
397
|
-
self.address = config.geturi(NAME, "uri", "tcp://scheduler.:9090")
|
|
409
|
+
self.address = config.geturi(NAME, "grpc_uri", config.geturi(NAME, "uri", "tcp://scheduler.:9090"))
|
|
398
410
|
raise_error_if(self.address.scheme not in ["tcp"], "Invalid scheme in scheduler URI config: {}", self.address.scheme)
|
|
399
411
|
raise_error_if(not self.address.netloc, "Invalid network address in scheduler URI config: {}", self.address.netloc)
|
|
400
412
|
|
|
@@ -404,6 +416,7 @@ class RemoteSession(object):
|
|
|
404
416
|
# GRPC channel.
|
|
405
417
|
self.channel = grpc.insecure_channel(
|
|
406
418
|
target=self.address.netloc,
|
|
419
|
+
options=grpc_keepalive_opts,
|
|
407
420
|
)
|
|
408
421
|
|
|
409
422
|
# GRPC stub for the scheduler service.
|
|
@@ -559,11 +572,11 @@ log.verbose("[Remote] Loaded")
|
|
|
559
572
|
@click.argument("request", required=True)
|
|
560
573
|
@click.pass_context
|
|
561
574
|
def executor(ctx, worker, build, request):
|
|
562
|
-
address = config.geturi(NAME, "
|
|
575
|
+
address = config.geturi(NAME, "grpc_uri", "tcp://scheduler.:9090")
|
|
563
576
|
raise_error_if(address.scheme not in ["tcp"], "Invalid scheme in scheduler URI config: {}", address.scheme)
|
|
564
577
|
raise_error_if(not address.netloc, "Invalid network address in scheduler URI config: {}", address.netloc)
|
|
565
578
|
|
|
566
|
-
channel = grpc.insecure_channel(address.netloc)
|
|
579
|
+
channel = grpc.insecure_channel(address.netloc, options=grpc_keepalive_opts)
|
|
567
580
|
log.verbose("Waiting for GRPC channel to connect")
|
|
568
581
|
grpc.channel_ready_future(channel).result()
|
|
569
582
|
log.verbose("GRPC channel established: {}", address.netloc)
|
|
@@ -159,7 +159,7 @@ def publish_artifact():
|
|
|
159
159
|
executor.run(env)
|
|
160
160
|
jolt_url = acache.location(task.artifacts[0])
|
|
161
161
|
raise_error_if(not jolt_url, "Failed to deploy jolt to a remote cache")
|
|
162
|
-
cacheUrl = config.get("http", "uri", config.get("cache", "uri", "") + "/files")
|
|
162
|
+
cacheUrl = config.get("http", "uri", config.get("cache", "http_uri", config.get("cache", "uri", "")) + "/files")
|
|
163
163
|
substituteUrl = config.get("selfdeploy", "baseUri")
|
|
164
164
|
if cacheUrl and substituteUrl:
|
|
165
165
|
return task.identity, jolt_url.replace(cacheUrl, substituteUrl)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from datetime import timedelta
|
|
1
2
|
import blake3
|
|
2
3
|
import contextlib
|
|
3
4
|
import ctypes
|
|
@@ -725,3 +726,40 @@ def platform_os_arch():
|
|
|
725
726
|
f"Unsupported platform: {uname.system} {uname.machine}"
|
|
726
727
|
) from None
|
|
727
728
|
return system, architecture
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
def parse_duration(value: str) -> timedelta:
|
|
732
|
+
""" Parses a duration string into a timedelta object.
|
|
733
|
+
|
|
734
|
+
Supported formats are:
|
|
735
|
+
- Nms (milliseconds)
|
|
736
|
+
- Ns (seconds)
|
|
737
|
+
- Nm (minutes)
|
|
738
|
+
- Nh (hours)
|
|
739
|
+
- Nd (days)
|
|
740
|
+
- Nw (weeks)
|
|
741
|
+
|
|
742
|
+
Where N is an integer.
|
|
743
|
+
"""
|
|
744
|
+
pattern = r"^(?P<value>\d+)(?P<unit>s|m|h|d|w)$"
|
|
745
|
+
match = re.match(pattern, value)
|
|
746
|
+
if not match:
|
|
747
|
+
raise ValueError(f"Invalid duration format: {value}")
|
|
748
|
+
|
|
749
|
+
value = int(match.group("value"))
|
|
750
|
+
unit = match.group("unit")
|
|
751
|
+
|
|
752
|
+
if unit == "ms":
|
|
753
|
+
return timedelta(milliseconds=value)
|
|
754
|
+
elif unit == "s":
|
|
755
|
+
return timedelta(seconds=value)
|
|
756
|
+
elif unit == "m":
|
|
757
|
+
return timedelta(minutes=value)
|
|
758
|
+
elif unit == "h":
|
|
759
|
+
return timedelta(hours=value)
|
|
760
|
+
elif unit == "d":
|
|
761
|
+
return timedelta(days=value)
|
|
762
|
+
elif unit == "w":
|
|
763
|
+
return timedelta(weeks=value)
|
|
764
|
+
|
|
765
|
+
raise ValueError(f"Unsupported duration unit: {unit}")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.9.456"
|
jolt-0.9.449/jolt/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.9.449"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|