mirror of
https://github.com/tweag/gomod2nix.git
synced 2024-11-09 12:09:08 +00:00
Add vendorPath to correctly link the vendor directory in the nix build
This commit is contained in:
parent
a5f0e022c6
commit
e51f884b85
3 changed files with 15 additions and 10 deletions
|
@ -73,16 +73,10 @@ func FetchPackages(goModPath string, goSumPath string, goMod2NixPath string, dep
|
|||
caches = append(caches, buildGoCache)
|
||||
}
|
||||
|
||||
// // Parse require
|
||||
// require := make(map[string]module.Version)
|
||||
// for _, req := range mod.Require {
|
||||
// require[req.Mod.Path] = req.Mod
|
||||
// }
|
||||
|
||||
// Map repos -> replacement repo
|
||||
replace := make(map[string]string)
|
||||
for _, repl := range mod.Replace {
|
||||
replace[repl.Old.Path] = repl.New.Path
|
||||
replace[repl.New.Path] = repl.Old.Path
|
||||
}
|
||||
|
||||
log.WithFields(log.Fields{
|
||||
|
@ -111,12 +105,12 @@ func FetchPackages(goModPath string, goSumPath string, goMod2NixPath string, dep
|
|||
log.WithFields(log.Fields{
|
||||
"numJobs": numJobs,
|
||||
}).Info("Queuing jobs")
|
||||
for goPackagePath, sumVersion := range sumVersions {
|
||||
for importPath, sumVersion := range sumVersions {
|
||||
// Check for replacement path (only original goPackagePath is recorded in go.sum)
|
||||
importPath := goPackagePath
|
||||
goPackagePath := importPath
|
||||
v, ok := replace[goPackagePath]
|
||||
if ok {
|
||||
importPath = v
|
||||
goPackagePath = v
|
||||
}
|
||||
|
||||
jobs <- &packageJob{
|
||||
|
@ -251,6 +245,12 @@ func fetchPackage(caches []map[string]*types.Package, importPath string, goPacka
|
|||
return nil, err
|
||||
}
|
||||
|
||||
vendorPath := ""
|
||||
if importPath != goPackagePath {
|
||||
importPathPrefix, _, _ := module.SplitPathVersion(importPath)
|
||||
vendorPath = importPathPrefix
|
||||
}
|
||||
|
||||
return &types.Package{
|
||||
GoPackagePath: goPackagePath,
|
||||
URL: repoRoot.Repo,
|
||||
|
@ -260,6 +260,7 @@ func fetchPackage(caches []map[string]*types.Package, importPath string, goPacka
|
|||
// It's also used to construct the vendor directory in the Nix build
|
||||
SumVersion: sumVersion,
|
||||
RelPath: relPath,
|
||||
VendorPath: vendorPath,
|
||||
}, nil
|
||||
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ type fetchInfo struct {
|
|||
type packageT struct {
|
||||
SumVersion string `toml:"sumVersion"`
|
||||
RelPath string `toml:"relPath"`
|
||||
VendorPath string `toml:"vendorPath"`
|
||||
Fetch *fetchInfo `toml:"fetch"`
|
||||
}
|
||||
|
||||
|
@ -26,6 +27,7 @@ func Marshal(pkgs []*types.Package) ([]byte, error) {
|
|||
|
||||
for _, pkg := range pkgs {
|
||||
result[pkg.GoPackagePath] = &packageT{
|
||||
VendorPath: pkg.VendorPath,
|
||||
SumVersion: pkg.SumVersion,
|
||||
RelPath: pkg.RelPath,
|
||||
Fetch: &fetchInfo{
|
||||
|
@ -75,6 +77,7 @@ func LoadGomod2Nix(filePath string) map[string]*types.Package {
|
|||
Sha256: v.Fetch.Sha256,
|
||||
SumVersion: v.SumVersion,
|
||||
RelPath: v.RelPath,
|
||||
VendorPath: v.VendorPath,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,4 +7,5 @@ type Package struct {
|
|||
Sha256 string
|
||||
SumVersion string
|
||||
RelPath string
|
||||
VendorPath string
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue