blob: 3b803a9fc72743c68c994999e57556e9a9ea8bf5 [file] [log] [blame]
// 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";
package vpython;
import "";
// 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.
repeated vpython.PEP425Tag verify_pep425_tag = 4;