// Package profile contains implementation and internal interfaces and
// types used by the implementation of Veyron profiles.
package profile

import "veyron2/services/mgmt/build"

// Library describes a shared library that applications may use.
type Library struct {
	// Name is the name of the library.
	Name         string
	// MajorVersion is the major version of the library.
	MajorVersion string
	// MinorVersion is the minor version of the library.
	MinorVersion string
}

// Specification is how we represent a profile internally. It should
// provide enough information to allow matching of binaries to nodes.
type Specification struct {
	// Arch is the target hardware architecture of the profile.
	Arch        build.Architecture
	// Description is a human-friendly description of the profile.
	Description string
	// Format is the file format supported by the profile.
	Format      build.Format
	// Libraries is a set of libraries the profile requires.
	Libraries   set[Library]
	// Label is a human-friendly concise label for the profile,
	// e.g. "linux-media".
	Label       string
	// OS is the target operating system of the profile.
	OS          build.OperatingSystem
}
