Skip to main content

Topic: Compile Otter Browser for Athlon XP processor (without SSE2) in Arch Linux (Read 4656 times)

  • konstantin
  • [*]
Compile Otter Browser for Athlon XP processor (without SSE2) in Arch Linux
I have read in this thread https://thedndsanctuary.eu/index.php?topic=1505.0 that Otter Browser can be compiled for older processors too which lack of SSE2 instruction set. Temporarily I have to use such an old PC. Its performance is not so low, quite acceptable in fact with 2 GB of RAM, but unfortunately I am unable to install any of my mostly used and favourite browsers (Opera, Chromium, Vivaldi, etc) because all of them need the SSE2 instruction set.

As far as I understanded the thread states that "libqt5webkit5" package should be recompiled from source by adding some compile rules:

Code: [Select]
5. Edit your_build_dir/qtwebkit-opensource-src-version/debian/rules:

Find the "disabled_jit_architectures" variable and add "i386" arch to it.
Code: [Select]
disabled_jit_architectures := armel mips mipsel
# becomes:
disabled_jit_architectures := armel mips mipsel i386

So my question would be that how can I do the compiling for my AMD Athlon XP (1533 Mhz) in Arch Linux and where can I download those mentioned sources?

  • Emdek
  • [*][*][*][*][*]
  • Moderator
Re: Compile Otter Browser for Athlon XP processor (without SSE2) in Arch Linux
Reply #25
@konstantin, well, obviously you ran out of memory, I'm assuming that you don't have much RAM on that machine.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.

  • filip
  • [*]
Re: Compile Otter Browser for Athlon XP processor (without SSE2) in Arch Linux
Reply #26
Yesterday testing  "JSC_useJIT=0" seemd to be stable, no crash for about two hour of browsing.
As far as I understanded the thread states that "libqt5webkit5" package should be recompiled from source by adding some compile rules:
@konstantin
Unless you're getting "Illegal intruction" error even with "JSC_useJIT=0", you probably don't need to recompile webkit, since it's JIT that triggers it.
Of course, given that "JSC_useJIT=0" is actually the same as a rebuild with JIT disabled.

I'd test it, however my Athlon box has been retired ( PSU died  :irked:  ), shortly after I wrote that guide.

By the way, these C/CXX flags set in "makepkg.conf" should be correct/appropriate for your Athlon:
Code: [Select]
CFLAGS="-march=native -O2 -mfpmath=sse -mno-sse2 -pipe -fstack-protector-strong"
CXXFLAGS="-march=native -O2 -mfpmath=sse -mno-sse2 -pipe -fstack-protector-strong"
:)

  • noabody
  • [*]
Re: Compile Otter Browser for Athlon XP processor (without SSE2) in Arch Linux
Reply #27
I have an old AMD K7 "Barton" computer.  After finding this forum, I put 32-bit Xubuntu 18.04.1 on it and am happy to report that otter-browser works as well as noted.

I can confirm JSC_useJIT=0 otter-browser has the same effect as disabling JIT in qtwebkit.  The options are:

Code: [Select]
    JSC_useJIT=0 - try running JS in interpreted-only mode, no compilation
    JSC_useLLInt=0 - avoid using interpreter, use only JIT
    JSC_useDFGJIT=0 - disable DFG and FTL tiers of JIT, leaving only baseline JIT
    JSC_useFTLJIT=0 - disable FTL JIT (only makes sense if it is enabled in your build; FTL is not available on 32-bit platforms and on Windows)

A command like...
Code: [Select]
(grep -Pi 'jsc_usejit' "$HOME/.profile") || echo "export JSC_useJIT=0" >> "$HOME/.profile"

var="JSC_useJIT" ; val="0" ; (grep -Pi "$var" "$HOME/.profile") && perl -pi -e "s|(.*$var)=.*|\\1=$val|gi" "$HOME/.profile" || echo "export $var=$val" >> "$HOME/.profile"
... will add (or modify) Ubuntu's global environment variable in .profile.

For the sake of curiosity, I decided to build a non-JIT qtwebkit-opensource-src, in a 32-bit Ubuntu LXC, with this change to debian/rules:
Code: [Select]
# JIT is only supported on x86 / armhf / aarch64 / mips32
ifeq (,$(filter $(DEB_HOST_ARCH),amd64 arm64 armhf hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel))
 EXTRA_CMAKE_ARGUMENTS += -DENABLE_JIT=OFF
endif
Code: [Select]
# JIT is only supported on x86 / armhf / aarch64 / mips32
 EXTRA_CMAKE_ARGUMENTS += -DENABLE_JIT=OFF

This ensures the library is built with JIT disabled. The build process is typical:
Code: [Select]
sudo apt build-dep qtwebkit-opensource-src
apt source qtwebkit-opensource-src
cd qtwebkit-opensource-src-5.212.0~alpha2
(change debian/rules as noted)
dch -i (ctrl+x)
DEB_BUILD_OPTIONS="nocheck notest nodocs parallel=4" debuild -d -b -uc -us -nc -j4
cd ..
sudo dpkg -i libqt5webkit5_5.212.0~alpha2-7ubuntu1_i386.deb

otter-browser didn't build on Ubuntu 18.04.1 without a minor edit to CMakeLists.txt.
Code: [Select]
find_package(Qt5WebEngineWidgets 5.9.0 QUIET)
Then, to build:
Code: [Select]
sudo apt install libhunspell-dev libqt5core5a libqt5dbus5 libqt5gui5 libqt5multimedia5 libqt5network5 libqt5printsupport5 libqt5qml5 libqt5svg5-dev libqt5webenginewidgets5 libqt5webkit5-dev libqt5widgets5 libqt5xmlpatterns5 libqt5xmlpatterns5-dev qt5-default qtmultimedia5-dev qttools5-dev qttools5-dev-tools qtwebengine5-dev
git clone --branch master --depth 1 --recursive https://github.com/OtterBrowser/otter-browser.git
cd otter-browser
(mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_QTWEBENGINE=OFF -DCMAKE_INSTALL_PREFIX=/usr ..)
make -C build -j4
sudo checkinstall make -C build install

The package maintainer's version of checkinstall seg-faults and requires a hybrid patch, based on the working git and debian sources.  You can find it at checkinstall debian patch

The noted dependencies and instructions are provided to help save time for those interested in building otter from source (modified qtwebkit unneeded).  The better bet is to use a pre-built i386 package from Otter Browser Ubuntu PPA

Even with JIT disabled, some websites can still cause otter-browser to hang.  For those that do, use "Tools > Preferences > Advanced > Content".  Under "Website Preferences > Add > Website" use the smallest portion of the URL required to identify the site, e.g. "launchpad.net".  On the "Scripting" tab, "Override Enable JavaScript" which should disable it.  These problem websites cause JavaScript issues in all browsers, not just otter.

Eventually, I was able to get both otter-browser and midori to work.  Xubuntu installer warns the processor doesn't support LFENCE for spectre v2 patch, and falls back to retpoline.  Not surprising since LFENCE is an SSE2 instruction.

Having used otter a bit I can say with confidence that it is the finest browser one could hope for on an old non-SSE2 PC running Linux.
  • Last Edit: 2019-02-20, 13:59:05 by noabody