Bug 2006452 - Various test failures on 32-bit architectures
Summary: Various test failures on 32-bit architectures
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: python-trimesh
Version: 36
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Ankur Sinha (FranciscoD)
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-09-21 18:11 UTC by Ben Beasley
Modified: 2022-05-02 11:22 UTC (History)
3 users (show)

Fixed In Version: python-trimesh-3.11.2-2.fc37
Clone Of:
Environment:
Last Closed: 2022-05-02 01:31:12 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
Excerpt from build.log with test failure details (122.59 KB, text/plain)
2021-09-21 18:15 UTC, Ben Beasley
no flags Details

Description Ben Beasley 2021-09-21 18:11:55 UTC
Description of problem:

I’m working on updating python-trimesh with the following improvements:

  - Use pyproject-rpm-macros (“new guidelines”) so the many BuildRequires are
    more manageable
  - Update -easy and -all subpackages to follow the pattern in the PythonExtras
    Change (https://fedoraproject.org/wiki/Changes/PythonExtras#Extras_metapackages)
  - Restore the python3dist(xxhash) to the [easy] and [all] extras, now that
    I have packaged it
  - Build HTML documentation and add a -doc subpackage

Additionally, I’m trying to work out the various architecture-dependent issues in the package in a methodical way.

The package is fundamentally noarch, as it is only pure-Python code. However,
it looks like it will nonetheless need to be be switched to an arched package:

  - Arch-dependent test failures (related to issues around endianness or
    native word length) are relatively common. An arched package means builds
    are done on all architectures every time, so these problems are
    discovered early. When there are failures that cannot be worked around
    immediately, it also allows the use of %%ifarch to skip tests
    conditionally.

    This *does not* preclude making all of the binary subpackages noarch,
    as long as the contents match on all architectures.

  - Some dependencies have ExcludeArch restrictions. Normally we would write
      ExclusiveArch:    <arch1> <arch2> … noarch
    per
      https://docs.fedoraproject.org/en-US/packaging-guidelines/
          #_arch_specific_runtime_and_build_time_dependencies
    but in this package nearly all dependencies are *soft*, so rather than
    disabling affected architectures, we instead need to patch out the
    offending dependencies and work around their absence. The result is
    different builds for different architectures, i.e., an arched package.
    This *does* preclude making all of the binary subpackages noarch, since
    building on different architectures produces a different result.

    (Even the upcoming -doc subpackage can be different on different
    architectures, since there are issues converting certain notebooks to HTML
    on certain architectures.)

The purpose of this bug is to precisely document test failures on 32-bit
architectures, and to discuss what to do about them.

Version-Release number of selected component (if applicable): 3.9.20 (release: work in progress in a fork)


How reproducible:

Edit the spec file to ensure all tests are executed and the package is built on all architectures. Skip CacheTest::test_hash, which is likely to fail on architectures other than x86_64 due only to unexpected performance characteristics. Do a scratch build.

Actual results:

=========================== short test summary info ============================
FAILED tests/test_binvox.py::BinvoxTest::test_load_save_invariance - TypeErro...
FAILED tests/test_bounds.py::BoundsTest::test_bounding_egg - TypeError: Canno...
FAILED tests/test_encoding.py::EncodingTest::test_composite - TypeError: Cann...
FAILED tests/test_encoding.py::EncodingTest::test_dense - TypeError: Cannot c...
FAILED tests/test_encoding.py::EncodingTest::test_flat - TypeError: Cannot ca...
FAILED tests/test_encoding.py::EncodingTest::test_flipped - TypeError: Cannot...
FAILED tests/test_encoding.py::EncodingTest::test_reshape - TypeError: Cannot...
FAILED tests/test_encoding.py::EncodingTest::test_transpose - TypeError: Cann...
FAILED tests/test_primitives.py::PrimitiveTest::test_cyl_buffer - TypeError: ...
FAILED tests/test_proximity.py::NearestTest::test_coplanar_signed_distance - ...
FAILED tests/test_ray.py::RayTests::test_contain_single - TypeError: Cannot c...
FAILED tests/test_ray.py::RayTests::test_contains - TypeError: Cannot cast ar...
FAILED tests/test_ray.py::RayTests::test_on_edge - TypeError: Cannot cast arr...
FAILED tests/test_ray.py::RayTests::test_on_vertex - TypeError: Cannot cast a...
FAILED tests/test_runlength.py::RleTest::test_brle_encode_decode - TypeError:...
FAILED tests/test_runlength.py::RleTest::test_brle_length - TypeError: Cannot...
FAILED tests/test_runlength.py::RleTest::test_brle_logical_not - TypeError: C...
FAILED tests/test_runlength.py::RleTest::test_brle_to_dense - TypeError: Cann...
FAILED tests/test_runlength.py::RleTest::test_brle_to_rle - TypeError: Cannot...
FAILED tests/test_runlength.py::RleTest::test_rle_encode_decode - TypeError: ...
FAILED tests/test_util.py::ContainsTest::test_inside - TypeError: Cannot cast...
FAILED tests/test_voxel.py::VoxelGridTest::test_local - TypeError: Cannot cas...
========== 22 failed, 422 passed, 7872 warnings in 292.79s (0:04:52) ===========

Detailed logs to be attached.

Expected results:

All tests pass.

Additional info:

I see two ways to proceed:

  1. Skip all of these tests on 32-bit platforms, understanding that some
     parts of the API really will be broken on these architectures despite
     the package not containing compiled extensions.

  2. Exclude 32-bit architectures. (Block
     https://bugzilla.redhat.com/show_bug.cgi?id=F-ExcludeArch-x86 and
     https://bugzilla.redhat.com/show_bug.cgi?id=F-ExcludeArch-ARM from this
     bug, and link this bug from the spec file.) This keeps users on those
     architectures from being surprised by brokenness, but also keeps them
     from successfully using the APIs that are not broken.

Fixing all the bugs would be great, but is probably not a realistic
short-term goal.

Most of these failures were already reported upstream in
https://github.com/mikedh/trimesh/issues/690.

Comment 1 Ben Beasley 2021-09-21 18:15:34 UTC
Created attachment 1825041 [details]
Excerpt from build.log with test failure details

Comment 2 Ben Beasley 2021-09-21 18:19:23 UTC
I have posted the updated logs upstream at https://github.com/mikedh/trimesh/issues/690#issuecomment-924241480.

Comment 3 Ben Beasley 2021-09-21 19:14:09 UTC
See also https://bugzilla.redhat.com/show_bug.cgi?id=2006515, the corresponding issue for big-endian issues.

Comment 4 Ben Cotton 2022-02-08 21:39:37 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 36 development cycle.
Changing version to 36.

Comment 5 Ben Beasley 2022-05-02 01:31:12 UTC
https://fedoraproject.org/wiki/Changes/RetireARMv7
https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval

I will add “ExcludeArch:    %{ix86}” on F37+.

Comment 6 Fedora Update System 2022-05-02 02:10:27 UTC
FEDORA-2022-735ccf1859 has been submitted as an update to Fedora 37. https://bodhi.fedoraproject.org/updates/FEDORA-2022-735ccf1859

Comment 7 Fedora Update System 2022-05-02 02:11:48 UTC
FEDORA-2022-735ccf1859 has been pushed to the Fedora 37 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 8 Ben Beasley 2022-05-02 11:22:40 UTC
(In reply to Ben Beasley from comment #5)
> https://fedoraproject.org/wiki/Changes/RetireARMv7
> https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
> 
> I will add “ExcludeArch:    %{ix86}” on F37+.

Actually, I guess that’s a bit premature, since this isn’t a leaf package. I’ll revert that change, but still leave this closed as WONTFIX.


Note You need to log in before you can comment on or make changes to this bug.