blob: d37c59b811c96bfa3dad7d3823244f7aad935dd7 [file] [log] [blame]
// Package profile contains implementation and internal interfaces and
// types used by the implementation of Veyron profiles.
package profile
// Format includes a type (e.g. ELF) and each instance of the format
// has some specific attributes. The key attributes are the target
// operating system (e.g. for ELF this could be one of System V,
// HP-UX, NetBSD, Linux, Solaris, AIX, IRIX, FreeBSD, and OpenBSD) and
// the target instruction set architecture (e.g. for ELF this could be
// one of SPARC, x86, PowerPC, ARM, IA-64, x86-64, and AArch64).
type Format struct {
Name string
Attributes map[string]string
}
// 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 {
// Format is the file format of the application binary.
Format Format
// Libraries is a set of libraries the application binary depends on.
Libraries set[Library]
// A human-friendly concise label for the profile, e.g. "linux-media"
Label string
// A human-friendly description of the profile.
Description string
}