Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2a75cf9b4e | ||
|
d52cc16c88 | ||
|
112b572dc2 | ||
|
0c0a85f3bb |
71
main.go
71
main.go
@@ -165,7 +165,7 @@ func getHookFiles(filesdir string) (files []string, err error) {
|
|||||||
s := bufio.NewScanner(f)
|
s := bufio.NewScanner(f)
|
||||||
for s.Scan() {
|
for s.Scan() {
|
||||||
if filelist, err := getFiles([]string{s.Text()}, true); err != nil {
|
if filelist, err := getFiles([]string{s.Text()}, true); err != nil {
|
||||||
return nil, fmt.Errorf("getHookFiles: unable to find file %q required by %q", s.Text(), path)
|
return nil, fmt.Errorf("getHookFiles: unable to add file %q required by %q: %w", s.Text(), path, err)
|
||||||
} else {
|
} else {
|
||||||
files = append(files, filelist...)
|
files = append(files, filelist...)
|
||||||
}
|
}
|
||||||
@@ -218,20 +218,30 @@ func getBinaryDeps(file string) (files []string, err error) {
|
|||||||
return files, err
|
return files, err
|
||||||
}
|
}
|
||||||
|
|
||||||
libdirs := []string{"/usr/lib", "/lib"}
|
// we don't recursively search these paths for performance reasons
|
||||||
|
libdirGlobs := []string{
|
||||||
|
"/usr/lib",
|
||||||
|
"/lib",
|
||||||
|
"/usr/lib/expect*",
|
||||||
|
}
|
||||||
|
|
||||||
for _, lib := range libs {
|
for _, lib := range libs {
|
||||||
found := false
|
found := false
|
||||||
for _, libdir := range libdirs {
|
findDepLoop:
|
||||||
path := filepath.Join(libdir, lib)
|
for _, libdirGlob := range libdirGlobs {
|
||||||
if _, err := os.Stat(path); err == nil {
|
libdirs, _ := filepath.Glob(libdirGlob)
|
||||||
binaryDepFiles, err := getBinaryDeps(path)
|
for _, libdir := range libdirs {
|
||||||
if err != nil {
|
path := filepath.Join(libdir, lib)
|
||||||
return files, err
|
if _, err := os.Stat(path); err == nil {
|
||||||
|
binaryDepFiles, err := getBinaryDeps(path)
|
||||||
|
if err != nil {
|
||||||
|
return files, err
|
||||||
|
}
|
||||||
|
files = append(files, binaryDepFiles...)
|
||||||
|
files = append(files, path)
|
||||||
|
found = true
|
||||||
|
break findDepLoop
|
||||||
}
|
}
|
||||||
files = append(files, binaryDepFiles...)
|
|
||||||
files = append(files, path)
|
|
||||||
found = true
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !found {
|
if !found {
|
||||||
@@ -275,7 +285,7 @@ func getFile(file string, required bool) (files []string, err error) {
|
|||||||
fileInfo, err := os.Stat(file)
|
fileInfo, err := os.Stat(file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if required {
|
if required {
|
||||||
return files, errors.New("getFile: File does not exist :" + file)
|
return files, fmt.Errorf("getFile: failed to stat file %q: %w", file, err)
|
||||||
}
|
}
|
||||||
return files, nil
|
return files, nil
|
||||||
}
|
}
|
||||||
@@ -426,11 +436,16 @@ func getFdeFiles(devinfo deviceinfo.DeviceInfo) (files []string, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func getHookScripts() (files []string) {
|
func getHookScripts(scriptsdir string) (files []string, err error) {
|
||||||
scripts, _ := filepath.Glob("/etc/postmarketos-mkinitfs/hooks/*.sh")
|
fileInfo, err := os.ReadDir(scriptsdir)
|
||||||
files = append(files, scripts...)
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("getHookScripts: unable to read hook script dir: %w", err)
|
||||||
return
|
}
|
||||||
|
for _, file := range fileInfo {
|
||||||
|
path := filepath.Join(scriptsdir, file.Name())
|
||||||
|
files = append(files, path)
|
||||||
|
}
|
||||||
|
return files, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getInitfsExtraFiles(devinfo deviceinfo.DeviceInfo) (files []string, err error) {
|
func getInitfsExtraFiles(devinfo deviceinfo.DeviceInfo) (files []string, err error) {
|
||||||
@@ -466,6 +481,15 @@ func getInitfsExtraFiles(devinfo deviceinfo.DeviceInfo) (files []string, err err
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if exists("/etc/postmarketos-mkinitfs/hooks-extra") {
|
||||||
|
log.Println("- Including extra hook scripts")
|
||||||
|
if hookScripts, err := getHookScripts("/etc/postmarketos-mkinitfs/hooks-extra"); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
files = append(files, hookScripts...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if exists("/usr/bin/osk-sdl") {
|
if exists("/usr/bin/osk-sdl") {
|
||||||
log.Println("- Including FDE support")
|
log.Println("- Including FDE support")
|
||||||
if fdeFiles, err := getFdeFiles(devinfo); err != nil {
|
if fdeFiles, err := getFdeFiles(devinfo); err != nil {
|
||||||
@@ -506,9 +530,14 @@ func getInitfsFiles(devinfo deviceinfo.DeviceInfo) (files []string, err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Println("- Including hook scripts")
|
if exists("/etc/postmarketos-mkinitfs/hooks") {
|
||||||
hookScripts := getHookScripts()
|
log.Println("- Including hook scripts")
|
||||||
files = append(files, hookScripts...)
|
if hookScripts, err := getHookScripts("/etc/postmarketos-mkinitfs/hooks"); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
files = append(files, hookScripts...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
log.Println("- Including required binaries")
|
log.Println("- Including required binaries")
|
||||||
if filelist, err := getFiles(requiredFiles, true); err != nil {
|
if filelist, err := getFiles(requiredFiles, true); err != nil {
|
||||||
|
Reference in New Issue
Block a user