11

I'm trying to run FAF (natively) in conjunction with FA (through wine)

(due to the views this post receives and to how much the methods have updated I've decided to update this question for it to answer as well as ask. check revision history of this post for the process to finding the old method to run the python client and the old guides)


Beta-state Java Client :

enter image description here

use this script : (updated 3/12/2019)

https://github.com/tatsujb/installFAFscript

https://www.youtube.com/watch?v=BEWUEoQ8Q4k


Python client : (NOW OBSOLETE)

working FAF

How to: compile this python app (FAF) from source :

up and running thanks to @edwinksl 's "Python 3 with PyQt5" guide. marked him as solution. good job!

Update (31/1/2018)

Sorry I took so long to update this post. it's gotten 7000 views! it really deserves up-to-date info.

Since I asked a lot has happened. FAF now has more or less linux support. they even have a wiki to installing it (and per distro!) :

https://wiki.faforever.com/index.php?title=Setting_Up_FAF_Linux#Debian.2FUbuntu

it's not guaranteed to fit your needs, more can be found by digging in : http://forums.faforever.com/viewtopic.php?f=2&t=4507

right now the wiki isn't all that up to date.

for awhile I could get faf to run with native python, no virtualenv needed but QT's aver changing dependencies and package composition as well as the FAF usage of them has broken that again ... temporarily I hope !

rest assured I've got it running personally and I'm here to offer solace (try skipping steps 6 & 7 first they may be unneeded ):

  1. Install some prerequisites : sudo apt update && sudo apt install wget PyQt5.QtMultimedia python3-idna python3-semantic-version python3-pyqt5 python3-pyqt5.qtwebengine
  2. cd Downloads && wget https://github.com/FAForever/client/archive/0.16.1.tar.gz (or whichever release is latest at https://github.com/FAForever/client/releases/ )
  3. extract (for this example I'll extract to home) (cd Downloads/ && mv client-0.16.1.tar.gz ~/ && cd && tar -zxf client-0.16.1.tar.gz && mv client-0.16.1 faf-client && rm client-0.16.1.tar.gz)
  4. cd fafclient/ : move to the working dirrectory
  5. sed -i 1,1d requirements.txt : removes cxFreeze from the requirements (it's not required and it will kill compile)
  6. virtualenv -p python3 faf
  7. pip install -r requirements.txt
  8. sudo wget https://github.com/FAForever/uid/releases/download/v4.0.5/faf-uid -O /usr/bin/faf-uid : downloads login binary and : sudo chmod +x /usr/bin/faf-uid allows it to be executed by faf.
  9. touch res/RELEASE-VERSION && echo "0.16.1" >> res/RELEASE-VERSION : fulfills faf's final requirement : a release version file.

now it should run but for the heck of it let's make a runner :

touch FAF.sh
echo "#! /bin/bash" >> FAF.sh
echo "cd /home/t/faf-client" >> FAF.sh
echo "python3 src/__main__.py" >> FAF.sh
chmod +x FAF.sh

then ./FAF.sh to run FAF.

Cheers!

20
  • See wiki.qt.io/Building_Qt_5_from_Git . If you still have a problem, contact the qtwebkit maintainers directly. – Panther Jun 8 '17 at 20:55
  • t@tsu:~$ sudo apt-get build-dep qt5-default Reading package lists... Done E: You must put some 'source' URIs in your sources.list – tatsu Jun 8 '17 at 20:58
  • So put source uri in - askubuntu.com/questions/496549/… – Panther Jun 8 '17 at 21:03
  • 2
    @tatsu I think I managed to get QtWebKit working but I don't have the FAF game, so I can't fully verify this works. Let me try to get a chatroom set up so we can discuss. – edwinksl Jun 16 '17 at 3:00
  • 2
    @tatsu Meanwhile I wrote an answer. Give it a try and see if it helps. – edwinksl Jun 16 '17 at 5:55
4
+150

Note: the steps for Python 3 with PyQt5 are proven to work while the steps for Python 2 with PyQt4 and PySide are still experimental.

Python 3 with PyQt5 (proven to work)

It appears that the 474-feature-py3 branch of the FAForever/client GitHub repository uses Python 3 with PyQt5, which contains QtWebKit. Therefore, using this branch is the most straightforward solution. Note that PyQt5 (but not PyQt4) can in fact be installed with pip, so that makes things way more convenient.

Steps for Python 3 with PyQt5:

  1. cd into a directory of your choice, which will be ~/Desktop/temp for the purpose of writing this answer, git clone the FAForever/client GitHub repository and git checkout the 474-feature-py3 branch:

    mkdir ~/Desktop/temp
    cd ~/Desktop/temp
    git clone https://github.com/FAForever/client.git faf-client
    cd faf-client
    git checkout 474-feature-py3
    
  2. Create and activate a virtualenv for Python 3 (the default is Python 3.5 for Ubuntu 17.04) and force-upgrade pip just to make sure it is up-to-date:

    virtualenv venv -p python3  # replace python3 with python3.6 if you want to use Python 3.6 instead
    source venv/bin/activate
    pip install -U --force-reinstall pip
    
  3. Use pip to install PyQt5 and from requirements.txt:

    pip install PyQt5
    pip install -r requirements.txt
    
  4. Download the faf-uid binary into faf-client/lib and make it executable:

    wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O lib/faf-uid
    chmod +x lib/faf-uid
    
  5. Run python on src/__main__.py:

    python src/__main__.py
    

Python 2 with PyQt4 and PySide (experimental)

It looks like I may have figured out how to import the QtWebKit module, but I don't have the FAF game installed, so I cannot fully verify that this works and therefore this answer is a work in progress.

In a nutshell, I used apt to install python-qt4, which does not have the QtWebKit module. I created and activated a virtualenv without using the --system-site-packages option and used pip to install PySide, which does have the QtWebKit module. I then symlinked the appropriate system libraries and files for PyQt4 into the virtualenv. Then I made a couple of changes to faf-client/src to import the QtWebKit module from PySide. This solution is inspired by https://stackoverflow.com/a/28850104/486919, https://stackoverflow.com/a/36887302/486919 and https://stackoverflow.com/a/37616466/486919.

Steps:

  1. Install python-qt4:

    sudo apt update
    sudo apt install python-qt4
    
  2. cd into a directory of your choice, which will be ~/Desktop/temp for the purpose of writing this answer, git clone my version of the repository and git checkout the patch branch:

    mkdir ~/Desktop/temp
    cd ~/Desktop/temp
    git clone https://github.com/edwinksl/client.git faf-client
    cd faf-client
    git checkout patch
    

    This patch branch has several additional commits compared to the default develop branch: 1) it gets rid of the version specification for cx_Freeze, which was giving me installation problems if I used the 4.3.4 version previously specified, and 2) it imports QtWebKit from PySide instead of PyQt4.

  3. Create and activate a virtualenv for Python 2 and force-upgrade pip just to make sure it is up-to-date:

    virtualenv venv
    source venv/bin/activate
    pip install -U --force-reinstall pip
    
  4. Use pip to install PySide and from requirements.txt:

    pip install PySide
    pip install -r requirements.txt
    
  5. Download the faf-uid binary into faf-client/lib and make it executable:

    wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O lib/faf-uid
    chmod +x lib/faf-uid
    
  6. cd to the site-packages directory inside the virtualenv and make appropriate symlinks:

    cd venv/lib/python2.7/site-packages
    ln -s /usr/lib/python2.7/dist-packages/PyQt4/ .
    ln -s /usr/lib/python2.7/dist-packages/sip.x86_64-linux-gnu.so .
    

    Note the . at the end of each symlink.

  7. cd back to faf-client and run python on src/__main__.py:

    cd -  # this goes back to previous directory, which should be ~/Desktop/temp/faf-client
    python src/__main__.py
    
11
  • first off thank you! and sorry I missed the queue. I was hospitalized. I'm stuck at : Resolving deltas: 100% (8873/8873), done. t@tsu:~/Desktop/temp$ git checkout patch fatal: Not a git repository (or any of the parent directories): .git t@tsu:~/Desktop/temp$ git init Initialized empty Git repository in /home/t/Desktop/temp/.git/ t@tsu:~/Desktop/temp$ git checkout patch error: pathspec 'patch' did not match any file(s) known to git. – tatsu Jun 21 '17 at 14:15
  • @tatsu My bad. You need to cd into the faf-client directory first, then do git checkout patch. – edwinksl Jun 21 '17 at 14:17
  • @edwinskl yup!! and cd back up once that is done! – tatsu Jun 21 '17 at 14:18
  • @edwinskl right after pip install -r faf-client/requirements.txt I added wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O ./faf-client/lib/faf-uid and chmod +x ./faf-client/lib/faf-uid then did cd ./faf-client && ../venv/bin/python src/__main__.py as per the original tutorial forum post I built my script with : forums.faforever.com/… FAF runs bbut still with an error log. – tatsu Jun 21 '17 at 14:30
  • @tatsu Feel free to suggest edits! After all you have the game installed while I don't... – edwinksl Jun 21 '17 at 14:35
1

Check ~/.bashrc for Python version override

The package you are wanting to compile requires Python version 2.7.x. Confirm that with these commands:

$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PyQt4
>>> print PyQt4.__path__
['/usr/lib/python2.7/dist-packages/PyQt4']
>>> 

That was the problem in this Q&A.

You are not alone with linux error PyQt4 import QtWebKit google search:

Unfortunately there are alot more google results but these I believe are the most pertinent for you to read if the first recommendation doesn't pan out.

1
  • thank but I'm not sure if it's me who's not understanding or what but I'm using virtualenv which (I believe) is helping me not have to install python2 locally. given that i shouldn't have to worry about python3 meddling with anything. correct me if I completely missed the mark here – tatsu Jun 21 '17 at 15:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.