mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 14:47:19 -04:00
[7x backport] Add optional sourceURL to license report CSV (#12362)
Clean backport of #12346 This commit adds an extra optional column 'sourceURL' to the license report. This column contains a pointer to the source code, which is optional for most dependencies, but a requirement for some, such as the Red Hat Universal Base Image. This commit also populates the 'copyright' field, which previously was an used column in the CSV definition Relates #12297
This commit is contained in:
parent
a693fa3bf4
commit
bf1238dec2
16 changed files with 120 additions and 67 deletions
|
@ -31,7 +31,7 @@ class LogStash::DependencyReport < Clamp::Command
|
|||
|
||||
OTHER_DEPENDENCIES = [
|
||||
["jruby", "", "http://jruby.org", "EPL-2.0"],
|
||||
["Red Hat Universal Base Image minimal","8","https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8","Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf"]
|
||||
["Red Hat Universal Base Image minimal","8","https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8","Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf","","https://oss-dependencies.elastic.co/redhat/ubi/ubi-minimal-8-source.tar.gz"]
|
||||
]
|
||||
|
||||
def execute
|
||||
|
@ -40,7 +40,7 @@ class LogStash::DependencyReport < Clamp::Command
|
|||
tmp_dir = java.lang.System.getProperty("java.io.tmpdir")
|
||||
ruby_output_path = File.join(tmp_dir, SecureRandom.uuid)
|
||||
# Write a CSV with just the ruby stuff
|
||||
CSV.open(ruby_output_path, "wb", :headers => [ "name", "version", "url", "license" ], :write_headers => true) do |csv|
|
||||
CSV.open(ruby_output_path, "wb", :headers => [ "name", "version", "url", "license","copyright","sourceURL" ], :write_headers => true) do |csv|
|
||||
puts "Finding gem dependencies"
|
||||
gems.each { |d| csv << d }
|
||||
puts "Finding gem embedded java/jar dependencies"
|
||||
|
|
|
@ -23,15 +23,11 @@ package org.logstash.dependencies;
|
|||
import org.apache.commons.csv.CSVFormat;
|
||||
import org.apache.commons.csv.CSVRecord;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Objects;
|
||||
import java.util.Scanner;
|
||||
import java.util.SortedSet;
|
||||
|
@ -42,13 +38,15 @@ class Dependency implements Comparable<Dependency> {
|
|||
String version;
|
||||
String url;
|
||||
String spdxLicense;
|
||||
String sourceURL;
|
||||
String copyright;
|
||||
|
||||
/**
|
||||
* Returns an object array representing this dependency as a CSV record according
|
||||
* to the format requested here: https://github.com/elastic/logstash/issues/8725
|
||||
*/
|
||||
Object[] toCsvReportRecord() {
|
||||
return new String[] {name, version, "", url, spdxLicense, ""};
|
||||
return new String[] {name, version, "", url, spdxLicense, copyright, sourceURL};
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -78,10 +76,15 @@ class Dependency implements Comparable<Dependency> {
|
|||
private static Dependency fromRubyCsvRecord(CSVRecord record) {
|
||||
Dependency d = new Dependency();
|
||||
|
||||
// name, version, url, license
|
||||
// name, version, url, license, copyright, sourceURL
|
||||
d.name = record.get(0);
|
||||
d.version = record.get(1);
|
||||
|
||||
if (record.size() > 4) {
|
||||
d.copyright = record.get(4);
|
||||
}
|
||||
if (record.size() > 5) {
|
||||
d.sourceURL = record.get(5);
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
|
@ -179,6 +182,10 @@ class Dependency implements Comparable<Dependency> {
|
|||
return version;
|
||||
}
|
||||
|
||||
public String getSourceURL() {
|
||||
return sourceURL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "<Dependency " + name + " v" + version + ">";
|
||||
|
|
|
@ -49,7 +49,7 @@ public class ReportGenerator {
|
|||
|
||||
final String UNKNOWN_LICENSE = "UNKNOWN";
|
||||
final Collection<Dependency> UNKNOWN_LICENSES = new ArrayList<>();
|
||||
final String[] CSV_HEADERS = {"name", "version", "revision", "url", "license", "copyright"};
|
||||
final String[] CSV_HEADERS = {"name", "version", "revision", "url", "license", "copyright","sourceURL"};
|
||||
final Collection<Dependency> MISSING_NOTICE = new ArrayList<>();
|
||||
|
||||
boolean generateReport(
|
||||
|
@ -65,7 +65,7 @@ public class ReportGenerator {
|
|||
Dependency.addDependenciesFromRubyReport(rubyDependenciesStream, dependencies);
|
||||
addJavaDependencies(javaDependenciesStreams, dependencies);
|
||||
|
||||
Map<String, LicenseUrlPair> licenseMapping = new HashMap<>();
|
||||
Map<String, LicenseInfo> licenseMapping = new HashMap<>();
|
||||
checkDependencyLicenses(licenseMappingStream, acceptableLicensesStream, licenseMapping, dependencies);
|
||||
checkDependencyNotices(noticeOutput, dependencies);
|
||||
|
||||
|
@ -91,7 +91,7 @@ public class ReportGenerator {
|
|||
}
|
||||
|
||||
private void checkDependencyLicenses(InputStream licenseMappingStream, InputStream acceptableLicensesStream,
|
||||
Map<String, LicenseUrlPair> licenseMapping, SortedSet<Dependency> dependencies) throws IOException {
|
||||
Map<String, LicenseInfo> licenseMapping, SortedSet<Dependency> dependencies) throws IOException {
|
||||
readLicenseMapping(licenseMappingStream, licenseMapping);
|
||||
List<String> acceptableLicenses = new ArrayList<>();
|
||||
readAcceptableLicenses(acceptableLicensesStream, acceptableLicenses);
|
||||
|
@ -134,10 +134,10 @@ public class ReportGenerator {
|
|||
}
|
||||
}
|
||||
|
||||
private void reportUnusedLicenseMappings(Writer unusedLicenseWriter, Map<String, LicenseUrlPair> licenseMapping) throws IOException {
|
||||
private void reportUnusedLicenseMappings(Writer unusedLicenseWriter, Map<String, LicenseInfo> licenseMapping) throws IOException {
|
||||
SortedSet<String> unusedDependencies = new TreeSet<>();
|
||||
|
||||
for (Map.Entry<String, LicenseUrlPair> entry : licenseMapping.entrySet()) {
|
||||
for (Map.Entry<String, LicenseInfo> entry : licenseMapping.entrySet()) {
|
||||
if (entry.getValue().isUnused) {
|
||||
unusedDependencies.add(entry.getKey());
|
||||
}
|
||||
|
@ -177,13 +177,13 @@ public class ReportGenerator {
|
|||
}
|
||||
}
|
||||
|
||||
private void checkDependencyLicense(Map<String, LicenseUrlPair> licenseMapping, List<String> acceptableLicenses, Dependency dependency) {
|
||||
private void checkDependencyLicense(Map<String, LicenseInfo> licenseMapping, List<String> acceptableLicenses, Dependency dependency) {
|
||||
if (licenseMapping.containsKey(dependency.name)) {
|
||||
LicenseUrlPair pair = licenseMapping.get(dependency.name);
|
||||
LicenseInfo licenseInfo = licenseMapping.get(dependency.name);
|
||||
|
||||
String[] dependencyLicenses = pair.license.split("\\|");
|
||||
String[] dependencyLicenses = licenseInfo.license.split("\\|");
|
||||
boolean hasAcceptableLicense = false;
|
||||
if (pair.url != null && !pair.url.equals("")) {
|
||||
if (licenseInfo.url != null && !licenseInfo.url.equals("")) {
|
||||
for (int k = 0; k < dependencyLicenses.length && !hasAcceptableLicense; k++) {
|
||||
if (acceptableLicenses.stream().anyMatch(dependencyLicenses[k]::equalsIgnoreCase)) {
|
||||
hasAcceptableLicense = true;
|
||||
|
@ -192,9 +192,11 @@ public class ReportGenerator {
|
|||
}
|
||||
|
||||
if (hasAcceptableLicense) {
|
||||
dependency.spdxLicense = pair.license;
|
||||
dependency.url = pair.url;
|
||||
pair.isUnused = false;
|
||||
dependency.spdxLicense = licenseInfo.license;
|
||||
dependency.url = licenseInfo.url;
|
||||
dependency.sourceURL = licenseInfo.sourceURL;
|
||||
dependency.copyright = licenseInfo.copyright;
|
||||
licenseInfo.isUnused = false;
|
||||
} else {
|
||||
// unacceptable license or missing URL
|
||||
UNKNOWN_LICENSES.add(dependency);
|
||||
|
@ -216,7 +218,7 @@ public class ReportGenerator {
|
|||
}
|
||||
}
|
||||
|
||||
private void readLicenseMapping(InputStream stream, Map<String, LicenseUrlPair> licenseMapping)
|
||||
private void readLicenseMapping(InputStream stream, Map<String, LicenseInfo> licenseMapping)
|
||||
throws IOException {
|
||||
Reader in = new InputStreamReader(stream);
|
||||
for (CSVRecord record : CSVFormat.DEFAULT.withFirstRecordAsHeader().parse(in)) {
|
||||
|
@ -226,14 +228,15 @@ public class ReportGenerator {
|
|||
String depName = lastIndex < 0
|
||||
? dependencyNameAndVersion
|
||||
: dependencyNameAndVersion.substring(0, lastIndex);
|
||||
validateAndAdd(licenseMapping, depName, new LicenseUrlPair(record.get(2), record.get(1)));
|
||||
|
||||
validateAndAdd(licenseMapping, depName, LicenseInfo.fromCSVRecord(record));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void validateAndAdd(Map<String, LicenseUrlPair> licenses, String depName, LicenseUrlPair lup) {
|
||||
private static void validateAndAdd(Map<String, LicenseInfo> licenses, String depName, LicenseInfo lup) {
|
||||
if (licenses.containsKey(depName)) {
|
||||
LicenseUrlPair existingLicense = licenses.get(depName);
|
||||
LicenseInfo existingLicense = licenses.get(depName);
|
||||
|
||||
// Because dependency versions are not treated independently, if dependencies with different versions
|
||||
// have different licenses, we cannot distinguish between them
|
||||
|
@ -249,13 +252,26 @@ public class ReportGenerator {
|
|||
|
||||
}
|
||||
|
||||
class LicenseUrlPair {
|
||||
class LicenseInfo {
|
||||
String license;
|
||||
String url;
|
||||
String sourceURL;
|
||||
String copyright;
|
||||
boolean isUnused = true;
|
||||
|
||||
LicenseUrlPair(String license, String url) {
|
||||
LicenseInfo(String license, String url) {
|
||||
this.license = license;
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
static LicenseInfo fromCSVRecord(CSVRecord record){
|
||||
LicenseInfo info = new LicenseInfo(record.get(2), record.get(1));
|
||||
if (record.size() > 3){
|
||||
info.copyright = record.get(3);
|
||||
}
|
||||
if (record.size() > 4){
|
||||
info.sourceURL = record.get(4);
|
||||
}
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
dependency,dependencyUrl,licenseOverride
|
||||
dependency,dependencyUrl,licenseOverride,copyright,sourceURL
|
||||
"addressable:",https://github.com/sporkmonger/addressable,Apache-2.0
|
||||
"atomic:",http://github.com/ruby-concurrency/atomic,Apache-2.0
|
||||
"avl_tree:",https://github.com/nahi/avl_tree,BSD-2-Clause-FreeBSD
|
||||
|
@ -121,7 +121,7 @@ dependency,dependencyUrl,licenseOverride
|
|||
"rack-protection:",http://github.com/rkh/rack-protection,MIT
|
||||
"rack:",http://rack.github.io/,MIT
|
||||
"rake:",https://github.com/ruby/rake,MIT
|
||||
"Red Hat Universal Base Image minimal:",https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8,Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf
|
||||
"Red Hat Universal Base Image minimal:",https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8,Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf,,https://oss-dependencies.elastic.co/redhat/ubi/ubi-minimal-8-source.tar.gz
|
||||
"redis:",https://github.com/redis/redis-rb,MIT
|
||||
"ruby-progressbar:",https://github.com/jfelchner/ruby-progressbar,MIT
|
||||
"rubyzip:",https://github.com/rubyzip/rubyzip,BSD-2-Clause-FreeBSD
|
||||
|
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
@ -77,8 +77,8 @@ public class ReportGeneratorTest {
|
|||
|
||||
// verify that the two components in the test input with missing licenses are
|
||||
// listed in the output with no license, i.e., an empty license field followed by CR/LF
|
||||
assertTrue(csvOutput.toString().contains("commons-io:commons-io,2.5,,,,\r\n"));
|
||||
assertTrue(csvOutput.toString().contains("filesize,0.0.4,,,,\r\n"));
|
||||
assertTrue(csvOutput.toString().contains("commons-io:commons-io,2.5,,,,,\r\n"));
|
||||
assertTrue(csvOutput.toString().contains("filesize,0.0.4,,,,,\r\n"));
|
||||
String unusedLicenses = unusedLicenseWriter.toString();
|
||||
assertThat(unusedLicenses, containsString("43 license mappings were specified but unused"));
|
||||
}
|
||||
|
@ -103,7 +103,7 @@ public class ReportGeneratorTest {
|
|||
// verify that the two components in the test input with unacceptable licenses are
|
||||
// listed in the output with no license, i.e., an empty license field followed by CR/LF
|
||||
String csvString = csvOutput.toString();
|
||||
assertThat(csvString, containsString("com.fasterxml.jackson.core:jackson-core,2.7.3,,,,\r\n"));
|
||||
assertThat(csvString, containsString("com.fasterxml.jackson.core:jackson-core,2.7.3,,,,,\r\n"));
|
||||
|
||||
Pattern bundlerPattern = Pattern.compile(".*bundler,1\\.16\\.[0-1],,,,.*");
|
||||
assertThat(bundlerPattern.matcher(csvString).find(), is(true));
|
||||
|
@ -119,8 +119,8 @@ public class ReportGeneratorTest {
|
|||
|
||||
// verify that the two components in the test input with missing URLs are
|
||||
// listed in the output with no license, i.e., an empty license field followed by CR/LF
|
||||
assertTrue(csvOutput.toString().contains("org.codehaus.janino:commons-compiler,3.0.8,,,,\r\n"));
|
||||
assertTrue(csvOutput.toString().contains("json-parser,,,,,\r\n"));
|
||||
assertTrue(csvOutput.toString().contains("org.codehaus.janino:commons-compiler,3.0.8,,,,,\r\n"));
|
||||
assertTrue(csvOutput.toString().contains("json-parser,,,,,,\r\n"));
|
||||
String unusedLicenses = unusedLicenseWriter.toString();
|
||||
assertThat(unusedLicenses, containsString("43 license mappings were specified but unused"));
|
||||
}
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
|
||||
==========
|
||||
Notice for: Red Hat Universal Base Image minimal-8
|
||||
----------
|
||||
|
||||
TEST
|
||||
==========
|
||||
Notice for: bundler-1.16.1
|
||||
----------
|
||||
|
@ -81,3 +86,9 @@ Notice for: org.codehaus.janino:commons-compiler-3.0.8
|
|||
----------
|
||||
|
||||
TEST
|
||||
|
||||
==========
|
||||
Notice for: tzinfo-
|
||||
----------
|
||||
|
||||
TEST
|
|
@ -1,15 +1,17 @@
|
|||
name,version,revision,url,license,copyright
|
||||
bundler,1.16.1,,https://rubygems.org/gems/bundler/versions/1.16.0,UnacceptableLicense|MIT,
|
||||
com.fasterxml.jackson.core:jackson-core,2.7.3,,https://github.com/FasterXML/jackson-core/tree/jackson-core-2.7.3,Apache-2.0,
|
||||
com.google.errorprone:javac-shaded,9-dev-r4023-3,,http://repo1.maven.org/maven2/com/google/errorprone/javac-shaded/9-dev-r4023-3/,EPL-1.0,
|
||||
commons-io:commons-io,2.5,,https://commons.apache.org/proper/commons-io/index.html,Apache-2.0,
|
||||
control.js,,,https://github.com/zombieleet/control,MIT,
|
||||
filesize,0.0.4,,https://rubygems.org/gems/filesize/versions/0.0.4,MIT,
|
||||
gradle.plugin.com.github.jk1:gradle-license-report,0.7.1,,https://github.com/jk1/Gradle-License-Report,Apache-2.0,
|
||||
jar-dependencies,0.3.12,,https://rubygems.org/gems/jar-dependencies/versions/0.3.11,MIT,
|
||||
jruby-openssl,0.9.21,,https://rubygems.org/gems/jruby-openssl/versions/0.9.20-java,Apache-2.0,
|
||||
jruby-readline,1.1.1,,https://rubygems.org/gems/jruby-readline/versions/1.1.1-java,Apache-2.0,
|
||||
json-generator,,,https://github.com/flori/json,Ruby,
|
||||
json-parser,,,https://rubygems.org/gems/json-parser/versions/0.0.1,Apache-2.0,
|
||||
junit:junit,4.12,,https://github.com/junit-team/junit4,Apache-2.0,
|
||||
org.codehaus.janino:commons-compiler,3.0.8,,https://github.com/janino-compiler/janino,BSD-3-Clause-Attribution,
|
||||
name,version,revision,url,license,copyright,sourceURL
|
||||
Red Hat Universal Base Image minimal,8,,https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8,Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf,,https://oss-dependencies.elastic.co/redhat/ubi/ubi-minimal-8-source.tar.gz
|
||||
bundler,1.16.1,,https://rubygems.org/gems/bundler/versions/1.16.0,UnacceptableLicense|MIT,,
|
||||
com.fasterxml.jackson.core:jackson-core,2.7.3,,https://github.com/FasterXML/jackson-core/tree/jackson-core-2.7.3,Apache-2.0,,
|
||||
com.google.errorprone:javac-shaded,9-dev-r4023-3,,http://repo1.maven.org/maven2/com/google/errorprone/javac-shaded/9-dev-r4023-3/,EPL-1.0,,
|
||||
commons-io:commons-io,2.5,,https://commons.apache.org/proper/commons-io/index.html,Apache-2.0,,
|
||||
control.js,,,https://github.com/zombieleet/control,MIT,,
|
||||
filesize,0.0.4,,https://rubygems.org/gems/filesize/versions/0.0.4,MIT,,
|
||||
gradle.plugin.com.github.jk1:gradle-license-report,0.7.1,,https://github.com/jk1/Gradle-License-Report,Apache-2.0,,
|
||||
jar-dependencies,0.3.12,,https://rubygems.org/gems/jar-dependencies/versions/0.3.11,MIT,,
|
||||
jruby-openssl,0.9.21,,https://rubygems.org/gems/jruby-openssl/versions/0.9.20-java,Apache-2.0,,
|
||||
jruby-readline,1.1.1,,https://rubygems.org/gems/jruby-readline/versions/1.1.1-java,Apache-2.0,,
|
||||
json-generator,,,https://github.com/flori/json,Ruby,,
|
||||
json-parser,,,https://rubygems.org/gems/json-parser/versions/0.0.1,Apache-2.0,,
|
||||
junit:junit,4.12,,https://github.com/junit-team/junit4,Apache-2.0,,
|
||||
org.codehaus.janino:commons-compiler,3.0.8,,https://github.com/janino-compiler/janino,BSD-3-Clause-Attribution,,
|
||||
tzinfo,,,https://github.com/tzinfo/tzinfo,MIT,Philip Ross,
|
||||
|
|
|
@ -60,3 +60,5 @@ dependency,dependencyUrl,licenseOverride
|
|||
"json-parser:",https://rubygems.org/gems/json-parser/versions/0.0.1,Apache-2.0
|
||||
"junit:junit:4.12",https://github.com/junit-team/junit4,Apache-2.0
|
||||
"json-generator",https://github.com/flori/json,Ruby
|
||||
"tzinfo:",https://github.com/tzinfo/tzinfo,MIT,Philip Ross
|
||||
"Red Hat Universal Base Image minimal:8",https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8,Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf,,https://oss-dependencies.elastic.co/redhat/ubi/ubi-minimal-8-source.tar.gz
|
||||
|
|
Can't render this file because it has a wrong number of fields in line 63.
|
|
@ -1,4 +1,4 @@
|
|||
dependency,dependencyUrl,licenseOverride
|
||||
dependency,dependencyUrl,licenseOverride,copyright,sourceURL
|
||||
"webrick:1.3.1",,BSD-2-Clause-FreeBSD
|
||||
"bundler:1.16.0",https://rubygems.org/gems/bundler/versions/1.16.0,UnacceptableLicense|MIT
|
||||
"webhdfs:0.8.0",,Apache-2.0
|
||||
|
@ -58,3 +58,5 @@ dependency,dependencyUrl,licenseOverride
|
|||
"json-parser:",https://rubygems.org/gems/json-parser/versions/0.0.1,Apache-2.0
|
||||
"junit:junit:4.12",https://github.com/junit-team/junit4,Apache-2.0
|
||||
"json-generator",https://github.com/flori/json,Ruby
|
||||
"tzinfo:",https://github.com/tzinfo/tzinfo,MIT,Philip Ross
|
||||
"Red Hat Universal Base Image minimal:8",https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8,Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf,,https://oss-dependencies.elastic.co/redhat/ubi/ubi-minimal-8-source.tar.gz
|
||||
|
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
@ -1,4 +1,4 @@
|
|||
dependency,dependencyUrl,licenseOverride
|
||||
dependency,dependencyUrl,licenseOverride,copyright,sourceURL
|
||||
"webrick:1.3.1",,BSD-2-Clause-FreeBSD
|
||||
"bundler:1.16.0",https://rubygems.org/gems/bundler/versions/1.16.0,MIT
|
||||
"webhdfs:0.8.0",,Apache-2.0
|
||||
|
@ -59,3 +59,5 @@ dependency,dependencyUrl,licenseOverride
|
|||
"json-parser:",https://rubygems.org/gems/json-parser/versions/0.0.1,Apache-2.0
|
||||
"junit:junit:4.12",https://github.com/junit-team/junit4,Apache-2.0
|
||||
"json-generator",https://github.com/flori/json,Ruby
|
||||
"tzinfo:",https://github.com/tzinfo/tzinfo,MIT,Philip Ross
|
||||
"Red Hat Universal Base Image minimal:8",https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8,Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf,,https://oss-dependencies.elastic.co/redhat/ubi/ubi-minimal-8-source.tar.gz
|
||||
|
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
@ -1,4 +1,4 @@
|
|||
dependency,dependencyUrl,licenseOverride
|
||||
dependency,dependencyUrl,licenseOverride,copyright,sourceURL
|
||||
"co.elastic:noNoticeDep:0.0.1",,MIT
|
||||
"webrick:1.3.1",,BSD-2-Clause-FreeBSD
|
||||
"bundler:1.16.0",https://rubygems.org/gems/bundler/versions/1.16.0,MIT
|
||||
|
@ -61,3 +61,6 @@ dependency,dependencyUrl,licenseOverride
|
|||
"junit:junit:4.12",https://github.com/junit-team/junit4,Apache-2.0
|
||||
"junit:junit:4.12",https://github.com/junit-team/junit4,Apache-2.0
|
||||
"json-generator",https://github.com/flori/json,Ruby
|
||||
"tzinfo:",https://github.com/tzinfo/tzinfo,MIT,Philip Ross
|
||||
"Red Hat Universal Base Image minimal:8",https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8,Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf,,https://oss-dependencies.elastic.co/redhat/ubi/ubi-minimal-8-source.tar.gz
|
||||
|
||||
|
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
@ -59,3 +59,5 @@ dependency,dependencyUrl,licenseOverride
|
|||
"json-parser:",,Apache-2.0
|
||||
"junit:junit:4.12",https://github.com/junit-team/junit4,Apache-2.0
|
||||
"json-generator",https://github.com/flori/json,Ruby
|
||||
"tzinfo:",https://github.com/tzinfo/tzinfo,MIT,Philip Ross
|
||||
"Red Hat Universal Base Image minimal:8",https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8,Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf,,https://oss-dependencies.elastic.co/redhat/ubi/ubi-minimal-8-source.tar.gz
|
||||
|
|
Can't render this file because it has a wrong number of fields in line 62.
|
|
@ -56,3 +56,5 @@ dependency,dependencyUrl,licenseOverride
|
|||
"json-parser:",https://rubygems.org/gems/json-parser/versions/0.0.1,Apache-2.0
|
||||
"junit:junit:4.12",https://github.com/junit-team/junit4,Apache-2.0
|
||||
"json-generator",https://github.com/flori/json,Ruby
|
||||
"tzinfo:",https://github.com/tzinfo/tzinfo,MIT,Philip Ross
|
||||
"Red Hat Universal Base Image minimal:8",https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8,Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf,,https://oss-dependencies.elastic.co/redhat/ubi/ubi-minimal-8-source.tar.gz
|
||||
|
|
Can't render this file because it has a wrong number of fields in line 59.
|
|
@ -0,0 +1 @@
|
|||
TEST
|
|
@ -0,0 +1 @@
|
|||
TEST
|
|
@ -1,15 +1,17 @@
|
|||
name,version,url,license
|
||||
bundler,1.16.1,http://bundler.io,MIT
|
||||
bundler,1.16.0,http://bundler.io,MIT
|
||||
filesize,0.0.4,http://filesize.rubyforge.org/,UNKNOWN
|
||||
jar-dependencies,0.3.12,https://github.com/mkristian/jar-dependencies,MIT
|
||||
jar-dependencies,0.3.11,https://github.com/mkristian/jar-dependencies,MIT
|
||||
jar-dependencies,0.3.10,https://github.com/mkristian/jar-dependencies,MIT
|
||||
jruby-openssl,0.9.21,https://github.com/jruby/jruby-openssl,EPL-1.0|GPL-2.0|LGPL-2.1
|
||||
jruby-openssl,0.9.20,https://github.com/jruby/jruby-openssl,EPL-1.0|GPL-2.0|LGPL-2.1
|
||||
jruby-readline,1.1.1,https://github.com/jruby/jruby,EPL-1.0|GPL-2.0|LGPL-2.1
|
||||
com.fasterxml.jackson.core:jackson-core,2.7.3,https://github.com/FasterXML/jackson-core,Apache-2.0
|
||||
com.fasterxml.jackson.core:jackson-core,2.9.1,https://github.com/FasterXML/jackson-core,Apache-2.0
|
||||
control.js,,,MIT
|
||||
json-generator,,https://github.com/flori/json,Ruby
|
||||
json-parser,,https://github.com/flori/json,Ruby
|
||||
name,version,url,license,copyright,sourceURL
|
||||
bundler,1.16.1,http://bundler.io,MIT,,
|
||||
bundler,1.16.0,http://bundler.io,MIT,,
|
||||
filesize,0.0.4,http://filesize.rubyforge.org/,UNKNOWN,,
|
||||
jar-dependencies,0.3.12,https://github.com/mkristian/jar-dependencies,MIT,,
|
||||
jar-dependencies,0.3.11,https://github.com/mkristian/jar-dependencies,MIT,,
|
||||
jar-dependencies,0.3.10,https://github.com/mkristian/jar-dependencies,MIT,,
|
||||
jruby-openssl,0.9.21,https://github.com/jruby/jruby-openssl,EPL-1.0|GPL-2.0|LGPL-2.1,,
|
||||
jruby-openssl,0.9.20,https://github.com/jruby/jruby-openssl,EPL-1.0|GPL-2.0|LGPL-2.1,,
|
||||
jruby-readline,1.1.1,https://github.com/jruby/jruby,EPL-1.0|GPL-2.0|LGPL-2.1,,
|
||||
com.fasterxml.jackson.core:jackson-core,2.7.3,https://github.com/FasterXML/jackson-core,Apache-2.0,,
|
||||
com.fasterxml.jackson.core:jackson-core,2.9.1,https://github.com/FasterXML/jackson-core,Apache-2.0,,
|
||||
control.js,,,MIT,,
|
||||
json-generator,,https://github.com/flori/json,Ruby,,
|
||||
json-parser,,https://github.com/flori/json,Ruby,,
|
||||
tzinfo,,https://github.com/tzinfo/tzinfo,MIT,Philip Ross,
|
||||
Red Hat Universal Base Image minimal,8,https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8,Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf,,https://oss-dependencies.elastic.co/redhat/ubi/ubi-minimal-8-source.tar.gz
|
|
Loading…
Add table
Add a link
Reference in a new issue