diff --git a/syft/pkg/cataloger/binary/classifier_cataloger_test.go b/syft/pkg/cataloger/binary/classifier_cataloger_test.go index c1bfbb322f0..829a02ecfd6 100644 --- a/syft/pkg/cataloger/binary/classifier_cataloger_test.go +++ b/syft/pkg/cataloger/binary/classifier_cataloger_test.go @@ -392,7 +392,17 @@ func Test_Cataloger_PositiveCases(t *testing.T) { Metadata: metadata("helm"), }, }, - + { + logicalFixture: "rakudo-star/2024.08/linux-amd64", + expected: pkg.Package{ + Name: "rakudo/star", + Version: "2024.08", + Type: "binary", + PURL: "pkg:generic/rakudo/star@2024.08", + Locations: locations("rakudo-2024.08"), + Metadata: metadata("rakudo-star-binary"), + }, + }, { // note: dynamic (non-snippet) test case logicalFixture: "redis-server/2.8.23/linux-amd64", diff --git a/syft/pkg/cataloger/binary/classifiers.go b/syft/pkg/cataloger/binary/classifiers.go index 5290b4d984e..fcb93a9b383 100644 --- a/syft/pkg/cataloger/binary/classifiers.go +++ b/syft/pkg/cataloger/binary/classifiers.go @@ -352,6 +352,16 @@ func DefaultClassifiers() []Classifier { PURL: mustPURL("pkg:generic/mariadb@version"), CPEs: singleCPE("cpe:2.3:a:mariadb:mariadb:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), }, + { + Class: "rakudo-star-binary", + FileGlob: "**/rakudo*", + EvidenceMatcher: FileContentsVersionMatcher( + `(?m)Rakudo version\s*(?P[0-9]+\.[0-9]+\.[0-9]+)`, + ), + Package: "rakudo/star", + PURL: mustPURL("pkg:generic/rakudo/star@version"), + CPEs: singleCPE("cpe:2.3:a:rakudo:star:*:*:*:*:*:*:*:*"), + }, { Class: "rust-standard-library-linux", FileGlob: "**/libstd-????????????????.so", diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/rakudo-star/2024.08/linux-amd64/rakudo b/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/rakudo-star/2024.08/linux-amd64/rakudo new file mode 100755 index 00000000000..298ba8a7e31 Binary files /dev/null and b/syft/pkg/cataloger/binary/test-fixtures/classifiers/snippets/rakudo-star/2024.08/linux-amd64/rakudo differ diff --git a/syft/pkg/cataloger/binary/test-fixtures/config.yaml b/syft/pkg/cataloger/binary/test-fixtures/config.yaml index 58408325be8..6ff556c0d39 100644 --- a/syft/pkg/cataloger/binary/test-fixtures/config.yaml +++ b/syft/pkg/cataloger/binary/test-fixtures/config.yaml @@ -375,6 +375,22 @@ from-images: paths: - /opt/pypy/bin/libpypy3.9-c.so + - name: rakudo-star + version: 2024.08 + images: + - ref: rakudo-star:2024.08-bookworm@sha256:fb46bca51e03649ee14c3b1de3ecf8b4bb096e43 + platform: linux/amd64 + paths: + - /usr/bin/rakudo + + - name: rakudo-star + version: 2024.08-alpine + images: + - ref: rakudo-star:2024.08-alpine@sha256:fb46bca51e03649ee14c3b1de3ecf8b4bb096e43 + platform: linux/amd64 + paths: + - /usr/local/bin/rakudo + - version: 2.8.23 images: - ref: redis:2.8.23@sha256:e507029ca6a11b85f8628ff16d7ff73ae54582f16fd757e64431f5ca6d27a13c