Gaming in Rocky

It isn’t that hard.

See my previous posts in this thread. :slight_smile:

If you want to build and play the AisleRiot card game follow the steps below. This is using only official Rocky repos, 100% open source, and avoids installing to system locations. In other words this is the safe way to do it.

Gnome projects tend to follow a pattern, and you’ll be able to build other Gnome projects by understanding this one.

Step #1 - Technology used

GDK (GIMP Drawing Kit)
GTK (GIMP ToolKit)
GIO (Gnome Input/Output)
GSettings (remembers the size of the AisleRiot window)
GLib.KeyFile (store game settings in the homedir)
GObject (used in Gnome projects as a kind of object orientation
hard to write, but can be called e.g. from Python with introspection)
Guile and Scheme (language used for the actual card games)

Step #2 - Install packages from official Rocky repos

as root

make sure powertools repo is enabled

dnf repolist
dnf config-manager --set-enabled "powertools"

make sure dev tools are installed
dnf group install "Development Tools"

install packages needed to build software in general

dnf install pkgconf-pkg-config
dnf install ninja-build
dnf install platform-python-devel
dnf install python36-devel
	python36, [d][e]
dnf install meson
dnf install glib2-devel
	baseos
dnf install gtk3-devel.x86_64
	appstream

install packages needed to build AisleRiot

dnf install libappstream-glib-devel
dnf install cairo-devel
dnf install GConf2-devel
dnf install glib2-devel
dnf install gtk3-devel
dnf install guile-devel
dnf install libcanberra-devel
//skip 'qt5-qtsvg-devel' and use librsvg2 instead
dnf install librsvg2-devel

still as root, create a directory for building software
mkdir -p /data/build
set permissions to allow create/read/write/delete for standard user
log out of being root

Step #3 - Build (and then play) the AisleRiot game

this part does NOT need root
as standard user

cd /data/build
decide git or tar?
the tarballs are too old, so we need to use git version which has tar.gz download option
wget "https://gitlab.gnome.org/GNOME/aisleriot/-/archive/master/aisleriot-master.tar.gz"
make sure it looks correct
ls -l aisleriot-master.tar.gz
extract it
tar -xf aisleriot-master.tar.gz
change to the extracted directory
cd /data/build/aisleriot-master
create two directories, one for building, one for “installing”

mkdir builddir/
mkdir inst/

configure it
meson setup builddir --prefix /data/build/aisleriot-master/inst/usr/local -Dtheme_kde_path=/usr/share/carddecks

install it as standard user without affecting any system locations

meson install -C builddir
echo $?

start the game
set the xdg data dirs, ‘glib-2.0/schemas’ will be added to the end of the path

cd /data/build/aisleriot-master
XDG_DATA_DIRS+=:inst/usr/local/share inst/usr/local/bin/sol

inside the game
you might want “Control : Click to move”

Step #4 - to uninstall later

remove the conf file from homedir

cat ~/.config/gnome-games/aisleriot
rm ~/.config/gnome-games/aisleriot

delete everything in ‘builddir’ and ‘inst’

cd /data/build/aisleriot-master
rm -rf inst/
rm -rf builddir/

This is really not a good idea. If you want to build this package yourself then do it properly with package sources and using mock for the build, then you don’t end up having to dig through and manually install a bunch of build dependencies like this on your system and you don’t result with files splattered all over the place on your system without decent management in place

I still don’t understand why there’s all of this gyration going on.

Download the src.rpm that I mentioned above.

Do this:

as root:
dnf install rpmdevtools
dnf builddep aisleriot-3.22.9-3.fc32.src.rpm
exit root, do the following as user:
rpmdev-setuptree
rpmbuild --rebuild aisleriot-3.22.9-3.fc32.src.rpm

That’s literally the entire list of commands that you need to type. The first line installs the basic toolset to allow you to build rpm’s in your home directory, the second command finds and installs all of the development dependencies that aisleriot requires for compiling it, the third command sets up the build tree in your home directory and the fourth command compiles the src.rpm into an executable rpm that you can install and use after it’s finished.

In the three steps above, you don’t ned to install any files to any system location, and they are all in one safe place, which you can delete at any time.

yes, but which package sources and from where?

1 Like

yes, but which package sources and from where?

As I’ve stated previously in this thread (repeatedly).

aisleriot-3.22.9-3.fc32.src.rpm

That’s the one that I’ve compiled here with no issues arising.

Google can find you many places to download that src.rpm from.

Simply go go google.com and enter the name of that rpm (exactly, including everything from aisleriot to rpm) and you will see several links that will allow you to download that rpm. I see ten on that google search and there are probably more if you look in other places as well.

Download that rpm from you choice of those links (you can even download it from more than one of those links and compare them with cmp or sha256sum if you’re concerned about possible tampering) and then follow the steps that I posted just above this and you’ll be all set.

@pajamian and @gerry666uk are talking more generally, not just about ‘aisleriot’.

There are a lot of problem-domain specific (academic) programs that are not available as RPM, source nor built.
Frankly, I would not let them near admin privileges even on a good day.

Furthermore, users might need multiple versions – for repeatablility of old results. So, one would need “Software Collections” type packaging. Hence, HPC clusters tend to use environment modules.

I try to either find or make a src.rpm for everything that I install on my systems. It’s not too often that I have to make one up from scratch but occasionally I have to do a bit of editing on the spec file or add a patch file of some kind to the compilation process specified in the rpm, but in most cases it’s not all that painful to do.

I dislike having random binaries on my systems that aren’t accounted for as part of the rpm ecosystem and try to avoid them as much as possible.

Tasks of this nature seem to come in two varieties: relatively simple and absolutely impossible. I try to avoid the absolutely impossible ones, of course. :slight_smile:

Having said that, I do use appimages for scribus, fbreader and musescore since they’re not particularly easy to install on Rocky otherwise. They do work well as appimages and since they’re self-contained they don’t scatter random bits of whatever across my systems so I’m happy enough with that solution in those cases.

But, as explained above, this is out-of-date, and will probably never be updated, and telling people to “use google” isn’t helpful, nor is telling them to “use mock”, at least in the context of the original poster, who probably isn’t planning to build lots of packages for a repo like ‘epel’.

It does raise an interesting question though, about where something like AisleRiot would be made available to Rokcy, e.g. RedHat probably would not allow it in the official default repos.

What Red Hat includes for RHEL can be in “Rocky repos”.
ELRepo maintains extra drivers.
Remi’s repos have additional PHP versions.
EPEL maintains extra packages.
RPMFusion maintains packages, like codecs, that EPEL doesn’t wan’t to.

What other third-party repositories with good reputation are there for EL8?

Actually, it isn’t out of date.

I just downloaded aisleriot-3.22.9-8.fc35.src.rpm from a Fedora 35 archive.

It’s still version 3.22.9 and that is the current version. The -8 just means that it’s the 8th time it was recompiled for a newer version of Fedora. (There was a requirement for guile added at one point for reasons that I haven’t bothered to look into, but that doesn’t affect the actual program in question.)

Here is the changelog:

  • Require guile 2.2 (#1901347)
  • Disable GConf support
  • Update to 3.22.9

The last update to aisleriot was to version 3.22 which is the same as the rpm that I posted here.

FrankCox your link is gone. I tried adding the Nux repository, but did not install properly… Thanks

Yeah, it turned into such an argument and nobody seemed to need, like or want the one that I had compiled so I took it off of my server again.

Regarding the versions, you can compare these two forum posts

jlehtone, aisleriot-3.22.21-1.fc35.src.rpm, post from Mar 27
FrankCox, aisleriot-3.22.9-8.fc35.src.rpm, post from Apr 03

The list of repos makes perfect sense, but I’m still not sure where a card game would end up? e.g. if we built it with Mock right now, how could we make it available to end users.

FrankCox Thanks for trying to help. I don’t know how to PM on this forum. My computer was down for a while. I’m not a troll and did not want to cause an uproar.

“Anybody” can create a webpage. That is, a repo. Better yet, if you use Copr (link in earlier comment), it has Mock, servers to build on, and hosts your repo. “Just provide src.rpm”, they say. That side is “trivial”.

Which existing and trusted repository would be both able (within their policies and resources) and willing to maintain a package like aisleriot? Frankly, I have not looked up what stance those listed repos have, except that RPM Fusion has both “free” and “nonfree” repos and that ELRepo builds package from NVidia’s binary blob.

Following Steps 1-3 above, I have also been able to build and run ‘gnome-chess’. It only took about ten minutes, becuase gnome projects tend to follow the same pattern.

One thing I had to add was ‘vala.x86_64’ from the ‘powertools’ repo. This uses the same GObject system as AisleRiot, but uses ‘vala’ as the object oriented high level language.

The exact path to the source code that I used:
wget "https://gitlab.gnome.org/GNOME/gnome-chess/-/archive/3.37.2/gnome-chess-3.37.2.tar.gz"