When mixer is not available, recommend SDL2_mixer instead of SDL1.2 mixer
[freeciv.git] / doc / README.packaging
blob6afddc618e0d03f7b966a996b29d9f121c0f030f
1 ----------------------------------------------------------------------
2                    Notes for Freeciv packagers
3 ----------------------------------------------------------------------
5 This file is meant to help those people wanting to package Freeciv
6 for their distribution, and, to some degree, those people who want to
7 create Freeciv fork.
9 ----------------------------------------------------------------------
10 Updating from 2.5 to 2.6
11 ------------------------
12 * Client uses ~/.freeciv/freeciv-client-rc-2.6 for storing its options.
13   Options are always saved to that file.
14   Loading of options first tries to get options from
15   ~/.freeciv/freeciv-client-rc-2.6. If that file does not exist it tries to
16   load options from old client files generated by former version of Freeciv
17   (e.g. ~/.freeciv-client-rc-2.5 generated by Freeciv 2.5 or ~/.civclientrc
18    generated by Freeciv version <= 2.1).
19 * gtk3-client is now the default client
20 * Minimum gtk3 requirement for building gtk3-client is now 3.8.
21 * There's new gtk3.22-client that has gtk+-3.22 as requirement. It can be
22   built with --enable-client=gtk3.22
23 * There's new experimental sdl2-client. It can be built with
24   --enable-client=sdl2
25 * Development of ruleset editor, freeciv-ruledit, has begun.
26   It has same Qt5 dependencies as other Qt programs in Freeciv distribution.
27 * Lua version to use is 5.3 now.
28 * System lua library is now used by default. Copy of lua distributed
29   with freeciv is used only if system lua is not found, or it's
30   explicitly requested with configure option --disable-sys-lua
31 * There's new configure option --enable-sys-tolua-cmd to use tolua
32   command from the build system when generating lua bindings. Plain
33   --enable-sys-tolua-cmd searches tolua from the PATH, other values
34   are treated as full path to executable. The default is to search
35   for tolua from the system. You have to use system tolua when
36   cross-compiling.
37 * Minimum libtool version is now 1.5.2
38 * Minimum automake version is now 1.10
39 * For translation support minimum gettext version is now 0.14. It's
40   still possible to build completely without translation support
41   with configure option --disable-nls
42 * SDL2-mixer is now the default. To build clients to still use
43   SDL1.2-mixer, configure with --enable-sdl-mixer=sdl1.2. sdl-client
44   cannot be built with SDL2-mixer, nor can sdl2-client be built with
45   SDL1.2-mixer
46 * Server now saves its readline history to file
47   "~/.freeciv/freeciv-server_history" instead of "~/.freeciv-server_history"
48 * Configure option --with-freeciv-manual / --without-freeciv-manual has
49   been replaced with --enable-freeciv-manual / --disable-freeciv-manual
50   that can take also value --enable-freeciv-manual=html to make
51   freeciv-manual that produces manuals with alternative formatting,
52   default still being wiki formatting.
53 * Added configure options --with[out]-libbz2 and --with[out]-liblzma to
54   explicitly enable or disable support for bz2 or xz compressed files.
55   The default is still to autodetect if the support can be built in.
56   Note that it's usually a bad idea to disable one of these if you
57   have had it previously enabled, as then your new version will be
58   unable to load old savegames created with that compression type in
59   use.
60 * Ruleset README files have moved from doc/ into data/ directory
61   alongside ruleset data, so that they can be displayed inside the
62   game. You may want to symlink to these from /usr/share/doc/ or
63   equivalent so that users can continue to easily find the
64   documentation outside the game.
66 ----------------------------------------------------------------------
67 Compatibility of modified versions
68 ----------------------------------
69 If you create patched version of Freeciv, take necessary precautions
70 to avoid problems when your patched version interacts with unpatched
71 version, or tries to load or save incompatible data files.
73 Concept called "capabilities" is widely used in Freeciv. If two things
74 (server/client, program/datafile...) are incompatible, they have
75 different capabilities defined. Based on that they can detect
76 incompatibility and act gracely.
77 Be sure to update network capability string in fc_version if you break
78 network compatibility, so your patched server/client does not cause
79 problems to official Freeciv servers/clients trying to connect it.
81 If you distribute modified version of freeciv, even (or especially)
82 one network compatible with upstream, you should change also
83 FREECIV_DISTRIBUTOR in fc_version to match. This information is sent
84 by client to (public) server so in case there's any problems with certain
85 clients, we know a bit more what kind of code they are using.
87 ----------------------------------------------------------------------
88 Configure time version number adjustment
89 ----------------------------------------
91 The version label part of the version number can be set via
92 configure time environment variable FREECIV_LABEL_FORCE.
93 If the variable contains tag "<base>", that gets replaced with the
94 label that would be used if FREECIV_LABEL_FORCE was not set at all.
96 ----------------------------------------------------------------------
97 Announcement of new versions
98 ----------------------------
99 As of 2.4, the Freeciv client displays the latest available version if
100 it's newer than the running version. This information comes from the
101 metaserver.
103 The metaserver maintains several different versions to report here,
104 distinguished by "follow tags". The default follow tag is "stable",
105 updated when a new source release is made, but for instance Windows
106 builds will follow a different tag such as "win32", which will only be
107 updated when a new Windows binary is available.
109 This mechanism is primary intended for the Freeciv maintainers, since
110 updates to the metaserver need to be made be us. However, if you
111 maintain a significant version/package of Freeciv, you can contact us
112 and ask to be allocated a tag to pass to 'configure --with-followtag';
113 thereafter you'd need to let us know whenever you make a new release
114 so we can update the metaserver.
116 (This is unlikely to be of use to Linux distribution packagers, who
117 have their own means of distributing updates.)
119 ----------------------------------------------------------------------
120 Optional features
121 -----------------
122 Configure enables many optional features by default when their
123 dependencies are satisfied in the system. Downside of this automation
124 is that missing dependencies cause no hard error even when you would
125 want the features. For getting list of features automatically left out
126 because of missing dependencies you can give option --with-missinglist
127 to configure, and last thing configure outputs will be that list.
129 ----------------------------------------------------------------------
130 Shared libfreeciv
131 -----------------
132 Libfreeciv contains code common to server and client. By default it's
133 built as static library, but you can build it as shared library by
134 giving configure option "--enable-shared" (and possibly "--disable-static")
136 ----------------------------------------------------------------------
137 Generated files
138 ---------------
139 This is list of files Freeciv might generate to filesystem when running.
140 You may want to remove some of these when Freeciv is uninstalled.
142 * Client saves its options to file "~/.freeciv/freeciv-client-rc-2.6"
143 * Server saves its readline history to file "~/.freeciv/freeciv-server_history"
144 * When running local single player games, challenge files with name
145   like "~/.freeciv/challenge_*_*" are generated
146 * When saving game in server launched by client, savegame go to
147   "~/.freeciv/saves/"
148 * When saving game in independently launched server, savegames go
149   to directory specified with "-s" command line option, defaulting
150   to working directory
151 * freeciv-modpack saves data under "~/.freeciv/2.6/" and
152   "~/.freeciv/scenarios/"
153 * Server can write log to file specified with "-l" command line option
154 * When mapimage feature is used, it can save colortest images to
155   working directory and actual map images to save directory (same as above)
157 ----------------------------------------------------------------------
158 Building multiple clients at once
159 ---------------------------------
160 Starting from 2.2 it has been possible to build multiple clients running
161 'make' just once. Just give configure option "--enable-client" comma
162 separated list of clients to compile, e.g. "--enable-client=gtk3,gtk2,sdl,qt"
164 ----------------------------------------------------------------------
165 Savegame compression support
166 ----------------------------
167 Freeciv can use several different compression libraries for compressing
168 its savegames. See server setting "compresstype".
169 * zlib (gzip compression) is required to compile freeciv so zlib
170   compression support is always present
171 * bzip2 compression is built into Freeciv if bzip2 libraries and
172   headers are present at configure time. One can override this automatic
173   detection with configure option --with[out]-libbz2.
174 * xz compression is built into Freeciv if liblzma library and
175   headers are present at configure time. One can override this automatic
176   detection with configure option --with[out]-liblzma.
178 While this feature is called "Savegame compression support" it actually
179 applies to loading of all the section files: savegames, rulesets, tileset
180 spec files... If compression support is built into Freeciv, you can
181 compress any of these files and Freeciv can still load them. Freeciv ships
182 with all the data files uncompressed, except scenarios which are gzipped.
184 ----------------------------------------------------------------------
185 Loadable AI modules
186 -------------------
187 Freeciv can be built with support of loading AI code from custom module.
188 There can be multiple modules loaded at once, and AI players can use
189 different module from each other.
190 This feature is not enabled by default. When it's not enabled, default
191 AI code is built in to server and always used.
192 You can enable this feature with '--enable-aimodules'. For this to work
193 you have to enable also building of shared libraries (and modules) with
194 '--enable-shared' as discussed in chapter 'Shared libfreeciv'
195 All modules, both default and custom, must be installed under
196 ${libdir}/fcai (/usr/lib/fcai for example) for their loading to work.
198 ----------------------------------------------------------------------
199 Public servers
200 --------------
201 Sadly we have not resources to keep public servers for many different
202 Freeciv versions running. To give your users ability to play on public
203 servers, try to provide them as current Freeciv client version as possible.
204 To see list of currently running public servers, see
205 "http://meta.freeciv.org/metaserver.php" Note that from the web you
206 can see complete list, while list shown by Freeciv client only lists
207 compatible servers.
209 Any a.b.c release is network compatible with any a.b.d release. If you
210 provide 2.6.c client, it can be used to play on 2.6.d server.