@@ -164,30 +164,14 @@ func (c *Cache) packageHash(pkg *packages.Package, mode HashMode) (string, error
164164 return strings .Compare (a .PkgPath , b .PkgPath )
165165 })
166166
167- calcDepsHash := func (depMode HashMode ) error {
168- for _ , dep := range imps {
169- if dep .PkgPath == "unsafe" {
170- continue
171- }
172-
173- depHash , depErr := c .packageHash (dep , depMode )
174- if depErr != nil {
175- return fmt .Errorf ("failed to calculate hash for dependency %s with mode %d: %w" , dep .Name , depMode , depErr )
176- }
177-
178- fmt .Fprintf (key , "import %s %s\n " , dep .PkgPath , depHash )
179- }
180- return nil
181- }
182-
183- if err := calcDepsHash (HashModeNeedOnlySelf ); err != nil {
167+ if err := c .computeDepsHash (HashModeNeedOnlySelf , imps , key ); err != nil {
184168 return "" , err
185169 }
186170
187171 curSum = key .Sum ()
188172 hashRes [HashModeNeedDirectDeps ] = hex .EncodeToString (curSum [:])
189173
190- if err := calcDepsHash (HashModeNeedAllDeps ); err != nil {
174+ if err := c . computeDepsHash (HashModeNeedAllDeps , imps , key ); err != nil {
191175 return "" , err
192176 }
193177 curSum = key .Sum ()
@@ -201,6 +185,23 @@ func (c *Cache) packageHash(pkg *packages.Package, mode HashMode) (string, error
201185 return hashRes [mode ], nil
202186}
203187
188+ func (c * Cache ) computeDepsHash (depMode HashMode , imps []* packages.Package , key * cache.Hash ) error {
189+ for _ , dep := range imps {
190+ if dep .PkgPath == "unsafe" {
191+ continue
192+ }
193+
194+ depHash , err := c .packageHash (dep , depMode )
195+ if err != nil {
196+ return fmt .Errorf ("failed to calculate hash for dependency %s with mode %d: %w" , dep .Name , depMode , err )
197+ }
198+
199+ fmt .Fprintf (key , "import %s %s\n " , dep .PkgPath , depHash )
200+ }
201+
202+ return nil
203+ }
204+
204205func (c * Cache ) putBytes (actionID cache.ActionID , buf * bytes.Buffer ) error {
205206 c .ioSem <- struct {}{}
206207
0 commit comments