2 Commits
1.4.1 ... 1.1.1

Author SHA1 Message Date
Minecrell
d62180f9d6 getModuleDeps: replace Split() loop with ReplaceAllString() (MR 12)
This should do the same as far as I can tell :)

(cherry picked from commit 866f17b86f)
2021-09-20 15:16:38 -07:00
Minecrell
b7f02ff970 getModulesDep: disallow regex submatches (MR 12)
At the moment modules in modules.dep are matched even on a submatch
e.g. looking up "msm" ends up matching "snd-soc-msm8916-digital.ko"
instead of "msm.ko". To fix this, disallow submatches using ^ and $.

(cherry picked from commit 15e99c3658)
2021-09-20 15:16:33 -07:00
4 changed files with 9 additions and 102 deletions

View File

@@ -31,7 +31,7 @@ gofmt linting:
- apk -q update --repository http://dl-4.alpinelinux.org/alpine/edge/testing - apk -q update --repository http://dl-4.alpinelinux.org/alpine/edge/testing
- apk -q add --repository http://dl-4.alpinelinux.org/alpine/edge/testing go staticcheck - apk -q add --repository http://dl-4.alpinelinux.org/alpine/edge/testing go staticcheck
script: script:
- .ci/check_linting.sh - .gitlab-ci/check_linting.sh
build: build:
stage: build stage: build

108
main.go
View File

@@ -71,14 +71,6 @@ func main() {
log.Fatal("generateInitfsExtra: ", err) 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 // Final processing of initramfs / kernel is done by boot-deploy
if err := bootDeploy(workDir, *outDir); err != nil { if err := bootDeploy(workDir, *outDir); err != nil {
log.Fatal("bootDeploy: ", err) log.Fatal("bootDeploy: ", err)
@@ -94,29 +86,18 @@ func bootDeploy(workDir string, outDir string) error {
if len(kernels) == 0 { if len(kernels) == 0 {
return errors.New("Unable to find any kernels at " + filepath.Join(outDir, "vmlinuz*")) return errors.New("Unable to find any kernels at " + filepath.Join(outDir, "vmlinuz*"))
} }
kernFile, err := os.Open(kernels[0])
// Pick a kernel that does not have suffixes added by boot-deploy
var kernFile string
for _, f := range kernels {
if strings.HasSuffix(f, "-dtb") || strings.HasSuffix(f, "-mtk") {
continue
}
kernFile = f
break
}
kernFd, err := os.Open(kernFile)
if err != nil { if err != nil {
return err return err
} }
defer kernFd.Close() defer kernFile.Close()
kernFileCopy, err := os.Create(filepath.Join(workDir, "vmlinuz")) kernFileCopy, err := os.Create(filepath.Join(workDir, "vmlinuz"))
if err != nil { if err != nil {
return err return err
} }
if _, err = io.Copy(kernFileCopy, kernFd); err != nil { if _, err = io.Copy(kernFileCopy, kernFile); err != nil {
return err return err
} }
kernFileCopy.Close() kernFileCopy.Close()
@@ -164,9 +145,10 @@ func getHookFiles(filesdir string) misc.StringSet {
defer f.Close() defer f.Close()
s := bufio.NewScanner(f) s := bufio.NewScanner(f)
for s.Scan() { for s.Scan() {
if err := getFile(files, s.Text(), true); err != nil { if !exists(s.Text()) {
log.Fatalf("Unable to find file %q required by %q", s.Text(), path) log.Fatalf("Unable to find file %q required by %q", s.Text(), path)
} }
files[s.Text()] = false
} }
if err := s.Err(); err != nil { if err := s.Err(); err != nil {
log.Fatal(err) log.Fatal(err)
@@ -250,42 +232,13 @@ func getFiles(files misc.StringSet, newFiles misc.StringSet, required bool) erro
} }
func getFile(files misc.StringSet, file string, required bool) error { func getFile(files misc.StringSet, file string, required bool) error {
// Expand glob expression if !exists(file) {
expanded, _ := filepath.Glob(file)
if len(expanded) > 0 && expanded[0] != file {
for _, path := range expanded {
if err := getFile(files, path, required); err != nil {
return err
}
}
return nil
}
fileInfo, err := os.Stat(file)
if err != nil {
if required { if required {
return errors.New("getFile: File does not exist :" + file) return errors.New("getFile: File does not exist :" + file)
} }
return nil return nil
} }
if fileInfo.IsDir() {
// Recurse over directory contents
err := filepath.Walk(file, func(path string, f os.FileInfo, err error) error {
if err != nil {
return err
}
if f.IsDir() {
return nil
}
return getFile(files, path, required)
})
if err != nil {
return err
}
return nil
}
files[file] = false files[file] = false
// get dependencies for binaries // get dependencies for binaries
@@ -294,7 +247,8 @@ func getFile(files misc.StringSet, file string, required bool) error {
return nil return nil
} }
if err := getBinaryDeps(files, file); err != nil { err := getBinaryDeps(files, file)
if err != nil {
return err return err
} }
@@ -417,7 +371,6 @@ func getInitfsExtraFiles(files misc.StringSet, devinfo deviceinfo.DeviceInfo) er
log.Println("== Generating initramfs extra ==") log.Println("== Generating initramfs extra ==")
binariesExtra := misc.StringSet{ binariesExtra := misc.StringSet{
"/lib/libz.so.1": false, "/lib/libz.so.1": false,
"/sbin/btrfs": false,
"/sbin/dmsetup": false, "/sbin/dmsetup": false,
"/sbin/e2fsck": false, "/sbin/e2fsck": false,
"/usr/sbin/parted": false, "/usr/sbin/parted": false,
@@ -450,7 +403,6 @@ func getInitfsFiles(files misc.StringSet, devinfo deviceinfo.DeviceInfo) error {
"/usr/sbin/telnetd": false, "/usr/sbin/telnetd": false,
"/sbin/kpartx": false, "/sbin/kpartx": false,
"/etc/deviceinfo": false, "/etc/deviceinfo": false,
"/usr/bin/unudhcpd": false,
} }
// Hook files & scripts // Hook files & scripts
@@ -575,50 +527,6 @@ func getKernelVersion() (string, error) {
return strings.TrimSpace(string(contents)), nil 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 {
if devinfo.UbootBoardname == "" {
return nil
}
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 { func generateInitfs(name string, path string, kernVer string, devinfo deviceinfo.DeviceInfo) error {
initfsArchive, err := archive.New() initfsArchive, err := archive.New()
if err != nil { if err != nil {

View File

@@ -16,7 +16,6 @@ import (
type DeviceInfo struct { type DeviceInfo struct {
AppendDtb string AppendDtb string
Arch string Arch string
UbootBoardname string
BootimgAppendSEAndroidEnforce string BootimgAppendSEAndroidEnforce string
BootimgBlobpack string BootimgBlobpack string
BootimgDtbSecond string BootimgDtbSecond string