----- Original Message ----- > From: "Vít Ondruch" <vondr...@redhat.com> > To: ruby-sig@lists.fedoraproject.org > Sent: Friday, September 16, 2016 9:52:10 AM > Subject: Re: Macros to modify gem dependencies > > > > Dne 15.9.2016 v 20:12 Pavel Valena napsal(a): > > ----- Original Message ----- > >> From: "Vít Ondruch" <vondr...@redhat.com> > >> To: ruby-sig@lists.fedoraproject.org > >> Sent: Thursday, September 15, 2016 2:00:59 PM > >> Subject: Re: Macros to modify gem dependencies > >> > >> > >> > >> Dne 15.9.2016 v 10:06 Vít Ondruch napsal(a): > >>> BTW this is first draft of the macros. I am going to try second > >>> implementation, which will probably need to use a bit different syntax > >>> for macro calls, but it might replace the 3 lines usage example above > >>> with 2 lines version: > >>> > >>> > >>> ``` > >>> > >>> %gemspec_remove_runtime_dependency -n fog-dynect > >>> %gemspec_add_runtime_dependency -n fog-dynect ['~> 10.0', '>= 10.1'] > >>> > >>> ``` > > The above gives me strange result in gemspec > > > > ``` > > s.add_runtime_dependency(%q<fog-dynect>, [">= 10.1", ">= 10.1", "~> 10.0"]) > > > > ``` > > Unless you fixed "gemspec_remove_runtime_dependency" by yourself, it > does not support the -n parameter yet, hence the dependency is not > cleaned up prior adding new dependencies.
I have used the version of remove without '-n'. This should be ok, AFAIK. > > > > > However, > > > > ``` > > %gemspec_add_dep -n fog-dynect '~> 10.0' > > > > ``` > > > > results in > > > > ``` > > s.add_dependency(%q<fog-dynect>, [">= 10.1", "~> 10.0"]) > > > > ``` > > > > Which I consider correct for the first example. > > > > > > Also, using the notation below does not produce expected result > > > > ``` > > %gemspec_remove_dep fog-dynect > > %gemspec_add_dep -n fog-dynect '~> 10.0' > > %gemspec_add_dep -n fog-dynect '>= 10.1' > > > > ``` > > > > => > > > > ``` > > s.add_dependency(%q<fog-dynect>, ["~> 10.0"]) > > > > ``` > > > > FTR, in case of the non-named-variable-macro version (without '-n') the > > result is correct. > > > > > >>> > >> As I promised, this is implementation with the '-n' parameter: > >> > >> ``` > >> %define gemspec_add_runtime_dependency(n:) \ > >> read -d '' add_runtime_dependency_script << 'EOR' || : \ > >> name = '%{-n*}' \ > >> version = %{*} \ > >> spec = Gem::Specification.load('.%{gem_spec}') \ > >> dep = spec.dependencies.detect { |d| d.type == :runtime && d.name == > >> name } \ > >> if dep \ > >> dep.requirement.concat version \ > >> else \ > >> spec.add_runtime_dependency name, version \ > >> end \ > >> File.write '.%{gem_spec}', spec.to_ruby \ > >> EOR\ > >> echo "$add_runtime_dependency_script" | ruby \ > >> %{nil} > >> > >> ``` > > The above can be also written as > > > > ``` > > %define gemspec_add_dep(n:) \ > > echo ' \ > > name = %q<%{-n*}> \ > > version = %{*} \ > > spec = Gem::Specification.load(%q<.%{gem_spec}>) \ > > dep = spec.dependencies.detect { |d| d.type == :runtime && d.name == name > > } \ > > if dep \ > > dep.requirement.concat version \ > > else \ > > spec.add_runtime_dependency name, version \ > > end \ > > File.write %q<.%{gem_spec}>, spec.to_ruby \ > > ' | ruby > > %{nil} > > > > ``` > > Yes, you can write it like this, but you have to be careful about the > usage later, e.g. the example you have used above: > > ``` > %gemspec_add_dep -n fog-dynect '~> 10.0' > ``` > > is probably reason for the issues you have described. If checked the log > output correctly, you would see following output: I have used your original code while getting that error. The results should be completely same- I have done some tests and I haven't found any results which differ. Especially the single quotes do not cause any problems AFAIK. > > ``` > + echo ' > name = %q<fog-dynect> > version = ~' > /var/tmp/rpm-tmp.4CWGoP: line 71: 10.0 > spec = > Gem::Specification.load(%q<./usr/share/gems/specifications/fog-1.38.0.gemspec>) > > dep = spec.dependencies.detect { |d| d.type == :runtime && d.name == > name } > if dep > dep.requirement.concat version > else > spec.add_runtime_dependency name, version > end > File.write %q<./usr/share/gems/specifications/fog-1.38.0.gemspec>, > spec.to_ruby > : No such file or directory > + ruby > > ``` > > > The correct usage for this would be: > > ``` > %gemspec_add_dep -n fog-dynect "~> 10.0" > ``` > > IOW please note the single vs double quotes ... > > > Vít > > _______________________________________________ > ruby-sig mailing list > ruby-sig@lists.fedoraproject.org > https://lists.fedoraproject.org/admin/lists/ruby-sig@lists.fedoraproject.org > _______________________________________________ ruby-sig mailing list -- ruby-sig@lists.fedoraproject.org To unsubscribe send an email to ruby-sig-le...@lists.fedoraproject.org