diff --git a/apko/BUILD.bazel b/apko/BUILD.bazel index 1734199..8e36bbe 100644 --- a/apko/BUILD.bazel +++ b/apko/BUILD.bazel @@ -55,7 +55,9 @@ bzl_library( srcs = ["defs.bzl"], visibility = ["//visibility:public"], deps = [ + "//apko/private:apko_config", "//apko/private:apko_image", + "//apko/private:apko_lock", "//apko/private/range:bazelrc", "@aspect_bazel_lib//lib:write_source_files", ], diff --git a/apko/defs.bzl b/apko/defs.bzl index 2653c6b..b961d2f 100644 --- a/apko/defs.bzl +++ b/apko/defs.bzl @@ -1,7 +1,12 @@ "Public API re-exports" load("//apko/private:apko_image.bzl", _apko_image = "apko_image") +load("//apko/private:apko_lock.bzl", _apko_lock = "apko_lock") load("//apko/private/range:bazelrc.bzl", _apko_bazelrc = "apko_bazelrc") +load("//apko/private:apko_config.bzl", _ApkoConfigInfo = "ApkoConfigInfo", _apko_config = "apko_config") apko_image = _apko_image apko_bazelrc = _apko_bazelrc +ApkoConfigInfo = _ApkoConfigInfo +apko_config = _apko_config +apko_lock = _apko_lock diff --git a/apko/private/BUILD.bazel b/apko/private/BUILD.bazel index 67e3099..df424ab 100644 --- a/apko/private/BUILD.bazel +++ b/apko/private/BUILD.bazel @@ -1,5 +1,13 @@ load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +exports_files(srcs = ["apko_config.tmpl.sh"]) + +bzl_library( + name = "apko_config", + srcs = ["apko_config.bzl"], + visibility = ["//apko:__subpackages__"], +) + bzl_library( name = "apk", srcs = ["apk.bzl"], @@ -16,6 +24,7 @@ bzl_library( visibility = ["//apko:__subpackages__"], deps = [ "apko_run", + ":apko_config", "@bazel_skylib//lib:paths", "@bazel_skylib//lib:versions", ], @@ -25,6 +34,14 @@ bzl_library( name = "apko_run", srcs = ["apko_run.bzl"], visibility = ["//apko:__subpackages__"], + deps = [":apko_config"], +) + +bzl_library( + name = "apko_lock", + srcs = ["apko_lock.bzl"], + visibility = ["//apko:__subpackages__"], + deps = [":apko_run"], ) bzl_library( diff --git a/apko/private/apko_config.bzl b/apko/private/apko_config.bzl new file mode 100644 index 0000000..b54347c --- /dev/null +++ b/apko/private/apko_config.bzl @@ -0,0 +1,63 @@ +"""Provider that serves as an API for adding any files needed for apko build""" + +_PATH_CONVENTION_DOC = """ + When referencing other files in the config yaml file use paths relative to your Bazel workspace root. + For example, if you want to reference source file foo/bar/baz use foo/bar/baz. If you want to reference output file of foo/bar:rule and rule's + output file is rule.out, reference it as foo/bar/rule.out. +""" + +ApkoConfigInfo = provider( + doc = """Information about apko config. May be used when generating apko config file instead of using hardcoded ones. + {} + """.format(_PATH_CONVENTION_DOC), + fields = { + "files": "depset of files that will be needed for building. All of them will be added to the execution of apko commands when built with Bazel.", + }, +) + +def _apko_config_impl(ctx): + config = ctx.file.config + out = ctx.actions.declare_file(ctx.attr.name) + ctx.actions.symlink( + target_file = config, + output = out, + ) + + apko_depsets = [] + for dep in ctx.attr.deps: + if ApkoConfigInfo in dep: + apko_depsets.append(dep[ApkoConfigInfo].files) + direct_deps = [out] + for dep in ctx.files.deps: + direct_deps.append(dep) + + return [ + DefaultInfo( + files = depset([out]), + ), + ApkoConfigInfo( + files = depset(direct_deps, transitive = apko_depsets), + ), + ] + +apko_config = rule( + implementation = _apko_config_impl, + attrs = { + "deps": attr.label_list( + allow_empty = True, + default = [], + allow_files = True, + doc = """ + List of all dependencies of the config. Transitive dependencies are included based on + ApkoConfigInfo provider. + """, + ), + "config": attr.label( + allow_single_file = True, + doc = """ + Config of the image. Either in source directory or generated by Bazel. + {} + """.format(_PATH_CONVENTION_DOC), + ), + }, +) diff --git a/apko/private/apko_image.bzl b/apko/private/apko_image.bzl index eb5a53a..7dac492 100644 --- a/apko/private/apko_image.bzl +++ b/apko/private/apko_image.bzl @@ -1,6 +1,7 @@ "A rule for running apko with prepopulated cache" load("//apko/private:apko_run.bzl", "apko_run") +load("//apko/private:apko_config.bzl", "ApkoConfigInfo") load("@bazel_skylib//lib:paths.bzl", "paths") load("@bazel_skylib//lib:versions.bzl", "versions") @@ -16,6 +17,17 @@ _ATTRS = { def _impl(ctx): apko_info = ctx.toolchains["@rules_apko//apko:toolchain_type"].apko_info + # We execute apko build within ctx.bin_dir.path/workdir and make all the files available within the workdir. + # The key part here is that the path to input file in action is: + # - bin_dir/target.short_path for generated targets (example bazel-out/.../path/to/my_config) + # - target.short_path for source files. (example path/to/source_config) + # + # For each input file we create a symlink as workdir/input.short_path + # Since the symlink is a generated target, its path is: + # bin_dir/workspace_root/package/workdir/input.short_path + # + # Then when we move to bin_dir/workspace_root/package the relative path become target.short_path for all kinds of input files. + workdir = "workdir_{}".format(ctx.label.name) cache_name = "cache_{}".format(ctx.label.name) if ctx.attr.output == "oci": @@ -25,9 +37,10 @@ def _impl(ctx): args = ctx.actions.args() args.add("build") - args.add(ctx.file.config.path) + args.add(ctx.file.config.short_path) args.add(ctx.attr.tag) - args.add(output.path) + + args.add("../" + output.basename) args.add("--vcs=false") @@ -38,17 +51,41 @@ def _impl(ctx): indexes = ctx.attr.contents[OutputGroupInfo].indexes keyrings = ctx.attr.contents[OutputGroupInfo].keyrings - inputs = [ctx.file.config] + inputs = [] + if ApkoConfigInfo in ctx.attr.config: + for f in ctx.attr.config[ApkoConfigInfo].files.to_list(): + if f.is_directory: + input_entry = ctx.actions.declare_directory(paths.join(workdir, f.short_path)) + else: + input_entry = ctx.actions.declare_file(paths.join(workdir, f.short_path)) + ctx.actions.symlink( + target_file = f, + output = input_entry, + ) + inputs.append(input_entry) + else: + config_symlink = ctx.actions.declare_file(paths.join(workdir, ctx.file.config.short_path)) + ctx.actions.symlink( + target_file = ctx.file.config, + output = config_symlink, + ) + inputs.append(config_symlink) + deps = [apks, keyrings] supports_lockfile = versions.is_at_least("0.13.0", apko_info.version) if supports_lockfile: - inputs.append(lockfile) - args.add("--lockfile={}".format(lockfile.path)) + lockfile_symlink = ctx.actions.declare_file(paths.join(workdir, lockfile.short_path)) + ctx.actions.symlink( + target_file = lockfile, + output = lockfile_symlink, + ) + inputs.append(lockfile_symlink) + args.add("--lockfile={}".format(lockfile.short_path)) else: deps.append(indexes) - args.add("--cache-dir={}".format(paths.join(ctx.bin_dir.path, ctx.label.workspace_root, ctx.label.package, cache_name))) + args.add("--cache-dir={}".format(cache_name)) args.add("--offline") if ctx.attr.architecture: @@ -58,17 +95,25 @@ def _impl(ctx): for content in depset(transitive = deps).to_list(): content_owner = content.owner.workspace_name content_cache_entry_key = content.path[content.path.find(content_owner) + len(content_owner) + 1:] - content_entry = ctx.actions.declare_file("/".join([cache_name, content_cache_entry_key])) + content_entry = ctx.actions.declare_file(paths.join(workdir, cache_name, content_cache_entry_key)) ctx.actions.symlink( target_file = content, output = content_entry, ) inputs.append(content_entry) - ctx.actions.run( - executable = apko_info.binary, + apko_binary = ctx.actions.declare_file(paths.join(workdir, apko_info.binary.short_path)) + ctx.actions.symlink( + target_file = apko_info.binary, + output = apko_binary, + ) + inputs.append(apko_binary) + + ctx.actions.run_shell( + command = "cd {} && {} $@".format(paths.join(ctx.bin_dir.path, ctx.label.workspace_root, ctx.label.package, workdir), apko_info.binary.short_path), arguments = [args], inputs = inputs, + tools = [apko_info.binary], outputs = [output], ) @@ -88,7 +133,15 @@ _apko_image = rule( toolchains = apko_image_lib.toolchains, ) -def apko_image(name, contents, config, tag, output = "oci", architecture = None, args = [], **kwargs): +def apko_image( + name, + contents, + config, + tag, + output = "oci", + architecture = None, + args = [], + **kwargs): """Build OCI images from APK packages directly without Dockerfile This rule creates images using the 'apko.yaml' configuration file and relies on cache contents generated by [translate_lock](./translate_lock.md) to be fast. @@ -126,7 +179,8 @@ def apko_image(name, contents, config, tag, output = "oci", architecture = None, Args: name: of the target for the generated image. contents: Label to the contents repository generated by translate_lock. See [apko-cache](./apko-cache.md) documentation. - config: Label to the `apko.yaml` file. + config: Label to the `apko.yaml` file. For more advanced use-cases (multi-file configuration), use target providing `ApkoConfigInfo` + (e.g. output of `apko_config` rule). output: "oci" of "docker", architecture: the CPU architecture which this image should be built to run on. See https://github.com/chainguard-dev/apko/blob/main/docs/apko_file.md#archs-top-level-element"), tag: tag to apply to the resulting docker tarball. only applicable when `output` is `docker` diff --git a/apko/private/apko_lock.bzl b/apko/private/apko_lock.bzl new file mode 100644 index 0000000..abb6e33 --- /dev/null +++ b/apko/private/apko_lock.bzl @@ -0,0 +1,76 @@ +"""Rule for generating apko locks.""" + +load("//apko/private:apko_config.bzl", "ApkoConfigInfo") +load("@bazel_skylib//lib:paths.bzl", "paths") + +_ATTRS = { + "config": attr.label(allow_single_file = True), + "lockfile_name": attr.string(), +} + +_DOC = """ +apko_lock generates the lock file based on the provided config. +""" + +LAUNCHER_TEMPLATE = """ +#!#!/usr/bin/env sh + +set -e + +config={{config}} +output={{output}} + +{{apko_binary}} lock $config --output=${BUILD_WORKSPACE_DIRECTORY}/${output} +""" + +def _impl(ctx): + output = ctx.actions.declare_file("_{}_run.sh".format(ctx.label.name)) + apko_info = ctx.toolchains["@rules_apko//apko:toolchain_type"].apko_info + + ctx.actions.write( + output = output, + content = LAUNCHER_TEMPLATE + .replace("{{apko_binary}}", apko_info.binary.path) + .replace("{{config}}", ctx.file.config.short_path) + .replace("{{output}}", ctx.attr.lockfile_name), + is_executable = True, + ) + + transitive_data = [] + if ApkoConfigInfo in ctx.attr.config: + transitive_data.append(ctx.attr.config[ApkoConfigInfo].files) + + return DefaultInfo( + executable = output, + runfiles = ctx.runfiles( + files = [apko_info.binary] + depset(ctx.files.config, transitive = transitive_data).to_list(), + ), + ) + +_apko_lock = rule( + implementation = _impl, + attrs = _ATTRS, + doc = _DOC, + executable = True, + toolchains = ["@rules_apko//apko:toolchain_type"], +) + +def apko_lock(name, config, lockfile_name): + """Generates executable rule for producing apko lock files. + + When run, the rule will output the lockfile to the lockfile_name in the directory of the package where the rule is defined. + That is, if you define `apko_lock` in `foo/bar/BUILD.bazel` with `lockfile_name="baz.lock.json` the rule will output the lock into + `foo/bar/baz.lock.json`. + + Args: + name: name of the rule, + config: label of the apko config. It can be either a source file or generated target. Additionally, if the target provides ApkoConfigInfo provider, + the transitive dependencies listed in ApkoConfigInfo.files will be added to runfiles as well. + lockfile_name: name of the lockfile + """ + config_label = native.package_relative_label(config) + _apko_lock( + name = name, + config = config, + lockfile_name = paths.join(config_label.package, lockfile_name), + ) diff --git a/docs/rules.md b/docs/rules.md index 4a14d8c..d3523c7 100644 --- a/docs/rules.md +++ b/docs/rules.md @@ -2,6 +2,50 @@ Public API re-exports + + +## apko_config + +
+apko_config(name, config, deps)
+
+ + + +**ATTRIBUTES** + + +| Name | Description | Type | Mandatory | Default | +| :------------- | :------------- | :------------- | :------------- | :------------- | +| name | A unique name for this target. | Name | required | | +| config | Config of the image. Either in source directory or generated by Bazel.

When referencing other files in the config yaml file use paths relative to your Bazel workspace root. For example, if you want to reference source file foo/bar/baz use foo/bar/baz. If you want to reference output file of foo/bar:rule and rule's output file is rule.out, reference it as foo/bar/rule.out. | Label | optional | None | +| deps | List of all dependencies of the config. Transitive dependencies are included based on ApkoConfigInfo provider. | List of labels | optional | [] | + + + + +## ApkoConfigInfo + +
+ApkoConfigInfo(files)
+
+ +Information about apko config. May be used when generating apko config file instead of using hardcoded ones. + + When referencing other files in the config yaml file use paths relative to your Bazel workspace root. + For example, if you want to reference source file foo/bar/baz use foo/bar/baz. If you want to reference output file of foo/bar:rule and rule's + output file is rule.out, reference it as foo/bar/rule.out. + + + +**FIELDS** + + +| Name | Description | +| :------------- | :------------- | +| files | depset of files that will be needed for building. All of them will be added to the execution of apko commands when built with Bazel. | + + ## apko_bazelrc @@ -75,7 +119,7 @@ For more examples checkout the [examples](/examples) directory. | :------------- | :------------- | :------------- | | name | of the target for the generated image. | none | | contents | Label to the contents repository generated by translate_lock. See [apko-cache](./apko-cache.md) documentation. | none | -| config | Label to the apko.yaml file. | none | +| config | Label to the apko.yaml file. For more advanced use-cases (multi-file configuration), use target providing ApkoConfigInfo (e.g. output of apko_config rule). | none | | tag | tag to apply to the resulting docker tarball. only applicable when output is docker | none | | output | "oci" of "docker", | "oci" | | architecture | the CPU architecture which this image should be built to run on. See https://github.com/chainguard-dev/apko/blob/main/docs/apko_file.md#archs-top-level-element"), | None | @@ -83,3 +127,28 @@ For more examples checkout the [examples](/examples) directory. | kwargs | other common arguments like: tags, visibility. | none | + + +## apko_lock + +
+apko_lock(name, config, lockfile_name)
+
+ +Generates executable rule for producing apko lock files. + +When run, the rule will output the lockfile to the lockfile_name in the directory of the package where the rule is defined. +That is, if you define `apko_lock` in `foo/bar/BUILD.bazel` with `lockfile_name="baz.lock.json` the rule will output the lock into +`foo/bar/baz.lock.json`. + + +**PARAMETERS** + + +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| name | name of the rule, | none | +| config | label of the apko config. It can be either a source file or generated target. Additionally, if the target provides ApkoConfigInfo provider, the transitive dependencies listed in ApkoConfigInfo.files will be added to runfiles as well. | none | +| lockfile_name | name of the lockfile | none | + + diff --git a/e2e/smoke/BUILD b/e2e/smoke/BUILD index 03e0853..10ef9f1 100644 --- a/e2e/smoke/BUILD +++ b/e2e/smoke/BUILD @@ -2,7 +2,6 @@ load("@rules_apko//apko:defs.bzl", "apko_bazelrc", "apko_image") load("@bazel_skylib//rules:build_test.bzl", "build_test") -load("@bazel_skylib//rules:copy_file.bzl", "copy_file") apko_bazelrc() @@ -19,16 +18,3 @@ build_test( ":lock", ], ) - -copy_file( - name = "generated_config", - src = ":apko.yaml", - out = "apko.generated.yaml", -) - -apko_image( - name = "lock_from_generated", - config = ":apko.generated.yaml", - contents = "@example_lock//:contents", - tag = "lock:latest", -) diff --git a/e2e/smoke/multifile_config/BUILD b/e2e/smoke/multifile_config/BUILD new file mode 100644 index 0000000..7ad7b0a --- /dev/null +++ b/e2e/smoke/multifile_config/BUILD @@ -0,0 +1,34 @@ +load("@rules_apko//apko:defs.bzl", "apko_config", "apko_image", "apko_lock") +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +apko_config( + name = "intermediate_config", + config = ":intermediate_config.apko.yaml", + deps = [":base_config.apko.yaml"], +) + +apko_config( + name = "final_config", + config = ":final_config.apko.yaml", + deps = [":intermediate_config"], +) + +apko_image( + name = "image_from_generated_config", + config = ":final_config", + contents = "@example_lock//:contents", + tag = "lock:latest", +) + +build_test( + name = "test_generated_config", + targets = [ + ":image_from_generated_config", + ], +) + +apko_lock( + name = "lock_from_generated_config", + config = ":final_config", + lockfile_name = "apko.generated.lock.json", +) diff --git a/e2e/smoke/apko.generated.lock.json b/e2e/smoke/multifile_config/apko.generated.lock.json old mode 100644 new mode 100755 similarity index 72% rename from e2e/smoke/apko.generated.lock.json rename to e2e/smoke/multifile_config/apko.generated.lock.json index e941531..9a2a5b0 --- a/e2e/smoke/apko.generated.lock.json +++ b/e2e/smoke/multifile_config/apko.generated.lock.json @@ -3,6 +3,21 @@ "contents": { "keyring": [], "repositories": [ + { + "name": "dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64", + "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/APKINDEX.tar.gz", + "architecture": "x86_64" + }, + { + "name": "dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64", + "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/APKINDEX.tar.gz", + "architecture": "x86_64" + }, + { + "name": "dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64", + "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/APKINDEX.tar.gz", + "architecture": "x86_64" + }, { "name": "dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64", "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/APKINDEX.tar.gz", diff --git a/e2e/smoke/multifile_config/base_config.apko.yaml b/e2e/smoke/multifile_config/base_config.apko.yaml new file mode 100644 index 0000000..1b7aeff --- /dev/null +++ b/e2e/smoke/multifile_config/base_config.apko.yaml @@ -0,0 +1,22 @@ +contents: + repositories: + - https://dl-cdn.alpinelinux.org/alpine/v3.18/main + packages: + - busybox + +# optional environment configuration +environment: + PATH: /usr/sbin:/sbin:/usr/bin:/bin + +cmd: /bin/sh -l + +# data for /etc/os-release if it does not already exist +# in the image +os-release: + id: alpine + version-id: "3.16.0" + name: "Alpine Slim" + pretty-name: "Alpine Slim (apko)" + +archs: + - amd64 diff --git a/e2e/smoke/multifile_config/final_config.apko.yaml b/e2e/smoke/multifile_config/final_config.apko.yaml new file mode 100644 index 0000000..60659e2 --- /dev/null +++ b/e2e/smoke/multifile_config/final_config.apko.yaml @@ -0,0 +1,4 @@ +include: multifile_config/intermediate_config + +environment: + MY_VAR: /usr/sbin:/sbin:/usr/bin:/bin diff --git a/e2e/smoke/multifile_config/intermediate_config.apko.yaml b/e2e/smoke/multifile_config/intermediate_config.apko.yaml new file mode 100644 index 0000000..d7c71df --- /dev/null +++ b/e2e/smoke/multifile_config/intermediate_config.apko.yaml @@ -0,0 +1 @@ +include: multifile_config/base_config.apko.yaml diff --git a/e2e/smoke/test.sh b/e2e/smoke/test.sh new file mode 100755 index 0000000..c49260b --- /dev/null +++ b/e2e/smoke/test.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +# This file is used by https://github.com/bazel-contrib/.github/blob/master/.github/workflows/bazel.yaml +# which is used in presubmit workflow https://github.com/chainguard-dev/rules_apko/blob/1d78765293a0baf3f92ca49efa51d6c02b9c828e/.github/workflows/ci.yaml#L20 + +# We don't check correctness of the lock generation here, but that the target exists and runs successfully. +bazel run //multifile_config:lock_from_generated_config diff --git a/examples/multi_arch_and_repo/apko.lock.json b/examples/multi_arch_and_repo/apko.lock.json index db46722..8b42863 100755 --- a/examples/multi_arch_and_repo/apko.lock.json +++ b/examples/multi_arch_and_repo/apko.lock.json @@ -84,22 +84,22 @@ }, { "name": "libcrypto3", - "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/aarch64/libcrypto3-3.1.4-r5.apk", - "version": "3.1.4-r5", + "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/aarch64/libcrypto3-3.1.4-r6.apk", + "version": "3.1.4-r6", "architecture": "aarch64", "signature": { "range": "bytes=0-665", - "checksum": "sha1-++51ng2bvqTQmtEQTEcpqJI52ns=" + "checksum": "sha1-ORBh6wB10JlodByGJBfJhdL8+yI=" }, "control": { - "range": "bytes=666-1218", - "checksum": "sha1-KyotT8RRUF/l4aWw1cJc8mDcdNY=" + "range": "bytes=666-1216", + "checksum": "sha1-tNCzY/HqkUVqboa969DYTpnv8VQ=" }, "data": { - "range": "bytes=1219-4329472", - "checksum": "sha256-pflJdPm0TPd6Y/Cz9Nwx8Jx3gSbTVKdlH1FLBUmeQow=" + "range": "bytes=1217-4329472", + "checksum": "sha256-Lbq9vgZ5aR7KX4v1ecxezFLns/2XliBNMngu32QTFf0=" }, - "checksum": "Q1KyotT8RRUF/l4aWw1cJc8mDcdNY=" + "checksum": "Q1tNCzY/HqkUVqboa969DYTpnv8VQ=" }, { "name": "ca-certificates", @@ -331,22 +331,22 @@ }, { "name": "libssl3", - "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/aarch64/libssl3-3.1.4-r5.apk", - "version": "3.1.4-r5", + "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/aarch64/libssl3-3.1.4-r6.apk", + "version": "3.1.4-r6", "architecture": "aarch64", "signature": { - "range": "bytes=0-665", - "checksum": "sha1-cWufQyqlRcRnBp+UFDJEPJV260c=" + "range": "bytes=0-666", + "checksum": "sha1-rrwJJ+fMY8GNmq3sH+PL7T11Tqk=" }, "control": { - "range": "bytes=666-1221", - "checksum": "sha1-hOGQ01jBuIj0dH8HfrTRAhODZNI=" + "range": "bytes=667-1221", + "checksum": "sha1-CqkbbEwhHQwvD/gATYe2H8TDxCg=" }, "data": { "range": "bytes=1222-622592", - "checksum": "sha256-wSLIfB9gxp5XbkEb2cOHJhiK2toXVdOcrGm2E/YYR+Q=" + "checksum": "sha256-t7nj5+gxxx3iHA54IppV8QEDIIGS+KGHFOad0wS+lYk=" }, - "checksum": "Q1hOGQ01jBuIj0dH8HfrTRAhODZNI=" + "checksum": "Q1CqkbbEwhHQwvD/gATYe2H8TDxCg=" }, { "name": "libcurl", @@ -768,22 +768,22 @@ }, { "name": "openssl", - "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/aarch64/openssl-3.1.4-r5.apk", - "version": "3.1.4-r5", + "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/aarch64/openssl-3.1.4-r6.apk", + "version": "3.1.4-r6", "architecture": "aarch64", "signature": { "range": "bytes=0-666", - "checksum": "sha1-oaq+tbjyhlm9D8NGvdQj8xhE/qk=" + "checksum": "sha1-TePa3u/5R1kcq2+MQ1YqaFh8IZA=" }, "control": { - "range": "bytes=667-1267", - "checksum": "sha1-f9lnNFYK+jN6/xlEn81CoYP2Qaw=" + "range": "bytes=667-1263", + "checksum": "sha1-ZIrUlYfXQLaOs3f6rIBZgqHVjEc=" }, "data": { - "range": "bytes=1268-905216", - "checksum": "sha256-jKM6xWPK2GOQjGowcw95XRHfjvBKgUdTR2xQZLzbf3w=" + "range": "bytes=1264-905216", + "checksum": "sha256-82IUwC1M1p3Guw3ntxJ97xZ98SBEtVxEoJFMQTHMhtA=" }, - "checksum": "Q1f9lnNFYK+jN6/xlEn81CoYP2Qaw=" + "checksum": "Q1ZIrUlYfXQLaOs3f6rIBZgqHVjEc=" }, { "name": "unzip", @@ -863,22 +863,22 @@ }, { "name": "libcrypto3", - "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/libcrypto3-3.1.4-r5.apk", - "version": "3.1.4-r5", + "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/libcrypto3-3.1.4-r6.apk", + "version": "3.1.4-r6", "architecture": "x86_64", "signature": { - "range": "bytes=0-662", - "checksum": "sha1-jP7OFAa9aPGCF2+1QWQE0S1H15A=" + "range": "bytes=0-665", + "checksum": "sha1-EuLCcdRSVLnDE3wsX8xj33stuEw=" }, "control": { - "range": "bytes=663-1239", - "checksum": "sha1-YpyAJrqoHxUEdsRMkv4VogQf05U=" + "range": "bytes=666-1241", + "checksum": "sha1-K7Yw02pPtGF9Ai8krUa1XWcUTCw=" }, "data": { - "range": "bytes=1240-4579328", - "checksum": "sha256-9K8JgK2zLlGpGr+LI7O+VOJL4ZR7806jpgKKrDbgfOg=" + "range": "bytes=1242-4579328", + "checksum": "sha256-Esgr0wAe7QJlt+K0v8nE4F22rnhmYkrvsSFD5CLVHtQ=" }, - "checksum": "Q1YpyAJrqoHxUEdsRMkv4VogQf05U=" + "checksum": "Q1K7Yw02pPtGF9Ai8krUa1XWcUTCw=" }, { "name": "ca-certificates", @@ -1110,22 +1110,22 @@ }, { "name": "libssl3", - "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/libssl3-3.1.4-r5.apk", - "version": "3.1.4-r5", + "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/libssl3-3.1.4-r6.apk", + "version": "3.1.4-r6", "architecture": "x86_64", "signature": { - "range": "bytes=0-662", - "checksum": "sha1-dnb2ITQHAQ0oWtbnBnE92r2wZcQ=" + "range": "bytes=0-667", + "checksum": "sha1-bhUbbQECDSQB7HNE/cE2dyO41Bk=" }, "control": { - "range": "bytes=663-1240", - "checksum": "sha1-UDFBsIBmN9KL+EE457Ud1NN0XSE=" + "range": "bytes=668-1246", + "checksum": "sha1-/Xzu2/9Vk56wJ44nNWD5cRwl3Tw=" }, "data": { - "range": "bytes=1241-565248", - "checksum": "sha256-YFYj0ixbdez2rcUcPpY6wAk8O0AbPzjWXRnqKmdjzh8=" + "range": "bytes=1247-565248", + "checksum": "sha256-/T+4bsigAoE0nBxPSvM0lvQoVhk4gdq7WIz34+ZsL5o=" }, - "checksum": "Q1UDFBsIBmN9KL+EE457Ud1NN0XSE=" + "checksum": "Q1/Xzu2/9Vk56wJ44nNWD5cRwl3Tw=" }, { "name": "libcurl", @@ -1547,22 +1547,22 @@ }, { "name": "openssl", - "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/openssl-3.1.4-r5.apk", - "version": "3.1.4-r5", + "url": "https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/openssl-3.1.4-r6.apk", + "version": "3.1.4-r6", "architecture": "x86_64", "signature": { - "range": "bytes=0-667", - "checksum": "sha1-z1KgEgjBwJYCoFurAo3AvU3jIhE=" + "range": "bytes=0-666", + "checksum": "sha1-X9gwtgSmSOuJLB1zTsLThL0x7VM=" }, "control": { - "range": "bytes=668-1289", - "checksum": "sha1-buKVPeknXdNPIJh08QXgHLkE/hU=" + "range": "bytes=667-1287", + "checksum": "sha1-UKPr3nKGqu3TVr8uIpttvy4TuE8=" }, "data": { - "range": "bytes=1290-770048", - "checksum": "sha256-8xpZMDurXq5IGFlvAJoMxTC192fYTEyvuKu4VdjJwHg=" + "range": "bytes=1288-770048", + "checksum": "sha256-UC4Z30suf9f2yH82Nk/xZhQluWJ2lXKKucyrm/McNII=" }, - "checksum": "Q1buKVPeknXdNPIJh08QXgHLkE/hU=" + "checksum": "Q1UKPr3nKGqu3TVr8uIpttvy4TuE8=" }, { "name": "unzip", diff --git a/examples/oci/apko.lock.json b/examples/oci/apko.lock.json index dd336a8..fc61072 100755 --- a/examples/oci/apko.lock.json +++ b/examples/oci/apko.lock.json @@ -22,22 +22,22 @@ "packages": [ { "name": "ca-certificates-bundle", - "url": "https://packages.wolfi.dev/os/aarch64/ca-certificates-bundle-20240226-r0.apk", - "version": "20240226-r0", + "url": "https://packages.wolfi.dev/os/aarch64/ca-certificates-bundle-20240315-r0.apk", + "version": "20240315-r0", "architecture": "aarch64", "signature": { - "range": "bytes=0-702", - "checksum": "sha1-oSWkIODpGuQyYzi9VR0Mt0SbOT0=" + "range": "bytes=0-707", + "checksum": "sha1-bAckSB0Wvee7L3sH3RsdhuaAZpU=" }, "control": { - "range": "bytes=703-1038", - "checksum": "sha1-iOcWsJdedTtFM/q5e/g8SZsn5c8=" + "range": "bytes=708-1045", + "checksum": "sha1-NfAdHuer9/CckkjO0LPnrnseTo0=" }, "data": { - "range": "bytes=1039-256258", - "checksum": "sha256-5fxjyiUusCGYsNqId5RNFbGVlKtxEah/xBecLDXaLgA=" + "range": "bytes=1046-256259", + "checksum": "sha256-pMUGHSifMPhiZw9HeNkNRlKkkJUq9ejPWb91hpM1yGA=" }, - "checksum": "Q1iOcWsJdedTtFM/q5e/g8SZsn5c8=" + "checksum": "Q1NfAdHuer9/CckkjO0LPnrnseTo0=" }, { "name": "wolfi-baselayout", @@ -60,117 +60,117 @@ }, { "name": "ld-linux", - "url": "https://packages.wolfi.dev/os/aarch64/ld-linux-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/aarch64/ld-linux-2.39-r2.apk", + "version": "2.39-r2", "architecture": "aarch64", "signature": { - "range": "bytes=0-696", - "checksum": "sha1-0ShYCySUoCyMSnrXd0CJzfFhnwo=" + "range": "bytes=0-704", + "checksum": "sha1-X6IZDewYgsOgIjMAne0iEwh5s/I=" }, "control": { - "range": "bytes=697-1090", - "checksum": "sha1-Fzrl+O3cCUzz8ApXZWlKkDbFBns=" + "range": "bytes=705-1112", + "checksum": "sha1-KpMiJNHzfnpmprjQGBm8jDaahgU=" }, "data": { - "range": "bytes=1091-265358", - "checksum": "sha256-HYh5/kCVTdpjUXb2073gqYYe5rQvSSSyabVlizJ2NBg=" + "range": "bytes=1113-262800", + "checksum": "sha256-YfZDCIpryWnoOwkM30dwjYd2URAiQL2Vp1BDWUF8InY=" }, - "checksum": "Q1Fzrl+O3cCUzz8ApXZWlKkDbFBns=" + "checksum": "Q1KpMiJNHzfnpmprjQGBm8jDaahgU=" }, { "name": "glibc-locale-posix", - "url": "https://packages.wolfi.dev/os/aarch64/glibc-locale-posix-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/aarch64/glibc-locale-posix-2.39-r2.apk", + "version": "2.39-r2", "architecture": "aarch64", "signature": { - "range": "bytes=0-700", - "checksum": "sha1-GBCXbCU68Mzndvb7vJx3iP9qiUM=" + "range": "bytes=0-696", + "checksum": "sha1-MKhI7CYWebcyYqpbISepFx3cTpE=" }, "control": { - "range": "bytes=701-1043", - "checksum": "sha1-vZ20fz7ySThzS2cPwTfRri57lQk=" + "range": "bytes=697-1051", + "checksum": "sha1-iUWlCGBbagyuDp6UttEECm94R8E=" }, "data": { - "range": "bytes=1044-417024", - "checksum": "sha256-u0K3ta7+kVebF6KMvPBXowfw+DQAp0eHVP/QDCRG8is=" + "range": "bytes=1052-408276", + "checksum": "sha256-8ARJsKhl0ctyoNLf1W50UJgw6y7eD+gGpREe9ZmY/ZM=" }, - "checksum": "Q1vZ20fz7ySThzS2cPwTfRri57lQk=" + "checksum": "Q1iUWlCGBbagyuDp6UttEECm94R8E=" }, { "name": "glibc", - "url": "https://packages.wolfi.dev/os/aarch64/glibc-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/aarch64/glibc-2.39-r2.apk", + "version": "2.39-r2", "architecture": "aarch64", "signature": { - "range": "bytes=0-697", - "checksum": "sha1-JBXEE8i6ipmKOZuiepVQfCbJBEI=" + "range": "bytes=0-698", + "checksum": "sha1-qm1ZgnhLL3pUJG2iCaQhqLUNz+8=" }, "control": { - "range": "bytes=698-1301", - "checksum": "sha1-K1AnxhYhMpxIoP86Wee6QEdhIh0=" + "range": "bytes=699-1325", + "checksum": "sha1-Zlar6gwJz+bnKvBIflrlbQHL2pE=" }, "data": { - "range": "bytes=1302-5588244", - "checksum": "sha256-S0ZsiMyeYNQovL8GFATbFrRIzuFFC/+LHZYzBGdpu+U=" + "range": "bytes=1326-4935755", + "checksum": "sha256-lLlpUofo3R35XO0+7Gc7RpX1Mkxxno1ojF2Tm73sGUY=" }, - "checksum": "Q1K1AnxhYhMpxIoP86Wee6QEdhIh0=" + "checksum": "Q1Zlar6gwJz+bnKvBIflrlbQHL2pE=" }, { "name": "openssl-config", - "url": "https://packages.wolfi.dev/os/aarch64/openssl-config-3.2.1-r0.apk", - "version": "3.2.1-r0", + "url": "https://packages.wolfi.dev/os/aarch64/openssl-config-3.3.0-r5.apk", + "version": "3.3.0-r5", "architecture": "aarch64", "signature": { "range": "bytes=0-700", - "checksum": "sha1-+TpedsosFl4LE/SyYl6drjmzqbY=" + "checksum": "sha1-xxNRTtOg6WZE2v1pcw7R+ZfU6ec=" }, "control": { - "range": "bytes=701-1034", - "checksum": "sha1-8gW+yUzRqeO41hSE5VGSDYOexuc=" + "range": "bytes=701-1048", + "checksum": "sha1-42aA1g613enRLSXTRxC7SVpEPK4=" }, "data": { - "range": "bytes=1035-87983", - "checksum": "sha256-V3fcHA/eMI9dKEdBFNEEGa6fEIN3wfFAEJdGAcqP/ys=" + "range": "bytes=1049-82407", + "checksum": "sha256-yqRwO7G7tlN8NhIWMjwW3bYXT0hEAJ9uFvn2t4wYAHw=" }, - "checksum": "Q18gW+yUzRqeO41hSE5VGSDYOexuc=" + "checksum": "Q142aA1g613enRLSXTRxC7SVpEPK4=" }, { "name": "libcrypto3", - "url": "https://packages.wolfi.dev/os/aarch64/libcrypto3-3.2.1-r0.apk", - "version": "3.2.1-r0", + "url": "https://packages.wolfi.dev/os/aarch64/libcrypto3-3.3.0-r5.apk", + "version": "3.3.0-r5", "architecture": "aarch64", "signature": { - "range": "bytes=0-697", - "checksum": "sha1-dbxtast87i7hHDsFMRUaPgHLMAo=" + "range": "bytes=0-695", + "checksum": "sha1-ZmBxLBgjQvVTunfoGmuhy/7G2p4=" }, "control": { - "range": "bytes=698-1082", - "checksum": "sha1-lcxKt18X6x1OoXwmIeqWWObiyb8=" + "range": "bytes=696-1093", + "checksum": "sha1-dtJNEM8uWlZ+aApvAaqLvMemDTc=" }, "data": { - "range": "bytes=1083-4973119", - "checksum": "sha256-MVa5lAQuJmBFkiXZziJNjVF4S8xcfneQRRWTdMz7Iro=" + "range": "bytes=1094-4977289", + "checksum": "sha256-Jus9NWVV3o9R2gkMUaicV4wUkA8tHuXfbJqlAmCJqRU=" }, - "checksum": "Q1lcxKt18X6x1OoXwmIeqWWObiyb8=" + "checksum": "Q1dtJNEM8uWlZ+aApvAaqLvMemDTc=" }, { "name": "libssl3", - "url": "https://packages.wolfi.dev/os/aarch64/libssl3-3.2.1-r0.apk", - "version": "3.2.1-r0", + "url": "https://packages.wolfi.dev/os/aarch64/libssl3-3.3.0-r5.apk", + "version": "3.3.0-r5", "architecture": "aarch64", "signature": { - "range": "bytes=0-707", - "checksum": "sha1-6/JhVxab0EerYZrXavzdY/f7T8Q=" + "range": "bytes=0-698", + "checksum": "sha1-Xq6Phc32bYpQXwh4UnayZCL0MQk=" }, "control": { - "range": "bytes=708-1088", - "checksum": "sha1-SbiySVuuLVSs60ReEb+sJrAUl28=" + "range": "bytes=699-1092", + "checksum": "sha1-vOiEaFopVze3+vMBTgv0u7RTrm4=" }, "data": { - "range": "bytes=1089-1131051", - "checksum": "sha256-r67/h+7zEDmHLyZRGury58UGmn0fYy0V6oF664r3nvI=" + "range": "bytes=1093-1205626", + "checksum": "sha256-AaEksYx+MgXfibfvtT2OyOJj4oK5AVQ8GCZ3KfTWcXk=" }, - "checksum": "Q1SbiySVuuLVSs60ReEb+sJrAUl28=" + "checksum": "Q1vOiEaFopVze3+vMBTgv0u7RTrm4=" }, { "name": "zlib", @@ -193,60 +193,79 @@ }, { "name": "apk-tools", - "url": "https://packages.wolfi.dev/os/aarch64/apk-tools-2.14.0-r1.apk", - "version": "2.14.0-r1", + "url": "https://packages.wolfi.dev/os/aarch64/apk-tools-2.14.1-r0.apk", + "version": "2.14.1-r0", "architecture": "aarch64", "signature": { - "range": "bytes=0-700", - "checksum": "sha1-8vhyOfegR0P/yaMBcp7+dBGjagM=" + "range": "bytes=0-697", + "checksum": "sha1-R4e5fiWXIrwVA/0OwEmzJ1jmOiA=" }, "control": { - "range": "bytes=701-1129", - "checksum": "sha1-JFLblNleo+XoRzgGSDd6QMUuzSM=" + "range": "bytes=698-1140", + "checksum": "sha1-0NhT/RQpd+icIg1numsmgok2wgs=" }, "data": { - "range": "bytes=1130-605132", - "checksum": "sha256-LRI/KNPIkknYLPT4+NK8mIRlB+OVKwc9MbHvoJHuPpc=" + "range": "bytes=1141-605570", + "checksum": "sha256-wcv+V5jaSFvViwwHl9kgoMHMij1tvpqhTfuc11RdnV8=" }, - "checksum": "Q1JFLblNleo+XoRzgGSDd6QMUuzSM=" + "checksum": "Q10NhT/RQpd+icIg1numsmgok2wgs=" + }, + { + "name": "libxcrypt", + "url": "https://packages.wolfi.dev/os/aarch64/libxcrypt-4.4.36-r4.apk", + "version": "4.4.36-r4", + "architecture": "aarch64", + "signature": { + "range": "bytes=0-702", + "checksum": "sha1-g0acMf8JCquKFxmw9qSyqD9FiPg=" + }, + "control": { + "range": "bytes=703-1096", + "checksum": "sha1-gG67iPeSL/jh/PLhiH5zOk8JKUw=" + }, + "data": { + "range": "bytes=1097-246098", + "checksum": "sha256-MIBtCgy++FuhEu6wwygUY6CGkrkvx0GiC9GHOZGR/Lc=" + }, + "checksum": "Q1gG67iPeSL/jh/PLhiH5zOk8JKUw=" }, { "name": "libcrypt1", - "url": "https://packages.wolfi.dev/os/aarch64/libcrypt1-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/aarch64/libcrypt1-2.39-r2.apk", + "version": "2.39-r2", "architecture": "aarch64", "signature": { - "range": "bytes=0-701", - "checksum": "sha1-zwH+So2ijyEqdC4uuKfaKWe2+AM=" + "range": "bytes=0-702", + "checksum": "sha1-TWOCBD9P1CLuNbHcbkPLnDKgf9c=" }, "control": { - "range": "bytes=702-1088", - "checksum": "sha1-P2DapiNDOFzGCO4jqsYOkEB98hM=" + "range": "bytes=703-1106", + "checksum": "sha1-7kAvsJhiUiOTzyGoHj96ztRjgbo=" }, "data": { - "range": "bytes=1089-101413", - "checksum": "sha256-hi7Fz3JOwYuyiaADtEs6f5zyZoAWhzbB9utnWjYNaI0=" + "range": "bytes=1107-21606", + "checksum": "sha256-NABGCsF7JeQ/PuO3XG5hB/HJHy8S6Y2MJFHcS08urEw=" }, - "checksum": "Q1P2DapiNDOFzGCO4jqsYOkEB98hM=" + "checksum": "Q17kAvsJhiUiOTzyGoHj96ztRjgbo=" }, { "name": "busybox", - "url": "https://packages.wolfi.dev/os/aarch64/busybox-1.36.1-r6.apk", - "version": "1.36.1-r6", + "url": "https://packages.wolfi.dev/os/aarch64/busybox-1.36.1-r7.apk", + "version": "1.36.1-r7", "architecture": "aarch64", "signature": { "range": "bytes=0-697", - "checksum": "sha1-rZhlhXEX01/8pNgJsOyxSB7Hq8U=" + "checksum": "sha1-lkftbh5Qto+QbgVKcCRID4N16ps=" }, "control": { - "range": "bytes=698-1200", - "checksum": "sha1-c5tWsa4EnZDc3vXTDFNLAwzxi9c=" + "range": "bytes=698-1202", + "checksum": "sha1-SMMSh5B0vpq+78vK1qcmg3SeJvM=" }, "data": { - "range": "bytes=1201-738271", - "checksum": "sha256-B17pKV03CPTi0Jyf/3wKzN372ZKBqEW1oPH5RwC2KpI=" + "range": "bytes=1203-738272", + "checksum": "sha256-0YmjjndPCQ0R7ShbErrG1qXCD1WUaOlvHz9SlNKSMDI=" }, - "checksum": "Q1c5tWsa4EnZDc3vXTDFNLAwzxi9c=" + "checksum": "Q1SMMSh5B0vpq+78vK1qcmg3SeJvM=" }, { "name": "wolfi-keys", @@ -288,22 +307,22 @@ }, { "name": "ca-certificates-bundle", - "url": "https://packages.wolfi.dev/os/x86_64/ca-certificates-bundle-20240226-r0.apk", - "version": "20240226-r0", + "url": "https://packages.wolfi.dev/os/x86_64/ca-certificates-bundle-20240315-r0.apk", + "version": "20240315-r0", "architecture": "x86_64", "signature": { - "range": "bytes=0-697", - "checksum": "sha1-HXxbXsOfAhUQYV+d527pzMnrZ4w=" + "range": "bytes=0-695", + "checksum": "sha1-E1NIpx8yCH6x5GcSqB4MzKQxuq4=" }, "control": { - "range": "bytes=698-1035", - "checksum": "sha1-QToEXPLB/AYtwApF4wWGMibX3xE=" + "range": "bytes=696-1032", + "checksum": "sha1-YQmPfQ1Ym4tfjrCMChbESrrRg/o=" }, "data": { - "range": "bytes=1036-256257", - "checksum": "sha256-+qsP+Vt6y5KMcMW1ce50wWCqGXiJVu73yREF4CLvROI=" + "range": "bytes=1033-256258", + "checksum": "sha256-5hhCQURRrKVfPk8TOZVxfjceIUkVE0fh3/vEJBk88Ps=" }, - "checksum": "Q1QToEXPLB/AYtwApF4wWGMibX3xE=" + "checksum": "Q1YQmPfQ1Ym4tfjrCMChbESrrRg/o=" }, { "name": "wolfi-baselayout", @@ -326,117 +345,117 @@ }, { "name": "ld-linux", - "url": "https://packages.wolfi.dev/os/x86_64/ld-linux-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/x86_64/ld-linux-2.39-r2.apk", + "version": "2.39-r2", "architecture": "x86_64", "signature": { - "range": "bytes=0-698", - "checksum": "sha1-h1Sga/5KaoTHo6Ea0SSl4CQPIUU=" + "range": "bytes=0-701", + "checksum": "sha1-oh4vr00LXL4ArbAOR9LS1VzzfYc=" }, "control": { - "range": "bytes=699-1094", - "checksum": "sha1-ankgke0TLps7fy0EObnkBitjDXM=" + "range": "bytes=702-1112", + "checksum": "sha1-uuAznXPkDNBMP/eILVO7UDGj1pU=" }, "data": { - "range": "bytes=1095-266217", - "checksum": "sha256-3txNSNJz1OuSFIpgLFwLBP5q+FI5R7qGI7NGXdQ7NxA=" + "range": "bytes=1113-267815", + "checksum": "sha256-Ath31YTTsiakoEktGl5txvNQpnr/grvFQHlmXa5E7fI=" }, - "checksum": "Q1ankgke0TLps7fy0EObnkBitjDXM=" + "checksum": "Q1uuAznXPkDNBMP/eILVO7UDGj1pU=" }, { "name": "glibc-locale-posix", - "url": "https://packages.wolfi.dev/os/x86_64/glibc-locale-posix-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/x86_64/glibc-locale-posix-2.39-r2.apk", + "version": "2.39-r2", "architecture": "x86_64", "signature": { - "range": "bytes=0-697", - "checksum": "sha1-7yiJ3A833hGrg20scXwY6PFefeY=" + "range": "bytes=0-702", + "checksum": "sha1-FbeSNtuEgFmzNamDx5Dj1LGVgsQ=" }, "control": { - "range": "bytes=698-1043", - "checksum": "sha1-GBM/qD+XZy1s4A7rD9fZISWeO7c=" + "range": "bytes=703-1059", + "checksum": "sha1-TXuyiDJBsTNDwvPq7HFxaeBQ33w=" }, "data": { - "range": "bytes=1044-417023", - "checksum": "sha256-WWaMTX4tj6aZjquSQf90MS81lHMbO1cBYrwhCOepkuY=" + "range": "bytes=1060-408275", + "checksum": "sha256-3s2Fygt+ZuHj/StxP7YffswmhHE7EJ4TxZ7EWlRQ4NA=" }, - "checksum": "Q1GBM/qD+XZy1s4A7rD9fZISWeO7c=" + "checksum": "Q1TXuyiDJBsTNDwvPq7HFxaeBQ33w=" }, { "name": "glibc", - "url": "https://packages.wolfi.dev/os/x86_64/glibc-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/x86_64/glibc-2.39-r2.apk", + "version": "2.39-r2", "architecture": "x86_64", "signature": { - "range": "bytes=0-694", - "checksum": "sha1-3StHWVk6h7yVexKcJjtJZL4CZqg=" + "range": "bytes=0-700", + "checksum": "sha1-v4LRB2eP5VLe623v8sJ3f4wDNFM=" }, "control": { - "range": "bytes=695-1303", - "checksum": "sha1-Szc3cxj+pMd2uIiRS7yEnYlzTck=" + "range": "bytes=701-1330", + "checksum": "sha1-SD8az8RMNr5tnb8/mPZdR+A6V5k=" }, "data": { - "range": "bytes=1304-6660754", - "checksum": "sha256-bNs/hTXPJ3L4iTWHkKx9XfNDpfCq3jY0IwPruJ4QJzU=" + "range": "bytes=1331-5861481", + "checksum": "sha256-QvhWs/fGBaX5calu0uES9fcTMx6+R1xKZHdxkxxSxsg=" }, - "checksum": "Q1Szc3cxj+pMd2uIiRS7yEnYlzTck=" + "checksum": "Q1SD8az8RMNr5tnb8/mPZdR+A6V5k=" }, { "name": "openssl-config", - "url": "https://packages.wolfi.dev/os/x86_64/openssl-config-3.2.1-r0.apk", - "version": "3.2.1-r0", + "url": "https://packages.wolfi.dev/os/x86_64/openssl-config-3.3.0-r5.apk", + "version": "3.3.0-r5", "architecture": "x86_64", "signature": { - "range": "bytes=0-703", - "checksum": "sha1-fsygjfZl7YLgdpBZ5OVKJG/N2HI=" + "range": "bytes=0-702", + "checksum": "sha1-RT/o4gi2oC/l+6IhikP9/PH5awg=" }, "control": { - "range": "bytes=704-1039", - "checksum": "sha1-3piSoRiT6p5eziGu2iPxSkXxf+g=" + "range": "bytes=703-1054", + "checksum": "sha1-+rBEmKEIywe0o/a65ZPjWoUECRQ=" }, "data": { - "range": "bytes=1040-87982", - "checksum": "sha256-+iLQJV5/mU/hTpwsy9zYBfzVIVkd8lXBBqMScHFhHfI=" + "range": "bytes=1055-82406", + "checksum": "sha256-fcShKjtj6wR6kgjwToU1J8hU+AGRf1OGZt9jeXJdM0Q=" }, - "checksum": "Q13piSoRiT6p5eziGu2iPxSkXxf+g=" + "checksum": "Q1+rBEmKEIywe0o/a65ZPjWoUECRQ=" }, { "name": "libcrypto3", - "url": "https://packages.wolfi.dev/os/x86_64/libcrypto3-3.2.1-r0.apk", - "version": "3.2.1-r0", + "url": "https://packages.wolfi.dev/os/x86_64/libcrypto3-3.3.0-r5.apk", + "version": "3.3.0-r5", "architecture": "x86_64", "signature": { - "range": "bytes=0-693", - "checksum": "sha1-vTJq+p2AjVQQjJ4gSkR9ySDQr3k=" + "range": "bytes=0-706", + "checksum": "sha1-EmjggcTaE4QTKI1FzSom0rXam1c=" }, "control": { - "range": "bytes=694-1066", - "checksum": "sha1-kERnIFBBwTWZsA+cmGLkIU75THk=" + "range": "bytes=707-1092", + "checksum": "sha1-1DkfNRzraQMj7ue8LFH6VN6d7Bo=" }, "data": { - "range": "bytes=1067-5895270", - "checksum": "sha256-MB5ZoAsBJ0Osps0a1V0KsM/qQhfZQvYupElgoF1rNLE=" + "range": "bytes=1093-5915048", + "checksum": "sha256-c95GJNThldUhfxVSGbchUI0pS4j6h45Yx6JDPXHaAI0=" }, - "checksum": "Q1kERnIFBBwTWZsA+cmGLkIU75THk=" + "checksum": "Q11DkfNRzraQMj7ue8LFH6VN6d7Bo=" }, { "name": "libssl3", - "url": "https://packages.wolfi.dev/os/x86_64/libssl3-3.2.1-r0.apk", - "version": "3.2.1-r0", + "url": "https://packages.wolfi.dev/os/x86_64/libssl3-3.3.0-r5.apk", + "version": "3.3.0-r5", "architecture": "x86_64", "signature": { - "range": "bytes=0-693", - "checksum": "sha1-wJVFcqH/ewopq4lxwz8OYrZ9/Ws=" + "range": "bytes=0-701", + "checksum": "sha1-4+7eITv9weTmoYBAAyd92WsXS24=" }, "control": { - "range": "bytes=694-1065", - "checksum": "sha1-RFDJtvcstAQi4NjU00ApvNIvoEI=" + "range": "bytes=702-1085", + "checksum": "sha1-5sT5bGF6kgE7DepzZIHCpPpuP70=" }, "data": { - "range": "bytes=1066-1135402", - "checksum": "sha256-oocCJOj9IF7jv3Ov8bPbaAGfq6oaYXuPNnZW9DnOdnE=" + "range": "bytes=1086-1196497", + "checksum": "sha256-fWOAfZYgXO6+yM4Dpo/y7dvV3uxSEhhfO4SUX79TQDw=" }, - "checksum": "Q1RFDJtvcstAQi4NjU00ApvNIvoEI=" + "checksum": "Q15sT5bGF6kgE7DepzZIHCpPpuP70=" }, { "name": "zlib", @@ -459,60 +478,79 @@ }, { "name": "apk-tools", - "url": "https://packages.wolfi.dev/os/x86_64/apk-tools-2.14.0-r1.apk", - "version": "2.14.0-r1", + "url": "https://packages.wolfi.dev/os/x86_64/apk-tools-2.14.1-r0.apk", + "version": "2.14.1-r0", "architecture": "x86_64", "signature": { - "range": "bytes=0-694", - "checksum": "sha1-2Tr4WKmNRkReEiE9t6oYVlLOObc=" + "range": "bytes=0-698", + "checksum": "sha1-36kJjPXcYmscESh01jnQ81iYWck=" }, "control": { - "range": "bytes=695-1129", - "checksum": "sha1-tAzgssIL2RJqyVOp2MQtveTncL8=" + "range": "bytes=699-1146", + "checksum": "sha1-kJcZn1GeNl9Hx9WJsx8097omA9E=" }, "data": { - "range": "bytes=1130-499979", - "checksum": "sha256-Hn/2H01tfNGkBeFum2PRzjxt1mBYpRvHpp9PNNawhnY=" + "range": "bytes=1147-500313", + "checksum": "sha256-dNEqONQUz5ZO69N8dyStadLOcn7ANiD7GwD9RSpdiBM=" }, - "checksum": "Q1tAzgssIL2RJqyVOp2MQtveTncL8=" + "checksum": "Q1kJcZn1GeNl9Hx9WJsx8097omA9E=" + }, + { + "name": "libxcrypt", + "url": "https://packages.wolfi.dev/os/x86_64/libxcrypt-4.4.36-r4.apk", + "version": "4.4.36-r4", + "architecture": "x86_64", + "signature": { + "range": "bytes=0-697", + "checksum": "sha1-hhR4Puw7nMj2H9OzUMTKhK1/7N0=" + }, + "control": { + "range": "bytes=698-1093", + "checksum": "sha1-1cs1/Vkyp8KEwqtqZvPrB+Mfb8A=" + }, + "data": { + "range": "bytes=1094-234977", + "checksum": "sha256-t284K9/cZQaQMy4y4nYXMIjKUTbyaBa/QnUj0cYmTNk=" + }, + "checksum": "Q11cs1/Vkyp8KEwqtqZvPrB+Mfb8A=" }, { "name": "libcrypt1", - "url": "https://packages.wolfi.dev/os/x86_64/libcrypt1-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/x86_64/libcrypt1-2.39-r2.apk", + "version": "2.39-r2", "architecture": "x86_64", "signature": { - "range": "bytes=0-699", - "checksum": "sha1-d6lAg1/ibDAcX2YJXuYbtE+Iadc=" + "range": "bytes=0-700", + "checksum": "sha1-wwLYQc1joetP6IOipSVSCQsZHsM=" }, "control": { - "range": "bytes=700-1090", - "checksum": "sha1-J157D3kZpvP4xe4AAXu/4KaRPAc=" + "range": "bytes=701-1108", + "checksum": "sha1-drCieAMJpJBP1KWvJk6Vhq7Zj20=" }, "data": { - "range": "bytes=1091-74764", - "checksum": "sha256-CccXinGeJQiIpr94goBmJkiJLYm8ndskPIih6puMpqU=" + "range": "bytes=1109-21605", + "checksum": "sha256-LcGaT+nLHN7YtUab5sY0EoXErbOj/S58FXtf1JVxWbM=" }, - "checksum": "Q1J157D3kZpvP4xe4AAXu/4KaRPAc=" + "checksum": "Q1drCieAMJpJBP1KWvJk6Vhq7Zj20=" }, { "name": "busybox", - "url": "https://packages.wolfi.dev/os/x86_64/busybox-1.36.1-r6.apk", - "version": "1.36.1-r6", + "url": "https://packages.wolfi.dev/os/x86_64/busybox-1.36.1-r7.apk", + "version": "1.36.1-r7", "architecture": "x86_64", "signature": { - "range": "bytes=0-697", - "checksum": "sha1-kHBtU+MxcVaRwxWYlrk8HZtECts=" + "range": "bytes=0-700", + "checksum": "sha1-70uMRez2BMN2clrT3wFBWsR5Gew=" }, "control": { - "range": "bytes=698-1205", - "checksum": "sha1-iVzpz+oGU+k3pIeWx8kKuGrabeM=" + "range": "bytes=701-1208", + "checksum": "sha1-7FDk2/BvxV3n5UBi4rz7m8aR1Wc=" }, "data": { - "range": "bytes=1206-636014", - "checksum": "sha256-RQ1mjAqJXUjgWy/6kl4Zgh39LAHTWPugxdXnJs+uPVY=" + "range": "bytes=1209-636015", + "checksum": "sha256-67DYE+o9zQIS2KUyXkBN8SAEkWVh2+isnGTn78VdLMg=" }, - "checksum": "Q1iVzpz+oGU+k3pIeWx8kKuGrabeM=" + "checksum": "Q17FDk2/BvxV3n5UBi4rz7m8aR1Wc=" }, { "name": "wolfi-keys", diff --git a/examples/wolfi-base/apko.lock.json b/examples/wolfi-base/apko.lock.json index da9d64f..0a6374e 100755 --- a/examples/wolfi-base/apko.lock.json +++ b/examples/wolfi-base/apko.lock.json @@ -22,22 +22,22 @@ "packages": [ { "name": "ca-certificates-bundle", - "url": "https://packages.wolfi.dev/os/x86_64/ca-certificates-bundle-20240226-r0.apk", - "version": "20240226-r0", + "url": "https://packages.wolfi.dev/os/x86_64/ca-certificates-bundle-20240315-r0.apk", + "version": "20240315-r0", "architecture": "x86_64", "signature": { - "range": "bytes=0-697", - "checksum": "sha1-HXxbXsOfAhUQYV+d527pzMnrZ4w=" + "range": "bytes=0-695", + "checksum": "sha1-E1NIpx8yCH6x5GcSqB4MzKQxuq4=" }, "control": { - "range": "bytes=698-1035", - "checksum": "sha1-QToEXPLB/AYtwApF4wWGMibX3xE=" + "range": "bytes=696-1032", + "checksum": "sha1-YQmPfQ1Ym4tfjrCMChbESrrRg/o=" }, "data": { - "range": "bytes=1036-256257", - "checksum": "sha256-+qsP+Vt6y5KMcMW1ce50wWCqGXiJVu73yREF4CLvROI=" + "range": "bytes=1033-256258", + "checksum": "sha256-5hhCQURRrKVfPk8TOZVxfjceIUkVE0fh3/vEJBk88Ps=" }, - "checksum": "Q1QToEXPLB/AYtwApF4wWGMibX3xE=" + "checksum": "Q1YQmPfQ1Ym4tfjrCMChbESrrRg/o=" }, { "name": "wolfi-baselayout", @@ -60,117 +60,117 @@ }, { "name": "ld-linux", - "url": "https://packages.wolfi.dev/os/x86_64/ld-linux-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/x86_64/ld-linux-2.39-r2.apk", + "version": "2.39-r2", "architecture": "x86_64", "signature": { - "range": "bytes=0-698", - "checksum": "sha1-h1Sga/5KaoTHo6Ea0SSl4CQPIUU=" + "range": "bytes=0-701", + "checksum": "sha1-oh4vr00LXL4ArbAOR9LS1VzzfYc=" }, "control": { - "range": "bytes=699-1094", - "checksum": "sha1-ankgke0TLps7fy0EObnkBitjDXM=" + "range": "bytes=702-1112", + "checksum": "sha1-uuAznXPkDNBMP/eILVO7UDGj1pU=" }, "data": { - "range": "bytes=1095-266217", - "checksum": "sha256-3txNSNJz1OuSFIpgLFwLBP5q+FI5R7qGI7NGXdQ7NxA=" + "range": "bytes=1113-267815", + "checksum": "sha256-Ath31YTTsiakoEktGl5txvNQpnr/grvFQHlmXa5E7fI=" }, - "checksum": "Q1ankgke0TLps7fy0EObnkBitjDXM=" + "checksum": "Q1uuAznXPkDNBMP/eILVO7UDGj1pU=" }, { "name": "glibc-locale-posix", - "url": "https://packages.wolfi.dev/os/x86_64/glibc-locale-posix-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/x86_64/glibc-locale-posix-2.39-r2.apk", + "version": "2.39-r2", "architecture": "x86_64", "signature": { - "range": "bytes=0-697", - "checksum": "sha1-7yiJ3A833hGrg20scXwY6PFefeY=" + "range": "bytes=0-702", + "checksum": "sha1-FbeSNtuEgFmzNamDx5Dj1LGVgsQ=" }, "control": { - "range": "bytes=698-1043", - "checksum": "sha1-GBM/qD+XZy1s4A7rD9fZISWeO7c=" + "range": "bytes=703-1059", + "checksum": "sha1-TXuyiDJBsTNDwvPq7HFxaeBQ33w=" }, "data": { - "range": "bytes=1044-417023", - "checksum": "sha256-WWaMTX4tj6aZjquSQf90MS81lHMbO1cBYrwhCOepkuY=" + "range": "bytes=1060-408275", + "checksum": "sha256-3s2Fygt+ZuHj/StxP7YffswmhHE7EJ4TxZ7EWlRQ4NA=" }, - "checksum": "Q1GBM/qD+XZy1s4A7rD9fZISWeO7c=" + "checksum": "Q1TXuyiDJBsTNDwvPq7HFxaeBQ33w=" }, { "name": "glibc", - "url": "https://packages.wolfi.dev/os/x86_64/glibc-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/x86_64/glibc-2.39-r2.apk", + "version": "2.39-r2", "architecture": "x86_64", "signature": { - "range": "bytes=0-694", - "checksum": "sha1-3StHWVk6h7yVexKcJjtJZL4CZqg=" + "range": "bytes=0-700", + "checksum": "sha1-v4LRB2eP5VLe623v8sJ3f4wDNFM=" }, "control": { - "range": "bytes=695-1303", - "checksum": "sha1-Szc3cxj+pMd2uIiRS7yEnYlzTck=" + "range": "bytes=701-1330", + "checksum": "sha1-SD8az8RMNr5tnb8/mPZdR+A6V5k=" }, "data": { - "range": "bytes=1304-6660754", - "checksum": "sha256-bNs/hTXPJ3L4iTWHkKx9XfNDpfCq3jY0IwPruJ4QJzU=" + "range": "bytes=1331-5861481", + "checksum": "sha256-QvhWs/fGBaX5calu0uES9fcTMx6+R1xKZHdxkxxSxsg=" }, - "checksum": "Q1Szc3cxj+pMd2uIiRS7yEnYlzTck=" + "checksum": "Q1SD8az8RMNr5tnb8/mPZdR+A6V5k=" }, { "name": "openssl-config", - "url": "https://packages.wolfi.dev/os/x86_64/openssl-config-3.2.1-r0.apk", - "version": "3.2.1-r0", + "url": "https://packages.wolfi.dev/os/x86_64/openssl-config-3.3.0-r5.apk", + "version": "3.3.0-r5", "architecture": "x86_64", "signature": { - "range": "bytes=0-703", - "checksum": "sha1-fsygjfZl7YLgdpBZ5OVKJG/N2HI=" + "range": "bytes=0-702", + "checksum": "sha1-RT/o4gi2oC/l+6IhikP9/PH5awg=" }, "control": { - "range": "bytes=704-1039", - "checksum": "sha1-3piSoRiT6p5eziGu2iPxSkXxf+g=" + "range": "bytes=703-1054", + "checksum": "sha1-+rBEmKEIywe0o/a65ZPjWoUECRQ=" }, "data": { - "range": "bytes=1040-87982", - "checksum": "sha256-+iLQJV5/mU/hTpwsy9zYBfzVIVkd8lXBBqMScHFhHfI=" + "range": "bytes=1055-82406", + "checksum": "sha256-fcShKjtj6wR6kgjwToU1J8hU+AGRf1OGZt9jeXJdM0Q=" }, - "checksum": "Q13piSoRiT6p5eziGu2iPxSkXxf+g=" + "checksum": "Q1+rBEmKEIywe0o/a65ZPjWoUECRQ=" }, { "name": "libcrypto3", - "url": "https://packages.wolfi.dev/os/x86_64/libcrypto3-3.2.1-r0.apk", - "version": "3.2.1-r0", + "url": "https://packages.wolfi.dev/os/x86_64/libcrypto3-3.3.0-r5.apk", + "version": "3.3.0-r5", "architecture": "x86_64", "signature": { - "range": "bytes=0-693", - "checksum": "sha1-vTJq+p2AjVQQjJ4gSkR9ySDQr3k=" + "range": "bytes=0-706", + "checksum": "sha1-EmjggcTaE4QTKI1FzSom0rXam1c=" }, "control": { - "range": "bytes=694-1066", - "checksum": "sha1-kERnIFBBwTWZsA+cmGLkIU75THk=" + "range": "bytes=707-1092", + "checksum": "sha1-1DkfNRzraQMj7ue8LFH6VN6d7Bo=" }, "data": { - "range": "bytes=1067-5895270", - "checksum": "sha256-MB5ZoAsBJ0Osps0a1V0KsM/qQhfZQvYupElgoF1rNLE=" + "range": "bytes=1093-5915048", + "checksum": "sha256-c95GJNThldUhfxVSGbchUI0pS4j6h45Yx6JDPXHaAI0=" }, - "checksum": "Q1kERnIFBBwTWZsA+cmGLkIU75THk=" + "checksum": "Q11DkfNRzraQMj7ue8LFH6VN6d7Bo=" }, { "name": "libssl3", - "url": "https://packages.wolfi.dev/os/x86_64/libssl3-3.2.1-r0.apk", - "version": "3.2.1-r0", + "url": "https://packages.wolfi.dev/os/x86_64/libssl3-3.3.0-r5.apk", + "version": "3.3.0-r5", "architecture": "x86_64", "signature": { - "range": "bytes=0-693", - "checksum": "sha1-wJVFcqH/ewopq4lxwz8OYrZ9/Ws=" + "range": "bytes=0-701", + "checksum": "sha1-4+7eITv9weTmoYBAAyd92WsXS24=" }, "control": { - "range": "bytes=694-1065", - "checksum": "sha1-RFDJtvcstAQi4NjU00ApvNIvoEI=" + "range": "bytes=702-1085", + "checksum": "sha1-5sT5bGF6kgE7DepzZIHCpPpuP70=" }, "data": { - "range": "bytes=1066-1135402", - "checksum": "sha256-oocCJOj9IF7jv3Ov8bPbaAGfq6oaYXuPNnZW9DnOdnE=" + "range": "bytes=1086-1196497", + "checksum": "sha256-fWOAfZYgXO6+yM4Dpo/y7dvV3uxSEhhfO4SUX79TQDw=" }, - "checksum": "Q1RFDJtvcstAQi4NjU00ApvNIvoEI=" + "checksum": "Q15sT5bGF6kgE7DepzZIHCpPpuP70=" }, { "name": "zlib", @@ -193,60 +193,79 @@ }, { "name": "apk-tools", - "url": "https://packages.wolfi.dev/os/x86_64/apk-tools-2.14.0-r1.apk", - "version": "2.14.0-r1", + "url": "https://packages.wolfi.dev/os/x86_64/apk-tools-2.14.1-r0.apk", + "version": "2.14.1-r0", "architecture": "x86_64", "signature": { - "range": "bytes=0-694", - "checksum": "sha1-2Tr4WKmNRkReEiE9t6oYVlLOObc=" + "range": "bytes=0-698", + "checksum": "sha1-36kJjPXcYmscESh01jnQ81iYWck=" }, "control": { - "range": "bytes=695-1129", - "checksum": "sha1-tAzgssIL2RJqyVOp2MQtveTncL8=" + "range": "bytes=699-1146", + "checksum": "sha1-kJcZn1GeNl9Hx9WJsx8097omA9E=" }, "data": { - "range": "bytes=1130-499979", - "checksum": "sha256-Hn/2H01tfNGkBeFum2PRzjxt1mBYpRvHpp9PNNawhnY=" + "range": "bytes=1147-500313", + "checksum": "sha256-dNEqONQUz5ZO69N8dyStadLOcn7ANiD7GwD9RSpdiBM=" }, - "checksum": "Q1tAzgssIL2RJqyVOp2MQtveTncL8=" + "checksum": "Q1kJcZn1GeNl9Hx9WJsx8097omA9E=" + }, + { + "name": "libxcrypt", + "url": "https://packages.wolfi.dev/os/x86_64/libxcrypt-4.4.36-r4.apk", + "version": "4.4.36-r4", + "architecture": "x86_64", + "signature": { + "range": "bytes=0-697", + "checksum": "sha1-hhR4Puw7nMj2H9OzUMTKhK1/7N0=" + }, + "control": { + "range": "bytes=698-1093", + "checksum": "sha1-1cs1/Vkyp8KEwqtqZvPrB+Mfb8A=" + }, + "data": { + "range": "bytes=1094-234977", + "checksum": "sha256-t284K9/cZQaQMy4y4nYXMIjKUTbyaBa/QnUj0cYmTNk=" + }, + "checksum": "Q11cs1/Vkyp8KEwqtqZvPrB+Mfb8A=" }, { "name": "libcrypt1", - "url": "https://packages.wolfi.dev/os/x86_64/libcrypt1-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/x86_64/libcrypt1-2.39-r2.apk", + "version": "2.39-r2", "architecture": "x86_64", "signature": { - "range": "bytes=0-699", - "checksum": "sha1-d6lAg1/ibDAcX2YJXuYbtE+Iadc=" + "range": "bytes=0-700", + "checksum": "sha1-wwLYQc1joetP6IOipSVSCQsZHsM=" }, "control": { - "range": "bytes=700-1090", - "checksum": "sha1-J157D3kZpvP4xe4AAXu/4KaRPAc=" + "range": "bytes=701-1108", + "checksum": "sha1-drCieAMJpJBP1KWvJk6Vhq7Zj20=" }, "data": { - "range": "bytes=1091-74764", - "checksum": "sha256-CccXinGeJQiIpr94goBmJkiJLYm8ndskPIih6puMpqU=" + "range": "bytes=1109-21605", + "checksum": "sha256-LcGaT+nLHN7YtUab5sY0EoXErbOj/S58FXtf1JVxWbM=" }, - "checksum": "Q1J157D3kZpvP4xe4AAXu/4KaRPAc=" + "checksum": "Q1drCieAMJpJBP1KWvJk6Vhq7Zj20=" }, { "name": "busybox", - "url": "https://packages.wolfi.dev/os/x86_64/busybox-1.36.1-r6.apk", - "version": "1.36.1-r6", + "url": "https://packages.wolfi.dev/os/x86_64/busybox-1.36.1-r7.apk", + "version": "1.36.1-r7", "architecture": "x86_64", "signature": { - "range": "bytes=0-697", - "checksum": "sha1-kHBtU+MxcVaRwxWYlrk8HZtECts=" + "range": "bytes=0-700", + "checksum": "sha1-70uMRez2BMN2clrT3wFBWsR5Gew=" }, "control": { - "range": "bytes=698-1205", - "checksum": "sha1-iVzpz+oGU+k3pIeWx8kKuGrabeM=" + "range": "bytes=701-1208", + "checksum": "sha1-7FDk2/BvxV3n5UBi4rz7m8aR1Wc=" }, "data": { - "range": "bytes=1206-636014", - "checksum": "sha256-RQ1mjAqJXUjgWy/6kl4Zgh39LAHTWPugxdXnJs+uPVY=" + "range": "bytes=1209-636015", + "checksum": "sha256-67DYE+o9zQIS2KUyXkBN8SAEkWVh2+isnGTn78VdLMg=" }, - "checksum": "Q1iVzpz+oGU+k3pIeWx8kKuGrabeM=" + "checksum": "Q17FDk2/BvxV3n5UBi4rz7m8aR1Wc=" }, { "name": "wolfi-keys", @@ -288,22 +307,22 @@ }, { "name": "ca-certificates-bundle", - "url": "https://packages.wolfi.dev/os/aarch64/ca-certificates-bundle-20240226-r0.apk", - "version": "20240226-r0", + "url": "https://packages.wolfi.dev/os/aarch64/ca-certificates-bundle-20240315-r0.apk", + "version": "20240315-r0", "architecture": "aarch64", "signature": { - "range": "bytes=0-702", - "checksum": "sha1-oSWkIODpGuQyYzi9VR0Mt0SbOT0=" + "range": "bytes=0-707", + "checksum": "sha1-bAckSB0Wvee7L3sH3RsdhuaAZpU=" }, "control": { - "range": "bytes=703-1038", - "checksum": "sha1-iOcWsJdedTtFM/q5e/g8SZsn5c8=" + "range": "bytes=708-1045", + "checksum": "sha1-NfAdHuer9/CckkjO0LPnrnseTo0=" }, "data": { - "range": "bytes=1039-256258", - "checksum": "sha256-5fxjyiUusCGYsNqId5RNFbGVlKtxEah/xBecLDXaLgA=" + "range": "bytes=1046-256259", + "checksum": "sha256-pMUGHSifMPhiZw9HeNkNRlKkkJUq9ejPWb91hpM1yGA=" }, - "checksum": "Q1iOcWsJdedTtFM/q5e/g8SZsn5c8=" + "checksum": "Q1NfAdHuer9/CckkjO0LPnrnseTo0=" }, { "name": "wolfi-baselayout", @@ -326,117 +345,117 @@ }, { "name": "ld-linux", - "url": "https://packages.wolfi.dev/os/aarch64/ld-linux-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/aarch64/ld-linux-2.39-r2.apk", + "version": "2.39-r2", "architecture": "aarch64", "signature": { - "range": "bytes=0-696", - "checksum": "sha1-0ShYCySUoCyMSnrXd0CJzfFhnwo=" + "range": "bytes=0-704", + "checksum": "sha1-X6IZDewYgsOgIjMAne0iEwh5s/I=" }, "control": { - "range": "bytes=697-1090", - "checksum": "sha1-Fzrl+O3cCUzz8ApXZWlKkDbFBns=" + "range": "bytes=705-1112", + "checksum": "sha1-KpMiJNHzfnpmprjQGBm8jDaahgU=" }, "data": { - "range": "bytes=1091-265358", - "checksum": "sha256-HYh5/kCVTdpjUXb2073gqYYe5rQvSSSyabVlizJ2NBg=" + "range": "bytes=1113-262800", + "checksum": "sha256-YfZDCIpryWnoOwkM30dwjYd2URAiQL2Vp1BDWUF8InY=" }, - "checksum": "Q1Fzrl+O3cCUzz8ApXZWlKkDbFBns=" + "checksum": "Q1KpMiJNHzfnpmprjQGBm8jDaahgU=" }, { "name": "glibc-locale-posix", - "url": "https://packages.wolfi.dev/os/aarch64/glibc-locale-posix-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/aarch64/glibc-locale-posix-2.39-r2.apk", + "version": "2.39-r2", "architecture": "aarch64", "signature": { - "range": "bytes=0-700", - "checksum": "sha1-GBCXbCU68Mzndvb7vJx3iP9qiUM=" + "range": "bytes=0-696", + "checksum": "sha1-MKhI7CYWebcyYqpbISepFx3cTpE=" }, "control": { - "range": "bytes=701-1043", - "checksum": "sha1-vZ20fz7ySThzS2cPwTfRri57lQk=" + "range": "bytes=697-1051", + "checksum": "sha1-iUWlCGBbagyuDp6UttEECm94R8E=" }, "data": { - "range": "bytes=1044-417024", - "checksum": "sha256-u0K3ta7+kVebF6KMvPBXowfw+DQAp0eHVP/QDCRG8is=" + "range": "bytes=1052-408276", + "checksum": "sha256-8ARJsKhl0ctyoNLf1W50UJgw6y7eD+gGpREe9ZmY/ZM=" }, - "checksum": "Q1vZ20fz7ySThzS2cPwTfRri57lQk=" + "checksum": "Q1iUWlCGBbagyuDp6UttEECm94R8E=" }, { "name": "glibc", - "url": "https://packages.wolfi.dev/os/aarch64/glibc-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/aarch64/glibc-2.39-r2.apk", + "version": "2.39-r2", "architecture": "aarch64", "signature": { - "range": "bytes=0-697", - "checksum": "sha1-JBXEE8i6ipmKOZuiepVQfCbJBEI=" + "range": "bytes=0-698", + "checksum": "sha1-qm1ZgnhLL3pUJG2iCaQhqLUNz+8=" }, "control": { - "range": "bytes=698-1301", - "checksum": "sha1-K1AnxhYhMpxIoP86Wee6QEdhIh0=" + "range": "bytes=699-1325", + "checksum": "sha1-Zlar6gwJz+bnKvBIflrlbQHL2pE=" }, "data": { - "range": "bytes=1302-5588244", - "checksum": "sha256-S0ZsiMyeYNQovL8GFATbFrRIzuFFC/+LHZYzBGdpu+U=" + "range": "bytes=1326-4935755", + "checksum": "sha256-lLlpUofo3R35XO0+7Gc7RpX1Mkxxno1ojF2Tm73sGUY=" }, - "checksum": "Q1K1AnxhYhMpxIoP86Wee6QEdhIh0=" + "checksum": "Q1Zlar6gwJz+bnKvBIflrlbQHL2pE=" }, { "name": "openssl-config", - "url": "https://packages.wolfi.dev/os/aarch64/openssl-config-3.2.1-r0.apk", - "version": "3.2.1-r0", + "url": "https://packages.wolfi.dev/os/aarch64/openssl-config-3.3.0-r5.apk", + "version": "3.3.0-r5", "architecture": "aarch64", "signature": { "range": "bytes=0-700", - "checksum": "sha1-+TpedsosFl4LE/SyYl6drjmzqbY=" + "checksum": "sha1-xxNRTtOg6WZE2v1pcw7R+ZfU6ec=" }, "control": { - "range": "bytes=701-1034", - "checksum": "sha1-8gW+yUzRqeO41hSE5VGSDYOexuc=" + "range": "bytes=701-1048", + "checksum": "sha1-42aA1g613enRLSXTRxC7SVpEPK4=" }, "data": { - "range": "bytes=1035-87983", - "checksum": "sha256-V3fcHA/eMI9dKEdBFNEEGa6fEIN3wfFAEJdGAcqP/ys=" + "range": "bytes=1049-82407", + "checksum": "sha256-yqRwO7G7tlN8NhIWMjwW3bYXT0hEAJ9uFvn2t4wYAHw=" }, - "checksum": "Q18gW+yUzRqeO41hSE5VGSDYOexuc=" + "checksum": "Q142aA1g613enRLSXTRxC7SVpEPK4=" }, { "name": "libcrypto3", - "url": "https://packages.wolfi.dev/os/aarch64/libcrypto3-3.2.1-r0.apk", - "version": "3.2.1-r0", + "url": "https://packages.wolfi.dev/os/aarch64/libcrypto3-3.3.0-r5.apk", + "version": "3.3.0-r5", "architecture": "aarch64", "signature": { - "range": "bytes=0-697", - "checksum": "sha1-dbxtast87i7hHDsFMRUaPgHLMAo=" + "range": "bytes=0-695", + "checksum": "sha1-ZmBxLBgjQvVTunfoGmuhy/7G2p4=" }, "control": { - "range": "bytes=698-1082", - "checksum": "sha1-lcxKt18X6x1OoXwmIeqWWObiyb8=" + "range": "bytes=696-1093", + "checksum": "sha1-dtJNEM8uWlZ+aApvAaqLvMemDTc=" }, "data": { - "range": "bytes=1083-4973119", - "checksum": "sha256-MVa5lAQuJmBFkiXZziJNjVF4S8xcfneQRRWTdMz7Iro=" + "range": "bytes=1094-4977289", + "checksum": "sha256-Jus9NWVV3o9R2gkMUaicV4wUkA8tHuXfbJqlAmCJqRU=" }, - "checksum": "Q1lcxKt18X6x1OoXwmIeqWWObiyb8=" + "checksum": "Q1dtJNEM8uWlZ+aApvAaqLvMemDTc=" }, { "name": "libssl3", - "url": "https://packages.wolfi.dev/os/aarch64/libssl3-3.2.1-r0.apk", - "version": "3.2.1-r0", + "url": "https://packages.wolfi.dev/os/aarch64/libssl3-3.3.0-r5.apk", + "version": "3.3.0-r5", "architecture": "aarch64", "signature": { - "range": "bytes=0-707", - "checksum": "sha1-6/JhVxab0EerYZrXavzdY/f7T8Q=" + "range": "bytes=0-698", + "checksum": "sha1-Xq6Phc32bYpQXwh4UnayZCL0MQk=" }, "control": { - "range": "bytes=708-1088", - "checksum": "sha1-SbiySVuuLVSs60ReEb+sJrAUl28=" + "range": "bytes=699-1092", + "checksum": "sha1-vOiEaFopVze3+vMBTgv0u7RTrm4=" }, "data": { - "range": "bytes=1089-1131051", - "checksum": "sha256-r67/h+7zEDmHLyZRGury58UGmn0fYy0V6oF664r3nvI=" + "range": "bytes=1093-1205626", + "checksum": "sha256-AaEksYx+MgXfibfvtT2OyOJj4oK5AVQ8GCZ3KfTWcXk=" }, - "checksum": "Q1SbiySVuuLVSs60ReEb+sJrAUl28=" + "checksum": "Q1vOiEaFopVze3+vMBTgv0u7RTrm4=" }, { "name": "zlib", @@ -459,60 +478,79 @@ }, { "name": "apk-tools", - "url": "https://packages.wolfi.dev/os/aarch64/apk-tools-2.14.0-r1.apk", - "version": "2.14.0-r1", + "url": "https://packages.wolfi.dev/os/aarch64/apk-tools-2.14.1-r0.apk", + "version": "2.14.1-r0", "architecture": "aarch64", "signature": { - "range": "bytes=0-700", - "checksum": "sha1-8vhyOfegR0P/yaMBcp7+dBGjagM=" + "range": "bytes=0-697", + "checksum": "sha1-R4e5fiWXIrwVA/0OwEmzJ1jmOiA=" }, "control": { - "range": "bytes=701-1129", - "checksum": "sha1-JFLblNleo+XoRzgGSDd6QMUuzSM=" + "range": "bytes=698-1140", + "checksum": "sha1-0NhT/RQpd+icIg1numsmgok2wgs=" }, "data": { - "range": "bytes=1130-605132", - "checksum": "sha256-LRI/KNPIkknYLPT4+NK8mIRlB+OVKwc9MbHvoJHuPpc=" + "range": "bytes=1141-605570", + "checksum": "sha256-wcv+V5jaSFvViwwHl9kgoMHMij1tvpqhTfuc11RdnV8=" }, - "checksum": "Q1JFLblNleo+XoRzgGSDd6QMUuzSM=" + "checksum": "Q10NhT/RQpd+icIg1numsmgok2wgs=" + }, + { + "name": "libxcrypt", + "url": "https://packages.wolfi.dev/os/aarch64/libxcrypt-4.4.36-r4.apk", + "version": "4.4.36-r4", + "architecture": "aarch64", + "signature": { + "range": "bytes=0-702", + "checksum": "sha1-g0acMf8JCquKFxmw9qSyqD9FiPg=" + }, + "control": { + "range": "bytes=703-1096", + "checksum": "sha1-gG67iPeSL/jh/PLhiH5zOk8JKUw=" + }, + "data": { + "range": "bytes=1097-246098", + "checksum": "sha256-MIBtCgy++FuhEu6wwygUY6CGkrkvx0GiC9GHOZGR/Lc=" + }, + "checksum": "Q1gG67iPeSL/jh/PLhiH5zOk8JKUw=" }, { "name": "libcrypt1", - "url": "https://packages.wolfi.dev/os/aarch64/libcrypt1-2.38-r11.apk", - "version": "2.38-r11", + "url": "https://packages.wolfi.dev/os/aarch64/libcrypt1-2.39-r2.apk", + "version": "2.39-r2", "architecture": "aarch64", "signature": { - "range": "bytes=0-701", - "checksum": "sha1-zwH+So2ijyEqdC4uuKfaKWe2+AM=" + "range": "bytes=0-702", + "checksum": "sha1-TWOCBD9P1CLuNbHcbkPLnDKgf9c=" }, "control": { - "range": "bytes=702-1088", - "checksum": "sha1-P2DapiNDOFzGCO4jqsYOkEB98hM=" + "range": "bytes=703-1106", + "checksum": "sha1-7kAvsJhiUiOTzyGoHj96ztRjgbo=" }, "data": { - "range": "bytes=1089-101413", - "checksum": "sha256-hi7Fz3JOwYuyiaADtEs6f5zyZoAWhzbB9utnWjYNaI0=" + "range": "bytes=1107-21606", + "checksum": "sha256-NABGCsF7JeQ/PuO3XG5hB/HJHy8S6Y2MJFHcS08urEw=" }, - "checksum": "Q1P2DapiNDOFzGCO4jqsYOkEB98hM=" + "checksum": "Q17kAvsJhiUiOTzyGoHj96ztRjgbo=" }, { "name": "busybox", - "url": "https://packages.wolfi.dev/os/aarch64/busybox-1.36.1-r6.apk", - "version": "1.36.1-r6", + "url": "https://packages.wolfi.dev/os/aarch64/busybox-1.36.1-r7.apk", + "version": "1.36.1-r7", "architecture": "aarch64", "signature": { "range": "bytes=0-697", - "checksum": "sha1-rZhlhXEX01/8pNgJsOyxSB7Hq8U=" + "checksum": "sha1-lkftbh5Qto+QbgVKcCRID4N16ps=" }, "control": { - "range": "bytes=698-1200", - "checksum": "sha1-c5tWsa4EnZDc3vXTDFNLAwzxi9c=" + "range": "bytes=698-1202", + "checksum": "sha1-SMMSh5B0vpq+78vK1qcmg3SeJvM=" }, "data": { - "range": "bytes=1201-738271", - "checksum": "sha256-B17pKV03CPTi0Jyf/3wKzN372ZKBqEW1oPH5RwC2KpI=" + "range": "bytes=1203-738272", + "checksum": "sha256-0YmjjndPCQ0R7ShbErrG1qXCD1WUaOlvHz9SlNKSMDI=" }, - "checksum": "Q1c5tWsa4EnZDc3vXTDFNLAwzxi9c=" + "checksum": "Q1SMMSh5B0vpq+78vK1qcmg3SeJvM=" }, { "name": "wolfi-keys",