Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Haiku] IFF bugs in Haiku OS R1/beta4 #2277

Closed
amstelchen opened this issue Jul 15, 2023 · 9 comments
Closed

[Haiku] IFF bugs in Haiku OS R1/beta4 #2277

amstelchen opened this issue Jul 15, 2023 · 9 comments
Labels

Comments

@amstelchen
Copy link

amstelchen commented Jul 15, 2023

Summary

  • OS: Haiku 1 hrev56578+87 Jul 14 2023 06:23: x86_64 x86_64 Haiku
  • Architecture: 64bit
  • Psutil version: psutil-5.6.7-1
  • Python version: Python 3.9.17 (main, Jun 11 2023, 12:39:17)
    ** also tested with Python 3.10.12 (main, Jun 11 2023, 12:18:53) [GCC 11.2.0] on haiku
  • Type: { installation, build, haikuports }

Description

Tried on preinstalled Python 3.9.17, as well as Python 3.10.12.
With 3.9.17:
haikuporter/haikuporter -v --debug --no-repository-update psutil
output

This did of course not give any hints what was wrong, thus after applying the patch manually, using patch -p1 < psutil-5.6.7.patchset:

psutil/_psutil_posix.c: In function 'psutil_net_if_is_running':
psutil/_psutil_posix.c:665:26: error: 'IFF_RUNNING' undeclared (first use in this function)
  665 |     if ((ifr.ifr_flags & IFF_RUNNING) != 0)
      |                          ^~~~~~~~~~~
psutil/_psutil_posix.c:665:26: note: each undeclared identifier is reported only once for each function it appears in
error: command '/bin/gcc' failed with exit code 1

If I patch psutil/_psutil_posix.c:

    // if ((ifr.ifr_flags & IFF_RUNNING) != 0)
        return Py_BuildValue("O", Py_True);
    //else
    //    return Py_BuildValue("O", Py_False);

it apparently works, but throws some module error:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/packages/python3.9-3.9.17-1/.self/non-packaged/lib/python3.9/site-packages/psutil-5.6.7-py3.9-haiku-1-x86_64.egg/psutil/__init__.py", line 180, in <module>
    from . import _pshaiku as _psplatform
  File "/packages/python3.9-3.9.17-1/.self/non-packaged/lib/python3.9/site-packages/psutil-5.6.7-py3.9-haiku-1-x86_64.egg/psutil/_pshaiku.py", line 22, in <module>
    from ._common import AccessDenied
ImportError: cannot import name 'AccessDenied' from 'psutil._common' (/packages/python3.9-3.9.17-1/.self/non-packaged/lib/python3.9/site-packages/psutil-5.6.7-py3.9-haiku-1-x86_64.egg/psutil/_common.py)

Looking at psutil/_common-py, AccessDenied is there:

class AccessDenied(Error):
    """Exception raised when permission to perform an action is denied."""
    __module__ = 'psutil'

Is this due to some change in output of network interfaces in beta4?

Other failed tests:
Python 3.9.17 + psutil-5.9.5
Python 3.10.12 + psutil-5.6.7-1
Python 3.10.12 and latest psutil-5.9.5

@amstelchen amstelchen added the bug label Jul 15, 2023
@ben9923
Copy link
Contributor

ben9923 commented Aug 5, 2023

This port of psutil you're trying to use is based on a version released a year before Python 3.9. Wouldn't even try it...

When trying 5.9.5 did you apply proper patches for Haiku? Those 5.6.7 patches don't seem to cleanly apply for 5.9.5.

After applying those (with i.e. git apply -3 psutil-5.6.7.patchset and resolving conflicts) there are still changes to be made:

  • Changing set_testing to set_debug in _psutil_haiku.cpp
  • Adding check_pid_range to _psutil_haiku.cpp

And there are probably more... Adapt to the changes made to other _psutil_<platform>.c (and maybe _ps<platform>.py) files between 5.6.7-5.9.5.

Anyway, with those changes I could use psutil.pids(), psutil.Process(<pid>), psutil.virtual_memory() and psutil.boot_time() on Haiku, for example.

BTW, when testing psutil make sure your cwd is not the psutil source directory, or you'd get some weird import errors...

And... I'd suggest submitting required changes back to haikuports, because I doubt support for a niche OS such as this one would be upstreamed anytime soon.

@giampaolo
Copy link
Owner

Is IFF_RUNNING defined on Haiku? Can you paste the output of grep -r IFF_RUNNING /usr/include/?

@Begasus
Copy link

Begasus commented Feb 27, 2024

Have been able to build latest release with an updated patchset and a define for IFF_RUNNING, needed psutil to checkout vorta which seems to run fine (needed that to checkout borgbackup).

@giampaolo
Copy link
Owner

@Begasus can you provide a PR or a diff?

@Begasus
Copy link

Begasus commented Feb 27, 2024

Sure, let me try to fork and create a PR for master branch.

EDIT: this still applies cleanly on the latest commit:

https://raw.githubusercontent.com/haikuports/haikuports/0db48f44988880f47275d3c5dc90ebadcd247753/dev-python/psutil/patches/psutil-5.9.8.patchset

Credit due to @mmuman

@giampaolo
Copy link
Owner

giampaolo commented Feb 27, 2024

Sorry, I didn't realize Haiku would be a brand new platform implementation (I erroneously thought it was a Linux variant requiring just a couple of tweaks). Adding support for Haiku was something I rejected some years back, see the reasoning given in #1690 (comment).

@Begasus
Copy link

Begasus commented Feb 27, 2024

OK, no problem, so far Haiku has come a long way and is even noticed globaly (hence KDE mentions Haiku in their list of supported OS's), you are right that you probably won't see any figures popping up on how many downloads this will list up (as we use our own package managment). Thanks for checking.

@giampaolo
Copy link
Owner

Yeah. I think it makes more sense to make this work live, develop and mature in its own fork / repo.
It would receive more maintenance than in here (e.g. in here it wouldn't have CI testing).
If such a repo / fork exists we can link it in this ticket, so that users that look for it can find it.

@Begasus
Copy link

Begasus commented Feb 27, 2024

Thanks, for now this lives in: https://github.com/haikuports/haikuports/tree/master/dev-python/psutil
Where the patches are collected/kept, if need be users can help out there or file an issue at our issue tracker at: https://github.com/haikuports/haikuports/issues

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants