@@ -23,7 +23,7 @@ import (
2323 "strings"
2424)
2525
26- const CachePackageVersion = "3 "
26+ const CachePackageVersion = "4 "
2727
2828var cargoHashRegex = regexp .MustCompile ("^metadata=([0-9a-f]{16})$" )
2929
@@ -40,18 +40,22 @@ type WrapperTool struct {
4040 osWorkDir string
4141 CrateExternDepsChecksum string
4242 CrateNativeDepsChecksum string
43+ RustCBinHash string
4344
4445 cachePackageName string
4546}
4647
47- func NewWrapperToolFromArgs (workDir string , rustArgs * []string ) * WrapperTool {
48+ func NewWrapperToolFromArgs (workDir string , rustcCommand []string ) * WrapperTool {
4849 var wrapper = WrapperTool {}
49- wrapper . rustcArgs = rustArgs
50+ var rustcArgs = rustcCommand [ 1 :]
5051
51- wrapper .CrateName , wrapper .CargoCrateHash , wrapper .OutDir = wrapper .extractNameMetaHashDir (rustArgs )
52+ wrapper .rustcArgs = & rustcArgs
53+
54+ wrapper .CrateName , wrapper .CargoCrateHash , wrapper .OutDir = wrapper .extractNameMetaHashDir (wrapper .rustcArgs )
5255 wrapper .workDir = workDir
5356 wrapper .OutDir = FileManager .GetTrueRelFilePath (wrapper .workDir , wrapper .OutDir )
54- wrapper .RustCArgsHash = GetArgsHash (rustArgs , wrapper .workDir )
57+ wrapper .RustCArgsHash = GetArgsHash (wrapper .rustcArgs , wrapper .workDir )
58+ wrapper .RustCBinHash = GetRustcBinHash (rustcCommand [0 ])
5559
5660 wrapper .ExternDepsChecksum ()
5761
@@ -69,13 +73,30 @@ func NewWrapperToolFromCacheItem(workDir string, item Models.CacheItem) *Wrapper
6973 wrapper .workDir = workDir
7074 wrapper .CrateSourceChecksum = item .CrateSourceChecksum
7175 wrapper .RustCArgsHash = item .RustCArgsHash
76+ wrapper .RustCBinHash = item .RustCBinHash
7277
7378 wrapper .CrateExternDepsChecksum = item .CrateExternDepsChecksum
7479 wrapper .CrateNativeDepsChecksum = item .CrateNativeDepsChecksum
7580
7681 return & wrapper
7782}
7883
84+ func GetRustcBinHash (path string ) string {
85+ f , err := os .Open (path )
86+ if err != nil {
87+ log .Fatalf (err .Error ())
88+ }
89+
90+ var sha = sha1 .New ()
91+ _ , _ = io .Copy (sha , f )
92+
93+ err = f .Close ()
94+ if err != nil {
95+ log .Fatalf (err .Error ())
96+ }
97+ return fmt .Sprintf ("%x" , sha .Sum (nil ))
98+ }
99+
79100func GetArgsHash (args * []string , toRemove string ) string {
80101 var sha = sha1 .New ()
81102 for _ , arg := range * args {
@@ -238,6 +259,7 @@ func (wrapperTool *WrapperTool) GetCachePackageName() string {
238259 sha .Write ([]byte (wrapperTool .CrateSourceChecksum ))
239260 sha .Write ([]byte (wrapperTool .OutDir ))
240261 sha .Write ([]byte (wrapperTool .RustCArgsHash ))
262+ sha .Write ([]byte (wrapperTool .RustCBinHash ))
241263 sha .Write ([]byte (wrapperTool .ExternDepsChecksum ()))
242264
243265 sha .Write (wrapperTool .ExtraEnvVarsChecksum ())
@@ -263,6 +285,7 @@ func (wrapperTool *WrapperTool) ToCacheItem() Models.CacheItem {
263285 OutDir : wrapperTool .OutDir ,
264286 CrateSourceChecksum : wrapperTool .CrateSourceChecksum ,
265287 RustCArgsHash : wrapperTool .RustCArgsHash ,
288+ RustCBinHash : wrapperTool .RustCBinHash ,
266289
267290 CrateExternDepsChecksum : wrapperTool .CrateExternDepsChecksum ,
268291 CrateNativeDepsChecksum : wrapperTool .CrateNativeDepsChecksum ,
@@ -396,6 +419,7 @@ func (wrapperTool *WrapperTool) CreateMetadata() map[string]*string {
396419 "cargo-hash" : & wrapperTool .CargoCrateHash ,
397420 "sha1-source-files" : & wrapperTool .CrateSourceChecksum ,
398421 "sha1-rustc-args" : & wrapperTool .RustCArgsHash ,
422+ "sha1-rustc-bin" : & wrapperTool .RustCBinHash ,
399423 "sha1-extern-deps" : & wrapperTool .CrateExternDepsChecksum ,
400424 "sha1-native-deps" : & wrapperTool .CrateNativeDepsChecksum ,
401425 }
0 commit comments