You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by ke...@apache.org on 2023/02/28 13:45:59 UTC
[skywalking-eyes] branch main updated: Normalize license for cargo. (#153)
This is an automated email from the ASF dual-hosted git repository.
kezhenxu94 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-eyes.git
The following commit(s) were added to refs/heads/main by this push:
new 0955592 Normalize license for cargo. (#153)
0955592 is described below
commit 0955592f241b73f443201d40e3995c193dbf462b
Author: jmjoy <jm...@apache.org>
AuthorDate: Tue Feb 28 21:45:54 2023 +0800
Normalize license for cargo. (#153)
---
pkg/deps/cargo.go | 21 +++++++++++++++++++++
pkg/deps/cargo_test.go | 19 +++++++++++++------
2 files changed, 34 insertions(+), 6 deletions(-)
diff --git a/pkg/deps/cargo.go b/pkg/deps/cargo.go
index e0c1a59..5d900cd 100644
--- a/pkg/deps/cargo.go
+++ b/pkg/deps/cargo.go
@@ -23,6 +23,8 @@ import (
"os/exec"
"path/filepath"
"regexp"
+ "sort"
+ "strings"
"github.com/apache/skywalking-eyes/internal/logger"
"github.com/apache/skywalking-eyes/pkg/license"
@@ -75,6 +77,10 @@ func (resolver *CargoTomlResolver) Resolve(cargoTomlFile string, config *ConfigD
return err
}
+ for i := range metadata.Packages {
+ metadata.Packages[i].License = normalizeLicense(metadata.Packages[i].License)
+ }
+
logger.Log.Debugln("Package size:", len(metadata.Packages))
return resolver.ResolvePackages(metadata.Packages, config, report)
@@ -156,3 +162,18 @@ func (resolver *CargoTomlResolver) ResolvePackageLicense(config *ConfigDeps, pkg
return nil
}
+
+func normalizeLicense(licenseStr string) string {
+ segs := make(map[string]struct{})
+ for _, ss := range strings.Split(licenseStr, "/") {
+ for _, s := range strings.Split(ss, " OR ") {
+ segs[s] = struct{}{}
+ }
+ }
+ var items []string
+ for seg := range segs {
+ items = append(items, seg)
+ }
+ sort.Strings(items)
+ return strings.Join(items, " OR ")
+}
diff --git a/pkg/deps/cargo_test.go b/pkg/deps/cargo_test.go
index db401a3..469d32d 100644
--- a/pkg/deps/cargo_test.go
+++ b/pkg/deps/cargo_test.go
@@ -18,12 +18,13 @@
package deps_test
import (
- "github.com/apache/skywalking-eyes/internal/logger"
- "github.com/apache/skywalking-eyes/pkg/deps"
"os"
"os/exec"
"path/filepath"
"testing"
+
+ "github.com/apache/skywalking-eyes/internal/logger"
+ "github.com/apache/skywalking-eyes/pkg/deps"
)
func TestCanResolveCargo(t *testing.T) {
@@ -134,7 +135,8 @@ edition = "2021"
license = "Apache-2.0"
[dependencies]
-libc = "0.2.126"
+libc = "0.2.126" # actual license: MIT OR Apache-2.0
+bitflags = "1.3.2" # actual license: MIT/Apache-2.0
`
config := deps.ConfigDeps{
@@ -145,12 +147,17 @@ libc = "0.2.126"
}
report := resolveTmpCargo(t, cargoToml, &config)
- if len(report.Resolved) != 2 {
- t.Error("len(report.Resolved) != 2")
+ if len(report.Resolved) != 3 {
+ t.Error("len(report.Resolved) != 3")
}
for _, result := range report.Resolved {
if result.Dependency == "libc" {
- if result.LicenseSpdxID != "MIT OR Apache-2.0" || result.LicenseContent == "" {
+ if result.LicenseSpdxID != "Apache-2.0 OR MIT" || result.LicenseContent == "" {
+ t.Error("Resolve dependency libc failed")
+ }
+ }
+ if result.Dependency == "bitflags" {
+ if result.LicenseSpdxID != "Apache-2.0 OR MIT" || result.LicenseContent == "" {
t.Error("Resolve dependency libc failed")
}
}