Notes on packaging GNOME Crosswords
This doc aims to provide hints to those packaging Crosswords for other platforms.
Version 0.3.16
We install a helper utility called gen-word-list-resource in libexecdir. This is used to build the word-lists, and is not generically useful. Packagers can safely delete this file.
This now requires
blueprint-compiler
at build time.
Version 0.3.15
cargo and python requirements were updated
The requirement to include
org.gnome.Crosswords.Editor.gschema
andbroda.gresource
with the Crosswords game has been dropped. That means, the following split of files should be used when packaging.Crosswords
org.gnome.Crosswords.gschema
player.gresource
Crosswords Editor
org.gnome.Crosswords.Editor.gschema
broda.gresource
wordnik.gresource
Version 0.3.14
UPDATE: Due to bug #259, we need to ship the gschema file for the editor with the game as well as the broda resource. Those files are
org.gnome.Crosswords.Editor.gschema
andbroda.gresource
respectively, and should be packaged with the game.The editor has an optional dependency on libadwaita-1.7beta. It will compile with and without that version. If the newer library is present, a substantially fuller clue details section will appear. Future versions will just require 1.7 once it’s shipped in GNOME.
We now install three word list resources:
player.gresource — 20M
broda.gresource — 66M
wordnik.gresource — 42M
The
player
dict should be included with the player, whilebroda
andwordnik
should be shipped with the editor. The difference in size is because the editors have definitions included now which expands them considerably. It’s possible to shrink the player substantially down the line if the size is a problem.It is no longer practical for packagers to generate the word list resources from scratch. The definition files take a couple hours to build, and require downloading a 20Gb intermediate dump of wiktionary’s database. That intermediate dump takes over a day to generate from scratch, so we use a pre-generated version. I build the word lists on my computer and check them in to git.
The scripts to reproduce the word lists are in
scripts/build-wordlist-defs.sh
andscripts/build-wordlist-index.sh
. Instructions on how to use the scripts are indocs/word-entry.md
. In practice, if someone wants to double check them with the pregenerated definitions, running those scripts on another computer (of the same endianness) will produce byte-for-byte identical word lists.
A consequence of the intermediate files being generated and shipped in advance is that we no longer run on big endian machines. There’s open work needed to do to byteswap when parsing the word list. I don’t know of any practical shippments on those machines, so haven’t prioritized it.
Builds will have to exclude ppc and ppc64.