| // 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[.Patch]]" |
| // |
| // If specified, |
| // - The Major version will be enforced absolutely. Python 3 will not be |
| // preferred over Python 2 because '3' is greater than '2'. |
| // - The remaining versions, if specified, will be regarded as *minimum* |
| // versions. In other words, if "2.7.4" is specified and the system has |
| // "2.7.12", that will suffice. Similarly, "2.6" would accept a "2.7" |
| // interpreter. |
| // |
| // If empty, the default Python interpreter ("python") will be used. |
| 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; |
| |
| // The VirtualEnv package. |
| // |
| // This should be left empty to use the `vpython` default package |
| // (recommended). |
| Package virtualenv = 3; |
| |
| // Specification-provided PEP425 verification tags. |
| // |
| // By default, verification will be performed against a default set of |
| // environment parameters. However, a given specification may offer its own |
| // set of PEP425 tags representing the systems that it wants to be verified |
| // against. Verification will pass only if the spec is valid (i.e. all wheels |
| // exist) for _all_ given PEP425Tags. |
| repeated vpython.PEP425Tag verify_pep425_tag = 4; |
| } |