blob: a153d11066510ed3d252cdd9c227e29632208397 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.pkg;
using fuchsia.url;
/// A content-addressed merkle root that describes an artifact that is tracked by the
/// packaging system.
type BlobId = struct {
merkle_root array<uint8, 32>;
};
/// A tuple of the content-addressed merkle root for an artifact, along with that
/// artifact's length in bytes.
type BlobInfo = struct {
blob_id BlobId;
length uint64;
};
/// A fuchsia-pkg:// URL indicating a package.
/// https://fuchsia.dev/fuchsia-src/concepts/packages/package_url#package_identity
type PackageUrl = struct {
url string:fuchsia.url.MAX_URL_LENGTH;
};
/// A fuchsia-pkg:// URL indicating a repository.
/// https://fuchsia.dev/fuchsia-src/concepts/packages/package_url#repository_identity
type RepositoryUrl = struct {
url string:fuchsia.url.MAX_URL_LENGTH;
};
/// A single entry in the package index.
type PackageIndexEntry = struct {
package_url PackageUrl;
meta_far_blob_id BlobId;
};
/// A package resolution context, used when resolving package URLs relative to
/// another package.
type ResolutionContext = struct {
bytes vector<uint8>:MAX_RESOLUTION_CONTEXT_SIZE;
};
// TODO(https://fxbug.dev/42050722): Change this length to something smaller once
// fuchsia.pkg implements subpackages, assuming fuchsia.pkg implements the
// package context value as a much smaller lookup key (such as a package hash to
// the package containing the subpackage map). Make a related change to
// the component's MAX_RESOLUTION_CONTEXT_SIZE in
// //sdk/fidl/fuchsia.component.resolution/component.fidl
/// The maximum number of bytes for a `ResolutionContext`.
///
/// Note that this value must be less than or equal to
/// `fuchsia.component.resolution::MAX_RESOLUTION_CONTEXT_SIZE`, since the
/// component resolver is expected to copy or contain the context provided by
/// the package resolver.
const MAX_RESOLUTION_CONTEXT_SIZE uint32 = 8192;