| // Copyright 2017 The LUCI Authors. All rights reserved. |
| // Use of this source code is governed under the Apache License, Version 2.0 |
| // that can be found in the LICENSE file. |
| |
| syntax = "proto3"; |
| |
| option go_package = "go.chromium.org/luci/vpython/api/vpython"; |
| |
| package vpython; |
| |
| import "go.chromium.org/luci/vpython/api/vpython/pep425.proto"; |
| |
| // Spec is a "vpython" environment specification. |
| message Spec { |
| // The Python version to use. This should be of the form: |
| // "Major[.Minor]" |
| // |
| // If specified, the version will be enforced absolutely, otherwise vpython |
| // will pick a default version. |
| string python_version = 1; |
| |
| // A definition for a remote package. The type of package depends on the |
| // configured package resolver. |
| message Package { |
| // The name of the package. |
| // |
| // - For CIPD, this is the package name. |
| string name = 1; |
| |
| // The package version. |
| // |
| // - For CIPD, this will be any recognized CIPD version (i.e., ID, tag, or |
| // ref). |
| string version = 2; |
| |
| // Optional PEP425 tags to determine whether this package is included on the |
| // target system. If no match tags are specified, this package will always |
| // be included. If match tags are specified, the package will be included if |
| // any system PEP425 tags match at least one of the match tags. |
| // |
| // A match will succeed if any system PEP425 tag field matches the |
| // corresponding field in the PEP425 tag. If the match tag omits a field |
| // (partial), that field will not be considered. For example, if a match |
| // tag specifies just an ABI field, any system PEP425 tag with that ABI will |
| // be considered a successful match, regardless of other field values. |
| repeated vpython.PEP425Tag match_tag = 3; |
| |
| // Optional PEP425 tags to determine whether this package is NOT included on |
| // the target system. This has the opposite behavior as "match_tag": if any |
| // host tags match any tags in this list, the package will not be installed |
| // on this host. |
| // |
| // A "not_match_tag" overrides a "match_tag", so if a host has tags that |
| // match entries in both, the package will be not considered a match. |
| repeated vpython.PEP425Tag not_match_tag = 4; |
| } |
| repeated Package wheel = 2; |
| |
| // Optional specification-provided PEP425 verification tags. |
| // |
| // Verification will pass only if: |
| // 1. a set of PEP425 tags representing the systems that it wants to be |
| // verified against is provided. |
| // 2. the spec is valid (i.e. all wheels exist) for _all_ given PEP425Tags. |
| repeated vpython.PEP425Tag verify_pep425_tag = 4; |
| |
| // Removed options. |
| reserved 3; |
| reserved "virtualenv"; |
| } |