Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Android/build/build/make/tools/protos/   (Android Betriebssystem Version 17©)  Datei vom 26.5.2026 mit Größe 16 kB image not shown  

Quelle  metadata_file.proto   Sprache: unbekannt

 
Spracherkennung für: .proto vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

// Copyright (C) 2023 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto2";

package metadata_file;

// Proto definition of METADATA files of packages in AOSP codebase.
message Metadata {
  // Name of the package.
  optional string name = 1;

  // A short description (a few lines) of the package.
  // Example: "Handles location lookups, throttling, batching, etc."
  optional string description = 2;

  // Specifies additional data about third-party packages.
  optional ThirdParty third_party = 3;
}

message ThirdParty {
  // URL(s) associated with the package.
  //
  // At a minimum, all packages must specify a URL which identifies where it
  // came from, containing a type of: ARCHIVE, GIT or OTHER. Typically,
  // a package should contain only a single URL from these types.  Occasionally,
  // a package may be broken across multiple archive files for whatever reason,
  // in which case having multiple ARCHIVE URLs is okay.  However, this should
  // not be used to combine different logical packages that are versioned and
  // possibly licensed differently.
  repeated URL url = 1;

  // The package version.  In order of preference, this should contain:
  //  - If the package comes from Git or another source control system,
  //    a specific tag or revision in source control, such as "r123" or
  //    "58e27d2".  This MUST NOT be a mutable ref such as a branch name.
  //  - a released package version such as "1.0", "2.3-beta", etc.
  //  - the date the package was retrieved, formatted as "As of YYYY-MM-DD".
  optional string version = 2;

  // The date of the change in which the package was last upgraded from
  // upstream.
  // This should only identify package upgrades from upstream, not local
  // modifications. This may identify the date of either the original or
  // merged change.
  //
  // Note: this is NOT the date that this version of the package was released
  // externally.
  optional Date last_upgrade_date = 3;

  // License type that identifies how the package may be used.
  optional LicenseType license_type = 4;

  // An additional note explaining the licensing of this package.  This is most
  // commonly used with commercial license.
  optional string license_note = 5;

  // Description of local changes that have been made to the package.  This does
  // not need to (and in most cases should not) attempt to include an exhaustive
  // list of all changes, but may instead direct readers to review the local
  // commit history, a collection of patch files, a separate README.md (or
  // similar) document, etc.
  // Note: Use of this field to store IDs of advisories fixed with a backported
  // patch is deprecated, use "security.mitigated_security_patch" instead.
  optional string local_modifications = 6;

  // Security related metadata including risk category and any special
  // instructions for using the package, as determined by an ISE-TPS review.
  optional Security security = 7;

  // The type of directory this metadata represents.
  optional DirectoryType type = 8 [default = PACKAGE];

  // The homepage for the package. This will eventually replace
  // `url { type: HOMEPAGE }`
  optional string homepage = 9;

  // SBOM information of the package. It is mandatory for prebuilt packages.
  oneof sbom {
    // Reference to external SBOM document provided as URL.
    SBOMRef sbom_ref = 10;
  }

  // Identifiers for the package.
  repeated Identifier identifier = 11;
}

// URL associated with a third-party package.
message URL {
  enum Type {
    // The homepage for the package. For example, "https://bazel.io/". This URL
    // is optional, but encouraged to help disambiguate similarly named packages
    // or to get more information about the package. This is especially helpful
    // when no other URLs provide human readable resources (such as git:// or
    // sso:// URLs).
    HOMEPAGE = 1;

    // The URL of the archive containing the source code for the package, for
    // example a zip or tgz file.
    ARCHIVE = 2;

    // The URL of the upstream git repository this package is retrieved from.
    // For example:
    //  - https://github.com/git/git.git
    //  - git://git.kernel.org/pub/scm/git/git.git
    //
    // Use of a git URL requires that the package "version" value must specify a
    // specific git tag or revision.
    GIT = 3;

    // The URL of the upstream SVN repository this package is retrieved from.
    // For example:
    //  - http://llvm.org/svn/llvm-project/llvm/
    //
    // Use of an SVN URL requires that the package "version" value must specify
    // a specific SVN tag or revision.
    SVN = 4;

    // The URL of the upstream mercurial repository this package is retrieved
    // from. For example:
    //   - https://mercurial-scm.org/repo/evolve
    //
    // Use of a mercurial URL requires that the package "version" value must
    // specify a specific tag or revision.
    HG = 5;

    // The URL of the upstream darcs repository this package is retrieved
    // from. For example:
    //   - https://hub.darcs.net/hu.dwim/hu.dwim.util
    //
    // Use of a DARCS URL requires that the package "version" value must
    // specify a specific tag or revision.
    DARCS = 6;

    PIPER = 7;

    // A URL that does not fit any other type. This may also indicate that the
    // source code was received via email or some other out-of-band way. This is
    // most commonly used with commercial software received directly from the
    // vendor. In the case of email, the URL value can be used to provide
    // additional information about how it was received.
    OTHER = 8;

    // The URL identifying where the local copy of the package source code can
    // be found.
    //
    // Typically, the metadata files describing a package reside in the same
    // directory as the source code for the package. In a few rare cases where
    // they are separate, the LOCAL_SOURCE URL identifies where to find the
    // source code. This only describes where to find the local copy of the
    // source; there should always be an additional URL describing where the
    // package was retrieved from.
    //
    // Examples:
    //  - https://android.googlesource.com/platform/external/apache-http/
    LOCAL_SOURCE = 9;
  }

  // The type of resource this URL identifies.
  optional Type type = 1;

  // The actual URL value.  URLs should be absolute and start with 'http://' or
  // 'https://' (or occasionally 'git://' or 'ftp://' where appropriate).
  optional string value = 2;
}

// License type that identifies how the packages may be used.
enum LicenseType {
  BY_EXCEPTION_ONLY = 1;
  NOTICE = 2;
  PERMISSIVE = 3;
  RECIPROCAL = 4;
  RESTRICTED_IF_STATICALLY_LINKED = 5;
  RESTRICTED = 6;
  UNENCUMBERED = 7;
}

// Identifies security related metadata including risk category and any special
// instructions for using the package.
message Security {
  // Security risk category for a package, as determined by an ISE-TPS review.
  enum Category {
    CATEGORY_UNSPECIFIED = 0;

    // Package should only be used in a sandboxed environment.
    // Package should have restricted visibility.
    SANDBOXED_ONLY = 1;

    // Package should not be used to process user content. It is considered
    // safe to use to process trusted data only. Package should have restricted
    // visibility.
    TRUSTED_DATA_ONLY = 2;

    // Package is considered safe to use.
    REVIEWED_AND_SECURE = 3;
  }

  // Identifies the security risk category for the package.  This will be
  // provided by the ISE-TPS team as the result of a security review of the
  // package.
  optional Category category = 1;

  // An additional security note for the package.
  optional string note = 2;

  // Text tag to categorize the package. It's currently used by security to:
  // - to disable OSV (https://osv.dev)
  // support via the `OSV:disable` tag
  // - to attach CPE to their corresponding packages, for vulnerability
  // monitoring:
  //
  // Please do document your usecase here should you want to add one.
  repeated string tag = 3;

  // ID of advisories fixed with a mitigated patch, for example CVE-2018-1111.
  repeated string mitigated_security_patch = 4;
}

enum DirectoryType {
  UNDEFINED = 0;

  // This directory represents a package.
  PACKAGE = 1;

  // This directory is designed to organize multiple third-party PACKAGE
  // directories.
  GROUP = 2;

  // This directory contains several PACKAGE directories representing
  // different versions of the same third-party project.
  VERSIONS = 3;
}

// Represents a whole or partial calendar date, such as a birthday. The time of
// day and time zone are either specified elsewhere or are insignificant. The
// date is relative to the Gregorian Calendar. This can represent one of the
// following:
//
// * A full date, with non-zero year, month, and day values.
// * A month and day, with a zero year (for example, an anniversary).
// * A year on its own, with a zero month and a zero day.
// * A year and month, with a zero day (for example, a credit card expiration
//   date).
message Date {
  // Year of the date. Must be from 1 to 9999, or 0 to specify a date without
  // a year.
  optional int32 year = 1;
  // Month of a year. Must be from 1 to 12, or 0 to specify a year without a
  // month and day.
  optional int32 month = 2;
  // Day of a month. Must be from 1 to 31 and valid for the year and month, or 0
  // to specify a year by itself or a year and month where the day isn't
  // significant.
  optional int32 day = 3;
}

// Reference to external SBOM document and element corresponding to the package.
// See https://spdx.github.io/spdx-spec/v2.3/document-creation-information/#66-external-document-references-field
message SBOMRef {
  // The URL that points to the SBOM document of the upstream package of this
  // third_party package.
  optional string url = 1;
  // Checksum of the SBOM document the url field points to.
  // Format: e.g. SHA1:<checksum>, or any algorithm defined in
  // https://spdx.github.io/spdx-spec/v2.3/file-information/#8.4
  optional string checksum = 2;
  // SPDXID of the upstream package/file defined in the SBOM document the url field points to.
  // Format: SPDXRef-[a-zA-Z0-9.-]+, see
  // https://spdx.github.io/spdx-spec/v2.3/package-information/#72-package-spdx-identifier-field or
  // https://spdx.github.io/spdx-spec/v2.3/file-information/#82-file-spdx-identifier-field
  optional string element_id = 3;
}

// Identifier for a third-party package.
// See go/tp-metadata-id.
message Identifier {
  // The type of the identifier. Either an "ecosystem" value from
  // https://ossf.github.io/osv-schema/#affectedpackage-field such as "Go",
  // "npm" or "PyPI". The "value" and "version" fields follow the same rules as
  // defined in the OSV spec.

  // Or one of:
  //  - "Git": The "value" field is the URL of the upstream git repository this
  //  package is retrieved from.
  //  For example:
  //   - https://github.com/git/git
  //   - git://git.kernel.org/pub/scm/git/git
  //
  //  Use of a git URL requires that the package "version" value must specify a
  //  specific git tag or revision. This must not be a branch name.
  //
  //  - "SVN": The "value" field is the URL of the upstream SVN repository this
  //  package is retrieved from.
  //  For example:
  //   - http://llvm.org/svn/llvm-project/llvm/
  //
  //  Use of an SVN URL requires that the package "version" value must specify
  //  a specific SVN tag or revision. This must not be a branch name.
  //
  //  - "Hg": The "value" field is the URL of the upstream mercurial repository
  //  this package is retrieved from.
  //  For example:
  //   - https://mercurial-scm.org/repo/evolve
  //
  //  Use of a mercurial URL requires that the package "version" value must
  //  specify a specific tag or revision. This must not be a branch name.
  //
  //  - "Darcs": the "value" field is the URL of the upstream darcs repository
  //  this package is retrieved from.
  //  For example:
  //   - https://hub.darcs.net/hu.dwim/hu.dwim.util
  //
  //  Use of a Darcs URL requires that the package "version" value must
  //  specify a specific tag or revision. This must not be a branch name.
  //
  //  - "Piper": The "value" field is the URL of the upstream piper location.
  //  This is primarily used when a package is being migrated into third_party
  //  from elsewhere in Piper, or when a package is being newly developed in
  //  third_party.
  //
  //  - "VCS": This is a generic fallback for an unlisted VCS system. The
  // "value" field is the URL of the repository for this VCS.
  //
  //  - "Archive": The "value" field is the URL of the archive containing the
  //  source code for the package, for example a zip or tgz file.
  //
  //  - "PrebuiltByAlphabet": This type should be used for archives of primarily
  //  Google-owned source code (may contain non-Google-owned dependencies),
  //  which has been built using production Google infrastructure, and copied
  //  into Android. The "value" field is the URL of the prebuilt artifact or
  //  the relative path of the artifact to the root of a package.
  //  Example:
  //    identifier {
  //      type: "PrebuiltByAlphabet",
  //      version: "1",
  //      value: "v1/arm84_hdpi.apk",
  //    }
  //    identifier {
  //      type: "PrebuiltByAlphabet",
  //      version: "2",
  //      value: "v2/x86_64_xhdpi.apk",
  //    }
  //
  //  - "LocalSource": The "value" field is the URL identifying where the local
  //  copy of the package source code can be found.
  //  Examples:
  //   - https://android.googlesource.com/platform/external/apache-http/
  //
  //  Typically, the metadata files describing a package reside in the same
  //  directory as the source code for the package. In a few rare cases where
  //  they are separate, the LocalSource URL identifies where to find the
  //  source code. This only describes where to find the local copy of the
  //  source; there should always be an additional URL describing where the
  //  package was retrieved from.
  //
  //  - "Other": An identifier that does not fit any other type. This may also
  //  indicate that the Source code was received via email or some other
  //  out-of-band way. This is most commonly used with commercial software
  //  received directly from the Vendor. In the case of email, the "value" field
  //  can be used to provide additional information about how it was received.
  optional string type = 1;

  // A human readable string to indicate why a third-package package does not
  // have this identifier type set.
  // Example:
  //   identifier {
  //     type: "PyPI"
  //     omission_reason: "Only on Git. Not published to PyPI."
  //   }
  optional string omission_reason = 2;

  // The value of the package identifier as defined by the "type".
  // Example:
  //  identifier {
  //    type: "PyPI"
  //    value: "django"
  //    version: "3.2.8"
  //  }
  optional string value = 3;

  // The version associated with this package as defined by the "type".
  // Example:
  //  identifier {
  //    type: "PyPI"
  //    value: "django"
  //    version: "3.2.8"
  //  }
  optional string version = 4;

  // The closest version associated with this package as defined by the "type".
  // This should only be set by automated infrastructure by applying automated
  // heuristics, such as the closest git tag or package version from a package
  // manifest file (e.g. pom.xml).
  //
  // For most identifier types, only one of `version` or `closest_version`
  // should be set (not both). The exception is source repository types such as
  // "Git", where `version` will refer to a git commit, and `closest_version`
  // refers to a git tag.
  // Example:
  //  identifier {
  //    type: "Git",
  //    value: "https://github.com/my/repo"
  //    version: "e5fa44f2b31c1fb553b6021e7360d07d5d91ff5e"
  //    closest_version: "v1.4"
  //  }
  optional string closest_version = 5;

  // When `true`, this Identifier represents the location from which the source
  // code for this package was originally obtained. This should only be set for
  // *one* Identifier in a third_party package's METADATA.

  // For external packages, this is typically for the Identifier associated
  // with the version control system or package manager that was used to
  // check out or download the code.
  optional bool primary_source = 6;
}

[Dauer der Verarbeitung: 0.21 Sekunden, vorverarbeitet 2026-06-28]