|
|
@ -62,16 +62,22 @@ var ( |
|
|
|
skipPrefixes = []string{ |
|
|
|
skipPrefixes = []string{ |
|
|
|
// boring stuff
|
|
|
|
// boring stuff
|
|
|
|
"vendor/", "tests/testdata/", "build/", |
|
|
|
"vendor/", "tests/testdata/", "build/", |
|
|
|
|
|
|
|
|
|
|
|
// don't relicense vendored sources
|
|
|
|
// don't relicense vendored sources
|
|
|
|
"cmd/internal/browser", |
|
|
|
"cmd/internal/browser", |
|
|
|
|
|
|
|
"common/bitutil/bitutil", |
|
|
|
|
|
|
|
"common/prque/", |
|
|
|
"consensus/ethash/xor.go", |
|
|
|
"consensus/ethash/xor.go", |
|
|
|
"crypto/bn256/", |
|
|
|
"crypto/bn256/", |
|
|
|
"crypto/ecies/", |
|
|
|
"crypto/ecies/", |
|
|
|
"crypto/secp256k1/curve.go", |
|
|
|
"graphql/graphiql.go", |
|
|
|
"crypto/sha3/", |
|
|
|
|
|
|
|
"internal/jsre/deps", |
|
|
|
"internal/jsre/deps", |
|
|
|
"log/", |
|
|
|
"log/", |
|
|
|
"common/bitutil/bitutil", |
|
|
|
"metrics/", |
|
|
|
|
|
|
|
"signer/rules/deps", |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// skip special licenses
|
|
|
|
|
|
|
|
"crypto/secp256k1", // Relicensed to BSD-3 via https://github.com/ethereum/go-ethereum/pull/17225
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// paths with this prefix are licensed as GPL. all other files are LGPL.
|
|
|
|
// paths with this prefix are licensed as GPL. all other files are LGPL.
|
|
|
@ -144,6 +150,13 @@ func (i info) gpl() bool { |
|
|
|
return false |
|
|
|
return false |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// authors implements the sort.Interface for strings in case-insensitive mode.
|
|
|
|
|
|
|
|
type authors []string |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (as authors) Len() int { return len(as) } |
|
|
|
|
|
|
|
func (as authors) Less(i, j int) bool { return strings.ToLower(as[i]) < strings.ToLower(as[j]) } |
|
|
|
|
|
|
|
func (as authors) Swap(i, j int) { as[i], as[j] = as[j], as[i] } |
|
|
|
|
|
|
|
|
|
|
|
func main() { |
|
|
|
func main() { |
|
|
|
var ( |
|
|
|
var ( |
|
|
|
files = getFiles() |
|
|
|
files = getFiles() |
|
|
@ -263,7 +276,7 @@ func mailmapLookup(authors []string) []string { |
|
|
|
|
|
|
|
|
|
|
|
func writeAuthors(files []string) { |
|
|
|
func writeAuthors(files []string) { |
|
|
|
merge := make(map[string]bool) |
|
|
|
merge := make(map[string]bool) |
|
|
|
// Add authors that Git reports as contributorxs.
|
|
|
|
// Add authors that Git reports as contributors.
|
|
|
|
// This is the primary source of author information.
|
|
|
|
// This is the primary source of author information.
|
|
|
|
for _, a := range gitAuthors(files) { |
|
|
|
for _, a := range gitAuthors(files) { |
|
|
|
merge[a] = true |
|
|
|
merge[a] = true |
|
|
@ -279,7 +292,7 @@ func writeAuthors(files []string) { |
|
|
|
for a := range merge { |
|
|
|
for a := range merge { |
|
|
|
result = append(result, a) |
|
|
|
result = append(result, a) |
|
|
|
} |
|
|
|
} |
|
|
|
sort.Strings(result) |
|
|
|
sort.Sort(authors(result)) |
|
|
|
content := new(bytes.Buffer) |
|
|
|
content := new(bytes.Buffer) |
|
|
|
content.WriteString(authorsFileHeader) |
|
|
|
content.WriteString(authorsFileHeader) |
|
|
|
for _, a := range result { |
|
|
|
for _, a := range result { |
|
|
|