Re: Rubygem package smoke testing [was: Re: F35 Change: Python Packaging Guidelines overhaul (System-Wide Change proposal)]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Dne 16. 06. 21 v 13:36 Ewoud Kohl van Wijngaarden napsal(a):
On Wed, Jun 16, 2021 at 01:17:31PM +0200, Vít Ondruch wrote:

Dne 15. 06. 21 v 19:34 Ewoud Kohl van Wijngaarden napsal(a):
On Tue, Jun 15, 2021 at 01:51:12PM +0200, Miro Hrončok wrote:
On 15. 06. 21 13:46, Vitaly Zaitsev via devel wrote:
If that is not possible with reasonable effort,
at least a basic smoke test (such as importing the packaged module)
*MUST* be run in `+%check+`.

A simple scriplet should be introduced I think:

%check
%do_import_test

Already on it:
https://src.fedoraproject.org/rpms/python-rpm-macros/pull-request/99

This may be not be the right place, but in Foreman's Ruby packaging we've also felt a similar pain. Mostly with C extensions that were built in the wrong directory. We also added a %check section to do a basic "import" (require) test.

Is there a similar macro for Ruby smoke testing?


No, there is no similar macro for Ruby. Historically, it was not clear what should be actually required. With Bundler putting into place more conventions, the situation is better.

Nevertheless, what is the specific issue you are referring to above? There are many examples of fixing such issue, e.g.

https://src.fedoraproject.org/rpms/rubygem-bcrypt/blob/rawhide/f/rubygem-bcrypt.spec#_52

And there are probably more complex cases.

Perhaps we should take this to a separate discussion, but we found that there are various bugs in SCL macros that s.o ended up in the wrong directories so it wouldn't load.


SCLs or not, this is what always happens for several reasons:

1) While upstream leaves the .so files along side other parts of the library, we place the platform independent code in /usr/share while placing the platform dependent code into /usr/lib. This is done via [1] and it was actually supposed to be default in RubyGems 3, but unfortunately with change of upstream maintainers, it got forgotten [2].

2) The paths used during rpmbuild are never on Ruby LOAD_PATH. Upstream might add the `lib` directory on the load path, which be defaults contains the .so file. But that is not case on Fedora as I explained in (1), therefore it is always necessary to add the directory with .so file on the LOAD_PATH explicitly.

In theory, we could somehow extend the GEM_PATH to include the RPM directories, but upstream test suites are not prepared for this scenario, so it would not help.


Really, majority of Ruby packages has fragments like `-Ilib` or `-Ilib:test` in the `%check` section. This is grep across the Fedora .spec files [3]:

~~~

$ find . -name rubygem\* -exec grep ' \-I' {} \; | wc -l
311

~~~

You just need to add the path to the .so file on the LOAD_PATH similarly.


Vít



[1] https://src.fedoraproject.org/rpms/ruby/blob/rawhide/f/operating_system.rb#_143

[2] https://src.fedoraproject.org/rpms/ruby/blob/rawhide/f/operating_system.rb#_138

[3] https://pkgs.fedoraproject.org/repo/rpm-specs-latest.tar.xz


_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux