-
Notifications
You must be signed in to change notification settings - Fork 17
Bug Fixing Guide
- Git Tutorial - https://www.youtube.com/watch?v=SWYqp7iY_Tc
- Git 15mins - https://www.youtube.com/watch?v=USjZcfj8yxE
- Git Cheat Sheet PDF - https://www.atlassian.com/git/tutorials/atlassian-git-cheatsheet
- Solving compiler problems - https://superuser.com/questions/1248542/checking-whether-the-c-compiler-works-no
- Building wine guide from WineHQ - https://wiki.winehq.org/Building_Biarch_Wine_On_Ubuntu#Build_64-bit_Wine
- Regression Testing Guide from WineHQ - https://wiki.winehq.org/Regression_Testing
Current list of Bugs affecting Logos Bible Software on winehq - https://appdb.winehq.org/objectManager.php?sClass=version&iId=39484
- Telegram: https://t.me/linux_logos
- Matrix: https://matrix.to/#/#logosbible:matrix.org
Wasta Instructions: https://docs.google.com/document/d/1Gms_Bc2Q_OOH3G5lmP6twXnqiSWxrFFT7lCN3nRyymw/edit
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.