X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=dep.go;h=df5ae27f2af9737b070b84df719a24f255328d2b;hb=07912df2f1935c7dd4e08f8e675ed989dbc97b31;hp=38d8bb79c200ede2acedeb9ce357fe313211d7c2;hpb=14398260feaf14dac68b9bdb1c810ccba7d1e768;p=goredo.git diff --git a/dep.go b/dep.go index 38d8bb7..df5ae27 100644 --- a/dep.go +++ b/dep.go @@ -27,13 +27,15 @@ import ( "io" "os" "path" - "strings" + "path/filepath" "go.cypherpunks.ru/recfile" "golang.org/x/crypto/blake2b" "golang.org/x/sys/unix" ) +var DirPrefix string + func recfileWrite(fdDep *os.File, fields ...recfile.Field) error { w := recfile.NewWriter(fdDep) if _, err := w.RecordStart(); err != nil { @@ -129,17 +131,22 @@ func writeDeps(fdDep *os.File, tgts []string) error { trace(CDebug, "no opened fdDep: %s", tgts) return nil } - ups := []string{} - upLevels := strings.Count(os.Getenv(EnvDirPrefix), "/") - for i := 0; i < upLevels; i++ { - ups = append(ups, "..") - } - up := path.Join(ups...) for _, tgt := range tgts { if _, err := os.Stat(tgt); err == nil { - if err = writeDep(fdDep, Cwd, path.Join(up, tgt)); err != nil { + tgtAbs, err := filepath.Abs(tgt) + if err != nil { + panic(err) + } + tgtDir := path.Join(Cwd, DirPrefix) + tgtRel, err := filepath.Rel(tgtDir, tgtAbs) + if err != nil { + panic(err) + } + if err = writeDep(fdDep, tgtDir, tgtRel); err != nil { return err } + } else { + trace(CDebug, "skipping dep record, can not stat: %s", tgt) } } return nil