summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarek Prokop <jprokop@redhat.com>2022-11-21 08:57:47 +0100
committerJarek Prokop <jprokop@redhat.com>2022-11-21 08:59:33 +0100
commitd1e88765e10f47ebf1ad9857f328a291bb81b2c1 (patch)
treeae5f18ee497e0a1bff5bc3873429870534a7181d
downloadspdx_rubygems-d1e88765e10f47ebf1ad9857f328a291bb81b2c1.tar.gz
spdx_rubygems-d1e88765e10f47ebf1ad9857f328a291bb81b2c1.tar.xz
spdx_rubygems-d1e88765e10f47ebf1ad9857f328a291bb81b2c1.zip
Initial commit
-rw-r--r--.gitignore2
-rw-r--r--current_ok_rb.csv232
-rw-r--r--fedora2spdx.rb206
-rw-r--r--gem2rpm.cache488
-rw-r--r--licences.csv496
-rw-r--r--rbgem_license_check_out.csv488
-rw-r--r--template.erb2
-rw-r--r--validate_ruby_files.rb73
8 files changed, 1987 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7861b23
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+*.spec
+rubygem-*/
diff --git a/current_ok_rb.csv b/current_ok_rb.csv
new file mode 100644
index 0000000..0ee3758
--- /dev/null
+++ b/current_ok_rb.csv
@@ -0,0 +1,232 @@
+fedora matches gem2rpm;Inspection required;pkg-config;LGPLv2+;LGPLv2+
+fedora matches gem2rpm;Inspection required;unicode;Ruby;Ruby
+fedora matches gem2rpm;TRUE valid MIT;Ascii85;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;abrt;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;actioncable;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;actionmailbox;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;actionmailer;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;actionpack;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;actiontext;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;actionview;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;activejob;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;activemodel-serializers-xml;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;activemodel;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;activeresource;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;activestorage;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;activesupport;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;acts_as_list;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;afm;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;arel;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;asciidoctor-pdf;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;backports;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;base32;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;benchmark-ips;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;bindex;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;bootsnap;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;builder;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;bundler_ext;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;capybara;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;childprocess;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;chronic;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;chunky_png;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cinch;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;clockwork;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;coffee-script;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;colorator;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;connection_pool;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;coveralls;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;crass;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-core;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-create-meta;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-cucumber-expressions;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-gherkin;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-messages;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-tag-expressions;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-wire;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;daemon_controller;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;dalli;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;deep_merge;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;diffy;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;docile;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ed25519;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;em-websocket-client;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;em-websocket;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;erubi;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ethon;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;excon;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;execjs;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;factory_bot;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;fake_ftp;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;fakefs;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;faraday;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;flexmock;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;fog-core;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;fog-json;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;fog-libvirt;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;fog-xml;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;foreigner;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;forwardable-extended;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;generator_spec;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;gist;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;git;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;globalid;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;glu;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;glut;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;guard-compat;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;guard-livereload;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;guard-shell;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;guard;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;hashdiff;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;hashie;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;http-cookie;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;http_parser.rb;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;httparty;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;image_processing;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;importmap-rails;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ipaddress;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jbuilder;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jekyll-email-protect;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jekyll-feed;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jekyll-git-authors;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jekyll-seo-tag;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jekyll-toc;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jekyll;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jquery-rails;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;json_spec;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;linked-list;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;liquid;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;listen;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;loofah;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;lumberjack;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mail;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;marc;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mechanize;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;memfs;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mercenary;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;method_source;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mimemagic;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mini_magick;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mini_mime;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mini_portile2;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mini_portile;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;minima;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;minitest-around;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;minitest-profile;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;minitest-stub-const;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mizuho;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mongoid;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;more_core_extensions;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;multi_json;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;multi_test;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;multi_xml;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mustache;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mustermann;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mysql2;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;nenv;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;nesty;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;net-scp;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;net-ssh;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;netrc;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;notiffany;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;opengl;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;optimist;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ox;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;parallel;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;parseconfig;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;pastel;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;pathutil;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;pdf-reader;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;pdfkit;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;plist;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;polyglot;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;powerpack;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;prawn-svg;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;progressbar;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;pry-byebug;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;pundit;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rack-cors;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rack-protection;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rack-test;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rails-controller-testing;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rails-deprecated_sanitizer;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rails-dom-testing;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rails-html-sanitizer;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;railties;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rainbow;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rake-compiler;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rake-contrib;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rake;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rb-inotify;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rbvmomi;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;red-colors;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;redis;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ref;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;regexp_parser;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;regexp_property_values;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;require_all;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;resolve-hostname;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rest-client;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rmagick;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ronn-ng;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rr;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-collection_matchers;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-core;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-expectations;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-its;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-mocks;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-pending_for;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-rails;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-support;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ruby-progressbar;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ruby-vips;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ruby_dep;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ruby_engine;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ruby_version;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rugged;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;safe_yaml;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sass-rails;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sass;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sassc;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;scrub_rb;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sd_notify;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;semantic;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;shellany;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;shoulda-context;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;shoulda-matchers;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;shoulda;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;simplecov-html;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;simplecov;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;simpleidn;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sinatra;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;slim;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;spring-watcher-listen;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;spring;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sprockets-rails;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sshkey;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;stringex;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;temple;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;terminal-table;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;test_construct;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;test_declarative;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;thor;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;thread_order;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;timecop;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;tomlrb;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;treetop;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;tty-color;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;turbolinks-source;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;turbolinks;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;typhoeus;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;tzinfo;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;unf_ext;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;unicode-display_width;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;web-console;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;webmock;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;zeitwerk;MIT;MIT
+fedora matches gem2rpm;Valid SPDX ID, no intervention required.;bson;Apache-2.0;Apache-2.0
+fedora matches gem2rpm;Valid SPDX ID, no intervention required.;puma;BSD-3-Clause;BSD-3-Clause
+fedora matches gem2rpm;Valid SPDX ID, no intervention required.;sync;BSD-2-Clause;BSD-2-Clause
+fedora matches gem2rpm;Valid SPDX ID, no intervention required.;term-ansicolor;Apache-2.0;Apache-2.0
+fedora matches gem2rpm;Valid SPDX ID, no intervention required.;websocket-extensions;Apache-2.0;Apache-2.0
diff --git a/fedora2spdx.rb b/fedora2spdx.rb
new file mode 100644
index 0000000..780ca2d
--- /dev/null
+++ b/fedora2spdx.rb
@@ -0,0 +1,206 @@
+require 'csv'
+require 'etc'
+require 'open3'
+require 'rubygems'
+require 'rubygems/package'
+require 'tmpdir'
+require 'licensee'
+# Licences.csv are from validate_ruby_files.rb and it contains what was possible to gather from upstream gemfiles and Fedora specfiles.
+# This file exists to validate, that the output from gem2rpm for Fedora is the same. And possibly also validate Licensefiles, cos
+# the goddamn MIT and BSD have around 20 possibilities from callaway to spdx...
+csv = CSV.parse(File.read('licences.csv'), col_sep: ';', headers: true)
+
+class ThreadWorker
+ MAX_THREADS = Etc.nprocessors
+
+ # Expecting an array of items and a block
+ def initialize(items)
+ raise ArgumentError, 'Worker queue received no work...' unless items
+
+ raise ArgumentError, 'Provide block to execute in threads with items.' unless block_given?
+
+ @items = items.to_a
+
+ # If we more threads than items, then we can't slice it
+ slices = if @items.count <= MAX_THREADS
+ [@items]
+ else
+ # + 1 to slice size should prevent spawning more threads
+ # than we have HW threads (Yes, MRI does not have hw:sw
+ # mapping, but they spawn subprocesses that do execute on HW
+ # thread)
+ @items.each_slice((@items.count / MAX_THREADS) + 1)
+ end
+
+ @worker_pool = []
+
+ slices.each do |slice|
+ @worker_pool << Thread.new do
+ yield slice
+ end
+ end
+ end
+
+ def gather_pool
+ @worker_pool.map(&:value).flatten(1)
+ end
+
+ class << self
+ def execute(command, pwd: nil)
+ options = {}
+ options[:chdir] = pwd if pwd
+ puts "Executing: #{command}"
+ stdout, stderr, status = Open3.capture3(command, options)
+
+ raise "Failed command, stderr: #{stderr}, stdout: #{stdout}, cmd: #{command}" unless status.success?
+
+ stdout
+ end
+ end
+end
+
+# Fetch the Fedora sources
+ThreadWorker.new(csv.to_a[1..]) do |slice|
+ slice.map do |row|
+ name = "rubygem-#{row[0]}"
+
+ next if Dir.exist?(name)
+
+ ThreadWorker.execute("fedpkg clone -a #{name}")
+ end
+end.gather_pool
+
+# Sigh... they have tar as rubygem source...
+EXCLUDED_SOURCES = %w[rubygem-morph-cli rubygem-krb5-auth rubygem-asciidoctor rubygem-rgen rubygem-net-irc].freeze
+
+# Fetch the gem from lookaside cache
+ThreadWorker.new(csv.to_a[1..]) do |slice|
+ slice.map do |row|
+ name = "rubygem-#{row[0]}"
+
+ dir = Dir["#{name}/*.gem"]
+
+ next unless dir.empty?
+
+ next if EXCLUDED_SOURCES.include? name
+
+ raise "#{dir} ; too much stuff" if dir.size > 1
+
+ puts "sources for #{name}"
+ ThreadWorker.execute("fedpkg sources", pwd: name)
+ end
+end.gather_pool
+
+res = if File.exist?("gem2rpm.cache")
+ File.read("gem2rpm.cache").split("\n")
+ else
+ # Create CSV from the gems, so that we have smth to compare.
+ gems = Dir['*/*.gem']
+ out = ThreadWorker.new(gems) do |slice|
+ slice.map do |gem_file|
+ # template:
+ # <%# gem_name;gem_version;fedora_license;license_file %>
+ # <%= spec.name %>;<%= spec.version %>;<%= spec.licenses.join(" and ") %>;<%= main_files.filter do |item| item.license? end.join(" ")%>
+ ThreadWorker.execute("gem2rpm --template ./template.erb #{gem_file} --local")
+ end
+ end.gather_pool.map(&:lstrip)
+
+ File.write("gem2rpm.cache", out.join(''))
+
+ out.map(&:rstrip)
+ end
+
+res = res.map { |str| str.split(';') }
+
+def licensee_mit(gem_path, license_file)
+ # Match the MIT license against this text... let's see if it even helps
+ curr_dir = Dir.pwd
+
+ license = nil
+ content = nil
+ Dir.mktmpdir do |destination|
+ the_gem = Gem::Package.new(File.join(curr_dir, gem_path))
+ the_gem.contents # get the files in the gem
+ the_gem.extract_files destination # extract the gem into a directory
+
+ content = File.read(File.join(destination, license_file))
+ license = Licensee.license(File.join(destination,license_file))
+ # In case of an exception, it is needed to debug what went wrong (nonexistant dir, nonexistant file even despite guards...)
+ rescue => e
+ require 'irb'; binding.irb
+ end
+
+# raise "\n"+license unless license.gsub(/[[:space:]]/, '') =~ regex
+# rescue
+ return "TRUE valid MIT" if license && license.spdx_id == "MIT"
+
+ "FALSE, inspection required"
+end
+
+def licensee_general(gem_path, license_file)
+ curr_dir = Dir.pwd
+
+ license = nil
+ content = nil
+ Dir.mktmpdir do |destination|
+ the_gem = Gem::Package.new(File.join(curr_dir, gem_path))
+ the_gem.contents # get the files in the gem
+ the_gem.extract_files destination # extract the gem into a directory
+
+ if license_file
+ content = File.read(File.join(destination, license_file))
+ license = Licensee.license(File.join(destination,license_file))
+ else
+ license = Licensee.license(destination)
+ end
+ # In case of an exception, it is needed to debug what went wrong (nonexistant dir, nonexistant file even despite guards...)
+ rescue => e
+ require 'irb'; binding.irb
+ end
+
+ if license && license.spdx_id != "other"
+ "The license might be #{license.spdx_id}"
+ else
+ "Inspection required"
+ end
+end
+
+ret = res.map do |arr|
+ gem2rpm_name = arr[0]
+ gem2rpm_ver = arr[1]
+ gem2rpm_license = arr[2]
+ gem2rpm_license_file = arr[3]
+
+ fedora_gem = csv.find { |row| row["gem_name"] == gem2rpm_name }
+ fedora_name = fedora_gem["gem_name"]
+ fedora_license = fedora_gem["fedora_license"]
+ fedora_gem_license = fedora_gem["gem_license"]
+
+ raise "The names of gems differ. Leading me to this is gem2rpm: #{gem2rpm_name} fedora: #{fedora_name}" if gem2rpm_name != fedora_name
+
+ str = ''
+ if fedora_license == fedora_gem_license && fedora_license == gem2rpm_license
+ str = "fedora matches gem2rpm"
+ # validate_mit_text(gem_path, license_file_name)
+ if fedora_license =~ /MIT/ && gem2rpm_license_file && !gem2rpm_license_file.empty?
+ str += ";" + licensee_mit(Dir["rubygem-#{fedora_name}/#{fedora_name}*.gem"].sort.first, gem2rpm_license_file)
+ elsif fedora_license =~ /MIT/
+ str += ";" + "inspection required, MIT without licensefile detected"
+ elsif fedora_license == "BSD-2-Clause" || fedora_license == "BSD-3-Clause" || fedora_license == "Apache-2.0"
+ str += ";" + "Valid SPDX ID, no intervention required."
+ else
+ begin
+ # ThreadWorker.execute("license-validate #{fedora_license}")
+ str += ';' + licensee_general(Dir["rubygem-#{fedora_name}/#{fedora_name}*.gem"].sort.first, gem2rpm_license_file)
+ rescue RuntimeError => e
+ puts e.message
+ end
+ end
+ str
+ else
+ str = "Fedora does not match gem2rpm" + ";" + "Inspection needed"
+ end
+ str + ";" + fedora_name + ";" + fedora_license.to_s + ";" + gem2rpm_license.to_s
+end
+
+puts ret.sort
diff --git a/gem2rpm.cache b/gem2rpm.cache
new file mode 100644
index 0000000..044b9a8
--- /dev/null
+++ b/gem2rpm.cache
@@ -0,0 +1,488 @@
+Ascii85;1.1.0;MIT;LICENSE
+POpen4;0.1.4;;LICENSE
+Platform;0.4.2;MIT;
+RedCloth;4.3.2;MIT;COPYING
+ZenTest;4.12.1;MIT;
+abrt;0.4.0;MIT;LICENSE.txt
+abstract;1.0.0;;
+actioncable;7.0.4;MIT;MIT-LICENSE
+actionmailbox;7.0.4;MIT;MIT-LICENSE
+actionmailer;7.0.4;MIT;MIT-LICENSE
+actionpack;7.0.4;MIT;MIT-LICENSE
+actiontext;7.0.4;MIT;MIT-LICENSE
+actionview;7.0.4;MIT;MIT-LICENSE
+activejob;7.0.4;MIT;MIT-LICENSE
+activemodel;7.0.4;MIT;MIT-LICENSE
+activemodel-serializers-xml;1.0.2;MIT;MIT-LICENSE
+activerecord;7.0.4;MIT;MIT-LICENSE
+activeresource;6.0.0;MIT;MIT-LICENSE
+activestorage;7.0.4;MIT;MIT-LICENSE
+activesupport;7.0.4;MIT;MIT-LICENSE
+acts_as_list;1.0.4;MIT;MIT-LICENSE
+addressable;2.8.0;Apache-2.0;LICENSE.txt
+afm;0.2.2;MIT;LICENSE
+algorithms;0.6.1;MIT;
+allison;2.0.3;;LICENSE
+ammeter;1.1.5;;LICENSE.txt
+ansi;1.5.0;BSD-2-Clause;LICENSE.txt
+apipie-rails;0.8.1;;APACHE-LICENSE-2.0 MIT-LICENSE
+appraisal;0.5.2;;MIT-LICENSE
+archive-tar-minitar;0.5.2;;
+arel;9.0.0;MIT;MIT-LICENSE.txt
+aruba;2.1.0;MIT;LICENSE
+asciidoctor-pdf;2.3.4;MIT;LICENSE
+async_sinatra;1.3.0;MIT;
+atk;4.0.3;LGPL-2.1+;COPYING.LIB
+atomic;1.1.101;Apache-2.0;LICENSE
+awesome_print;1.0.2;;LICENSE
+aws-sigv4;1.0.2;Apache-2.0;
+backports;3.23.0;MIT;LICENSE.txt
+bacon;1.2.0;;COPYING
+bacon-colored_output;1.1.1;;LICENSE.txt
+base32;0.3.4;MIT;LICENSE
+bcrypt;3.1.17;MIT;COPYING
+bcrypt_pbkdf;1.1.0;MIT;COPYING
+benchmark-ips;2.10.0;MIT;LICENSE
+between_meals;0.0.12;Apache-2.0;LICENSE
+bindex;0.8.1;MIT;LICENSE.txt
+bootsnap;1.4.7;MIT;LICENSE.txt
+boxgrinder-build;0.10.4;;LICENSE
+boxgrinder-core;0.3.14;;LICENSE
+bson;4.15.0;Apache-2.0;LICENSE
+builder;3.2.4;MIT;MIT-LICENSE
+bundler;2.3.25;MIT;LICENSE.md
+bundler_ext;0.4.2;MIT;MIT-LICENSE
+byebug;11.1.3;BSD-2-Clause;LICENSE
+cairo;1.17.8;Ruby and GPL-2.0-or-later;COPYING
+cairo-gobject;4.0.3;LGPL-2.1+;COPYING.LIB
+capybara;3.37.1;MIT;License.txt
+chake;0.21.2;MIT;LICENSE.txt
+childprocess;4.1.0;MIT;LICENSE
+chronic;0.10.2;MIT;LICENSE
+chunky_png;1.4.0;MIT;LICENSE
+cinch;2.2.4;MIT;LICENSE
+clockwork;2.0.4;MIT;LICENSE
+clutter;4.0.3;LGPL-2.1+;COPYING.LIB
+clutter-gdk;4.0.3;LGPL-2.1+;COPYING.LIB
+clutter-gstreamer;4.0.3;LGPL-2.1+;COPYING.LIB
+clutter-gtk;4.0.3;LGPL-2.1+;COPYING.LIB
+codeclimate-test-reporter;1.0.8;MIT;LICENSE.txt
+coderay;1.1.3;MIT;MIT-LICENSE
+coffee-script;2.4.1;MIT;LICENSE
+coffee-script-source;1.10.0;MIT;
+color;1.8;MIT;Licence.rdoc
+colorator;1.1.0;MIT;LICENSE
+colorize;0.8.1;GPL-2.0;LICENSE
+comp_tree;1.1.3;;
+concurrent-ruby;1.1.9;MIT;LICENSE.txt
+connection_pool;2.2.5;MIT;LICENSE
+contracts;0.17;BSD-2-Clause;LICENSE
+cookiejar;0.3.3;;LICENSE
+coveralls;0.8.13;MIT;LICENSE
+crack;0.4.5;MIT;
+crass;1.0.4;MIT;LICENSE
+creole;0.5.0;;
+css_parser;1.12.0;MIT;MIT-LICENSE
+cucumber;7.1.0;MIT;LICENSE
+cucumber-core;10.1.0;MIT;LICENSE
+cucumber-create-meta;6.0.1;MIT;LICENSE
+cucumber-cucumber-expressions;14.0.0;MIT;LICENSE
+cucumber-gherkin;22.0.0;MIT;LICENSE
+cucumber-messages;17.1.0;MIT;LICENSE
+cucumber-tag-expressions;4.0.2;MIT;LICENSE
+cucumber-wire;6.2.0;MIT;LICENSE
+curb;1.0.1;MIT;LICENSE
+daemon_controller;1.2.0;MIT;LICENSE.txt
+daemons;1.1.9;;LICENSE
+dalli;3.2.0;MIT;LICENSE
+declarative_authorization;0.5.7;;MIT-LICENSE
+deep_merge;1.2.2;MIT;LICENSE
+delorean;2.1.0;;MIT-LICENSE
+diff-lcs;1.5.0;MIT and Artistic-2.0 and GPL-2.0+;License.md
+diffy;3.2.1;MIT;LICENSE
+dnsruby;1.61.7;Apache License, Version 2.0;LICENSE
+docile;1.1.5;MIT;LICENSE
+domain_name;0.5.20190701;BSD-2-Clause and BSD-3-Clause and MPL-2.0;LICENSE.txt
+drake;0.9.2.0.3.1;;MIT-LICENSE
+ed25519;1.3.0;MIT;LICENSE
+ejs;1.1.1;;LICENSE
+elasticsearch-transport;5.0.4;Apache 2;LICENSE.txt
+em-http-request;1.1.7;MIT;
+em-socksify;0.3.0;;
+em-spec;0.2.7;;LICENSE
+em-websocket;0.5.2;MIT;LICENCE
+em-websocket-client;0.1.2;MIT;LICENSE.txt
+ensure_valid_encoding;0.5.3;;LICENSE
+erubi;1.10.0;MIT;MIT-LICENSE
+escape;0.0.4;;
+ethon;0.15.0;MIT;LICENSE
+eventmachine;1.2.7;Ruby and GPL-2.0;LICENSE
+excon;0.91.0;MIT;LICENSE.md
+execjs;2.8.1;MIT;MIT-LICENSE
+facon;0.5.0;;
+factory_bot;6.2.1;MIT;LICENSE
+fake_ftp;0.3.0;MIT;LICENSE.md
+fakefs;1.2.2;MIT;LICENSE
+faraday;1.0.1;MIT;LICENSE.md
+fattr;2.2.2;same as ruby's;LICENSE
+ffi;1.15.5;BSD-3-Clause;COPYING LICENSE LICENSE.SPECS
+file-tail;1.2.0;Apache-2.0;COPYING
+flexmock;2.3.6;MIT;LICENSE.txt
+fog-core;2.2.4;MIT;LICENSE.md
+fog-json;1.2.0;MIT;LICENSE.md
+fog-libvirt;0.9.0;MIT;LICENSE.md
+fog-xml;0.1.4;MIT;LICENSE.md
+foreigner;1.7.4;MIT;MIT-LICENSE
+formatador;0.2.5;;LICENSE.md
+forwardable-extended;2.6.0;MIT;LICENSE
+gdk3;4.0.3;LGPL-2.1+;COPYING.LIB
+gdk_pixbuf2;4.0.3;LGPL-2.1+;COPYING.LIB
+gem-nice-install;0.3.0;MIT;MIT
+gem2rpm;1.0.2;GPL-2.0+;LICENSE
+generator_spec;0.9.4;MIT;MIT-LICENSE
+gettext;3.4.3;Ruby and LGPL-3.0+;
+gio2;4.0.3;LGPL-2.1+;COPYING.LIB
+gist;6.0.0;MIT;LICENSE.MIT
+git;1.12.0;MIT;LICENSE
+glib2;4.0.3;LGPL-2.1+;COPYING.LIB
+globalid;1.0.0;MIT;MIT-LICENSE
+glu;8.3.0;MIT;MIT-LICENSE
+glut;8.3.0;MIT;MIT-LICENSE
+gobject-introspection;4.0.3;LGPL-2.1+;COPYING.LIB
+goocanvas;2.2.0;LGPLv2.1 or later;
+gssapi;1.3.1;MIT;COPYING
+gstreamer;4.0.3;LGPL-2.1+;COPYING.LIB
+gtk2;3.4.3;LGPL-2.1+;COPYING.LIB
+gtk3;4.0.3;LGPL-2.1+;COPYING.LIB
+gtksourceview2;3.4.3;LGPL-2.1+;COPYING.LIB
+gtksourceview3;4.0.3;LGPL-2.1+;COPYING.LIB
+guard;2.18.0;MIT;LICENSE
+guard-compat;1.2.1;MIT;LICENSE.txt
+guard-livereload;2.5.2;MIT;LICENSE.txt
+guard-shell;0.7.1;MIT;LICENSE
+haml;5.2.2;MIT;MIT-LICENSE
+hashdiff;1.0.1;MIT;LICENSE
+hashery;2.1.2;BSD-2-Clause;LICENSE.txt
+hashicorp-checkpoint;0.1.5;MPL2;LICENSE.txt
+hashie;4.1.0;MIT;LICENSE
+hashr;2.0.1;;MIT-LICENSE
+hiera-vault;0.2.2;Apache-2.0;
+highline;2.0.3;Ruby;COPYING LICENSE
+hikidoc;0.1.0;MIT;COPYING
+hiredis;0.6.3;BSD-3-Clause;COPYING
+hitimes;2.0.0;ISC;LICENSE
+hocon;1.3.1;Apache License, v2;LICENSE
+hoe;3.26.0;MIT;
+hpricot;0.8.6;;COPYING
+hrx;1.0.0;Apache-2.0;LICENSE
+htmlentities;4.3.4;MIT;COPYING.txt
+http-accept;2.1.1;MIT;
+http-cookie;1.0.5;MIT;LICENSE.txt
+http_connection;1.4.4;;
+http_parser.rb;0.6.0;MIT;LICENSE-MIT
+httparty;0.18.1;MIT;MIT-LICENSE
+httpclient;2.8.3;ruby;
+i18n;1.8.11;MIT;MIT-LICENSE
+i18n_data;0.10.0;MIT;
+icaro;1.0.6;;
+idn;0.0.2;;LICENSE
+image_processing;1.12.2;MIT;LICENSE.txt
+image_size;3.2.0;Ruby;LICENSE.txt
+imagesize;0.1.1;;
+importmap-rails;1.0.3;MIT;MIT-LICENSE
+introspection;0.0.4;MIT;COPYING.txt
+ipaddress;0.8.3;MIT;LICENSE.txt
+isolate;3.5.1;MIT;
+jbuilder;2.11.5;MIT;MIT-LICENSE
+jekyll;4.3.1;MIT;LICENSE
+jekyll-asciidoc;3.0.0;MIT;LICENSE.adoc
+jekyll-email-protect;1.1.0;MIT;LICENSE.md
+jekyll-feed;0.17.0;MIT;LICENSE.txt
+jekyll-git-authors;1.0.0;MIT;LICENSE.txt
+jekyll-sass-converter;2.2.0;MIT;
+jekyll-seo-tag;2.8.0;MIT;LICENSE.txt
+jekyll-toc;0.17.1;MIT;LICENSE.md
+jekyll-watch;2.2.1;MIT;
+jmespath;1.6.1;Apache-2.0;LICENSE.txt
+jquery-rails;4.4.0;MIT;MIT-LICENSE
+json;2.6.2;Ruby;LICENSE
+json_spec;1.1.5;MIT;LICENSE.txt
+kramdown;2.4.0;MIT;COPYING
+kramdown-parser-gfm;1.1.0;MIT;COPYING
+kramdown-syntax-coderay;1.0.1;MIT;COPYING
+launchy;2.4.3;ISC;LICENSE
+levenshtein;0.2.2;;LICENSE
+linked-list;0.0.16;MIT;LICENSE.txt
+liquid;4.0.3;MIT;LICENSE
+listen;3.7.1;MIT;LICENSE.txt
+little-plugger;1.1.4;;
+locale;2.1.3;Ruby and LGPLv3+;COPYING
+lockfile;1.4.3;;
+log4r;1.1.10;;
+logstash-event;1.2.02;Apache License (2.0);LICENSE
+loofah;2.18.0;MIT;MIT-LICENSE.txt
+lumberjack;1.0.13;MIT;MIT_LICENSE
+macaddr;1.7.2;Ruby;LICENSE
+mail;2.7.1;MIT;MIT-LICENSE
+marc;1.2.0;MIT;LICENSE
+marcel;1.0.2;MIT and Apache-2.0;APACHE-LICENSE MIT-LICENSE
+mechanize;2.8.5;MIT;LICENSE.txt
+memcache-client;1.8.5;;LICENSE.txt
+memfs;1.0.0;MIT;LICENSE.txt
+mercenary;0.4.0;MIT;LICENSE.txt
+metaclass;0.0.4;MIT;COPYING.txt
+method_source;1.0.0;MIT;LICENSE
+middleware;0.1.0;;LICENSE
+mime-types;3.4.1;MIT;Licence.md
+mime-types-data;3.2020.1104;MIT;Licence.md
+mimemagic;0.3.2;MIT;LICENSE
+mini_magick;4.11.0;MIT;MIT-LICENSE
+mini_mime;1.1.0;MIT;LICENSE.txt
+mini_portile;0.6.2;MIT;LICENSE.txt
+mini_portile2;2.8.0;MIT;LICENSE.txt
+minima;2.5.1;MIT;LICENSE.txt
+minitest;5.16.3;MIT;
+minitest-around;0.4.1;MIT;LICENSE
+minitest-profile;0.0.2;MIT;LICENSE.txt
+minitest-stub-const;0.6;MIT;LICENSE
+mixlib-cli;1.7.0;Apache-2.0;LICENSE
+mixlib-config;2.2.4;Apache-2.0;LICENSE
+mixlib-log;3.0.9;Apache-2.0;LICENSE
+mixlib-shellout;2.3.2;;LICENSE
+mizuho;0.9.20;MIT;LICENSE.txt
+mkrf;0.2.3;;MIT-LICENSE
+mocha;1.15.0;MIT and BSD-2-Clause;COPYING.md MIT-LICENSE.md
+mongo;2.14.0;Apache-2.0;LICENSE
+mongoid;7.3.3;MIT;LICENSE
+moped;1.5.3;;LICENSE
+more_core_extensions;1.2.0;MIT;LICENSE.txt
+msgpack;1.4.4;Apache 2.0;LICENSE
+multi_json;1.15.0;MIT;LICENSE.md
+multi_test;0.1.2;MIT;LICENSE
+multi_xml;0.6.0;MIT;LICENSE.md
+multipart-post;2.2.3;MIT;
+mustache;1.1.1;MIT;LICENSE
+mustermann;1.1.1;MIT;LICENSE
+mysql2;0.5.4;MIT;LICENSE
+narray;0.6.1.1;Ruby;
+native-package-installer;1.1.5;LGPL-3+;
+ncursesw;1.4.10;LGPL-2.1;COPYING
+nenv;0.3.0;MIT;LICENSE.txt
+nesty;1.0.2;MIT;LICENSE.txt
+net-http-digest_auth;1.4.1;MIT;
+net-http-persistent;4.0.1;MIT;
+net-ldap;0.17.1;MIT;License.rdoc
+net-scp;3.0.0;MIT;LICENSE.txt
+net-sftp;3.0.0;MIT;LICENSE.txt
+net-ssh;6.1.0;MIT;LICENSE.txt
+netrc;0.11.0;MIT;LICENSE.md
+nifti;0.0.2;LGPLv3;LICENSE
+nio4r;2.5.8;MIT;
+nokogiri;1.13.9;MIT;LICENSE-DEPENDENCIES.md LICENSE.md
+notiffany;0.1.3;MIT;LICENSE.txt
+open4;1.3.4;Ruby;LICENSE
+opengl;0.10.0;MIT;MIT-LICENSE
+opennebula;5.12.8;Apache-2.0;LICENSE
+openscap;0.4.9;GPL-2.0;COPYING
+optimist;3.0.1;MIT;LICENSE.txt
+ox;2.14.11;MIT;LICENSE
+pango;4.0.3;LGPL-2.1+;COPYING.LIB
+parallel;1.12.1;MIT;MIT-LICENSE.txt
+parse-cron;0.1.4;;License
+parseconfig;1.1.2;MIT;LICENSE
+pastel;0.8.0;MIT;LICENSE.txt
+pathspec;0.2.1;Apache-2.0;LICENSE
+pathutil;0.14.0;MIT;LICENSE
+pdf-core;0.9.0;PRAWN and GPL-2.0 and GPL-3.0;COPYING GPLv2 GPLv3 LICENSE
+pdf-inspector;1.3.0;PRAWN and GPL-2.0 and GPL-3.0;COPYING GPLv2 GPLv3 LICENSE
+pdf-reader;2.4.2;MIT;MIT-LICENSE
+pdfkit;0.8.7.2;MIT;LICENSE
+pg;1.3.5;BSD-2-Clause;LICENSE
+pkg-config;1.4.9;LGPLv2+;
+plist;3.4.0;MIT;LICENSE.txt
+polyglot;0.3.5;MIT;License.txt
+poppler;4.0.3;LGPL-2.1+;COPYING.LIB
+posix-spawn;0.3.15;MIT;COPYING
+power_assert;2.0.2;BSD-2-Clause and Ruby;COPYING
+powerpack;0.1.1;MIT;LICENSE.txt
+pr_geohash;1.0.0;;
+prawn;2.4.0;PRAWN and GPL-2.0 and GPL-3.0;COPYING GPLv2 GPLv3 LICENSE
+prawn-icon;3.1.0;RUBY and GPL-2 and GPL-3;COPYING GPLv2 GPLv3 LICENSE
+prawn-svg;0.32.0;MIT;LICENSE
+prawn-table;0.2.2;RUBY and GPL-2 and GPL-3;COPYING GPLv2 GPLv3 LICENSE
+prawn-templates;0.1.2;Nonstandard and GPL-2.0 and GPL-3.0;COPYING GPLv2 GPLv3 LICENSE
+progressbar;1.11.0;MIT;LICENSE.txt
+protobuf;3.10.3;MIT;LICENSE.txt
+proxifier;1.0.3;;LICENSE
+pry;0.14.1;MIT;LICENSE
+pry-byebug;3.6.0;MIT;LICENSE
+public_suffix;4.0.6;MIT;LICENSE.txt
+puma;5.6.5;BSD-3-Clause;LICENSE
+pundit;2.1.0;MIT;LICENSE.txt
+puppet-lint;2.4.2;;LICENSE
+puppet-resource_api;1.8.14;Apache-2.0;LICENSE
+rabbit;3.0.1;GPLv2+;COPYING
+racc;1.6.0;Ruby and BSD-2-Clause;COPYING
+rack;2.2.4;MIT;MIT-LICENSE
+rack-accept;0.4.5;;
+rack-cache;1.13.0;MIT;MIT-LICENSE
+rack-cors;1.1.1;MIT;LICENSE.txt
+rack-protection;2.2.0;MIT;License
+rack-restful_submit;1.2.2;;LICENSE
+rack-test;1.1.0;MIT;MIT-LICENSE.txt
+rails;7.0.4;MIT;
+rails-controller-testing;1.0.5;MIT;LICENSE
+rails-deprecated_sanitizer;1.0.4;MIT;LICENSE
+rails-dom-testing;2.0.3;MIT;MIT-LICENSE
+rails-html-sanitizer;1.4.3;MIT;MIT-LICENSE
+railties;7.0.4;MIT;MIT-LICENSE
+rainbow;3.0.0;MIT;LICENSE
+rake;13.0.6;MIT;MIT-LICENSE
+rake-compiler;1.2.0;MIT;LICENSE.txt
+rake-contrib;1.0.0;MIT;LICENSE.txt
+rb-inotify;0.10.1;MIT;LICENSE.md
+rb-readline;0.5.5;BSD;LICENSE
+rbvmomi;3.0.0;MIT;LICENSE
+rchardet;1.8.0;LGPL;
+rdiscount;2.2.0.2;BSD-3-Clause;COPYING
+rdoc;6.4.0;Ruby;LICENSE.rdoc
+rdtool;0.6.38;GPL-2+ and Ruby;COPYING.txt LICENSE.txt
+red-colors;0.3.0;MIT;LICENSE.txt
+redcarpet;3.3.2;MIT;COPYING
+redis;4.7.1;MIT;LICENSE
+ref;2.0.0;MIT;MIT_LICENSE
+regexp_parser;2.5.0;MIT;LICENSE
+regexp_property_values;1.0.0;MIT;LICENSE.txt
+require_all;3.0.0;MIT;LICENSE
+resolve-hostname;0.1.0;MIT;LICENSE.txt
+rest-client;2.1.0;MIT;LICENSE
+rmagick;5.0.0;MIT;LICENSE
+rmail;1.1.4;;
+ronn-ng;0.9.1;MIT;LICENSE.txt
+rouge;4.0.0;MIT and BSD-2-Clause;LICENSE
+rr;1.2.1;MIT;LICENSE
+rspec;3.12.0;MIT;LICENSE.md
+rspec-collection_matchers;1.2.0;MIT;LICENSE.txt
+rspec-core;3.12.0;MIT;LICENSE.md
+rspec-expectations;3.12.0;MIT;LICENSE.md
+rspec-its;1.3.0;MIT;LICENSE.txt
+rspec-mocks;3.12.0;MIT;LICENSE.md
+rspec-pending_for;0.1.16;MIT;LICENSE
+rspec-rails;5.1.1;MIT;LICENSE.md
+rspec-support;3.12.0;MIT;LICENSE.md
+rsvg2;4.0.3;LGPL-2.1+;COPYING.LIB
+rttool;1.0.3.0;;
+rubeyond;0.1;;LICENSE
+ruby-dbus;0.16.0;LGPL-2.1;COPYING
+ruby-libvirt;0.7.1;LGPLv2;COPYING
+ruby-opengl;0.61.0;;
+ruby-progressbar;1.11.0;MIT;LICENSE.txt
+ruby-rc4;0.1.5;;LICENSE
+ruby-shadow;2.5.0;Public Domain License;LICENSE
+ruby-vips;2.0.17;MIT;LICENSE.txt
+ruby_dep;1.5.0;MIT;LICENSE.txt
+ruby_engine;2.0.0;MIT;MIT-LICENSE.txt
+ruby_version;1.0.2;MIT;LICENSE.txt
+rubygems-mirror;1.3.0;MIT;
+rubyzip;2.3.2;BSD 2-Clause;
+rugged;1.2.0;MIT;LICENSE
+safe_yaml;1.0.4;MIT;LICENSE.txt
+sass;3.7.4;MIT;MIT-LICENSE
+sass-rails;6.0.0;MIT;MIT-LICENSE
+sass-twitter-bootstrap;2.3.0;;
+sassc;2.4.0;MIT;LICENSE.txt
+sassc-rails;2.1.2;MIT;LICENSE.txt
+scanf;1.0.0;BSD-2-Clause;
+scrub_rb;1.0.1;MIT;LICENSE.txt
+scruffy;0.3.0.beta1;;
+sd_notify;0.1.1;MIT;LICENSE
+selenium-webdriver;4.1.0;Apache-2.0;LICENSE
+semantic;1.6.1;MIT;LICENSE
+semantic_puppet;1.0.4;Apache-2.0;LICENSE
+sequel;5.58.0;MIT;MIT-LICENSE
+serialport;1.3.2;GPL-2;LICENSE
+session;3.1.0;;LICENSE
+settingslogic;2.0.9;;LICENSE
+sexp_processor;4.14.1;MIT;
+shellany;0.0.1;MIT;LICENSE.txt
+shindo;0.3.10;;LICENSE.md
+shoulda;3.6.0;MIT;MIT-LICENSE
+shoulda-context;1.2.2;MIT;MIT-LICENSE
+shoulda-matchers;5.1.0;MIT;LICENSE
+simplecov;0.13.0;MIT;MIT-LICENSE
+simplecov-html;0.10.0;MIT;LICENSE
+simpleidn;0.2.1;MIT;LICENCE
+sinatra;2.2.0;MIT;LICENSE
+sinatra-cross_origin;0.4.0;;LICENSE
+sinatra-rabbit;1.1.6;;LICENSE
+slim;4.1.0;MIT;LICENSE
+snmp;1.3.2;MIT;
+spring;2.1.1;MIT;LICENSE.txt
+spring-watcher-listen;2.0.1;MIT;LICENSE.txt
+sprockets;4.0.2;MIT;
+sprockets-rails;3.2.2;MIT;MIT-LICENSE
+sqlite3;1.4.2;BSD-3-Clause;LICENSE
+sshkey;2.0.0;MIT;LICENSE
+state_machine;1.2.0;;LICENSE
+stomp;1.4.10;Apache-2.0;LICENSE
+stringex;2.8.5;MIT;MIT-LICENSE
+sugarjar;0.0.11;Apache-2.0;LICENSE
+syck;1.4.1;MIT;
+sync;0.5.0;BSD-2-Clause;LICENSE.txt
+syntax;1.2.0;BSD;LICENSE
+sys-uname;1.2.2;Apache-2.0;LICENSE
+systemu;2.6.5;Ruby;LICENSE
+temple;0.8.2;MIT;LICENSE
+term-ansicolor;1.7.1;Apache-2.0;COPYING
+terminal-table;3.0.2;MIT;LICENSE.txt
+test-unit;3.5.5;Ruby and BSDL and PSFL;COPYING
+test-unit-notify;1.0.4;LGPLv2.1 or later;
+test-unit-rr;1.0.5;LGPLv2 or later;
+test_construct;2.0.2;MIT;LICENSE.txt
+test_declarative;0.0.6;MIT;MIT-LICENSE
+text;1.3.1;MIT;COPYING.txt
+thor;1.2.1;MIT;LICENSE.md
+thread_order;1.1.1;MIT;License.txt
+thread_safe;0.3.6;Apache-2.0;LICENSE
+tilt;2.0.10;MIT;COPYING
+timecop;0.9.4;MIT;LICENSE
+timers;4.0.1;MIT;LICENSE
+tins;1.31.1;MIT;COPYING
+tk;0.4.0;BSD-2-Clause;LICENSE.txt
+tomlrb;2.0.1;MIT;LICENSE.txt
+transaction-simple;1.4.0.2;;Licence.rdoc
+treetop;1.6.10;MIT;LICENSE
+ttfunk;1.7.0;Nonstandard and GPL-2.0 and GPL-3.0;COPYING GPLv2 GPLv3 LICENSE
+tty-color;0.6.0;MIT;LICENSE.txt
+turbolinks;5.1.1;MIT;LICENSE
+turbolinks-source;5.2.0;MIT;LICENSE
+typhoeus;1.4.0;MIT;LICENSE
+tzinfo;2.0.5;MIT;LICENSE
+uglifier;3.2.0;MIT;LICENSE.txt
+unf;0.1.4;2-clause BSDL;LICENSE
+unf_ext;0.0.8.2;MIT;LICENSE.txt
+unicode;0.4.4.4;Ruby;
+unicode-display_width;2.2.0;MIT;MIT-LICENSE.txt
+uuid;2.3.7;;MIT-LICENSE
+uuidtools;2.2.0;Apache-2.0;LICENSE.txt
+vault;0.15.0;MPL-2.0;LICENSE
+vcr;2.3.0;;LICENSE
+vte;3.4.3;LGPL-2.1+;COPYING.LIB
+vte3;4.0.3;LGPL-2.1+;COPYING.LIB
+web-console;4.2.0;MIT;MIT-LICENSE
+webkit2-gtk;4.0.3;LGPL-2.1+;COPYING.LIB
+webmock;3.14.0;MIT;LICENSE
+webrick;1.7.0;Ruby and BSD-2-Clause;LICENSE.txt
+webrobots;0.1.2;2-clause BSDL;LICENSE.txt
+websocket;1.2.9;MIT;
+websocket-driver;0.7.5;Apache-2.0;LICENSE.md
+websocket-extensions;0.1.5;Apache-2.0;LICENSE.md
+whiskey_disk;0.6.24;;MIT-LICENSE
+xml-simple;1.1.9;MIT;
+xmlparser;0.7.2.1;;
+xmlrpc;0.3.2;Ruby and BSD-2-Clause;LICENSE.txt
+xpath;3.2.0;MIT;
+yaml-lint;0.0.10;MIT;
+yard;0.9.28;MIT;LICENSE
+zeitwerk;2.5.4;MIT;MIT-LICENSE
+zoom;0.5.0;;
diff --git a/licences.csv b/licences.csv
new file mode 100644
index 0000000..0d8446b
--- /dev/null
+++ b/licences.csv
@@ -0,0 +1,496 @@
+gem_name;gem_version;fedora_license;gem_license
+Ascii85;1.1.0;MIT;MIT
+POpen4;0.1.4;GPLv2 or Ruby;
+Platform;0.4.2;MIT;MIT
+RedCloth;4.3.2;MIT;MIT
+ZenTest;4.12.1;MIT;MIT
+abrt;0.4.0;MIT;MIT
+abstract;1.0.0;GPLv2 or Ruby;
+actioncable;7.0.4;MIT;MIT
+actionmailbox;7.0.4;MIT;MIT
+actionmailer;7.0.4;MIT;MIT
+actionpack;7.0.4;MIT;MIT
+actiontext;7.0.4;MIT;MIT
+actionview;7.0.4;MIT;MIT
+activejob;7.0.4;MIT;MIT
+activemodel-serializers-xml;1.0.2;MIT;MIT
+activemodel;7.0.4;MIT;MIT
+activerecord;7.0.4;MIT;MIT
+activeresource;6.0.0;MIT;MIT
+activestorage;7.0.4;MIT;MIT
+activesupport;7.0.4;MIT;MIT
+acts_as_list;1.0.4;MIT;MIT
+addressable;2.8.0;ASL 2.0;Apache-2.0
+afm;0.2.2;MIT;MIT
+algorithms;0.6.1;MIT;MIT
+allison;2.0.3;AFL;
+ammeter;1.1.5;MIT;
+ansi;1.5.0;BSD;BSD-2-Clause
+apipie-rails;0.8.1;MIT AND Apache-2.0;
+appraisal;0.5.2;MIT;
+archive-tar-minitar;0.5.2;GPLv2+ or Ruby;
+arel;9.0.0;MIT;MIT
+aruba;2.1.0;MIT and CC-BY and (MIT or GPLv2) and (MIT or BSD or GPLv2);MIT
+asciidoctor-pdf;2.3.4;MIT;MIT
+asciidoctor;2.0.18;MIT;MIT
+async_sinatra;1.3.0;MIT;MIT
+atk;4.0.3;LGPLv2;LGPL-2.1+
+atomic;1.1.101;ASL 2.0;Apache-2.0
+awesome_print;1.0.2;MIT;
+aws-sigv4;1.0.2;ASL 2.0;Apache-2.0
+backports;3.23.0;MIT;MIT
+bacon-colored_output;1.1.1;MIT;
+bacon;1.2.0;MIT;
+base32;0.3.4;MIT;MIT
+bcrypt;3.1.17;MIT and Public Domain and ISC;MIT
+bcrypt_pbkdf;1.1.0;MIT and BSD and ISC;MIT
+benchmark-ips;2.10.0;MIT;MIT
+between_meals;0.0.12;ASL 2.0;Apache-2.0
+bindex;0.8.1;MIT;MIT
+bootsnap;1.4.7;MIT;MIT
+boxgrinder-build;0.10.4;LGPLv3+;
+boxgrinder-core;0.3.14;LGPLv3+;
+bson;4.15.0;Apache-2.0;Apache-2.0
+builder;3.2.4;MIT;MIT
+bundler;2.3.25;MIT;MIT
+bundler_ext;0.4.2;MIT;MIT
+byebug;11.1.3;BSD;BSD-2-Clause
+cairo-gobject;4.0.3;LGPLv2+;LGPL-2.1+
+cairo;1.17.8;GPLv2 or Ruby;Ruby
+capybara;3.37.1;MIT;MIT
+chake;0.21.2;MIT;MIT
+childprocess;4.1.0;MIT;MIT
+chronic;0.10.2;MIT;MIT
+chunky_png;1.4.0;MIT;MIT
+cinch;2.2.4;MIT;MIT
+clockwork;2.0.4;MIT;MIT
+clutter-gdk;4.0.3;LGPLv2+;LGPL-2.1+
+clutter-gstreamer;4.0.3;LGPLv2+;LGPL-2.1+
+clutter-gtk;4.0.3;LGPLv2+;LGPL-2.1+
+clutter;4.0.3;LGPLv2+;LGPL-2.1+
+codeclimate-test-reporter;1.0.8;MIT;MIT
+coderay;1.1.3;MIT;MIT
+coffee-script-source;1.10.0;MIT;MIT
+coffee-script;2.4.1;MIT;MIT
+color;1.8;MIT;MIT
+colorator;1.1.0;MIT;MIT
+colorize;0.8.1;GPLv2;GPL-2.0
+comp_tree;1.1.3;MIT;
+concurrent-ruby;1.1.9;MIT;MIT
+connection_pool;2.2.5;MIT;MIT
+contracts;0.17;BSD;BSD-2-Clause
+cookiejar;0.3.3;BSD ;
+coveralls;0.8.13;MIT;MIT
+crack;0.4.5;MIT;MIT
+crass;1.0.4;MIT;MIT
+creole;0.5.0;GPLv2 or Ruby;
+css_parser;1.12.0;MIT;MIT
+cucumber-core;10.1.0;MIT;MIT
+cucumber-create-meta;6.0.1;MIT;MIT
+cucumber-cucumber-expressions;14.0.0;MIT;MIT
+cucumber-gherkin;22.0.0;MIT;MIT
+cucumber-messages;17.1.0;MIT;MIT
+cucumber-tag-expressions;4.0.2;MIT;MIT
+cucumber-wire;6.2.0;MIT;MIT
+cucumber;7.1.0;MIT;MIT
+curb;1.0.1;Ruby;MIT
+daemon_controller;1.2.0;MIT;MIT
+daemons;1.1.9;MIT and (GPLv2+ or Ruby);
+dalli;3.2.0;MIT;MIT
+declarative_authorization;0.5.7;MIT;
+deep_merge;1.2.2;MIT;MIT
+delorean;2.1.0;MIT;
+diff-lcs;1.5.0;MIT OR Artistic-2.0 OR GPL-2.0-or-later;MIT
+diffy;3.2.1;MIT;MIT
+dnsruby;1.61.7;ASL 2.0;Apache License, Version 2.0
+docile;1.1.5;MIT;MIT
+domain_name;0.5.20190701;BSD and (MPLv1.1 or GPLv2+ or LGPLv2+);BSD-2-Clause
+drake;0.9.2.0.3.1;MIT;
+ed25519;1.3.0;MIT;MIT
+ejs;1.1.1;MIT;
+elasticsearch-transport;5.0.4;ASL 2.0;Apache 2
+em-http-request;1.1.7;MIT;MIT
+em-socksify;0.3.0;MIT;
+em-spec;0.2.7;MIT;
+em-websocket-client;0.1.2;MIT;MIT
+em-websocket;0.5.2;MIT;MIT
+ensure_valid_encoding;0.5.3;MIT;
+erubi;1.10.0;MIT;MIT
+escape;0.0.4;BSD;
+ethon;0.15.0;MIT;MIT
+eventmachine;1.2.7;GPLv2 or Ruby;Ruby
+excon;0.91.0;MIT;MIT
+execjs;2.8.1;MIT;MIT
+facon;0.5.0;MIT;
+factory_bot;6.2.1;MIT;MIT
+fake_ftp;0.3.0;MIT;MIT
+fakefs;1.2.2;MIT;MIT
+faraday;1.0.1;MIT;MIT
+fattr;2.2.2;BSD or Ruby;same as ruby's
+ffi;1.15.5;BSD;BSD-3-Clause
+file-tail;1.2.0;ASL 2.0;Apache-2.0
+flexmock;2.3.6;MIT;MIT
+fog-core;2.2.4;MIT;MIT
+fog-json;1.2.0;MIT;MIT
+fog-libvirt;0.9.0;MIT;MIT
+fog-xml;0.1.4;MIT;MIT
+foreigner;1.7.4;MIT;MIT
+formatador;0.2.5;MIT;
+forwardable-extended;2.6.0;MIT;MIT
+gdk3;4.0.3;LGPLv2+;LGPL-2.1+
+gdk_pixbuf2;4.0.3;LGPLv2;LGPL-2.1+
+gem-nice-install;0.3.0;MIT;MIT
+gem2rpm;1.0.2;GPLv2+;GPL-2.0+
+generator_spec;0.9.4;MIT;MIT
+gettext;3.4.3;Ruby;Ruby
+gio2;4.0.3;LGPLv2;LGPL-2.1+
+gist;6.0.0;MIT;MIT
+git;1.12.0;MIT;MIT
+glib2;4.0.3;LGPLv2;LGPL-2.1+
+globalid;1.0.0;MIT;MIT
+glu;8.3.0;MIT;MIT
+glut;8.3.0;MIT;MIT
+gobject-introspection;4.0.3;LGPLv2+;LGPL-2.1+
+goocanvas;2.2.0;LGPLv2;LGPLv2.1 or later
+goocanvas;1.2.6;LGPLv2;
+gssapi;1.3.1;MIT;MIT
+gstreamer;4.0.3;LGPLv2;LGPL-2.1+
+gtk2;3.4.3;LGPLv2;LGPL-2.1+
+gtk3;4.0.3;LGPLv2+;LGPL-2.1+
+gtksourceview2;3.4.3;LGPLv2;LGPL-2.1+
+gtksourceview3;4.0.3;LGPLv2+;LGPL-2.1+
+guard-compat;1.2.1;MIT;MIT
+guard-livereload;2.5.2;MIT;MIT
+guard-shell;0.7.1;MIT;MIT
+guard;2.18.0;MIT;MIT
+haml;5.2.2;MIT and WTFPL;MIT
+hashdiff;1.0.1;MIT;MIT
+hashery;2.1.2;BSD;BSD-2-Clause
+hashicorp-checkpoint;0.1.5;MPLv2.0;MPL2
+hashie;4.1.0;MIT;MIT
+hashr;2.0.1;MIT;
+hiera-vault;0.2.2;ASL 2.0;Apache-2.0
+highline;2.0.3;GPLv2 or Ruby or BSD;Ruby
+hikidoc;0.1.0;MIT;MIT
+hiredis;0.6.3;BSD;BSD-3-Clause
+hitimes;2.0.0;ISC;ISC
+hocon;1.3.1;ASL 2.0;Apache License, v2
+hoe;3.26.0;MIT;MIT
+hpricot;0.8.6;MIT and ASL 2.0;
+hrx;1.0.0;ASL 2.0;Apache-2.0
+htmlentities;4.3.4;MIT;MIT
+http-accept;2.1.1;MIT;MIT
+http-cookie;1.0.5;MIT;MIT
+http_connection;1.4.4;MIT;
+http_parser.rb;0.6.0;MIT;MIT
+httparty;0.18.1;MIT;MIT
+httpclient;2.8.3;(Ruby or BSD) and Public Domain;ruby
+i18n;1.8.11;MIT and (BSD or Ruby);MIT
+i18n_data;0.10.0;MIT;MIT
+icaro;1.0.6;GPLv3;
+idn;0.0.2;ASL 2.0 and LGPLv2+;
+image_processing;1.12.2;MIT;MIT
+image_size;3.2.0;Ruby or GPLv2;Ruby
+imagesize;0.1.1;GPLv2 or Ruby;
+importmap-rails;1.0.3;MIT;MIT
+introspection;0.0.4;MIT;MIT
+ipaddress;0.8.3;MIT;MIT
+isolate;3.5.1;MIT;MIT
+jbuilder;2.11.5;MIT;MIT
+jekyll-asciidoc;3.0.0;MIT;MIT
+jekyll-email-protect;1.1.0;MIT;MIT
+jekyll-feed;0.17.0;MIT;MIT
+jekyll-git-authors;1.0.0;MIT;MIT
+jekyll-sass-converter;2.2.0;MIT;MIT
+jekyll-seo-tag;2.8.0;MIT;MIT
+jekyll-toc;0.17.1;MIT;MIT
+jekyll-watch;2.2.1;MIT;MIT
+jekyll;4.3.1;MIT;MIT
+jmespath;1.6.1;ASL 2.0;Apache-2.0
+jquery-rails;4.4.0;MIT;MIT
+json;2.6.2;Ruby or BSD;Ruby
+json_spec;1.1.5;MIT;MIT
+kramdown-parser-gfm;1.1.0;MIT;MIT
+kramdown-syntax-coderay;1.0.1;MIT;MIT
+kramdown;2.4.0;MIT;MIT
+krb5-auth;0.8.3;LGPLv2+;
+launchy;2.4.3;ISC;ISC
+levenshtein;0.2.2;GPLv2;
+linked-list;0.0.16;MIT;MIT
+liquid;4.0.3;MIT;MIT
+listen;3.7.1;MIT;MIT
+little-plugger;1.1.4;MIT;
+locale;2.1.3;GPLv2 or Ruby;Ruby
+lockfile;1.4.3;GPLv2 or Ruby;
+log4r;1.1.10;LGPLv3;
+logstash-event;1.2.02;ASL 2.0;Apache License (2.0)
+loofah;2.18.0;MIT;MIT
+lumberjack;1.0.13;MIT;MIT
+macaddr;1.7.2;Ruby or BSD;Ruby
+mail;2.7.1;MIT;MIT
+marc;1.2.0;MIT;MIT
+marcel;1.0.2;MIT and ASL 2.0;MIT
+mechanize;2.8.5;MIT;MIT
+memcache-client;1.8.5;BSD;
+memfs;1.0.0;MIT;MIT
+mercenary;0.4.0;MIT;MIT
+metaclass;0.0.4;MIT;MIT
+method_source;1.0.0;MIT;MIT
+middleware;0.1.0;MIT;
+mime-types-data;3.2020.1104;MIT;MIT
+mime-types;3.4.1;MIT;MIT
+mimemagic;0.3.2;MIT;MIT
+mini_magick;4.11.0;MIT;MIT
+mini_mime;1.1.0;MIT;MIT
+mini_portile;0.6.2;MIT;MIT
+mini_portile2;2.8.0;MIT;MIT
+minima;2.5.1;MIT;MIT
+minitest-around;0.4.1;MIT;MIT
+minitest-profile;0.0.2;MIT;MIT
+minitest-stub-const;0.6;MIT;MIT
+minitest;5.16.3;MIT;MIT
+minitest;4.7.0;MIT;
+mixlib-cli;1.7.0;ASL 2.0;Apache-2.0
+mixlib-config;2.2.4;ASL 2.0;Apache-2.0
+mixlib-log;3.0.9;ASL 2.0;Apache-2.0
+mixlib-shellout;2.3.2;ASL 2.0;
+mizuho;0.9.20;MIT;MIT
+mkrf;0.2.3;MIT;
+mocha;1.15.0;MIT or Ruby or BSD;MIT
+mongo;2.14.0;ASL 2.0;Apache-2.0
+mongoid;7.3.3;MIT;MIT
+moped;1.5.3;MIT;
+more_core_extensions;1.2.0;MIT;MIT
+morph-cli;0.2.3;MIT;MIT
+msgpack;1.4.4;ASL 2.0;Apache 2.0
+multi_json;1.15.0;MIT;MIT
+multi_test;0.1.2;MIT;MIT
+multi_xml;0.6.0;MIT;MIT
+multipart-post;2.2.3;MIT;MIT
+mustache;1.1.1;MIT;MIT
+mustermann;1.1.1;MIT;MIT
+mysql2;0.5.4;MIT;MIT
+narray;0.6.1.1;BSD and Ruby;Ruby
+native-package-installer;1.1.5;LGPLv3+;LGPL-3+
+ncursesw;1.4.10;LGPLv2+;LGPL-2.1
+nenv;0.3.0;MIT;MIT
+nesty;1.0.2;MIT;MIT
+net-http-digest_auth;1.4.1;MIT;MIT
+net-http-persistent;4.0.1;MIT;MIT
+net-irc;0.0.9;GPLv2 or Ruby ;
+net-ldap;0.17.1;MIT;MIT
+net-scp;3.0.0;MIT;MIT
+net-sftp;3.0.0;MIT or LGPLv2;MIT
+net-ssh;6.1.0;MIT;MIT
+netrc;0.11.0;MIT;MIT
+nifti;0.0.2;LGPLv3+;LGPLv3
+nio4r;2.5.8;MIT and (BSD or GPLv2+);MIT
+nokogiri;1.13.9;MIT and ASL 2.0;MIT
+notiffany;0.1.3;MIT;MIT
+open4;1.3.4;BSD or Ruby;Ruby
+opengl;0.10.0;MIT;MIT
+opennebula;5.12.8;ASL 2.0;Apache-2.0
+openscap;0.4.9;GPLv2+;GPL-2.0
+optimist;3.0.1;MIT;MIT
+ox;2.14.11;MIT;MIT
+pango;4.0.3;LGPLv2;LGPL-2.1+
+parallel;1.12.1;MIT;MIT
+parse-cron;0.1.4;MIT;
+parseconfig;1.1.2;MIT;MIT
+pastel;0.8.0;MIT;MIT
+pathspec;0.2.1;ASL 2.0;Apache-2.0
+pathutil;0.14.0;MIT;MIT
+pdf-core;0.9.0;GPLv2 or GPLv3 or Ruby ;PRAWN
+pdf-inspector;1.3.0;GPLv2 or GPLv3 or Ruby;PRAWN
+pdf-reader;2.4.2;MIT;MIT
+pdfkit;0.8.7.2;MIT;MIT
+pg;1.3.5;(BSD or Ruby) and PostgreSQL;BSD-2-Clause
+pkg-config;1.4.9;LGPLv2+;LGPLv2+
+plist;3.4.0;MIT;MIT
+polyglot;0.3.5;MIT;MIT
+poppler;4.0.3;LGPLv2;LGPL-2.1+
+posix-spawn;0.3.15;MIT;MIT
+power_assert;2.0.2;Ruby or BSD;BSD-2-Clause
+powerpack;0.1.1;MIT;MIT
+pr_geohash;1.0.0;MIT;
+prawn-icon;3.1.0;Ruby or GPLv2 or GPLv3;RUBY
+prawn-svg;0.32.0;MIT;MIT
+prawn-table;0.2.2;Ruby or GPLv2 or GPLv3;RUBY
+prawn-templates;0.1.2;Ruby or GPLv2 or GPLv3;Nonstandard
+prawn;2.4.0;(GPLv2 or GPLv3 or Ruby) and APAFML;PRAWN
+progressbar;1.11.0;MIT;MIT
+protobuf;3.10.3;MIT and BSD;MIT
+proxifier;1.0.3;MIT;
+pry-byebug;3.6.0;MIT;MIT
+pry;0.14.1;MIT;MIT
+public_suffix;4.0.6;MIT and MPLv2.0;MIT
+puma;5.6.5;BSD-3-Clause;BSD-3-Clause
+pundit;2.1.0;MIT;MIT
+puppet-lint;2.4.2;MIT;
+puppet-resource_api;1.8.14;ASL 2.0;Apache-2.0
+rabbit;3.0.1;GPLv2+ and CC-BY;GPLv2+
+racc;1.6.0;BSD;Ruby
+rack-accept;0.4.5;MIT;
+rack-cache;1.13.0;MIT;MIT
+rack-cors;1.1.1;MIT;MIT
+rack-protection;2.2.0;MIT;MIT
+rack-restful_submit;1.2.2;MIT;
+rack-test;1.1.0;MIT;MIT
+rack;2.2.4;MIT and BSD;MIT
+rails-controller-testing;1.0.5;MIT;MIT
+rails-deprecated_sanitizer;1.0.4;MIT;MIT
+rails-dom-testing;2.0.3;MIT;MIT
+rails-html-sanitizer;1.4.3;MIT;MIT
+rails;7.0.4;MIT;MIT
+railties;7.0.4;MIT;MIT
+rainbow;3.0.0;MIT;MIT
+rake-compiler;1.2.0;MIT;MIT
+rake-contrib;1.0.0;MIT;MIT
+rake;13.0.6;MIT;MIT
+rb-inotify;0.10.1;MIT;MIT
+rb-readline;0.5.5;BSD;BSD
+rbvmomi;3.0.0;MIT;MIT
+rchardet;1.8.0;LGPLv2;LGPL
+rdiscount;2.2.0.2;ASL 1.1;BSD-3-Clause
+rdoc;6.4.0;GPL-2.0 AND Ruby AND BSD-3-Clause AND CC-BY-2.5 AND OFL-1.1-RFN;Ruby
+rdtool;0.6.38;GPLv2+ or Ruby;GPL-2+
+red-colors;0.3.0;MIT;MIT
+redcarpet;3.3.2;MIT and ISC;MIT
+redis;4.7.1;MIT;MIT
+ref;2.0.0;MIT;MIT
+regexp_parser;2.5.0;MIT;MIT
+regexp_property_values;1.0.0;MIT;MIT
+require_all;3.0.0;MIT;MIT
+resolve-hostname;0.1.0;MIT;MIT
+rest-client;2.1.0;MIT;MIT
+rgen;0.8.4;MIT;
+rmagick;5.0.0;MIT;MIT
+rmail;1.1.4;BSD;
+ronn-ng;0.9.1;MIT;MIT
+rouge;4.0.0;MIT and BSD;MIT
+rr;1.2.1;MIT;MIT
+rspec-collection_matchers;1.2.0;MIT;MIT
+rspec-core;3.12.0;MIT;MIT
+rspec-expectations;3.12.0;MIT;MIT
+rspec-its;1.3.0;MIT;MIT
+rspec-mocks;3.12.0;MIT;MIT
+rspec-pending_for;0.1.16;MIT;MIT
+rspec-rails;5.1.1;MIT;MIT
+rspec-support;3.12.0;MIT;MIT
+rspec;3.12.0;MIT;MIT
+rsvg2;4.0.3;LGPLv2;LGPL-2.1+
+rttool;1.0.3.0;Ruby;
+rubeyond;0.1;GPLv3+;
+ruby-dbus;0.16.0;LGPLv2+ and MIT;LGPL-2.1
+ruby-libvirt;0.7.1;LGPLv2+;LGPLv2
+ruby-opengl;0.61.0;MIT;
+ruby-progressbar;1.11.0;MIT;MIT
+ruby-rc4;0.1.5;MIT;
+ruby-shadow;2.5.0;Public Domain;Public Domain License
+ruby-vips;2.0.17;MIT;MIT
+ruby_dep;1.5.0;MIT;MIT
+ruby_engine;2.0.0;MIT;MIT
+ruby_version;1.0.2;MIT;MIT
+rubygems-mirror;1.3.0;MIT;MIT
+rubyzip;2.3.2;Ruby or BSD;BSD 2-Clause
+rugged;1.2.0;MIT;MIT
+safe_yaml;1.0.4;MIT;MIT
+sass-rails;6.0.0;MIT;MIT
+sass-twitter-bootstrap;2.3.0;ASL 2.0;
+sass;3.7.4;MIT;MIT
+sassc-rails;2.1.2;MIT and OFL;MIT
+sassc;2.4.0;MIT;MIT
+scanf;1.0.0;BSD;BSD-2-Clause
+scrub_rb;1.0.1;MIT;MIT
+scruffy;0.3.0;MIT;
+sd_notify;0.1.1;MIT;MIT
+selenium-webdriver;4.1.0;ASL 2.0;Apache-2.0
+semantic;1.6.1;MIT;MIT
+semantic_puppet;1.0.4;ASL 2.0;Apache-2.0
+sequel;5.58.0;MIT;MIT
+serialport;1.3.2;GPLv2;GPL-2
+session;3.1.0;Ruby;
+settingslogic;2.0.9;MIT;
+sexp_processor;4.14.1;MIT;MIT
+shellany;0.0.1;MIT;MIT
+shindo;0.3.10;MIT;
+shoulda-context;1.2.2;MIT;MIT
+shoulda-matchers;5.1.0;MIT;MIT
+shoulda;3.6.0;MIT;MIT
+simplecov-html;0.10.0;MIT;MIT
+simplecov;0.13.0;MIT;MIT
+simpleidn;0.2.1;MIT;MIT
+sinatra-cross_origin;0.4.0;MIT;
+sinatra-rabbit;1.1.6;ASL 2.0;
+sinatra;2.2.0;MIT;MIT
+slim;4.1.0;MIT;MIT
+snmp;1.3.2;MIT;MIT
+spring-watcher-listen;2.0.1;MIT;MIT
+spring;2.1.1;MIT;MIT
+sprockets-rails;3.2.2;MIT;MIT
+sprockets;4.0.2;MIT;MIT
+sqlite3;1.4.2;BSD;BSD-3-Clause
+sshkey;2.0.0;MIT;MIT
+state_machine;1.2.0;MIT;
+stomp;1.4.10;ASL 2.0;Apache-2.0
+stringex;2.8.5;MIT;MIT
+sugarjar;0.0.11;ASL 2.0;Apache-2.0
+syck;1.4.1;MIT;MIT
+sync;0.5.0;BSD-2-Clause;BSD-2-Clause
+syntax;1.2.0;BSD;BSD
+sys-uname;1.2.2;ASL 2.0;Apache-2.0
+systemu;2.6.5;Ruby;Ruby
+temple;0.8.2;MIT;MIT
+term-ansicolor;1.7.1;Apache-2.0;Apache-2.0
+terminal-table;3.0.2;MIT;MIT
+test-unit-notify;1.0.4;LGPLv2+ and (LGPLv2+ or GFDL or CC-BY-SA);LGPLv2.1 or later
+test-unit-rr;1.0.5;LGPLv2+;LGPLv2 or later
+test-unit;3.5.5;(BSD or Ruby or Python) and (BSD or Ruby);Ruby
+test_construct;2.0.2;MIT;MIT
+test_declarative;0.0.6;MIT;MIT
+text;1.3.1;MIT;MIT
+thor;1.2.1;MIT;MIT
+thread_order;1.1.1;MIT;MIT
+thread_safe;0.3.6;ASL 2.0 and Public Domain;Apache-2.0
+tilt;2.0.10;MIT;MIT
+timecop;0.9.4;MIT;MIT
+timers;4.0.1;MIT;MIT
+tins;1.31.1;MIT;MIT
+tk;0.4.0;BSD or Ruby;BSD-2-Clause
+tomlrb;2.0.1;MIT;MIT
+transaction-simple;1.4.0.2;MIT;
+treetop;1.6.10;MIT;MIT
+ttfunk;1.7.0;GPLv2 or GPLv3 or Ruby;Nonstandard
+tty-color;0.6.0;MIT;MIT
+turbolinks-source;5.2.0;MIT;MIT
+turbolinks;5.1.1;MIT;MIT
+typhoeus;1.4.0;MIT;MIT
+tzinfo;2.0.5;MIT;MIT
+uglifier;3.2.0;MIT and BSD;MIT
+unf;0.1.4;BSD;2-clause BSDL
+unf_ext;0.0.8.2;MIT;MIT
+unicode-display_width;2.2.0;MIT;MIT
+unicode;0.4.4.4;Ruby;Ruby
+uuid;2.3.7;MIT or CC-BY-SA;
+uuidtools;2.2.0;ASL 2.0;Apache-2.0
+vault;0.15.0;MPLv2.0;MPL-2.0
+vcr;2.3.0;MIT;
+vte;3.4.3;LGPLv2;LGPL-2.1+
+vte3;4.0.3;LGPLv2+;LGPL-2.1+
+web-console;4.2.0;MIT;MIT
+webkit2-gtk;4.0.3;LGPLv2+;LGPL-2.1+
+webmock;3.14.0;MIT;MIT
+webrick;1.7.0;Ruby and BSD-2-Clause;Ruby
+webrobots;0.1.2;BSD;2-clause BSDL
+websocket-driver;0.7.5;ASL 2.0;Apache-2.0
+websocket-extensions;0.1.5;Apache-2.0;Apache-2.0
+websocket;1.2.9;MIT;MIT
+whiskey_disk;0.6.24;MIT;
+xml-simple;1.1.9;MIT;MIT
+xmlparser;0.7.2.1;GPLv2+ and ( Ruby or GPLv2+ or MIT ) and ( GPLv2+ or Artistic ) ;
+xmlrpc;0.3.2;Ruby or BSD;Ruby
+xpath;3.2.0;MIT;MIT
+yaml-lint;0.0.10;MIT;MIT
+yard;0.9.28;MIT and (BSD or Ruby);MIT
+zeitwerk;2.5.4;MIT;MIT
+zoom;0.5.0;LGPLv2+;
diff --git a/rbgem_license_check_out.csv b/rbgem_license_check_out.csv
new file mode 100644
index 0000000..d18b865
--- /dev/null
+++ b/rbgem_license_check_out.csv
@@ -0,0 +1,488 @@
+Fedora does not match gem2rpm;Inspection needed;POpen4;GPLv2 or Ruby;
+Fedora does not match gem2rpm;Inspection needed;abstract;GPLv2 or Ruby;
+Fedora does not match gem2rpm;Inspection needed;addressable;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;allison;AFL;
+Fedora does not match gem2rpm;Inspection needed;ammeter;MIT;
+Fedora does not match gem2rpm;Inspection needed;ansi;BSD;BSD-2-Clause
+Fedora does not match gem2rpm;Inspection needed;apipie-rails;MIT AND Apache-2.0;
+Fedora does not match gem2rpm;Inspection needed;appraisal;MIT;
+Fedora does not match gem2rpm;Inspection needed;archive-tar-minitar;GPLv2+ or Ruby;
+Fedora does not match gem2rpm;Inspection needed;aruba;MIT and CC-BY and (MIT or GPLv2) and (MIT or BSD or GPLv2);MIT
+Fedora does not match gem2rpm;Inspection needed;atk;LGPLv2;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;atomic;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;awesome_print;MIT;
+Fedora does not match gem2rpm;Inspection needed;aws-sigv4;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;bacon-colored_output;MIT;
+Fedora does not match gem2rpm;Inspection needed;bacon;MIT;
+Fedora does not match gem2rpm;Inspection needed;bcrypt;MIT and Public Domain and ISC;MIT
+Fedora does not match gem2rpm;Inspection needed;bcrypt_pbkdf;MIT and BSD and ISC;MIT
+Fedora does not match gem2rpm;Inspection needed;between_meals;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;boxgrinder-build;LGPLv3+;
+Fedora does not match gem2rpm;Inspection needed;boxgrinder-core;LGPLv3+;
+Fedora does not match gem2rpm;Inspection needed;byebug;BSD;BSD-2-Clause
+Fedora does not match gem2rpm;Inspection needed;cairo-gobject;LGPLv2+;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;cairo;GPLv2 or Ruby;Ruby and GPL-2.0-or-later
+Fedora does not match gem2rpm;Inspection needed;clutter-gdk;LGPLv2+;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;clutter-gstreamer;LGPLv2+;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;clutter-gtk;LGPLv2+;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;clutter;LGPLv2+;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;colorize;GPLv2;GPL-2.0
+Fedora does not match gem2rpm;Inspection needed;comp_tree;MIT;
+Fedora does not match gem2rpm;Inspection needed;contracts;BSD;BSD-2-Clause
+Fedora does not match gem2rpm;Inspection needed;cookiejar;BSD ;
+Fedora does not match gem2rpm;Inspection needed;creole;GPLv2 or Ruby;
+Fedora does not match gem2rpm;Inspection needed;curb;Ruby;MIT
+Fedora does not match gem2rpm;Inspection needed;daemons;MIT and (GPLv2+ or Ruby);
+Fedora does not match gem2rpm;Inspection needed;declarative_authorization;MIT;
+Fedora does not match gem2rpm;Inspection needed;delorean;MIT;
+Fedora does not match gem2rpm;Inspection needed;diff-lcs;MIT OR Artistic-2.0 OR GPL-2.0-or-later;MIT and Artistic-2.0 and GPL-2.0+
+Fedora does not match gem2rpm;Inspection needed;dnsruby;ASL 2.0;Apache License, Version 2.0
+Fedora does not match gem2rpm;Inspection needed;domain_name;BSD and (MPLv1.1 or GPLv2+ or LGPLv2+);BSD-2-Clause and BSD-3-Clause and MPL-2.0
+Fedora does not match gem2rpm;Inspection needed;drake;MIT;
+Fedora does not match gem2rpm;Inspection needed;ejs;MIT;
+Fedora does not match gem2rpm;Inspection needed;elasticsearch-transport;ASL 2.0;Apache 2
+Fedora does not match gem2rpm;Inspection needed;em-socksify;MIT;
+Fedora does not match gem2rpm;Inspection needed;em-spec;MIT;
+Fedora does not match gem2rpm;Inspection needed;ensure_valid_encoding;MIT;
+Fedora does not match gem2rpm;Inspection needed;escape;BSD;
+Fedora does not match gem2rpm;Inspection needed;eventmachine;GPLv2 or Ruby;Ruby and GPL-2.0
+Fedora does not match gem2rpm;Inspection needed;facon;MIT;
+Fedora does not match gem2rpm;Inspection needed;fattr;BSD or Ruby;same as ruby's
+Fedora does not match gem2rpm;Inspection needed;ffi;BSD;BSD-3-Clause
+Fedora does not match gem2rpm;Inspection needed;file-tail;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;formatador;MIT;
+Fedora does not match gem2rpm;Inspection needed;gdk3;LGPLv2+;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;gdk_pixbuf2;LGPLv2;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;gem2rpm;GPLv2+;GPL-2.0+
+Fedora does not match gem2rpm;Inspection needed;gettext;Ruby;Ruby and LGPL-3.0+
+Fedora does not match gem2rpm;Inspection needed;gio2;LGPLv2;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;glib2;LGPLv2;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;gobject-introspection;LGPLv2+;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;goocanvas;LGPLv2;LGPLv2.1 or later
+Fedora does not match gem2rpm;Inspection needed;gstreamer;LGPLv2;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;gtk2;LGPLv2;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;gtk3;LGPLv2+;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;gtksourceview2;LGPLv2;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;gtksourceview3;LGPLv2+;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;haml;MIT and WTFPL;MIT
+Fedora does not match gem2rpm;Inspection needed;hashery;BSD;BSD-2-Clause
+Fedora does not match gem2rpm;Inspection needed;hashicorp-checkpoint;MPLv2.0;MPL2
+Fedora does not match gem2rpm;Inspection needed;hashr;MIT;
+Fedora does not match gem2rpm;Inspection needed;hiera-vault;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;highline;GPLv2 or Ruby or BSD;Ruby
+Fedora does not match gem2rpm;Inspection needed;hiredis;BSD;BSD-3-Clause
+Fedora does not match gem2rpm;Inspection needed;hocon;ASL 2.0;Apache License, v2
+Fedora does not match gem2rpm;Inspection needed;hpricot;MIT and ASL 2.0;
+Fedora does not match gem2rpm;Inspection needed;hrx;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;http_connection;MIT;
+Fedora does not match gem2rpm;Inspection needed;httpclient;(Ruby or BSD) and Public Domain;ruby
+Fedora does not match gem2rpm;Inspection needed;i18n;MIT and (BSD or Ruby);MIT
+Fedora does not match gem2rpm;Inspection needed;icaro;GPLv3;
+Fedora does not match gem2rpm;Inspection needed;idn;ASL 2.0 and LGPLv2+;
+Fedora does not match gem2rpm;Inspection needed;image_size;Ruby or GPLv2;Ruby
+Fedora does not match gem2rpm;Inspection needed;imagesize;GPLv2 or Ruby;
+Fedora does not match gem2rpm;Inspection needed;jmespath;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;json;Ruby or BSD;Ruby
+Fedora does not match gem2rpm;Inspection needed;levenshtein;GPLv2;
+Fedora does not match gem2rpm;Inspection needed;little-plugger;MIT;
+Fedora does not match gem2rpm;Inspection needed;locale;GPLv2 or Ruby;Ruby and LGPLv3+
+Fedora does not match gem2rpm;Inspection needed;lockfile;GPLv2 or Ruby;
+Fedora does not match gem2rpm;Inspection needed;log4r;LGPLv3;
+Fedora does not match gem2rpm;Inspection needed;logstash-event;ASL 2.0;Apache License (2.0)
+Fedora does not match gem2rpm;Inspection needed;macaddr;Ruby or BSD;Ruby
+Fedora does not match gem2rpm;Inspection needed;marcel;MIT and ASL 2.0;MIT and Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;memcache-client;BSD;
+Fedora does not match gem2rpm;Inspection needed;middleware;MIT;
+Fedora does not match gem2rpm;Inspection needed;mixlib-cli;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;mixlib-config;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;mixlib-log;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;mixlib-shellout;ASL 2.0;
+Fedora does not match gem2rpm;Inspection needed;mkrf;MIT;
+Fedora does not match gem2rpm;Inspection needed;mocha;MIT or Ruby or BSD;MIT and BSD-2-Clause
+Fedora does not match gem2rpm;Inspection needed;mongo;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;moped;MIT;
+Fedora does not match gem2rpm;Inspection needed;msgpack;ASL 2.0;Apache 2.0
+Fedora does not match gem2rpm;Inspection needed;narray;BSD and Ruby;Ruby
+Fedora does not match gem2rpm;Inspection needed;native-package-installer;LGPLv3+;LGPL-3+
+Fedora does not match gem2rpm;Inspection needed;ncursesw;LGPLv2+;LGPL-2.1
+Fedora does not match gem2rpm;Inspection needed;net-sftp;MIT or LGPLv2;MIT
+Fedora does not match gem2rpm;Inspection needed;nifti;LGPLv3+;LGPLv3
+Fedora does not match gem2rpm;Inspection needed;nio4r;MIT and (BSD or GPLv2+);MIT
+Fedora does not match gem2rpm;Inspection needed;nokogiri;MIT and ASL 2.0;MIT
+Fedora does not match gem2rpm;Inspection needed;open4;BSD or Ruby;Ruby
+Fedora does not match gem2rpm;Inspection needed;opennebula;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;openscap;GPLv2+;GPL-2.0
+Fedora does not match gem2rpm;Inspection needed;pango;LGPLv2;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;parse-cron;MIT;
+Fedora does not match gem2rpm;Inspection needed;pathspec;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;pdf-core;GPLv2 or GPLv3 or Ruby ;PRAWN and GPL-2.0 and GPL-3.0
+Fedora does not match gem2rpm;Inspection needed;pdf-inspector;GPLv2 or GPLv3 or Ruby;PRAWN and GPL-2.0 and GPL-3.0
+Fedora does not match gem2rpm;Inspection needed;pg;(BSD or Ruby) and PostgreSQL;BSD-2-Clause
+Fedora does not match gem2rpm;Inspection needed;poppler;LGPLv2;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;power_assert;Ruby or BSD;BSD-2-Clause and Ruby
+Fedora does not match gem2rpm;Inspection needed;pr_geohash;MIT;
+Fedora does not match gem2rpm;Inspection needed;prawn-icon;Ruby or GPLv2 or GPLv3;RUBY and GPL-2 and GPL-3
+Fedora does not match gem2rpm;Inspection needed;prawn-table;Ruby or GPLv2 or GPLv3;RUBY and GPL-2 and GPL-3
+Fedora does not match gem2rpm;Inspection needed;prawn-templates;Ruby or GPLv2 or GPLv3;Nonstandard and GPL-2.0 and GPL-3.0
+Fedora does not match gem2rpm;Inspection needed;prawn;(GPLv2 or GPLv3 or Ruby) and APAFML;PRAWN and GPL-2.0 and GPL-3.0
+Fedora does not match gem2rpm;Inspection needed;protobuf;MIT and BSD;MIT
+Fedora does not match gem2rpm;Inspection needed;proxifier;MIT;
+Fedora does not match gem2rpm;Inspection needed;public_suffix;MIT and MPLv2.0;MIT
+Fedora does not match gem2rpm;Inspection needed;puppet-lint;MIT;
+Fedora does not match gem2rpm;Inspection needed;puppet-resource_api;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;rabbit;GPLv2+ and CC-BY;GPLv2+
+Fedora does not match gem2rpm;Inspection needed;racc;BSD;Ruby and BSD-2-Clause
+Fedora does not match gem2rpm;Inspection needed;rack-accept;MIT;
+Fedora does not match gem2rpm;Inspection needed;rack-restful_submit;MIT;
+Fedora does not match gem2rpm;Inspection needed;rack;MIT and BSD;MIT
+Fedora does not match gem2rpm;Inspection needed;rchardet;LGPLv2;LGPL
+Fedora does not match gem2rpm;Inspection needed;rdiscount;ASL 1.1;BSD-3-Clause
+Fedora does not match gem2rpm;Inspection needed;rdoc;GPL-2.0 AND Ruby AND BSD-3-Clause AND CC-BY-2.5 AND OFL-1.1-RFN;Ruby
+Fedora does not match gem2rpm;Inspection needed;rdtool;GPLv2+ or Ruby;GPL-2+ and Ruby
+Fedora does not match gem2rpm;Inspection needed;redcarpet;MIT and ISC;MIT
+Fedora does not match gem2rpm;Inspection needed;rmail;BSD;
+Fedora does not match gem2rpm;Inspection needed;rouge;MIT and BSD;MIT and BSD-2-Clause
+Fedora does not match gem2rpm;Inspection needed;rsvg2;LGPLv2;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;rttool;Ruby;
+Fedora does not match gem2rpm;Inspection needed;rubeyond;GPLv3+;
+Fedora does not match gem2rpm;Inspection needed;ruby-dbus;LGPLv2+ and MIT;LGPL-2.1
+Fedora does not match gem2rpm;Inspection needed;ruby-libvirt;LGPLv2+;LGPLv2
+Fedora does not match gem2rpm;Inspection needed;ruby-opengl;MIT;
+Fedora does not match gem2rpm;Inspection needed;ruby-rc4;MIT;
+Fedora does not match gem2rpm;Inspection needed;ruby-shadow;Public Domain;Public Domain License
+Fedora does not match gem2rpm;Inspection needed;rubyzip;Ruby or BSD;BSD 2-Clause
+Fedora does not match gem2rpm;Inspection needed;sass-twitter-bootstrap;ASL 2.0;
+Fedora does not match gem2rpm;Inspection needed;sassc-rails;MIT and OFL;MIT
+Fedora does not match gem2rpm;Inspection needed;scanf;BSD;BSD-2-Clause
+Fedora does not match gem2rpm;Inspection needed;scruffy;MIT;
+Fedora does not match gem2rpm;Inspection needed;selenium-webdriver;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;semantic_puppet;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;serialport;GPLv2;GPL-2
+Fedora does not match gem2rpm;Inspection needed;session;Ruby;
+Fedora does not match gem2rpm;Inspection needed;settingslogic;MIT;
+Fedora does not match gem2rpm;Inspection needed;shindo;MIT;
+Fedora does not match gem2rpm;Inspection needed;sinatra-cross_origin;MIT;
+Fedora does not match gem2rpm;Inspection needed;sinatra-rabbit;ASL 2.0;
+Fedora does not match gem2rpm;Inspection needed;sqlite3;BSD;BSD-3-Clause
+Fedora does not match gem2rpm;Inspection needed;state_machine;MIT;
+Fedora does not match gem2rpm;Inspection needed;stomp;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;sugarjar;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;sys-uname;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;test-unit-notify;LGPLv2+ and (LGPLv2+ or GFDL or CC-BY-SA);LGPLv2.1 or later
+Fedora does not match gem2rpm;Inspection needed;test-unit-rr;LGPLv2+;LGPLv2 or later
+Fedora does not match gem2rpm;Inspection needed;test-unit;(BSD or Ruby or Python) and (BSD or Ruby);Ruby and BSDL and PSFL
+Fedora does not match gem2rpm;Inspection needed;thread_safe;ASL 2.0 and Public Domain;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;tk;BSD or Ruby;BSD-2-Clause
+Fedora does not match gem2rpm;Inspection needed;transaction-simple;MIT;
+Fedora does not match gem2rpm;Inspection needed;ttfunk;GPLv2 or GPLv3 or Ruby;Nonstandard and GPL-2.0 and GPL-3.0
+Fedora does not match gem2rpm;Inspection needed;uglifier;MIT and BSD;MIT
+Fedora does not match gem2rpm;Inspection needed;unf;BSD;2-clause BSDL
+Fedora does not match gem2rpm;Inspection needed;uuid;MIT or CC-BY-SA;
+Fedora does not match gem2rpm;Inspection needed;uuidtools;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;vault;MPLv2.0;MPL-2.0
+Fedora does not match gem2rpm;Inspection needed;vcr;MIT;
+Fedora does not match gem2rpm;Inspection needed;vte3;LGPLv2+;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;vte;LGPLv2;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;webkit2-gtk;LGPLv2+;LGPL-2.1+
+Fedora does not match gem2rpm;Inspection needed;webrick;Ruby and BSD-2-Clause;Ruby and BSD-2-Clause
+Fedora does not match gem2rpm;Inspection needed;webrobots;BSD;2-clause BSDL
+Fedora does not match gem2rpm;Inspection needed;websocket-driver;ASL 2.0;Apache-2.0
+Fedora does not match gem2rpm;Inspection needed;whiskey_disk;MIT;
+Fedora does not match gem2rpm;Inspection needed;xmlparser;GPLv2+ and ( Ruby or GPLv2+ or MIT ) and ( GPLv2+ or Artistic ) ;
+Fedora does not match gem2rpm;Inspection needed;xmlrpc;Ruby or BSD;Ruby and BSD-2-Clause
+Fedora does not match gem2rpm;Inspection needed;yard;MIT and (BSD or Ruby);MIT
+Fedora does not match gem2rpm;Inspection needed;zoom;LGPLv2+;
+fedora matches gem2rpm;FALSE, inspection required;RedCloth;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;activerecord;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;bundler;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;chake;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;codeclimate-test-reporter;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;coderay;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;color;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;concurrent-ruby;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;css_parser;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;gem-nice-install;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;gssapi;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;hikidoc;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;htmlentities;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;introspection;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;jekyll-asciidoc;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;kramdown-parser-gfm;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;kramdown-syntax-coderay;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;kramdown;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;metaclass;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;mime-types-data;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;mime-types;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;net-ldap;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;posix-spawn;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;pry;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;rack-cache;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;sequel;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;text;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;tilt;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;timers;MIT;MIT
+fedora matches gem2rpm;FALSE, inspection required;tins;MIT;MIT
+fedora matches gem2rpm;Inspection required;pkg-config;LGPLv2+;LGPLv2+
+fedora matches gem2rpm;Inspection required;unicode;Ruby;Ruby
+fedora matches gem2rpm;TRUE valid MIT;Ascii85;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;abrt;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;actioncable;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;actionmailbox;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;actionmailer;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;actionpack;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;actiontext;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;actionview;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;activejob;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;activemodel-serializers-xml;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;activemodel;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;activeresource;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;activestorage;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;activesupport;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;acts_as_list;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;afm;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;arel;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;asciidoctor-pdf;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;backports;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;base32;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;benchmark-ips;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;bindex;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;bootsnap;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;builder;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;bundler_ext;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;capybara;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;childprocess;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;chronic;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;chunky_png;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cinch;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;clockwork;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;coffee-script;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;colorator;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;connection_pool;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;coveralls;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;crass;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-core;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-create-meta;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-cucumber-expressions;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-gherkin;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-messages;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-tag-expressions;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber-wire;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;cucumber;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;daemon_controller;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;dalli;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;deep_merge;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;diffy;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;docile;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ed25519;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;em-websocket-client;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;em-websocket;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;erubi;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ethon;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;excon;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;execjs;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;factory_bot;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;fake_ftp;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;fakefs;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;faraday;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;flexmock;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;fog-core;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;fog-json;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;fog-libvirt;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;fog-xml;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;foreigner;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;forwardable-extended;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;generator_spec;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;gist;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;git;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;globalid;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;glu;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;glut;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;guard-compat;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;guard-livereload;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;guard-shell;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;guard;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;hashdiff;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;hashie;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;http-cookie;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;http_parser.rb;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;httparty;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;image_processing;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;importmap-rails;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ipaddress;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jbuilder;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jekyll-email-protect;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jekyll-feed;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jekyll-git-authors;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jekyll-seo-tag;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jekyll-toc;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jekyll;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;jquery-rails;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;json_spec;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;linked-list;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;liquid;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;listen;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;loofah;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;lumberjack;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mail;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;marc;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mechanize;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;memfs;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mercenary;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;method_source;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mimemagic;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mini_magick;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mini_mime;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mini_portile2;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mini_portile;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;minima;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;minitest-around;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;minitest-profile;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;minitest-stub-const;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mizuho;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mongoid;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;more_core_extensions;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;multi_json;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;multi_test;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;multi_xml;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mustache;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mustermann;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;mysql2;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;nenv;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;nesty;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;net-scp;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;net-ssh;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;netrc;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;notiffany;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;opengl;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;optimist;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ox;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;parallel;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;parseconfig;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;pastel;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;pathutil;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;pdf-reader;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;pdfkit;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;plist;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;polyglot;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;powerpack;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;prawn-svg;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;progressbar;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;pry-byebug;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;pundit;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rack-cors;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rack-protection;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rack-test;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rails-controller-testing;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rails-deprecated_sanitizer;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rails-dom-testing;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rails-html-sanitizer;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;railties;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rainbow;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rake-compiler;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rake-contrib;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rake;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rb-inotify;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rbvmomi;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;red-colors;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;redis;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ref;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;regexp_parser;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;regexp_property_values;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;require_all;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;resolve-hostname;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rest-client;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rmagick;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ronn-ng;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rr;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-collection_matchers;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-core;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-expectations;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-its;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-mocks;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-pending_for;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-rails;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec-support;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rspec;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ruby-progressbar;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ruby-vips;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ruby_dep;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ruby_engine;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;ruby_version;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;rugged;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;safe_yaml;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sass-rails;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sass;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sassc;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;scrub_rb;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sd_notify;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;semantic;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;shellany;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;shoulda-context;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;shoulda-matchers;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;shoulda;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;simplecov-html;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;simplecov;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;simpleidn;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sinatra;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;slim;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;spring-watcher-listen;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;spring;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sprockets-rails;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;sshkey;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;stringex;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;temple;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;terminal-table;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;test_construct;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;test_declarative;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;thor;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;thread_order;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;timecop;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;tomlrb;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;treetop;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;tty-color;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;turbolinks-source;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;turbolinks;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;typhoeus;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;tzinfo;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;unf_ext;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;unicode-display_width;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;web-console;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;webmock;MIT;MIT
+fedora matches gem2rpm;TRUE valid MIT;zeitwerk;MIT;MIT
+fedora matches gem2rpm;The license might be BSD-3-Clause;rb-readline;BSD;BSD
+fedora matches gem2rpm;The license might be ISC;hitimes;ISC;ISC
+fedora matches gem2rpm;The license might be ISC;launchy;ISC;ISC
+fedora matches gem2rpm;The license might be NOASSERTION;syntax;BSD;BSD
+fedora matches gem2rpm;The license might be NOASSERTION;systemu;Ruby;Ruby
+fedora matches gem2rpm;Valid SPDX ID, no intervention required.;bson;Apache-2.0;Apache-2.0
+fedora matches gem2rpm;Valid SPDX ID, no intervention required.;puma;BSD-3-Clause;BSD-3-Clause
+fedora matches gem2rpm;Valid SPDX ID, no intervention required.;sync;BSD-2-Clause;BSD-2-Clause
+fedora matches gem2rpm;Valid SPDX ID, no intervention required.;term-ansicolor;Apache-2.0;Apache-2.0
+fedora matches gem2rpm;Valid SPDX ID, no intervention required.;websocket-extensions;Apache-2.0;Apache-2.0
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;Platform;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;ZenTest;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;algorithms;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;async_sinatra;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;coffee-script-source;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;crack;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;em-http-request;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;hoe;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;http-accept;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;i18n_data;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;isolate;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;jekyll-sass-converter;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;jekyll-watch;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;minitest;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;multipart-post;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;net-http-digest_auth;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;net-http-persistent;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;rails;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;rubygems-mirror;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;sexp_processor;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;snmp;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;sprockets;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;syck;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;websocket;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;xml-simple;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;xpath;MIT;MIT
+fedora matches gem2rpm;inspection required, MIT without licensefile detected;yaml-lint;MIT;MIT
diff --git a/template.erb b/template.erb
new file mode 100644
index 0000000..5c0d111
--- /dev/null
+++ b/template.erb
@@ -0,0 +1,2 @@
+<%# gem_name;gem_version;fedora_license;license_file %>
+<%= spec.name %>;<%= spec.version %>;<%= spec.licenses.join(" and ") %>;<%= main_files.filter do |item| item.license? end.join(" ")%>
diff --git a/validate_ruby_files.rb b/validate_ruby_files.rb
new file mode 100644
index 0000000..0ebfe93
--- /dev/null
+++ b/validate_ruby_files.rb
@@ -0,0 +1,73 @@
+# frozen_string_literal: true
+$LOAD_PATH.unshift('/home/jprokop/bin')
+require 'rb_parallel'
+require 'httparty'
+require 'json'
+
+class ValidateJob < RubyJobQueue
+ def initialize(jobs, verbosity, max_parallel = (Etc.nprocessors / 2))
+ super jobs, verbosity, max_parallel
+ end
+
+ def execute(slice)
+ work(slice[0], slice[1], slice[2])
+ end
+
+ private
+
+ def work(gem_name, gem_ver, fedspec_license)
+ license = gem_license(gem_name, gem_ver)
+ [gem_name, gem_ver, fedspec_license, license&.first]
+ end
+
+ def wait_finish
+ @threads.each(&:join)
+ end
+
+ def gem_info(gem_name)
+ JSON.load(HTTParty.get("https://rubygems.org/api/v1/versions/#{gem_name}.json").response.body.to_s)
+ end
+
+ def gem_for_ver(gem_name, gem_ver)
+ info = gem_info(gem_name)
+ info.find do |h|
+ h["number"] == gem_ver
+ end || info.sort() { |a, b| Gem::Version.new(a['number']) <=> Gem::Version.new(b['number']) }.first
+ # ^ Some gems haven't had a proper release in a long time so they are using "Version" with a githash, making it even more confusing.
+ end
+
+ def gem_license(gem_name, gem_ver)
+ remote_gem = gem_for_ver(gem_name, gem_ver)
+ require 'irb'; binding.irb unless remote_gem
+ remote_gem["licenses"]
+ end
+end
+
+jobs = []
+
+Dir['rubygem-*.spec'].each do |file|
+ name, spec_license = nil, nil
+ file = File.read(file)
+ # puts file.each_line.to_a[0]
+ # puts file.each_line.to_a[1]
+ name = file.scan(/%(?:global|define)[[:space:]]+gem_name[[:space:]]+([A-Za-z0-9\-_.]+)/).flatten.first
+ spec_license = file.scan(/License:[[:space:]]*(.*)/).flatten.first
+ version = nil
+ begin
+ version = Gem::Version.new(file.scan(/Version:[[:space:]]*(.*)/).flatten.first)
+ rescue ArgumentError
+ # Why do maintainers do this ?!
+ possible_variations = %w[majorver mainver version gemver coffee_script_version].join('|')
+ version = Gem::Version.new(file.scan(/%(?:global|define)[[:space:]]*(?:#{possible_variations})[[:space:]]*(.+)/).flatten.first) if version.nil? || version =~ /(#{possible_variations})/
+ end
+
+ raise "spec license empty" if spec_license.empty?
+ raise "name empty #{name} #{spec_license}" if name.empty?
+ raise "version empty for #{name}" if version.to_s.empty?
+
+ jobs << [name, version.to_s, spec_license].flatten
+end
+gem_info = ValidateJob.new(jobs, Logger::DEBUG).collect
+puts 'name;version;Fedora License;Gem License'
+gem_licenses = gem_info.map() { |arr| arr.join(";") }.join("\n")
+File.write("licences.csv", gem_licenses)