blob: ddfd2543199ae6cf0832d580a4aab186a69758f4 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package build defines interfaces for building executable binaries.
package build
import (
"v.io/v23/services/binary"
)
// Architecture specifies the hardware architecture of a host.
type Architecture enum {
Amd64
Arm
X86
}
// Format specifies the file format of a host.
type Format enum {
Elf
Mach
Pe
}
// OperatingSystem specifies the operating system of a host.
type OperatingSystem enum {
Darwin
Linux
Windows
Android
}
// File records the name and contents of a file.
type File struct {
Name string
Contents []byte
}
// Builder describes an interface for building binaries from source.
type Builder interface {
// Build streams sources to the build server, which then attempts to
// build the sources and streams back the compiled binaries.
Build(arch Architecture, os OperatingSystem) stream<File,File> ([]byte | error)
// Describe generates a description for a binary identified by
// the given Object name.
Describe(name string) (binary.Description | error)
}