blob: 91972a48a712451896c0fbf55930e34113259e40 [file] [log] [blame]
package dkms
// Options is the set of options which can be used to control the behavior
// of various DKMS commands. Keeping these in one struct is simpler and
// easier to work with than breaking them down by command, since most DKMS
// commands will directly call another and need to pass along the arguments
// for that command as well (for instance, Install calls Build and needs to
// pass all corresponding Build options).
type Options struct {
// Version tells cos-dkms to print out the version, then exit.
Version bool
// Latest tells cos-dkms to use the latest compatible version of the
// package that is available in the DKMS tree.
Latest bool
// KernelConfig tells Build where to find the kernel .config file
// when preparing the kernel, if it is not in the standard COS location.
Force bool
// ForceVersionOverride tells Install to skip the version check when
// installing modules which already have a potentially newer version
// installed.
ForceVersionOverride bool
// InsertOnInstall tells Install to insert each kernel module into the
// running kernel after it has been installed. This will take into
// account dependencies on any modules in the install tree and the
// built-in modules tree.
InsertOnInstall bool
// ModprobeOnInstall tells Install to modprobe each kernel module after
// it has been installed, thus inserting it into the running kernel.
// Note that a very specific set of mounts is required for this to work
// on COS instances because the default kernel modules tree is read-only.
ModprobeOnInstall bool
// NoDepmod tells install not to run depmod before modprobe, if
// ModprobeOnInstall is specified. This can save time if module
// dependencies don't need to be recalculated.
NoDepmod bool
// Jobs tells Build how many parallel jobs should be used when running
// the MAKE command for each module.
Jobs int
// GCSBucket is the name of the GCS bucket to use as a cache. This will
// be used during:
// Add - to download module sources if they are not present locally and
// to upload module sources if Upload is specified and they are not
// present in the cache.
// Build and Install - to download built modules if they are present in
// the cache and to upload built modules if Upload is specified and
// they are not present in the cache.
// Remove - to remove module sources and built modules if they are present
// in the cache.
// Unbuild - to remove built modules if they are present in the cache.
//
// If the bucket includes a path, that path will be used as the prefix
// for cache operations. For instance, if the value of GCSBucket is
// gs://my-bucket/my-dkms-root/, then all operations will be relative
// to my-dkms-root/ within the bucket.
GCSBucket string
// Upload determines whether or not to upload module sources or built
// modules to the GCSBucket during Add, Build, and Install.
Upload bool
// DownloadWorkers is the maximum number of workers which will be used
// when downloading sources and built modules from a cache. If the number
// of workers is negative or 0, one download worker will be created per
// object to be downloaded. If the number of workers is 1 (default), then
// the downloads will be performed serially in the main thread.
DownloadWorkers int
// MakeVariables is a string containing variables which will be passed
// to the MAKE command when building modules in Build.
MakeVariables string
// InstallBuildDependencies tells Build and Install to build the COS
// compiler toolchain and kernel headers before running a build.
InstallBuildDependencies bool
// LSBReleasePath is the path to the LSB Release file that will be used
// to fill in the package Build and Board values if they are not otherwise
// specified.
LSBReleasePath string
}