Skip to content

Patience Deck is a collection of patience games for Sailfish OS based on GNOME Aisleriot.

License

Notifications You must be signed in to change notification settings

Tomin1/patience-deck

Repository files navigation

Patience Deck

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.

Github repository.

Building and installing

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.

Building generic version

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.

Building harbour version

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.

Installing

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

Translations are hosted on another repository. Please go there to find more information about creating and updating translations.