diff --git a/lib/gem2rpm/rpm_dependency.rb b/lib/gem2rpm/rpm_dependency.rb index 2ebd4e1..b446d8e 100644 --- a/lib/gem2rpm/rpm_dependency.rb +++ b/lib/gem2rpm/rpm_dependency.rb @@ -45,5 +45,23 @@ def to_rpm end rpm_dependencies.join("\n") end + + def with_range_of_dependencies + dep = __getobj__.dup + + rpm_dependencies = requirement.map do |version| + next if version && version.to_s.empty? + [dep.name, version].compact.join(' ') + end + dependencies_string = rpm_dependencies.compact.uniq.join(' with ') + dependencies_string = '(' << dependencies_string << ')' if requirement.size > 1 + + dep.name = dependencies_string + self.class.new dep + end + + def to_string + name.to_s + end end end diff --git a/lib/gem2rpm/rpm_dependency_list.rb b/lib/gem2rpm/rpm_dependency_list.rb index 0f42f5a..9ae2282 100644 --- a/lib/gem2rpm/rpm_dependency_list.rb +++ b/lib/gem2rpm/rpm_dependency_list.rb @@ -56,5 +56,16 @@ def to_rpm s = entries.map(&:to_rpm).join("\n") s += "\n" unless s.empty? end + + def with_range_of_dependencies + dep_list = self.map(&:with_range_of_dependencies) + + self.class.new dep_list + end + + def to_string + s = entries.map(&:to_string).join("\n") + s += "\n" unless s.empty? + end end end diff --git a/templates/fedora-27-rawhide.spec.erb b/templates/fedora-27-rawhide.spec.erb index 263321d..65a34f9 100644 --- a/templates/fedora-27-rawhide.spec.erb +++ b/templates/fedora-27-rawhide.spec.erb @@ -24,7 +24,7 @@ BuildRequires: gcc <% end -%> <%= development_dependencies.reject do |d| ["rdoc", "rake", "bundler"].include? d.name -end.virtualize.with_requires.comment_out.to_rpm -%> +end.virtualize.with_range_of_dependencies.with_requires.comment_out.to_string -%> <% if spec.extensions.empty? -%> BuildArch: noarch <% end -%> diff --git a/test/templates/test_fedora.rb b/test/templates/test_fedora.rb index fb71032..98f6d7f 100644 --- a/test/templates/test_fedora.rb +++ b/test/templates/test_fedora.rb @@ -36,7 +36,7 @@ def test_exclude_extension_directory end def test_build_requires - assert_match(/^# BuildRequires: rubygem\(test_development\) >= 1\.0\.0$/, @out_string) + assert_match(/^# BuildRequires: \(rubygem\(test_development\) >= 1.0 with rubygem\(test_development\) < 2 with rubygem\(test_development\) >= 1.0.0\)/, @out_string) end def test_rubygems_is_not_required