Next: Using GNU Arch, Previous: Network protocol, Up: Hacker's guide [Contents][Index]
Summary off all operations required for a release:
LW6MAP_RULES_DEFAULT_EXP
and default for --skip-network
, which might have been changed will developping.
./src
, run ./indent.sh
.
./doc
, run ./gdoc-update.sh
, ./doxygen-update.sh
and ./perf-update.sh
.
NEWS
file, in both liquidwar6
and liquidwar6-extra-maps
. Check ChangeLog
is OK.
doc/liquidwar6.texi
.
debian/changelog
files in both main and extra maps packages.
make distcheck
... (at least!)
RPM
package (make -C pkg rpm
), check yum install
produces a working installation, also check the rpm -e
command to verify uninstalling is OK too.
.exe
main binary on Microsoft Windows then go back to GNU/Linux and build .exe
installer (make -C pkg installer
), go back to Microsoft Windows and test the installer (there are often problems at this stage because of missing libraries or other files...).
.dmg
Mac OS X disk image, check it works even when /opt
and /usr/local
or (re)moved, this is important, else execution might rely on binaries which are only on the development machine and do not ship with game.
rsync --rsh=ssh --recursive --verbose --progress ./X.Y.Z/ login@dl.sv.nongnu.org:/releases/liquidwar6/X.Y.Z/
. Each file must have its .sig
corresponding file.
gendocs.sh
, carefull, liquidwar6.html
is suppressed by this, need to re-create it from previous version and/or index.html
which is the same.
index.html
, liquidwar6.html
and liquidwar6.fr.html
so that they reflect the latest release. Check download links are OK.
gnupload --to ftp.gnu.org:liquidwar6 liquidwar6-X.Y.Z.tar.gz
.
This describes how to add a new option to the game.
src/lib/def/def-list.txt
src/lib/def/def-update.py
run ./def-update.py
. This will automatically fill src/lib/def/def.h
and script/def.scm
. In the code, you should always use LW6DEF_<OPTION>
in C and lw6def-<option>
in scheme to refer to the option. This does help avoiding typesetting errors.
src/lib/hlp/hlp-list.c
, choose a category for it
src/lib/hlp/hlp-reference.c
, give it a type, documentation string and default values if needed
src/lib/def/def-list.txt
a common practice is to fill it with the output of liquidwar6 --list
once the program has been compiled and is aware of the new option.
Unless this is done, program won’t accept the option.
Some options need more work, for instance:
src/lib/lw6-options.c
.
src/lib/sys-build.c
and also src/lw6-funcssys.c
to be callable from scripts.
src/lib/map/map-test.c
, src/lib/ker/ker-test.c
, src/lib/pil/pil-test.c
and src/lib/pil/pil-suite.c
.
This describes how to add a new libxyz
internal library:
src/lib/xyz
directory. The convention is to use 3 letters names and prefix every global identifier with lw6xyz
.
Makefile.am
, xyz.h
, xyz-test.c
and xyz-testmain.c
from an existing internal library (libnod
is a good source, it does not have complex dependencies).
Makefile.am
to fill requirements, make necessary adjustments to other files (many string replaces to make, both lowercase and uppercase).
SUBDIRS
and LW6_LIBS
sections of src/lib/Makefile.am
AC_CONFIG_FILES
of ./configure.ac
.
automake
and autoconf
.
src/lib/lw6-options.c
and add a call to lw6xyz_test()
for both “check” and “test” cases.
src/lib/lw6-test.c
and add a reference to the lw6xzy_test()
function.
abc
library that depends on xyz
, edit the lw6abc_test
function so that it contains a reference to lw6xzy_test
.
abc
library that depends on xyz/xyz.h
, edit the abc/abc.h
header so that it includes xzy/xyz.h
. Also edit src/lib/liquidwar6.h.in
.
abc
library that depends on libxyz
, add a reference to ../xyz/libxyz.la
inf the _LDADD
section.
src/lib/lw6-funcsxyz.c
file which declares Guile bindings for this lib, if needed
doc/gdoc-update.sh
and add the entry for xyz
.
doc/Makefile.am
and add xyz-gdoc.texi
in gdoc_TEXINFOS
.
doc/doxygen-update.sh
and add the entry for xyz
.
doc/Makefile.am
and add xyz-doxygen.texi
in doxygen_TEXINFOS
.
doc/perf-update.sh
and add the entry for xyz
.
./doc
, run ./gdoc-update.sh
, ./doxygen-update.sh
and ./perf-update.sh
.
doc/doxygen/Makefile.am
and add the dependency on src/lib/xyz/xyz.h
.
doc/liquidwar6.texi
to and a new node/section for this internal library.
doc/deps.dot
to update dependencies.
./configure && make
, fix code if needed.
This describes how to add a new mod-ab
module, for instance a new bot, but gfx, snd, cli or srv backends should work pretty much the same:
src/lib/bot/Makefile.am
src/lib/bot/mod-ab
, with its Makefile.am
(inspired from other existing modules)
configure.ac
so that src/lib/bot/mod-ab/Makefile
is generated.
doc/gdoc-update.sh
and add an entry for mod-ab
doc/Makefile.am
and add mod-ab-gdoc.texi
in gdoc_TEXINFOS
.
doc/doxygen-update.sh
and add an entry for mod-ab
doc/Makefile.am
and add mod-ab-doxygen.texi
in doxygen_TEXINFOS
.
touch doc/mod-ab-gdoc.texi doc/mod-ab-doxygen.texi
else dependencies checking will fail.
./doc
, run ./gdoc-update.sh
and ./doxygen-update.sh
.
doc/liquidwar6.texi
to add a new node/section for this module.
doc/deps.dot
to update dependencies.
src/lib/bot/bot-test.c
, change the value of TEST_NB_BACKENDS
and modify the code so that the new ab
module is tested too.
src/lib/bot/bot-register.c
, the code must updated pretty much in every place with the conditionnal LW6_ALLINONE
, you need to add the new module.
automake
, autoconf
, ./configure
and make
.
Next: Using GNU Arch, Previous: Network protocol, Up: Hacker's guide [Contents][Index]