[Crossfire-wiki] [Crossfire DokuWiki] page changed: user:kbulgrien

no-reply_wiki at metalforge.org no-reply_wiki at metalforge.org
Wed Nov 26 10:13:31 CST 2008


A page in your DokuWiki was added or changed. Here are the details:

Date        : 2008/11/26 10:13
User        : 
Edit Summary: Add a WIP Client Pre-Release Guide useful for making test releases.

@@ -21,5 +21,194 @@
  ====make====
      * [[http://www.gnu.org/software/automake/manual/autoconf/Portable-Make.html#Portable-Make|Automake Manual Chapter]]
  ====Portable C/C++====
      * [[http://www.gnu.org/software/automake/manual/autoconf/Portable-C-and-C_002b_002b.html#Portable-C-and-C_002b_002b|Automake Manual Chapter]]
+ 
+ ======Pre-Release Guide (WIP)======
+ 
+ =====Pre-Release Preparation=====
+ 
+ The directions use SVN trunk as the example release.  The instructions 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)
+ 
+ ====Set Up a Pre-Release Workspace====
+ 
+ Change the following directory to suit:
+ 
+   export RELDIR=/home/data/svn/crossfire/prerelease
+   mkdir -p ${RELDIR}
+   cd ${RELDIR}
+   mkdir -p RPM-SRC RPM-TOP/BUILDmkdir RPMS
+ 
+ Place these scripts in the pre-release workspace.
+ 
+ ===Scripts to Support Pre-Releasing===
+ 
+ This example will presume the use of //trunk// sources.  Feel free to deviate from these instructions to reduce the size of the workspace and the amount of data that must be downloaded.
+ 
+ Create a shell script called **svn-co.sh** that contains the following:
+ 
+ ==svn-co.sh==
+ 
+   #!/bin/bash
+   #
+   for dir in arch client maps server sounds
+   do
+     svn co https://crossfire.svn.sourceforge.net/svnroot/crossfire/${dir}/trunk trunk/${dir}
+   done
+   echo
+ 
+ ==svn-up.sh==
+ 
+ Create another shell script called **svn-up.sh** as follows:
+ 
+   #!/bin/bash
+   #
+   for co in trunk
+   do
+     for dir in arch client maps server sounds
+     do
+       WORKING=${co}/${dir}
+       if [ -d ${CWD}/${WORKING} ]
+       then
+         echo; echo ${WORKING}; echo
+         cd ${CWD}/${WORKING}
+         svn update
+         cd ${CWD}
+     done
+   done
+   echo
+ 
+ ==config.sh==
+ 
+ Create yet another shell script called **config.sh** as follows:
+ 
+   #!/bin/bash
+   #
+   export CFLAGS="-ggdb -g -O0"
+   PWD=`pwd`
+   if [ "${PWD/client/}" != "${PWD}" ]
+   then
+     autoreconf
+     ./configure --prefix=${RELDIR} --enable-cfgtk2
+   else
+     bash autogen.sh --prefix=${RELDIR} ${*}
+   fi
+   echo
+ 
+ ====SVN Checkout====
+ 
+    * Checkout a copy of the relevent portions of the repository.  The rest of this procedure assumes use of the above documented svn-co.sh script, and assumes that trunk is used to build pre-releases in preparation for a real release.
+ 
+       bash svn-co.sh
+ 
+    * Set up an environment variable that contains the revision information for the SVN Checkout.
+ 
+     RELREV=`svnversion arch`
+ 
+ =====Pre-Release Procedure=====
+ 
+ ====Arch & Maps====
+ 
+ The process for both the arch and maps directory is the same - the only difference is the name of the files/paths.
+ 
+   * Make an archive of arch directory.  Note we want the arch directory called 'arch' in the archive, hence the symlink.  Gnu tar is used:
+ 
+   cd ${RELDIR}/arch
+   ln -s trunk arch
+   gtar -chvz --exclude=.svn \
+     -f ${RELDIR}/crossfire-2.0.0-r${RELREV}.arch.tar.gz arch
+ 
+   * Make an archive of the maps directory.  Again, note the naming of paths in the archive is achieved with a symlink:
+ 
+   cd ${RELDIR}/maps
+   ln -s trunk maps
+   gtar -chvz --exclude=.svn \
+     -f ${RELDIR}/crossfire-2.0.0-r${RELREV}.maps.tar.gz maps
+ 
+   * Make a bzip2 copy of the maps because it saves considerable space.  This may take a little while depending on speed of your system.
+ 
+   cd ${RELDIR}
+   gunzip -c crossfire-2.0.0-r${RELREV}.maps.tar.gz \
+   | bzip2 -c9 > crossfire-2.0.0-r${RELREV}.maps.tar.bz2
+ 
+   * Pre-release of arch and maps is now complete.
+     
+ ====Client====
+ 
+   * Update various files with the new version number.  Change the "dev" portion of the 2.0.dev settings to match the actual revision of the checkout.
+ 
+   cd ${RELDIR}/client/trunk
+   ex +/AC_INIT.*2.0.dev +s at dev@r${RELREV}@ +:wq configure.ac
+   ex +/%define.*2.0.dev +s at dev@r${RELREV}@ \
+      +/%define.basedir +s@/export/home/crossfire@${RELDIR}@ \
+      +/%define._source +s@/Crossfire@@ +:wq crossfire-client.spec
+ 
+   * Reconfigure the client.
+ 
+   bash ${RELDIR}/config.sh
+ 
+    * Verify the ./configure report indicates ''yes'' for all Build and Scripting options before proceeding to the next step.
+ 
+   * Create a crossfire-client-2.0.r${RELREV}.tar.gz.
+ 
+   make dist
+   mv crossfire-client-2.0.r${RELREV}* ${RELDIR}
+ 
+   * Unpack the archive, and verify it works:
+ 
+   cd ${RELDIR}
+   gtar xvfz crossfire-client-2.0.r${RELREV}.tar.gz
+   cd crossfire-client-2.0.r${RELREV} 
+   ./configure --prefix=${RELDIR} --enable-cfgtk2
+   make -s
+ 
+     * Make sure there are no errors.
+ 
+   make install
+ 
+     * run cfclient, gcfclient, gcfclient2 and make sure they are not braindead - being able to connect to a server and log in is usually what I do
+ 
+   cd ${RELDIR}/bin
+   ./cfclient
+   ./gcfclient
+   ./gcfclient2
+   cd ${RELDIR}
+ 
+   * Make sounds archive
+ 
+   cd ${RELDIR}/sounds
+   ln -s trunk sounds
+   gtar -chvz --exclude=.svn \
+     -f ../crossfire-client-sounds-2.0.r${RELREV}.tar.gz sounds
+ 
+   * Make an image archive for the client.  Needed for RPM building.  Need a server tree with a properly linked arch tree.
+ 
+   cd ../server
+   ln -s trunk server
+   cd server
+   bash ../../config.sh
+   make
+   cd lib
+   ln -s ../../../arch/trunk arch
+   adm/collect_images.pl -archive
+   cd ..
+   mv crossfire-images.tar ../../crossfire-client-images-2.0.r${RELREV}.tar
+   gzip -v9 crossfire-client-images-2.0.r${RELREV}.tar
+ 
+ ===Client RPM Files===
+ 
+   * The client archives above must be built prior to creating RPMs.
+   * 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.
+ 
+   cd ${RELDIR}/client/trunk
+   ex +/%define.*2.0.dev +s at dev@r${RELREV}@ \
+     +/%define.basedir +s@/export/home/crossfire@${RELDIR}@ \
+     +/%define._source +s@/Crossfire@@ +:wq crossfire-client.spec
+ 
+   * Build the RPMs:
+ 
+   cd ${RELDIR}
+   rpmbuild -ba client/trunk/crossfire-client.spec
+ 
+   * If there are errors, rpmbuild will tell you.
+   * RPMs will be put in _rpmdir/<architecture>
  


IP-Address  : 68.88.122.208
Old Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien?rev=1201646417
New Revision: http://wiki.metalforge.net/doku.php/user:kbulgrien

-- 
This mail was generated by DokuWiki at
http://wiki.metalforge.net/




More information about the crossfire-wiki mailing list