<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Building a Bochs release</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="Bochs Developers Guide" HREF="book1.html"><LINK REL="UP" TITLE="Coding" HREF="c1095.html"><LINK REL="PREVIOUS" TITLE="patches:" HREF="x1132.html"><LINK REL="NEXT" TITLE="Webmastering" HREF="c1182.html"></HEAD ><BODY CLASS="SECTION" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Bochs Developers Guide</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="x1132.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Coding</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="c1182.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECTION" ><H1 CLASS="SECTION" ><A NAME="CVS-RELEASE" >Building a Bochs release</A ></H1 ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="AEN1138" >Preparing source files and CVS</A ></H2 ><P >Update version number and strings in configure.in. <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >VERSION="2.4.1" VER_STRING="2.4.1" REL_STRING="Build from CVS snapshot on June 7, 2009"</PRE ></TD ></TR ></TABLE > In the README file you have to update version number and date. Add some information about new features if necessary. <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >Bochs x86 Pentium+ Emulator Updated: Fri Mar 25 10:33:15 CET 2005 Version: 2.4.1</PRE ></TD ></TR ></TABLE > Check date, update/sumup info in CHANGES. Run autoconf to regenerate configure and check them in. Create a CVS tag to mark which revision of each file was used in the release. For prereleases I make a normal CVS tag like this: <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" > cvs tag REL_2_4_1_FINAL</PRE ></TD ></TR ></TABLE > But for a real release, I make a CVS branch tag AND a normal tag. <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" > cvs tag REL_2_4_BASE cvs tag -b REL_2_4</PRE ></TD ></TR ></TABLE > The base tag marks where the branch split off of the main trunk. This is very useful in maintaining the branch since you can do diffs against it. <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" > cvs diff -r REL_2_4_BASE -r HEAD cvs diff -r REL_2_4_BASE -r REL_2_0 cvs upd -j REL_2_4_BASE -j HEAD file etc.</PRE ></TD ></TR ></TABLE > The release and all bugfix releases after it are on the REL_2_2 branch. When the release is actually finalized, you can do this: <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" > cvs tag REL_2_4_FINAL</PRE ></TD ></TR ></TABLE > Now you can start building packages based on the created release tag.</P ></DIV ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="AEN1147" >Building the release on win32</A ></H2 ><P >These instructions require cygwin and MSVC++.</P ><P >In Cygwin: <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" > sh .conf.win32-vcpp # runs configure make win32_snap # unzip workspace, make a win32 source ZIP</PRE ></TD ></TR ></TABLE > Copy the source ZIP to a windows machine, if necessary.</P ><P >Open up Visual C++ and load the workspace file Bochs.dsw. Check the Build:Set Active Project Configuration is set the way you want it. For releases I use "Win32 Release".</P ><P >To create "bochsdbg.exe" with Bochs debugger support, manually change two lines in config.h to turn on the debugger. <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >#define BX_DEBUGGER 1 #define BX_DISASM 1</PRE ></TD ></TR ></TABLE > VC++ will rebuild Bochs with debugger and overwrite bochs.exe. To avoid trashing the non-debug version, move it out of the way while the debugger version is being built. Then rename the debugger version to bochsdbg.exe. <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >cd obj-release mv bochs.exe bochs-normal.exe (build again with BX_DEBUGGER=1 this time) mv bochs.exe bochsdbg.exe mv bochs-normal.exe bochs.exe</PRE ></TD ></TR ></TABLE ></P ><P >To get the docbook installed, you need to do something like this: <P ></P ><UL ><LI ><P > make dl_docbook </P ></LI ><LI ><P > copy up to date doc files </P ></LI ></UL > Then you can do <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >cd doc/docbook; touch */*.html</PRE ></TD ></TR ></TABLE > Do make install_win32 into /tmp or someplace: <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >make install_win32 prefix=/tmp/bochs-2.4.1</PRE ></TD ></TR ></TABLE > This copies all the files into /tmp/bochs-2.4.1 and then creates a binary ZIP at /tmp/bochs-2.4.1.zip. Rename that bochs-2.4.1.win32-bin.zip.</P ><P >Now make the NSIS installer package (the current script is known to work with NSIS 2.03) <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >cd build/win32/nsis</PRE ></TD ></TR ></TABLE > Unzip the binary ZIP file into bochs-$VERSION (must match Makefile) and then run make. <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >unzip ~/bochs-2.4.1.zip make</PRE ></TD ></TR ></TABLE > That gives an installer called <TT CLASS="FILENAME" >Bochs-2.4.1.exe</TT >. Test and upload it.</P ></DIV ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="AEN1168" >Building the release on Linux</A ></H2 ><P >Do a clean checkout using anonymous cvs, so that the source tarball will be all set up for anonymous cvs. First I'll create a clean directory called "clean-anon". <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >cvs -d:pserver:anonymous@bochs.cvs.sourceforge.net:/cvsroot/bochs login cvs -z3 -d:pserver:anonymous@bochs.cvs.sourceforge.net:/cvsroot/bochs \ checkout -d clean-anon bochs</PRE ></TD ></TR ></TABLE > Start with clean-anon which tracks the CVS head. Change its sticky tag so that it sticks to the release tag. <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >cp -a clean-anon bochs-2.4.1 cd bochs-2.4.1 cvs upd -P -r REL_2_4_1_FINAL cd .. tar czvf bochs-2.4.1.tar.gz --exclude CVS --exclude .cvsignore bochs-2.4.1</PRE ></TD ></TR ></TABLE > The source TAR file bochs-2.4.1.tar.gz is ready to upload.</P ><P >The RPM will be building using the configuration in .conf.linux with a few parameters from build/redhat/make-rpm. Make any last minute changes to .conf.linux. Any changes will go into the source RPM. WARNING : do not build in /tmp/bochs-XXX... <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >./build/redhat/make-rpm | tee ../build.txt</PRE ></TD ></TR ></TABLE > This produces two rpm files in the current directory. Test and upload.</P ></DIV ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="AEN1175" >Uploading files and creating a file release on SF</A ></H2 ><P >When you are ready with creating release packages you have to upload them to SF. Using the SF webupload feature is the easiest way to do this. <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="SCREEN" >https://frs.sourceforge.net/webupload</PRE ></TD ></TR ></TABLE > Note that you cannot modify or delete files after uploading them. If you don't do anything with the uploaded files, they will be deleted by SF after 7 to 14 days.</P ><P >To create or edit a file release you have to log in to the <B CLASS="COMMAND" >Admin</B > section on the SF project page of Bochs. Then you have to go to the <B CLASS="COMMAND" >File Releases</B > page and follow the instructions there.</P ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="x1132.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="book1.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="c1182.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >patches:</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="c1095.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Webmastering</TD ></TR ></TABLE ></DIV ></BODY ></HTML >