Bug 1770543
| Summary: | Cython update needed for update pyproj | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 8 | Reporter: | Jos de Kloe <josdekloe> |
| Component: | Cython | Assignee: | Python Maintainers <python-maint> |
| Status: | CLOSED NOTABUG | QA Contact: | RHEL CS Apps Subsystem QE <rhel-cs-apps-subsystem-qe> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 8.4 | CC: | mhroncok, pviktori |
| Target Milestone: | rc | Flags: | pm-rhel:
mirror+
|
| Target Release: | 8.0 | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2020-02-25 14:26:14 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 1762666 | ||
|
Description
Jos de Kloe
2019-11-10 11:28:47 UTC
Note that in RHEL, we usually backport things instead of rebasing to a new version. What particular feature/fix is needed here? I know what RHEL policy is, although I had hoped that for EPEL8, since it is so new, there would be some options to move forward. There is no specific feature that I need, but the pyproj upstream has been strongly developing the last few months (after proj moved to version 6.x). I packaged version 2.2.1 from June now, but had to exclude some of the unit testing because it contains failures, and that makes me feel very uneasy. I would much rather be able to have a version where all unit tests work as intended. To clarify. With RHEL 8 version of Cython (0.28), it compiles, but some unit tests of pyproj fail. With 0.29, it compiles and all unit tests of pyproj pass? Current situation is: pyproj v2.4.1 does not compile for RHEL8 due to too old cython version v0.28. It does compile on Fedora 30 and Fedora 31, since both have cython v0.29. On that platform all unit tests pass for all architectures except i686. pyproj v2.3.1 does compile on EPEL8, but the unit tests fail due to missing dependency python3-shapely. pyproj v2.2.1 does compile on EPEL8, and one single unit test case fails for all architectures. In the current spec file I excluded running the module that holds this one test case using the " --ignore test/test_transformer.py" option. This means that the other 42 test cases in this module are also skipped. A more fine grained exclude of only this one test case is not easily possible, since the pytest-3 for EPEL8 is too old and does not include the "--deselect" option. But of course if it turns out the only option is to use pyproj v2.2.1, then I will patch this test module to disable this one test if I must (or if possible back port a fixed version for this test from a higher version). > pyproj v2.4.1 does not compile for RHEL8 due to too old cython version v0.28. Could you please share the error you get? > A more fine grained exclude of only this one test case is not easily > possible, since the pytest-3 for EPEL8 is too old and does not include the > "--deselect" option. Would the -k option help? This is a typical error that cython 0.28 produces for pyproj 2.4.1:
------------------------------------------------------------
Error compiling Cython file:
------------------------------------------------------------
...
projlonlatin.uv.u = lonsdata[iii]
projlonlatin.uv.v = latsdata[iii]
projxyout = proj_trans(self.projobj, PJ_FWD, projlonlatin)
errno = proj_errno(self.projobj)
if errcheck and errno:
raise ProjError("proj error: {}".format(
^
------------------------------------------------------------
pyproj/_proj.pyx:98:20: Raising exception not allowed without gil
Error compiling Cython file:
------------------------------------------------------------
and this is exactly one of the items stated in the release notes for v0.29. In 0.28 raising an error is not allowed in "nogil" mode, while in 0.29 cython automatically steps back to "gil" mode and allows this.
For the full list of errors see the build log for this scatch build:
https://koji.fedoraproject.org/koji/taskinfo?taskID=38862916
As for the "-k" option for pytest, this is as I understand it an option to select or include testcases,
but since it accepts any "python evaluatable expression" I guess something could be done, yes. Have not tried that yet.
So if we end up backporting the feature, it would be https://github.com/cython/cython/commit/4f4841aa6e4e542f0bfc622cfa4d09dfc863a74d small correction:
> pyproj v2.4.1 does not compile for RHEL8 due to too old cython version v0.28.
> It does compile on Fedora 30 and Fedora 31, since both have cython v0.29. On that platform all unit tests pass for all architectures except i686.
this should be: It does compile on Fedora 32(rawhide).
On fedora 30 and 31 the proj version is v5.2.0 which is too old, pyproj 2.4.1 requires proj v6.2.0.
< So if we end up backporting the feature, it would be https://github.com/cython/cython/commit/4f4841aa6e4e542f0bfc622cfa4d09dfc863a74d correct. Although for myself I am not convinced yet that this backporting is a good idea. It will create a cython version that differs from the 0.28 release, so it may no longer match the online documentation users may find for that cython version. That could be very confusing. python38-cython in RHEL 8.2 (now in Beta) is at version 0.29.14. You can install it using `sudo yum install python38-cython` and run using `python3.8 -m cython`. It will bring in the Python 3.8 stack, but I hope the extra size is OK for building. The new Cython's output should be usable even for Python 3.6. Closing as "not a bug", as we don't generally update RHEL software to newer versions. The way to get fresher content is through the new module. Please re-open if this is a problem or you want to discuss further. |