@@ -19,6 +19,7 @@ import (
19
19
"github.com/quay/claircore"
20
20
"github.com/quay/claircore/indexer"
21
21
"github.com/quay/claircore/pkg/pep440"
22
+ "github.com/quay/claircore/rpm"
22
23
)
23
24
24
25
var (
@@ -79,6 +80,16 @@ func (ps *Scanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*clairco
79
80
}
80
81
var ret []* claircore.Package
81
82
for _ , n := range ms {
83
+ isRPM , err := rpm .FileInstalledByRPM (ctx , layer , n )
84
+ if err != nil {
85
+ return nil , err
86
+ }
87
+ if isRPM {
88
+ zlog .Debug (ctx ).
89
+ Str ("path" , n ).
90
+ Msg ("file path determined to be of RPM origin" )
91
+ continue
92
+ }
82
93
b , err := fs .ReadFile (sys , n )
83
94
if err != nil {
84
95
return nil , fmt .Errorf ("python: unable to read file: %w" , err )
@@ -143,14 +154,14 @@ func findDeliciousEgg(ctx context.Context, sys fs.FS) (out []string, err error)
143
154
// Is this layer an rpm layer?
144
155
//
145
156
// If so, files in the disto-managed directory can be skipped.
146
- var rpm bool
157
+ var isRPM bool
147
158
for _ , p := range []string {
148
159
"var/lib/rpm/Packages" ,
149
160
"var/lib/rpm/rpmdb.sqlite" ,
150
161
"var/lib/rpm/Packages.db" ,
151
162
} {
152
163
if fi , err := fs .Stat (sys , p ); err == nil && fi .Mode ().IsRegular () {
153
- rpm = true
164
+ isRPM = true
154
165
break
155
166
}
156
167
}
@@ -172,12 +183,12 @@ func findDeliciousEgg(ctx context.Context, sys fs.FS) (out []string, err error)
172
183
switch {
173
184
case err != nil :
174
185
return err
175
- case (rpm || dpkg ) && d .Type ().IsDir ():
186
+ case (isRPM || dpkg ) && d .Type ().IsDir ():
176
187
// Skip one level up from the "packages" directory so the walk also
177
188
// skips the standard library.
178
189
var pat string
179
190
switch {
180
- case rpm :
191
+ case isRPM :
181
192
pat = `usr/lib*/python[23].*`
182
193
ev = ev .Bool ("rpm_dir" , true )
183
194
case dpkg :
0 commit comments