[no-relnote] Use symlinks.Resolve in hook

This change removes duplicate logic from the create-symlinks hook
and uses symlinks.Resolve instead.

Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
Evan Lezar 2024-10-17 15:47:13 +02:00
parent c30ca0fdc3
commit cdf39fbad3

View File

@ -211,21 +211,14 @@ func changeRoot(current string, new string, path string) (string, error) {
// Locate returns the link target of the specified filename or an empty slice if the // Locate returns the link target of the specified filename or an empty slice if the
// specified filename is not a symlink. // specified filename is not a symlink.
func (m command) Locate(filename string) ([]string, error) { func (m command) Locate(filename string) ([]string, error) {
info, err := os.Lstat(filename) target, err := symlinks.Resolve(filename)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to get file info: %v", info) return nil, err
} }
if info.Mode()&os.ModeSymlink == 0 { if target == filename {
m.logger.Debugf("%v is not a symlink", filename) m.logger.Debugf("%v is not a symlink", filename)
return nil, nil return nil, nil
} }
target, err := os.Readlink(filename)
if err != nil {
return nil, fmt.Errorf("error checking symlink: %v", err)
}
m.logger.Debugf("Resolved link: '%v' => '%v'", filename, target) m.logger.Debugf("Resolved link: '%v' => '%v'", filename, target)
return []string{target}, nil return []string{target}, nil
} }