blob: bebf473a13da2e153989cfe9eeefa98da5ac9bb5 [file] [log] [blame]
package actions
import (
"context"
"strings"
"cos.googlesource.com/cos/tools.git/src/pkg/dkms"
"github.com/spf13/cobra"
)
var buildCmd = &cobra.Command{
Use: "build",
Short: "Builds a module from the DKMS tree",
Long: strings.TrimSpace(`
Compiles the modules in a DKMS package using the MAKE command from dkms.conf
and saves the results to the package's build directory in the DKMS tree.
If a --gcs-bucket is provided, this will attempt to download the compiled
modules from the package, and will only fall back to building them locally if
they are not present and downloadable from the bucket. If --upload is also
passed, this will upload modules to the bucket after they have been compiled.
If the package is not already added to the DKMS source tree, this will try to
add it. See the add command for more details.
If --install-build-dependencies is passed and a local build must be performed,
this will install the appropriate compiler toolchain and kernel headers for
the specified kernel.
If any patches should be applied before building the package, as specified in
dkms.conf, this will apply them.
If --make-variables is set to "default", the following default make variables
will be appended to the MAKE command:
ARCH=${arch}
CC=toolchain/bin/${arch}-cros-linux-gnu-clang
CXX=toolchain/bin/${arch}-cros-linux-gnu-clang++
LD=toolchain/bin/${arch}-cros-linux-gnu-ld.lld
STRIP=toolchain/bin/llvm-strip
OBJCOPY=toolchain/bin/llvm-objcopy
HOSTCC=${arch}-pc-linux-gnu-clang
HOSTCXX=${arch}-pc-linux-gnu-clang++
HOSTLD=${arch}-pc-linux-gnu-clang
`),
Args: ParseArgs,
RunE: func(cmd *cobra.Command, args []string) error {
if RootGCSBucket == nil {
return dkms.Build(RootPackage, RootOptions)
} else {
return dkms.CachedBuild(context.Background(), RootPackage, RootGCSBucket, RootOptions)
}
},
}
func init() {
rootCmd.AddCommand(buildCmd)
}