@@ -492,33 +492,33 @@ func (p *Package) HashFromNixPkgsURL() string {
492
492
const BinaryCache = "https://cache.nixos.org"
493
493
494
494
func (p * Package ) isEligibleForBinaryCache () (bool , error ) {
495
- if ! featureflag .RemoveNixpkgs .Enabled () {
496
- return false , nil
495
+ sysInfo , err := p .sysInfoIfExists ()
496
+ if err != nil {
497
+ return false , err
497
498
}
499
+ return sysInfo != nil , nil
500
+ }
498
501
499
- if ! p .isVersioned () {
500
- return false , nil
502
+ // sysInfoIfExists returns the system info for the user's system. If the sysInfo
503
+ // is missing, then nil is returned
504
+ func (p * Package ) sysInfoIfExists () (* lock.SystemInfo , error ) {
505
+ if ! featureflag .RemoveNixpkgs .Enabled () {
506
+ return nil , nil
501
507
}
502
508
503
- sysInfo , err := p .sysInfoIfExists ()
504
- if err != nil {
505
- return false , err
506
- } else if sysInfo == nil {
507
- return false , nil
509
+ if ! p .isVersioned () {
510
+ return nil , nil
508
511
}
509
512
510
513
version , err := nix .Version ()
511
514
if err != nil {
512
- return false , err
515
+ return nil , err
513
516
}
514
517
515
518
// enable for nix >= 2.17
516
- return vercheck .SemverCompare (version , "2.17.0" ) >= 0 , nil
517
- }
518
-
519
- // sysInfoIfExists returns the system info for the user's system. If the sysInfo
520
- // is missing, then nil is returned
521
- func (p * Package ) sysInfoIfExists () (* lock.SystemInfo , error ) {
519
+ if vercheck .SemverCompare (version , "2.17.0" ) < 0 {
520
+ return nil , err
521
+ }
522
522
523
523
entry , err := p .lockfile .Resolve (p .Raw )
524
524
if err != nil {
@@ -540,7 +540,7 @@ func (p *Package) sysInfoIfExists() (*lock.SystemInfo, error) {
540
540
}
541
541
542
542
// IsInBinaryCache returns true if the package is in the binary cache.
543
- // Callers should call FillNarInfoCache before calling this function.
543
+ // ALERT: Callers must call FillNarInfoCache before calling this function.
544
544
func (p * Package ) IsInBinaryCache () (bool , error ) {
545
545
546
546
if eligible , err := p .isEligibleForBinaryCache (); err != nil {
@@ -684,19 +684,16 @@ func (p *storePathParts) Equal(other *storePathParts) bool {
684
684
// package in the list, and caches the result.
685
685
// Callers of IsInBinaryCache must call this function first.
686
686
func FillNarInfoCache (ctx context.Context , packages ... * Package ) error {
687
- g , ctx := errgroup .WithContext (ctx )
688
-
687
+ group , _ := errgroup .WithContext (ctx )
689
688
for _ , p := range packages {
690
689
// If the package's NarInfo status is already known, skip it
691
690
if _ , ok := isNarInfoInCache [p .Raw ]; ok {
692
691
continue
693
692
}
694
- g .Go (func () error {
695
- return p .fillNarInfoCache ()
693
+ pkg := p
694
+ group .Go (func () error {
695
+ return pkg .fillNarInfoCache ()
696
696
})
697
697
}
698
- if err := g .Wait (); err != nil {
699
- return err
700
- }
701
- return nil
698
+ return group .Wait ()
702
699
}
0 commit comments