Table of Contents
Source Releases
Directions below have 1.50.0 as the example release. Directions of commands below presume you start in the top level SVN directory (the one that contains the arch, client, maps, server) for each phase (arch, client, maps, server)
Arch & Maps
The process for both the arch and maps directory is the same - the only difference is the name of the files/paths.
- Update and commit the ChangeLog (it may be called 'CHANGES'). This can be done automatically for the maps.
cd maps/trunk svn2cl.sh
- Make a copy of the repository. Note this does a copy on the server, so if your local copy is a out of sync, it won't matter.
svn copy https://crossfire.svn.sourceforge.net/svnroot/crossfire/arch/trunk \ https://crossfire.svn.sourceforge.net/svnroot/crossfire/arch/tags/1.50.0 -m "1.50.0 branch"
- Check out the tag, so you now have a local copy:
svn update arch/tags
- Update the Changelog to change it (no top of SVN) in branch.
vi arch/tags/1.50.0/CHANGES svn commit arch/tags/1.50.0/CHANGES
- Make archive of arch/maps directory. Note we want the arch directory called 'arch/maps' in the archive, hence the symlink. Gnu tar is used:
cd arch/tags rm -f arch ln -s 1.50.0 arch gtar -chvz --exclude=.svn -f crossfire-1.50.0.arch.tar.gz arch
- Maps only - we want a bzip2 copy because it saves considerable space. This may take a little while depending on speed of your system. You can start on the next stage of uploaded the .gz file while this is processing:
gunzip -c crossfire-1.50.0.maps.tar.gz | bzip2 -c9 > crossfire-1.50.0.maps.tar.bz2
- Make a file release on sourceforge. Go to crossfire, Project Admin, File Manager
- Use the file browser interface to navigate to the correct directory.
- Left click on the gear icon to make a directory in the correct location. Follow existing naming convention.
- Left click the gear icon in the newly created folder to upload the desired file.
- Navigate to the uploaded file to change file attributes.
- If release notes for a file is needed, this appears to be done by uploading another file and noting it is a release note file
- Release of arch is now done
Client
Start in branches/1.x
- Update configure.ac with new version number
- Update ChangeLog file, putting in break for new version
- Run autoreconf
- Run configure (needed so new version number gets embedded in Makefiles)
- Verify the ./configure report indicates
yes
for all Build and Scripting options before proceeding to the next step.
- Update crossfire-client.spec with new version
- Run
svn commit
to commit configure, Changelog, crossfire-client.spec changes. - Make a copy of the repository. Note this does a copy on the server, so if your local copy is a out of sync, it won't matter.
svn copy https://crossfire.svn.sourceforge.net/svnroot/crossfire/client/trunk \ https://crossfire.svn.sourceforge.net/svnroot/crossfire/client/tags/1.50.0 -m "1.50.0 branch"
- cd into the tags directory, do svn update to check out newly created branch:
cd ../../tags svn update
- Clean up ChangeLog - remove top of SVN line, instead just have
Changes for 1.50.0
be at the top. - Update configure.ac, crossfire-client.spec to remove the .dev suffix on the release number.
- Will need to run
autoreconf; automake –add-missing
- Run configure. Options are not really important.
- Run
make dist
. This will create a crossfire-client-1.50.0.tar.gz in the current directory. - Unpack the archive, and verify it works:
gtar xvfz crossfire-client-1.50.0.tar.gz cd crossfire-client-1.50.0 ./configure -prefix=/tmp/test make -s (make sure no errors) make install (will install where specified above)
- run crossfire-client-gtk2 and make sure they are not braindead - being able to connect to a server and log in is usually what I do
cd /tmp/test/bin ./crossfire-client-gtk2
- Clean up some files:
cd rm -rf /tmp/test rm -rf <path>/crossfire-client-1.50.0
- Make sounds archive - may seem pointless since sounds are not changing, but the the rpm build process basically requires that there be a sounds archive with the same release number.
- Make copy of the repository:
svn copy https://crossfire.svn.sourceforge.net/svnroot/crossfire/sounds/trunk \ https://crossfire.svn.sourceforge.net/svnroot/crossfire/sounds/tags/1.50.0 -m "1.50.0 branch"
- Run svn update in sounds/tags to download the sounds.
- Like the arch area above, we expect the sounds to be in a directory called sounds, not 1.50.0
rm -f sounds ln -s 1.50.0 sounds gtar -chvz --exclude=.svn -f crossfire-client-sounds-1.50.0.tar.gz sounds
- Upload sounds file to sourceforge - same as other files - same steps, same value
- Make an image archive for the client. Needed for RPM building. Need a server tree with a properly linked arch tree.
cd lib; adm/collect_images.pl -archive
- that will create a ../crossfire-images.tar file
- rename file:
mv crossfire-images.tar crossfire-client-images-1.50.0.tar
- compress to file:
gzip -v9 crossfire-client-images-1.50.0.tar
- upload file to sourceforge, same steps, same type
- Directions for upload in the arch and map apply for the client
Server
Start in server/trunk
- Update ChangeLog file, putting in break for new version
- Make a copy of the repository. Note this does a copy on the server, so if your local copy is a out of sync, it won't matter.
svn copy https://crossfire.svn.sourceforge.net/svnroot/crossfire/server/trunk \ https://crossfire.svn.sourceforge.net/svnroot/crossfire/server/tags/1.50.0 -m "1.50.0 branch"
- cd into the tags directory, do svn update to check out newly created branch:
cd ../../tags svn update
- Clean up ChangeLog - remove top of SVN line and comments for updates, instead just have
Changes for 1.50.0
be at the top. - Update configure.ac with new version number
- likely need to run
automake –add-missing
andlibtoolize
- re-run autoconf
- Re-run configure (needed so new version number gets embedded in Makefiles)
- Run
svn commit
to commit configure, Changelog, configure.ac changes. - Run configure. Options are not really important.
- Since distributions include prebuilt archetypes, need to rebuild them:
cd lib ln -s ../../../../arch/tags/1.50.0 arch make collect
- Run
make distcheck
from top level directory. This will pack up the distribution and then unpack it and compile it - a pretty good complete test.
- Unpack the archive, and verify it works:
gtar xvfz crossfire-1.50.0.tar.gz cd crossfire-1.50.0 ./configure -prefix=/tmp/test make -s (make sure no errors) make install (will install where specified above)
- Link in the maps to the destination area specified. Make sure you use maps the correspond to release:
cd /test/share/crossfire ln /path/to/maps maps * Run the server, connect with a client, and make sure you can log in and walk around scorn (basic not completely dead test) /test/bin/crossfire (in another window) gcfclient (create character, walk around scorn briefly)
- The upload directions for the arch and map apply for the client
- Clean up some files:
rm -rf /tmp/test rm -rf <path>/crossfire-1.50.0
Final Notes
After all the components are bundled up, an official announcement is sent to crossfire-announce@lists.real-time.com. I usually use the announcement of the last release as a template.
- Update 1.11.0 to 1.50.0
- generate a sum of the files. I put all of them in one directory, so it is just a simple
sum *
and remove any extra entries that shouldn't be there. - Same for md5sums -
md5sum *
- At the top of the file, put in the notable changes - note you may already have these from the steps above.
- At end of file, put in complete changelog file.
- Send mail to crossfire-announce@lists.real-time.com. Note it is a moderated alias, so there may be some time lag in the message actually appearing.
Binary Releases
Client RPM Files
Building the RPM is pretty straightforward. It does require a system that actually uses RPM (like redhat). Also, to some extent, the RPM is tied to the system it is built on, in terms of architecture and dependencies. For example, to build the 32 bit binaries, I boot my secondary system that is only 32 bit.
The crossfire-client.spec file requires the crossfire-client crossfire-client-sounds, crossfire-client-images tarballs to be present in a /export/home/crossfire/Crossfire directory (_sourcedir). /export/home/crossfire/RPM-TOP must also exist and contain a BUILD subdirectory. If this is not satisfactory, the %define statements for _sourcedir _srcrpmdir, _rpmdir, and _topdir may need to be locally altered to suite, but do not commit changes to SVN as the SVN settings no doubt support the actual directories used by the official client release manager.
- Make sure you have already done the client archives above, since the rpm build requires them.
- Make crossfire-client.spec is up to date. Not that it is likely some of the paths near the top of the file may need to be changed depending on your filesystem layout.
- Build the RPMs:
rpmbuild -ba crossfire-client.spec
- If there are errors, rpmbuild will tell you.
- Rpms would be put in _rpmdir/<architecture>
- Upload the RPMS, architecture is the architecture, type is rpm.
Windows
See also Microsoft Windows Compile Guide for requirements.
Client
- get latest sources
- open Visual Studio project file
gtk/win32/GTKClient.dsw
- alter
gtk/win32/config.h
to set version number (line 92) - switch to 'Release' build mode
- build
- ensure client works correctly
- open
gtk/win32/Win32Changes.txt
- fix and fill information (from Crossfire traffic, from Changelog, …)
- open NSI project file
gtk/win32/gtkclient.nsi
- change version number (lines 8, 13, 15)
- create installer
- ensure it works correctly
- rename installer to
crossfire-client-1.50.0.exe
- upload to Sourceforge
- create a release
- paste
Win32Changes.txt
to readme part, Changelog to changelog part - release
Server
- get sources
- open Visual Studio workspace
make_win32/crossfire32.dsw
- alter
include/win32.h
to change version number (line 13) - switch to
ReleaseLog
build mode - build the
crossfire32
project - build the
plugin_python
project - build the
plugin_animator
project - ensure server works correctly
- edit the
make_win32/Release_notes.txt
file - open the NSIS project file
make_win32/cfserver.nsi
- fix version number (lines 4, 9, 11)
- build installer
- ensure installer works correctly
- rename exe to
crossfire-server-1.50.0.exe
- upload to Sourceforge
- create release
- copy
Changelog
to changelog part,Release_notes.txt
to readme - release
- send notification (if not doing map release)
Map installer
- from server code, run the
make_win32/make_maps_nsi.pl
file (syntax:make_maps_nsi.pl “Big World maps” ..\..\share\maps
if you installed maps in share) - build generated .NSI file
- ensure installer works fine
- rename executable to
crossfire-server-bigworld-maps-1.50.0.exe
- upload to Sourceforge
- add to previous release
- send notification