Patience Deck is a collection of patience games for Sailfish OS. It reimplements game engine from GNOME Aisleriot and utilises its implementations of patience games including manual pages and artwork.
This application uses Guile. It is not packaged in Sailfish OS. You can find packaging specification files for it and its dependencies in rpm/misc/ directory.
Use either sfdk command from Sailfish SDK or Platform SDK to build Patience Deck and its dependencies. Below are instructions for building with sfdk command. Building with Platform SDK needs similar steps but you should follow its guides when building. These instructions are tested only on Linux and only using docker version of the build engine.
Before building, fetch GNOME Aisleriot sources and Patience Deck translations and apply patches:
$ git submodule update --init
$ sfdk apply
You need to do this step only once. After that aisleriot/ and translations/ directories contain assets for Patience Deck.
This version needs some support libraries that are built separately and must be installed to SDK target and device to build and run Patience Deck. While building support libraries can take a long time, following builds of Patience Deck are very quick to do.
The following instructions are for SailfishOS-4.1.0.24-aarch64 target but substitute your own depending on which version of Sailfish or which architecture you are targeting. If you switch targets, remember to clean up any build artifacts in source directories. If you build for i486 target, use SDK 3.9 or later.
First set your target:
$ sfdk config --push target SailfishOS-4.1.0.24-aarch64
Also set output-prefix for packages that you build:
$ sfdk config --global --push output-prefix "$HOME/RPMS"
Substitute your choice of directory at the end. You need to do this only once. This is important to allow the SDK to find the dependencies later.
Now it's time to build the support libraries. You need to do this only once if you are developing Patience Deck because future builds can use the packages that you have already built.
I recommend to create a common directory next to patience-deck/ directory where you init sfdk build directory:
$ sfdk -c target=SailfishOS-4.1.0.24-aarch64 build-init
Download the source package listed in each spec file and extract them to this directory. Enter each directory and run the respective sfdk build command as shown below.
Build support libraries starting with gc:
$ sfdk -c target=SailfishOS-4.1.0.24-aarch64 --specfile ../../patience-deck/rpm/misc/gc.spec build
Repeat for libunistring:
$ sfdk -c target=SailfishOS-4.1.0.24-aarch64 --specfile ../../patience-deck/rpm/misc/libunistring.spec build
And for guile which needs a little patch for wider version compatibility:
$ patch -p1 < ../../patience-deck/rpm/misc/guile-avoid-libcrypt-and-ncurses.patch
$ sfdk -c target=SailfishOS-4.1.0.24-aarch64 --specfile ../../patience-deck/rpm/misc/guile.spec build
Go to Patience Deck source directory and continue by building it.
Build the package:
$ sfdk -c target=SailfishOS-4.1.0.24-aarch64 build
You can find the built packages in the directory you specified in output-prefix step. In addition to patience-deck package you must install also gc, libunistring and guile22 packages to the device.
Harbour aka Jolla Store compatible packaging can be built using --with harbour arguments. It builds all necessary libraries for guile and bundles them in a single package. It may take tens of minutes to build from scratch. Built libraries are cached so that rebuilding Patience Deck takes less time but if the files are removed, the following build will rebuild everything.
The following instructions are for SailfishOS-4.1.0.24-aarch64 target but substitute your own depending on which version of Sailfish or which architecture you are targeting.
Build the package:
$ sfdk -c target=SailfishOS-4.1.0.24-aarch64 build --with harbour
It will first install any missing dependencies. After that it will download and build support libraries one-by-one which can take a long time. Last it builds Patience Deck and packages everything into one package that can be installed on device. You may find the built package in RPMS/ directory or the directory you have set your output-prefix to point to.
If you need to do rebuilds, just repeat the building step. If you want to rebuild support libraries, remove libs directory or one of its target architecture subdirectories.
Depending on which version you built, the resulting package is called patience-deck or harbour-patience-deck. If you have added your device on your SDK settings and selected the correct device, you can deploy easily:
$ sfdk deploy --sdk patience-deck
Translations are hosted on another repository. Please go there to find more information about creating and updating translations.