Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

barracuda156

macrumors 68030
Original poster
Sep 3, 2021
2,768
1,767
I discovered `profanity` client for xmpp (jabber) and it is surprisingly convenient. This is ncurses-based app, so only TUI, no GUI. However, it is modern, stable, fast, easy to use and supports end-to-end encryption.

(There are a lot of GUI clients, but all have issues. Of those only pidgin works fine, but does not support encryption.)

This allows to share messages between a PowerMac and iPhone and message to variety of devices. Jabber supported on Linux, BSD, Android, you name it.

Perhaps the best real time communication solution working on ppc I have seen and not relying on something totally obscure.
 
@barracuda156
ncurses-based - it's not something I'd like to see in Mac OS :). Using qtox at home.

QTox is Qt5-only, supposedly. Though I haven’t really tried to build it with Qt4. I can, but honestly chances are slim, I think.

UPD. Ok, I bothered to look into commit history, and apparently some time around 2016 Qt4 was supported, judging from https://github.com/qTox/qTox/commit/cae5c1f2edc207378d5912f7ada9bfa43735c65b
So it may build. Lumme see if it won’t take many hrs LOL

The last version to have that configure check is 1.4.1.1: https://github.com/qTox/qTox/tree/06d78dcdee7bfe9a320fe91662f34227d74c3916
This does not mean it was even tested with Qt4 though, it just means that after that it was not tested for sure.
 
Last edited:
I'll try to see its dependencies for current Gentoo AMD64 ebuild when I return home.

Dependencies are trivial (only two extension libs which MacPorts did not have, I made ports for them in a few min), but qTox itself is a pain. Took a while to sort out their build system so that Qt headers are found :)

There are a lot of errors then with the build. Despite some relics mentioning Qt4 (that check for widgets from 2016), looks like actual usage of Qt4 was never considered: at least their README starts from Qt5 5.2 directly, in 2014 or so. So possibly there are no Qt4-compatible versions of this code at all, or if some existed, they are a decade old.

Upstream is dead, by the way: the repo is archived, so no hope for any assistance on this (and nowhere to merge fixes to either).

Hard to say if it will work at all or not, but an attempt is likely to take several hours more, at least. (From experience, usually these sort of apps are fixable, but it takes a lot of time and effort.)
 
Anything ToX based for PPC? :D

Will you be able to test the thing? )

The build works now, the app launches. Issues are likely to be there, so testing will be helpful. Also, I largely stubbed out video stuff, since Cocoa relies on a framework which exists in 10.7+ and X11 uses some Linux-specific library. The second might work, I just have no idea about what it is and it needs to build and be functional. If it is confirmed to be usable, then we can do something about video.
 
Here goes Gentoo AMD64 dependencies list for qtox.

dependency graph for net-im/qtox-1.17.6-r2
`-- net-im/qtox-1.17.6-r2 amd64
`-- dev-db/sqlcipher-4.6.1 (dev-db/sqlcipher) amd64
`-- dev-libs/libsodium-1.0.20 (dev-libs/libsodium) amd64
`-- dev-qt/qtconcurrent-5.15.14 (dev-qt/qtconcurrent) amd64
`-- dev-qt/qtcore-5.15.14 (dev-qt/qtcore) amd64
`-- dev-qt/qtgui-5.15.14 (dev-qt/qtgui) amd64 [gif(+) jpeg png X(-)]
`-- dev-qt/qtnetwork-5.15.14-r1 (dev-qt/qtnetwork) amd64
`-- dev-qt/qtopengl-5.15.14 (dev-qt/qtopengl) amd64
`-- dev-qt/qtsvg-5.15.14 (dev-qt/qtsvg) amd64
`-- dev-qt/qtwidgets-5.15.14 (dev-qt/qtwidgets) amd64
`-- dev-qt/qtxml-5.15.14 (dev-qt/qtxml) amd64
`-- media-gfx/qrencode-4.1.1-r1 (media-gfx/qrencode) amd64
`-- media-libs/libexif-0.6.24 (media-libs/libexif) amd64
`-- media-libs/openal-1.23.1-r1 (media-libs/openal) amd64
`-- media-video/ffmpeg-6.1.1-r8 (media-video/ffmpeg) amd64 [webp v4l]
`-- net-libs/tox-0.2.19 (>=net-libs/tox-0.2.13) amd64 [av]
`-- kde-frameworks/sonnet-5.116.0 (kde-frameworks/sonnet) amd64
`-- x11-libs/libX11-1.8.10 (x11-libs/libX11) amd64
`-- x11-libs/libXScrnSaver-1.2.4 (x11-libs/libXScrnSaver) amd64
`-- dev-qt/qttest-5.15.14 (dev-qt/qttest) amd64
`-- x11-base/xorg-proto-2024.1 (x11-base/xorg-proto) amd64
`-- dev-qt/linguist-tools-5.15.14 (dev-qt/linguist-tools) amd64
`-- virtual/pkgconfig-3 (virtual/pkgconfig) amd64
`-- app-alternatives/ninja-1 (app-alternatives/ninja) amd64
`-- dev-build/cmake-3.30.5 (>=dev-build/cmake-3.20.5) amd64
`-- dev-util/desktop-file-utils-0.27-r1 (dev-util/desktop-file-utils) amd64
`-- x11-misc/shared-mime-info-2.4-r1 (x11-misc/shared-mime-info) amd64
[ net-im/qtox-1.17.6-r2 stats: packages (27), max depth (1)
 
Here goes Gentoo AMD64 dependencies list for qtox.

dependency graph for net-im/qtox-1.17.6-r2
`-- net-im/qtox-1.17.6-r2 amd64
`-- dev-db/sqlcipher-4.6.1 (dev-db/sqlcipher) amd64
`-- dev-libs/libsodium-1.0.20 (dev-libs/libsodium) amd64
`-- dev-qt/qtconcurrent-5.15.14 (dev-qt/qtconcurrent) amd64
`-- dev-qt/qtcore-5.15.14 (dev-qt/qtcore) amd64
`-- dev-qt/qtgui-5.15.14 (dev-qt/qtgui) amd64 [gif(+) jpeg png X(-)]
`-- dev-qt/qtnetwork-5.15.14-r1 (dev-qt/qtnetwork) amd64
`-- dev-qt/qtopengl-5.15.14 (dev-qt/qtopengl) amd64
`-- dev-qt/qtsvg-5.15.14 (dev-qt/qtsvg) amd64
`-- dev-qt/qtwidgets-5.15.14 (dev-qt/qtwidgets) amd64
`-- dev-qt/qtxml-5.15.14 (dev-qt/qtxml) amd64
`-- media-gfx/qrencode-4.1.1-r1 (media-gfx/qrencode) amd64
`-- media-libs/libexif-0.6.24 (media-libs/libexif) amd64
`-- media-libs/openal-1.23.1-r1 (media-libs/openal) amd64
`-- media-video/ffmpeg-6.1.1-r8 (media-video/ffmpeg) amd64 [webp v4l]
`-- net-libs/tox-0.2.19 (>=net-libs/tox-0.2.13) amd64 [av]
`-- kde-frameworks/sonnet-5.116.0 (kde-frameworks/sonnet) amd64
`-- x11-libs/libX11-1.8.10 (x11-libs/libX11) amd64
`-- x11-libs/libXScrnSaver-1.2.4 (x11-libs/libXScrnSaver) amd64
`-- dev-qt/qttest-5.15.14 (dev-qt/qttest) amd64
`-- x11-base/xorg-proto-2024.1 (x11-base/xorg-proto) amd64
`-- dev-qt/linguist-tools-5.15.14 (dev-qt/linguist-tools) amd64
`-- virtual/pkgconfig-3 (virtual/pkgconfig) amd64
`-- app-alternatives/ninja-1 (app-alternatives/ninja) amd64
`-- dev-build/cmake-3.30.5 (>=dev-build/cmake-3.20.5) amd64
`-- dev-util/desktop-file-utils-0.27-r1 (dev-util/desktop-file-utils) amd64
`-- x11-misc/shared-mime-info-2.4-r1 (x11-misc/shared-mime-info) amd64
[ net-im/qtox-1.17.6-r2 stats: packages (27), max depth (1)

qTox is out of question, unless someone either fixes a lot of code in it or fixes Qt5 for macOS PowerPC. Not that either is impossible, but neither is easy.

uTox will probably work, I am trying to fix one issue. (The build was kinda fixed yesterday, but the app was crashing, since one non-portable thing needs to be reimplemented, not just disabled.)
 
Well, after spending a day on this, I think I have fixed the issue with binary embedding, however turns out that the app crashes regardless. From the logs it seems that the crash happens on OpenAL-related code. I do not know what to do with that further, since it is not clear what exactly goes wrong. I tried both Apple OpenAL and openal-soft, both crash.

You may try this: https://github.com/barracuda156/powerpc-ports/commit/cfd85d63ddb5eab10d7511445354b69c7f742310
It will probably build, and most likely will also crash on launch.

Here is the issue for OpenAL: https://github.com/uTox/uTox/issues/1574
And a draft PR with the patches to allow X11 build: https://github.com/uTox/uTox/pull/1575

Sorry, I tried :)
 
  • Like
Reactions: crimsonRE
UPD. On Catalina the same X11-based version seems to be functional normally. This likely means that my patches are fine, but the source code is broken for BE platforms.
 

Attachments

  • Untitled 8.png
    Untitled 8.png
    277.1 KB · Views: 46
@barracuda156
Can you pls explain in brief, what differences are in source code of programs for BE & LE architectures?
File structures or I/O registers may be BE or LE.

When a program accesses one of those, it needs to convert between host endian and whatever other endian is required. Usually, that means using HostToBE or HostToLE functions for writing and BEToHost or LEToHost for reading. I made up those names. There's probably a header file with the actual functions defined.

If a program uses those functions, then it should be compilable for BE and LE architectures without making any changes.

The functions may be implemented as macros, and may translate to a normal load or store if the host endian and the target endian match.

In Mac OS X, on Intel Macs, you might run PowerPC code (BE) using Rosetta, but the kernel is Intel (LE) so a UserClient kext may need to take that into account.
 
  • Like
Reactions: pochopsp
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.