Skip to content
This repository has been archived by the owner on Sep 26, 2024. It is now read-only.

Bug Fixing Guide

John Goodman M0RVJ edited this page Nov 15, 2023 · 5 revisions

Bug Fixing Guide

Helpful Guides

Current list of Bugs affecting Logos Bible Software on winehq - https://appdb.winehq.org/objectManager.php?sClass=version&iId=39484

Contact

Other

Wasta Instructions: https://docs.google.com/document/d/1Gms_Bc2Q_OOH3G5lmP6twXnqiSWxrFFT7lCN3nRyymw/edit

Steps

Step 1 Clone the Wine Git Repository

This creates a copy of the code on your system but it has version tracking which means you can easily jump between different versions and track changes.

mkdir $HOME/wine-test
cd $HOME/wine-test
git clone git://source.winehq.org/git/wine.git ~/wine-git

Staging

To build staging requires a few extra steps. You have to patch the git source tree with the ‘staging’ patches. As below. From then configure, make and make install as usual.

git clone git://source.winehq.org/git/wine.git ~/wine-test/wine-staging-git
git clone git://github.com/wine-staging/wine-staging.git ~/wine-test/wine-staging-patches-git
cd ~/wine-test/wine-staging-patches-git/patches
/patchinstall.sh DESTDIR=~/wine-test/wine-staging-git --all

Choose which version

You choose which version with the git checkout command. It takes commit hashes, tags, branches or releases as an argument. For releases, typically it is wine-ver e.g.

john@ideacentre:~/wine-test/wine-git$ git checkout wine-6.21

A full list is here: https://source.winehq.org/git/?p=wine.git;a=tags

Setup a build environment

I was using Kubuntu 23.10. I had to install a few packages to get going.

sudo apt install git build-essential gcc-mingw-w64 libgstreamer1.0-dev libgstreamer-plugins-good1.0-0 libgstreamer-plugins-base1.0-dev libusb-1.0-0 libusb-1.0-0-dev libjxr-dev libvkd3d-utils1 libvkd3d-dev libvulkan-dev libfaudio-dev libvkd3d-headers libjpeg62 flex bison libfreetype-dev libpulse-dev libasound2-dev libdbus-1-dev libfontconfig-dev libgnutls28-dev libgl-dev libunwind-dev libx11-dev libxcomposite-dev libxcursor-dev libxfixes-dev libxi-dev libxrandr-dev libxrender-dev libxext-dev libosmesa6-dev libsdl2-dev libudev-dev libvulkan-dev libcups2-dev samba-dev cmake gettext 

Build wine

Configuring wine

cd $HOME/wine-test/wine-git
../wine-git/configure --enable-win64

Takes about 30secs

Compiling Wine

The ‘time’ command can be used to benchmark how long the process takes. This can usually be omitted but gives you an idea how long it will take in future. ‘make’ builds it. ‘-j4’ tells it to run 4 threads. If you have more or less cores on your process adjust accordingly.

time make -j4

wine build complete 22mins on my machine

I like to add a notification on the end. E.g. ‘time make -j4 && say completed’ if you have ‘say’ installed. It just gives a handy prompt.

Installing wine

We don’t want to install wine to the /usr/local because the build is just for testing. Choose instead a convenient folder. I am using the .PlayOnLinux folder where I also keep other versions of wine for testing.

edit makefile so the prefix line goes to the folder you want. e.g. prefix = /home/john/.PlayOnLinux/wine/linux-amd64/6.21

Then you can run ‘make install’ which will put wine in that folder.

make install

30 secs

Running Logos with your self-built wine

Assuming you set up Logos using Daniel’s ferion script, you have a Logos.sh script in your $HOME/LogosBible_Linux_P dir. Edit the wine64 and wineserver -w lines to the full path of your chosen winedir.

i.e., replace

wine64 "${LOGOS_EXE}"
wineserver -w

with

/home/$USER/.PlayOnLinux/wine/linux-amd64/6.21/bin/wine64 "${LOGOS_EXE}"
/home/$USER/.PlayOnLinux/wine/linux-amd64/6.21/bin/wineserver -w

Congrats you are testing Logos on your home built wine binaries.

Applying a Patch

~/wine-test/wine-git$ git apply ../patch.txt

Make a new git branch:

git branch newbranchname
git commit .

Follow steps above to compile and test it.

Return to master branch

git checkout master

Abandon local changes

git reset --hard
git clean -f
git pull origin master

Update tags

git fetch –all
git checkout tags/wine-7.1

Regression Testing Guide

https://wiki.winehq.org/Regression_Testing

For the first step you can chain together commands.

time ../wine-git/configure --enable-win64 && time make -j4 && say completed

It shouldn’t be necessary to configure between bisects.

Show diff for a particular regression, e.g.,

git show 8892b79118fde5f2307ecbbdb03a8d0c489c8b3d

Revert a regression

git revert 8892b79118fde5f2307ecbbdb03a8d0c489c8b3d

Creating a Patch

Edit code to get desired result.

Build and test

Make patch, e.g.,

git diff > ../../popups.patch

Capture debugging information

Output from:

WINEDEBUG=+relay,+winspool,+psdrv,+print,+seh /home/john/wine-versions/linux-amd64/7.0rc2/bin/wine64 "${LOGOS_EXE}" >> /tmp/logoswinedebuglog7.0rc2.txt 2>&1

approx 3mb bzip2

To keep it brief I ran:

echo "****Ready to Click Print - manual marker****" > /tmp/logoswinedebuglog7.0rc2.txt

just before I pressed the print shortcut.