main: copy u-boot files to working directory (MR 16)
U-boot files may be used to generate boot images during boot-deploy stage, for example u-boot's FIT images, android boot images. If there's no u-boot directory for device, skip copying. deviceinfo: add UbootBoardname Alpine u-boot package places board files in separate directories, /usr/share/u-boot/$boardname. This param specifies device u-boot subdirectory.
This commit is contained in:
committed by
Clayton Craft
parent
206e75c597
commit
c07eafd087
48
main.go
48
main.go
@@ -71,6 +71,14 @@ func main() {
|
||||
log.Fatal("generateInitfsExtra: ", err)
|
||||
}
|
||||
|
||||
if err := copyUbootFiles(workDir, devinfo); errors.Is(err, os.ErrNotExist) {
|
||||
log.Println("u-boot files copying skipped: ", err)
|
||||
} else {
|
||||
if err != nil {
|
||||
log.Fatal("copyUbootFiles: ", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Final processing of initramfs / kernel is done by boot-deploy
|
||||
if err := bootDeploy(workDir, *outDir); err != nil {
|
||||
log.Fatal("bootDeploy: ", err)
|
||||
@@ -566,6 +574,46 @@ func getKernelVersion() (string, error) {
|
||||
return strings.TrimSpace(string(contents)), nil
|
||||
}
|
||||
|
||||
func Copy(srcFile, dstFile string) error {
|
||||
out, err := os.Create(dstFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer out.Close()
|
||||
|
||||
in, err := os.Open(srcFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer in.Close()
|
||||
|
||||
_, err = io.Copy(out, in)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func copyUbootFiles(path string, devinfo deviceinfo.DeviceInfo) error {
|
||||
srcDir := filepath.Join("/usr/share/u-boot", devinfo.UbootBoardname)
|
||||
entries, err := ioutil.ReadDir(srcDir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, entry := range entries {
|
||||
sourcePath := filepath.Join(srcDir, entry.Name())
|
||||
destPath := filepath.Join(path, entry.Name())
|
||||
|
||||
if err := Copy(sourcePath, destPath); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateInitfs(name string, path string, kernVer string, devinfo deviceinfo.DeviceInfo) error {
|
||||
initfsArchive, err := archive.New()
|
||||
if err != nil {
|
||||
|
@@ -16,6 +16,7 @@ import (
|
||||
type DeviceInfo struct {
|
||||
AppendDtb string
|
||||
Arch string
|
||||
UbootBoardname string
|
||||
BootimgAppendSEAndroidEnforce string
|
||||
BootimgBlobpack string
|
||||
BootimgDtbSecond string
|
||||
|
Reference in New Issue
Block a user