Compare commits

...

7 Commits

  1. 25
      Makefile
  2. 21
      README.md
  3. 10
      deb/DEBIAN/control
  4. 2
      deb/DEBIAN/postinst
  5. 2
      deb/DEBIAN/postrm

@ -1,5 +1,8 @@
ifeq ($(PREFIX),)
PREFIX := /usr/local
PREFIX := /usr/local/
endif
ifeq ($(LIBDIR),)
LIBDIR := lib/
endif
PRODUCTVER=0100
@ -10,11 +13,16 @@ fresh: clean default pack
systemlibs: systemlibtarget pack
windows: windowstarget
default:
nuitka3 --follow-imports --enable-plugin=qt-plugins --include-qt-plugins=all --windows-disable-console --windows-icon-from-ico=fedi.ico --windows-company-name=plchat --windows-product-name=plchat --windows-product-version=$(PRODUCTVER) --python-flag=-O -o plchat plchat.py
python -m nuitka --follow-imports --enable-plugin=qt-plugins --include-qt-plugins=all --python-flag=-O -o plchat plchat.py
windowstarget:
python -m nuitka --follow-imports --include-module=win32ctypes --enable-plugin=qt-plugins --include-qt-plugins=all --windows-disable-console --windows-icon-from-ico=fedi.ico --windows-company-name=plchat --windows-product-name=plchat --windows-product-version=$(PRODUCTVER) --python-flag=-O -o plchat plchat.py
systemlibtarget:
nuitka3 --nofollow-imports --follow-import=misc --follow-import=monkeypatch --follow-import=pleroma --follow-import=timeconvert --follow-import=videowidget --follow-import=audiowidget --windows-disable-console --windows-icon-from-ico=fedi.ico --windows-company-name=plchat --windows-product-name=plchat --windows-product-version=$(PRODUCTVER) --python-flag=-O -o plchat plchat.py
python -m nuitka --nofollow-imports --follow-import=misc --follow-import=monkeypatch --follow-import=pleroma --follow-import=timeconvert --follow-import=videowidget --follow-import=audiowidget --python-flag=-O -o plchat plchat.py
pack:
mkdir dist
@ -23,9 +31,18 @@ pack:
cp fedi.ico dist
cp send.svg dist
cp unread.svg dist
cp README.md dist
cp LICENSE dist
cp COPYING dist
clean:
rm -r dist || true
install:
install dist/plchat $(PREFIX)/bin
mkdir $(PREFIX)$(LIBDIR)
install dist/plchat $(PREFIX)$(LIBDIR)
install dist/fedi.ico $(PREFIX)$(LIBDIR)
install dist/fedi.svg $(PREFIX)$(LIBDIR)
install dist/send.svg $(PREFIX)$(LIBDIR)
install dist/unread.svg $(PREFIX)$(LIBDIR)
ln -sf $(PREFIX)$(LIBDIR)plchat $(PREFIX)bin/plchat

@ -9,23 +9,30 @@ Run the binary or `python plchat.py`. Log in to your account on the fediverse an
Installation instructions for PlChat. If you are looking to package this program or build from source, skip to Building From Source or Packaging down below.
### Windows
Download and install [python 3.8.9](https://www.python.org/downloads/windows/) from the python.org and the [k-lite codec pack](https://www.codecguide.com/download_kl.htm). The basic version with default options should work fine.
Download the latest plchat_windows.zip from https://git.waldn.net/git/knotteye/plchat/releases extract the zip file. Run setup.bat, and keep the setup-log file if something does not work. Run plchat.exe and log in!
No guarantees on Windows 7, but windows 8 and 10 should work fine.
### Linux
A prepackaged deb file is provided in https://git.waldn.net/git/knotteye/plchat/releases as well as a compiled binary for amd64 linux.
If you package plchat for your distro, please let me know and I will add it here.
### MacOS
Nuitka does not support cross compilation and I have a working MacOS machine or VM, but it should theoretically compile and run just fine. Feel free to message me for support, and I'll be glad to link to your site if you host any binaries you build.
## Building From Source or Packaging
PlChat comes with a Makefile for compiling to a binary, but it is of course possible to run the source directly with just `python plchat.py`. The easiest way to package PlChat is just to make sure the dependencies are installed and write a script that sets the appropriate pythonpath and runs plchat.py.
Otherwise you can see below for instructions on building the binary.
### Runtime Depencies
You will need QtPy and a compatible set of bindings, either PyQt4/5 or Pyside/PySide2, all available on PyPI.
You will also need the following system libraries: Qt4 or 5 (depending on your bindings), Secret Service (on linux or BSD), and libmagic.
And, obviously, a copy of python. Python3.5+ is the only thing I will support but other versions may work.
You will need the following libraries: PyQt5, Secret Service (on linux or BSD), libmagic (python-magic-bin from pypi on windows), and some codecs for qtmultimedia.
The windows codecs can be found above, and on linux you will need gstreamer and some plugins. On gentoo, `sudo emerge media-plugins/gst-plugins-base media-plugins/gst-plugins-good media-plugins/gst-plugins-bad media-plugins/gst-plugins-ugly media-plugins/gst-plugins-neon media-plugins/gst-plugins-soup media-plugins/gst-plugins-libav` should do. Other distributions are on your own.
And, obviously, a copy of python. Python3.5+ is the only thing I will support but other versions may work. End users will need the same version of python used to compile the binary. Other versions may work but this is what nuitka officially supports.
### Building
You will need the following packages from pypi: keyring, appdirs, python-magic, python-dateutil, and websockets.
You will also need all runtime dependencies listed above, as well as nuitka3 and a C compiler compiler. Nuitka supports the following compilers:
You will need the following packages from pypi: PyQt5, keyring, appdirs, python-magic(or python-magic-bin on windows), python-dateutil, requests, urllib3, and websockets.
You will also need all runtime dependencies listed above, as well as nuitka3 and a C compiler. Nuitka supports the following compilers:
* gcc 5.1+ or g++ 4.4+
* clang on macOS or BSD
@ -33,6 +40,4 @@ You will also need all runtime dependencies listed above, as well as nuitka3 and
Cross compilation is not supported so you will need to compile on the OS and architecture that you are targeting.
Once everything is installed and in your path it should be a simple `make && sudo make install` to build everything. The resulting binary will have it's own copy of all the python build dependencies, which can then be uninstalled or ignore. You can also `make systemlibs` if you wish, and the resulting binary will rely on system packages for all python modules listed above as build depencies.
Nuitka produces very large binaries. UPX works well if you want to reduce the size.
Once everything is installed and in your path it should be a simple `make && sudo make install` to build everything. The resulting binary will have it's own copy of all the python build dependencies, which can then be uninstalled or ignored. You can also `make systemlibs` if you wish, and the resulting binary will rely on system packages for all python modules listed above as build depencies. Nuitka produces very large binaries. UPX works well if you want to reduce the size.

@ -0,0 +1,10 @@
Package: plchat
Version: 1.0
Section: net
Priority: optional
Architecture: linux-amd64
Description: A pleroma chat client
Homepage: https://git.waldn.net/git/knotteye/plchat
Maintainer: Knott Eye<knotteye@airmail.cc>
Depends: python3 (>=3.8.0), PyQt5 (=5.15.2), dbus, libmagic1, python-pyqt5.qtmultimedia, libc6, libgstreamer-plugins-bad1.0-0, qtgstreamer-plugins-qt5
Suggests: gnome-keyring (>= 2.30)

@ -0,0 +1,2 @@
#!/bin/sh
ln -sf /usr/lib/plchat/plchat /usr/bin/plchat

@ -0,0 +1,2 @@
#!/bin/sh
rm -f /usr/bin/plchat
Loading…
Cancel
Save