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 17. 06. 21 v 13:26 Ewoud Kohl van Wijngaarden napsal(a):
On Wed, Jun 16, 2021 at 02:21:18PM +0200, Vít Ondruch wrote:

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.

That does leave a feeling that we can't test the correct .so location at all in %check.


Right, you can't. You never work with correct locations during rpmbuild. The location can be just faked for better or worse. The correct .so location can be tested only via integration tests which are run outside of rpmbuild environment.

Please note that neither upstreams test the "correct" location, they are faking them just to the extend to have their test suite green. That does not mean the test suite necessarily follows all conventions.



It feels like we need a phase where the package was installed (respecting %files and all). If we can *then* import the library using Ruby, then we're content. While it may not be RPMs job, an easy verification point that's also usable outside of some fixed infrastructure (such as Fedora) would be great. Is there such a thing today?


Yes, you can use CI:

https://docs.fedoraproject.org/en-US/ci/

And Fedora actually runs some test by default:

https://bodhi.fedoraproject.org/updates/FEDORA-2021-be0f7a99dd

But there is unfortunately no generic smoke test, which would try to load the library from the right location.


Vít

_______________________________________________
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