syzkaller/pkg/build/fuchsia.go

49 lines
1.6 KiB
Go
Raw Normal View History

2018-06-28 10:32:30 +00:00
// Copyright 2018 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
package build
import (
"fmt"
"path/filepath"
"time"
"github.com/google/syzkaller/pkg/osutil"
"github.com/google/syzkaller/sys/targets"
)
type fuchsia struct{}
func (fu fuchsia) build(targetArch, vmType, kernelDir, outputDir, compiler, userspaceDir,
cmdlineFile, sysctlFile string, config []byte) error {
sysTarget := targets.Get("fuchsia", targetArch)
if sysTarget == nil {
return fmt.Errorf("unsupported fuchsia arch %v", targetArch)
}
arch := sysTarget.KernelHeaderArch
if _, err := osutil.RunCmd(time.Hour, kernelDir, "scripts/fx", "clean-build", arch,
2018-06-28 10:32:30 +00:00
"--packages", "garnet/packages/products/sshd"); err != nil {
return err
}
for src, dst := range map[string]string{
"out/" + arch + "/images/fvm.blk": "image",
"out/" + arch + "/ssh-keys/id_ed25519": "key",
"out/build-zircon/build-" + arch + "/zircon.elf": "obj/zircon.elf",
"out/build-zircon/build-" + arch + "/zircon.bin": "kernel",
"out/" + arch + "/bootdata-blob-pc.bin": "initrd",
2018-06-28 10:32:30 +00:00
} {
fullSrc := filepath.Join(kernelDir, filepath.FromSlash(src))
fullDst := filepath.Join(outputDir, filepath.FromSlash(dst))
if err := osutil.CopyFile(fullSrc, fullDst); err != nil {
return fmt.Errorf("faied to copy %v: %v", src, err)
}
}
return nil
}
func (fu fuchsia) clean(kernelDir string) error {
// We always do clean build because incremental build is frequently broken.
// So no need to clean separately.
2018-06-28 10:32:30 +00:00
return nil
}