User Tools

Site Tools


crossfire_release_guide

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 and libtoolize
  • 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_c_windows 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
crossfire_release_guide.txt · Last modified: 2014/04/05 15:06 (external edit)