Hi everybody,
RPM 4.14 has enhanced dependency generators, which allows to use "with" operator [1]. This comes handy, if you want to restrict the dependency to range of versions. E.g. if the gem you package depends on "foo ~> 1.0", this expands to range "foo >= 1.0" and "foo < 2".
Previously, the generator would generate this dependencies:
~~~ Requires: foo >= 1.0 Requires: foo < 2 ~~~
Unfortunately, this does not really provide expected results. This in reality allows RPM to install any version of foo (and as far as I remember, we had this issue with rubygem-minitest in Ruby on Rails). But since RPM 4.14, this can be expressed as:
~~~ Requires: (foo >= 1.0 with foo < 2) ~~~
This require properly limits the versions.
To benefit from this, I prepared update of the dependency generator, which should use the "with" operator and represent the gem dependencies more precisely.
Another thing which was not handled really well were conflict dependencies. E.g. your gem might depend on "foo [~> 1.0, != 1.2.1]", where version 1.2.1 is problematic for some reasons.
Up to now, this was expanded into something like "foo < 1.2.1" and "foo
1.2.2", but again, this does not represent the conflict properly.
Therefore I'm going to introduce conflict generator, which will autogenerate "Conflicts: foo = 1.2.1".
You can check the changes here:
https://src.fedoraproject.org/fork/vondruch/rpms/ruby/commits/generators-upd...
I would also appreciate, if you can test the generators. The scratch build is available here:
https://koji.fedoraproject.org/koji/taskinfo?taskID=24643785
Thx for your testing and feedback.
Vít
PS: There are also some other chnages, as the GMP library enabled and dropped the ldconfig scriptlets (therefore the package is not compatible with F27).
This is now in F28+. Please let me know if you notice any issues.
V.
Dne 2.2.2018 v 11:02 Vít Ondruch napsal(a):
Hi everybody,
RPM 4.14 has enhanced dependency generators, which allows to use "with" operator [1]. This comes handy, if you want to restrict the dependency to range of versions. E.g. if the gem you package depends on "foo ~> 1.0", this expands to range "foo >= 1.0" and "foo < 2".
Previously, the generator would generate this dependencies:
Requires: foo >= 1.0 Requires: foo < 2
Unfortunately, this does not really provide expected results. This in reality allows RPM to install any version of foo (and as far as I remember, we had this issue with rubygem-minitest in Ruby on Rails). But since RPM 4.14, this can be expressed as:
Requires: (foo >= 1.0 with foo < 2)
This require properly limits the versions.
To benefit from this, I prepared update of the dependency generator, which should use the "with" operator and represent the gem dependencies more precisely.
Another thing which was not handled really well were conflict dependencies. E.g. your gem might depend on "foo [~> 1.0, != 1.2.1]", where version 1.2.1 is problematic for some reasons.
Up to now, this was expanded into something like "foo < 1.2.1" and "foo
1.2.2", but again, this does not represent the conflict properly.
Therefore I'm going to introduce conflict generator, which will autogenerate "Conflicts: foo = 1.2.1".
You can check the changes here:
https://src.fedoraproject.org/fork/vondruch/rpms/ruby/commits/generators-upd...
I would also appreciate, if you can test the generators. The scratch build is available here:
https://koji.fedoraproject.org/koji/taskinfo?taskID=24643785
Thx for your testing and feedback.
Vít
PS: There are also some other chnages, as the GMP library enabled and dropped the ldconfig scriptlets (therefore the package is not compatible with F27).
[1] http://rpm.org/user_doc/boolean_dependencies.html
ruby-sig mailing list -- ruby-sig@lists.fedoraproject.org To unsubscribe send an email to ruby-sig-leave@lists.fedoraproject.org
ruby-sig@lists.fedoraproject.org