blob: dad8b996f8948b2d2b359e1e8e614483f1157f42 [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";
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;
}