blob: 3322a776cd9782b0b902423c404015840ddfd70e [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]"
//
// 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";
}