builder

package
v5.7.1+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2019 License: Apache-2.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MixList      listType = iota // List bundles in the mix (with includes)
	LocalList                    // List bundles available locally
	UpstreamList                 // List bundles available upstream
)

Enum of available list types

Variables

View Source
var Native = true

Native controls whether mixer runs the command on the native machine or in a container.

View Source
var Offline = false

Offline controls whether mixer attempts to automatically cache upstream bundles. In offline mode, all necessary bundles must exist in local-bundles.

View Source
var Version = ""

Version of Mixer. This is provided by ldflags in Makefile during compilation

Functions

This section is empty.

Types

type Builder

type Builder struct {
	Config config.MixConfig
	State  config.MixState

	MixVer            string
	MixVerFile        string
	MixBundlesFile    string
	LocalPackagesFile string
	UpstreamURL       string
	UpstreamURLFile   string
	UpstreamVer       string
	UpstreamVerFile   string

	Signing int
	Bump    int

	NumFullfileWorkers int
	NumDeltaWorkers    int
	NumBundleWorkers   int

	// Parsed versions.
	MixVerUint32      uint32
	UpstreamVerUint32 uint32
}

A Builder contains all configurable fields required to perform a full mix operation, and is used to encapsulate life time data.

func New

func New() *Builder

New will return a new instance of Builder with some predetermined sane default values.

func NewFromConfig

func NewFromConfig(conf string) (*Builder, error)

NewFromConfig creates a new Builder with the given Configuration.

func (*Builder) AddBundles

func (b *Builder) AddBundles(bundles []string, allLocal bool, allUpstream bool, git bool) error

AddBundles adds the specified bundles to the Mix Bundles List. Values are verified as valid, and duplicate values are removed. The resulting Mix Bundles List will be in sorted order.

func (*Builder) AddRPMList

func (b *Builder) AddRPMList(rpms []string) error

AddRPMList copies rpms into the repodir and calls createrepo_c on it to generate a dnf-consumable repository for the bundle builder to use.

func (*Builder) AddRepo

func (b *Builder) AddRepo(name, url string) error

AddRepo adds and enables a repo configuration named <name> pointing at URL <url>. It calls b.NewDNFConfIfNeeded() to create the DNF config if it does not exist and performs a check to see if the repo passed has already been configured.

func (*Builder) BuildBundles

func (b *Builder) BuildBundles(template *x509.Certificate, privkey *rsa.PrivateKey, signflag, clean bool, downloadRetries int) error

BuildBundles will attempt to construct the bundles required by generating a DNF configuration file, then resolving all files for each bundle using dnf resolve and no-op installs. One full chroot is created from this step with the file contents of all bundles.

func (*Builder) BuildDeltaManifests

func (b *Builder) BuildDeltaManifests(from, to uint32) error

BuildDeltaManifests between two versions of the mix.

func (*Builder) BuildDeltaManifestsPreviousVersions

func (b *Builder) BuildDeltaManifestsPreviousVersions(prev, to uint32) error

BuildDeltaManifestsPreviousVersions builds manifests to version from up to prev versions. It walks the Manifest "previous" field to find those from versions.

func (*Builder) BuildDeltaPacks

func (b *Builder) BuildDeltaPacks(from, to uint32, printReport bool) error

BuildDeltaPacks between two versions of the mix.

func (*Builder) BuildDeltaPacksPreviousVersions

func (b *Builder) BuildDeltaPacksPreviousVersions(prev, to uint32, printReport bool) error

BuildDeltaPacksPreviousVersions builds packs to version from up to prev versions. It walks the Manifest "previous" field to find those from versions.

func (*Builder) BuildImage

func (b *Builder) BuildImage(format string, template string) error

BuildImage will now proceed to build the full image with the previously validated configuration.

func (*Builder) BuildUpdate

func (b *Builder) BuildUpdate(params UpdateParameters) error

BuildUpdate will produce an update consumable by the swupd client

func (*Builder) CheckBumpNeeded

func (b *Builder) CheckBumpNeeded(silent bool) (bool, error)

CheckBumpNeeded returns nil if it successfully deduces there is no format bump boundary being crossed.

func (*Builder) CheckManifestCorrectness

func (b *Builder) CheckManifestCorrectness(fromVer, toVer, downloadRetries int) error

CheckManifestCorrectness validates that the changes in manifest files between two versions aligns to the corresponding RPM changes. Any mismatched files between the manifests and RPMs will be printed as errors. When there are no errors, package and file statistics for each modified bundle will be displayed.

func (*Builder) CopyFullGroupsINI

func (b *Builder) CopyFullGroupsINI() error

CopyFullGroupsINI copies the initial ini file which has ALL bundle definitions

func (*Builder) CreateBundles

func (b *Builder) CreateBundles(bundles []string, add bool, git bool) error

CreateBundles copies a list of bundles from upstream-bundles to local-bundles if they are not already there or creates a blank template if they are new. 'add' will also add the bundles to the mix.

func (*Builder) DownloadFileFromUpstream

func (b *Builder) DownloadFileFromUpstream(subpath string, filePath string) error

DownloadFileFromUpstream will download a file from the Upstream URL joined with the passed subpath and write that file to the supplied file path. If the path is left empty, the file name will be inferred from the source and written to PWD.

func (*Builder) DownloadFileFromUpstreamAsString

func (b *Builder) DownloadFileFromUpstreamAsString(subpath string) (string, error)

DownloadFileFromUpstreamAsString will download a file from the Upstream URL joined with the passed subpath. It will trim leading and trailing whitespace from the result.

func (*Builder) GetHostAndUpstreamFormats

func (b *Builder) GetHostAndUpstreamFormats() (string, string, error)

GetHostAndUpstreamFormats retreives the formats for the host and the mix's upstream version. It attempts to determine the format for the host machine, and if successful, looks up the format for the desired upstream version.

func (*Builder) GetLastBuildVersion

func (b *Builder) GetLastBuildVersion() (string, error)

GetLastBuildVersion returns the version number of the most recent build

func (*Builder) InitMix

func (b *Builder) InitMix(upstreamVer string, mixVer string, allLocal bool, allUpstream bool, noDefaults bool, upstreamURL string, git bool) error

InitMix will initialise a new swupd-client consumable "mix" with the given based Clear Linux version and specified mix version.

func (*Builder) ListBundles

func (b *Builder) ListBundles(listType listType, tree bool) error

ListBundles prints out a bundle list in either a flat list or tree view

func (*Builder) ListRepos

func (b *Builder) ListRepos() error

ListRepos lists all configured repositories in the DNF configuration file. This will fail if a DNF conf has not yet been generated.

func (*Builder) ModifyBundles

func (b *Builder) ModifyBundles(action func([]string) error) error

ModifyBundles goes through the bundle directory and performs an action when it finds a Deprecated bundle

func (*Builder) NewDNFConfIfNeeded

func (b *Builder) NewDNFConfIfNeeded() error

NewDNFConfIfNeeded creates a new DNF configuration file if it does not already exist

func (*Builder) PrintVersions

func (b *Builder) PrintVersions() error

PrintVersions prints the current mix and upstream versions, and the latest version of upstream.

func (*Builder) ReadVersions

func (b *Builder) ReadVersions() error

ReadVersions will initialise the mix versions (mix and clearlinux) from the configuration files in the version directory.

func (*Builder) RemoveBundles

func (b *Builder) RemoveBundles(bundles []string, mix bool, local bool, git bool) error

RemoveBundles removes a list of bundles from the Mix Bundles List. If a bundle is not present, it is skipped. If 'local' is passed, the corresponding bundle file is removed from local-bundles. Note that this is an irreversible step. The Mix Bundles List is validated when read in, and the resulting Mix Bundles List will be in sorted order.

func (*Builder) RemoveBundlesGroupINI

func (b *Builder) RemoveBundlesGroupINI(bundles []string) error

RemoveBundlesGroupINI removes the bundles from groups.ini and mixbundles so they are not tracked anymore and manifests do not get created for them

func (*Builder) RemoveRepo

func (b *Builder) RemoveRepo(name string) error

RemoveRepo removes a configured repo <name> if it exists in the DNF configuration. This will fail if a DNF conf has not yet been generated.

func (*Builder) ReplaceInfoBundles

func (b *Builder) ReplaceInfoBundles(filenames []string) error

ReplaceInfoBundles wipes the <bundle>-info files and replaces them with <bundle>/ directories that are empty. When the manifest creation happens it will mark all files in that bundles as deleted.

func (*Builder) RevertFullGroupsINI

func (b *Builder) RevertFullGroupsINI() error

RevertFullGroupsINI copies back the full ini to the manifest creator accounts for deleted bundles

func (*Builder) RunCommandInContainer

func (b *Builder) RunCommandInContainer(cmd []string) error

RunCommandInContainer will pull the content necessary to build a docker image capable of running the desired command, build that image, and then run the command in that image.

func (*Builder) SetExcludesRepo

func (b *Builder) SetExcludesRepo(reponame, pkgs string) error

SetExcludesRepo sets the ecludes for the repo <name> to [pkgs...]

func (*Builder) SetURLRepo

func (b *Builder) SetURLRepo(name, url string) error

SetURLRepo sets the URL for the repo <name> to <url>. If <name> does not exist it is created.

func (*Builder) SignManifestMoM

func (b *Builder) SignManifestMoM() error

SignManifestMoM will sign the Manifest.MoM file in in place based on the Mix version read from builder.conf.

func (*Builder) UnstageMixFromBump

func (b *Builder) UnstageMixFromBump() error

UnstageMixFromBump resets the upstreamversion file from the temporary ".bump" file, if it exists. This returns the user to their desired upstream version after having completed the upstream format boundary bump builds.

func (*Builder) UpdateFormatVersion

func (b *Builder) UpdateFormatVersion(version string) error

UpdateFormatVersion updates the builder.conf file with a new format version

func (*Builder) UpdateMixVer

func (b *Builder) UpdateMixVer(version int) error

UpdateMixVer sets the mix version in the builder object and writes it out to file

func (*Builder) UpdatePreviousMixVersion

func (b *Builder) UpdatePreviousMixVersion(version string) error

UpdatePreviousMixVersion updates the PREVIOUS_MIX_VERSION field in mixer.state

func (*Builder) UpdateVersions

func (b *Builder) UpdateVersions(nextMix, nextUpstream uint32, skipFormatCheck bool) error

UpdateVersions will validate then update both mix and upstream versions. If upstream version is 0, then the latest upstream version in the current upstream format will be taken instead.

func (*Builder) ValidateBundles

func (b *Builder) ValidateBundles(bundles []string, lvl ValidationLevel) error

ValidateBundles runs bundle parsing validation on a list of local bundles. In addition to parsing errors, errors are generated if the bundle is not found in local-bundles.

func (*Builder) ValidateLocalBundles

func (b *Builder) ValidateLocalBundles(lvl ValidationLevel) error

ValidateLocalBundles runs bundle parsing validation on all local bundles.

type UpdateParameters

type UpdateParameters struct {
	// Minimum version used to generate delta packs
	MinVersion int
	// Format version used in this update
	Format string
	// Update latest format version and image version files to current mix
	Publish bool
	// Skip signing Manifest.MoM
	SkipSigning bool
	// Skip fullfiles generation
	SkipFullfiles bool
	// Skip zero packs generation
	SkipPacks bool
}

UpdateParameters contains the configuration parameters for building an update

type ValidationLevel

type ValidationLevel int

ValidationLevel represents a specific validation level

const (
	BasicValidation ValidationLevel = iota
	StrictValidation
)

Enum of available validation levels

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL