Files
oldlinux-files/Ref-docs/manual gdb/gdbint/gdbint_15.html
2024-02-19 00:21:47 -05:00

1300 lines
47 KiB
HTML

<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on October, 18 2002 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
-->
<HEAD>
<TITLE>GDB Internals: Releasing GDB</TITLE>
<META NAME="description" CONTENT="GDB Internals: Releasing GDB">
<META NAME="keywords" CONTENT="GDB Internals: Releasing GDB">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">
</HEAD>
<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC129"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_14.html#SEC127"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC130"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_2.html#SEC2"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1> 15. Releasing GDB </H1>
<!--docid::SEC129::-->
<P>
<HR SIZE="6">
<A NAME="SEC130"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC131"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC133"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 15.1 Versions and Branches </H2>
<!--docid::SEC130::-->
<P>
<HR SIZE="6">
<A NAME="SEC131"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC130"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC132"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC130"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC133"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 15.1.1 Version Identifiers </H3>
<!--docid::SEC131::-->
<P>
GDB's version is determined by the file <TT>`gdb/version.in'</TT>.
</P><P>
GDB's mainline uses ISO dates to differentiate between
versions. The CVS repository uses <VAR>YYYY</VAR>-<VAR>MM</VAR>-<VAR>DD</VAR>-cvs
while the corresponding snapshot uses <VAR>YYYYMMDD</VAR>.
</P><P>
GDB's release branch uses a slightly more complicated scheme.
When the branch is first cut, the mainline version identifier is
prefixed with the <VAR>major</VAR>.<VAR>minor</VAR> from of the previous release
series but with .90 appended. As draft releases are drawn from the
branch, the minor minor number (.90) is incremented. Once the first
release (<VAR>M</VAR>.<VAR>N</VAR>) has been made, the version prefix is updated
to <VAR>M</VAR>.<VAR>N</VAR>.0.90 (dot zero, dot ninety). Follow on releases have
an incremented minor minor version number (.0).
</P><P>
Using 5.1 (previous) and 5.2 (current), the example below illustrates a
typical sequence of version identifiers:
</P><P>
<DL COMPACT>
<DT>5.1.1
<DD>final release from previous branch
<DT>2002-03-03-cvs
<DD>main-line the day the branch is cut
<DT>5.1.90-2002-03-03-cvs
<DD>corresponding branch version
<DT>5.1.91
<DD>first draft release candidate
<DT>5.1.91-2002-03-17-cvs
<DD>updated branch version
<DT>5.1.92
<DD>second draft release candidate
<DT>5.1.92-2002-03-31-cvs
<DD>updated branch version
<DT>5.1.93
<DD>final release candidate (see below)
<DT>5.2
<DD>official release
<DT>5.2.0.90-2002-04-07-cvs
<DD>updated CVS branch version
<DT>5.2.1
<DD>second official release
</DL>
<P>
Notes:
</P><P>
<UL>
<LI>
Minor minor minor draft release candidates such as 5.2.0.91 have been
omitted from the example. Such release candidates are, typically, never
made.
<LI>
For 5.1.93 the bziped tar ball <TT>`gdb-5.1.93.tar.bz2'</TT> is just the
official <TT>`gdb-5.2.tar'</TT> renamed and compressed.
</UL>
<P>
To avoid version conflicts, vendors are expected to modify the file
<TT>`gdb/version.in'</TT> to include a vendor unique alphabetic identifier
(an official GDB release never uses alphabetic characters in
its version identifer).
</P><P>
Since GDB does not make minor minor minor releases (e.g.,
5.1.0.1) the conflict between that and a minor minor draft release
identifier (e.g., 5.1.0.90) is avoided.
</P><P>
<HR SIZE="6">
<A NAME="SEC132"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC131"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC133"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC130"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC133"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 15.1.2 Branches </H3>
<!--docid::SEC132::-->
<P>
GDB draws a release series (5.2, 5.2.1, <small>...</small>) from a single
release branch (gdb_5_2-branch). Since minor minor minor releases
(5.1.0.1) are not made, the need to branch the release branch is avoided
(it also turns out that the effort required for such a a branch and
release is significantly greater than the effort needed to create a new
release from the head of the release branch).
</P><P>
Releases 5.0 and 5.1 used branch and release tags of the form:
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>gdb_N_M-YYYY-MM-DD-branchpoint
gdb_N_M-YYYY-MM-DD-branch
gdb_M_N-YYYY-MM-DD-release
</FONT></pre></td></tr></table></P><P>
Release 5.2 is trialing the branch and release tags:
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>gdb_N_M-YYYY-MM-DD-branchpoint
gdb_N_M-branch
gdb_M_N-YYYY-MM-DD-release
</FONT></pre></td></tr></table></P><P>
<EM>Pragmatics: The branchpoint and release tags need to identify when
a branch and release are made. The branch tag, denoting the head of the
branch, does not have this criteria.</EM>
</P><P>
<HR SIZE="6">
<A NAME="SEC133"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC132"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC134"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC134"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 15.2 Branch Commit Policy </H2>
<!--docid::SEC133::-->
<P>
The branch commit policy is pretty slack. GDB releases 5.0,
5.1 and 5.2 all used the below:
</P><P>
<UL>
<LI>
The <TT>`gdb/MAINTAINERS'</TT> file still holds.
<LI>
Don't fix something on the branch unless/until it is also fixed in the
trunk. If this isn't possible, mentioning it in the <TT>`gdb/PROBLEMS'</TT>
file is better than committing a hack.
<LI>
When considering a patch for the branch, suggested criteria include:
Does it fix a build? Does it fix the sequence <KBD>break main; run</KBD>
when debugging a static binary?
<LI>
The further a change is from the core of GDB, the less likely
the change will worry anyone (e.g., target specific code).
<LI>
Only post a proposal to change the core of GDB after you've
sent individual bribes to all the people listed in the
<TT>`MAINTAINERS'</TT> file <TT>;-)</TT>
</UL>
<P>
<EM>Pragmatics: Provided updates are restricted to non-core
functionality there is little chance that a broken change will be fatal.
This means that changes such as adding a new architectures or (within
reason) support for a new host are considered acceptable.</EM>
</P><P>
<HR SIZE="6">
<A NAME="SEC134"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC133"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC135"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC135"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 15.3 Obsoleting code </H2>
<!--docid::SEC134::-->
<P>
Before anything else, poke the other developers (and around the source
code) to see if there is anything that can be removed from GDB
(an old target, an unused file).
</P><P>
Obsolete code is identified by adding an <CODE>OBSOLETE</CODE> prefix to every
line. Doing this means that it is easy to identify something that has
been obsoleted when greping through the sources.
</P><P>
The process is done in stages -- this is mainly to ensure that the
wider GDB community has a reasonable opportunity to respond.
Remember, everything on the Internet takes a week.
</P><P>
<OL>
<LI>
Post the proposal on <A HREF="mailto:gdb@sources.redhat.com">the GDB mailing
list</A> Creating a bug report to track the task's state, is also highly
recommended.
<LI>
Wait a week or so.
<LI>
Post the proposal on <A HREF="mailto:gdb-announce@sources.redhat.com">the GDB
Announcement mailing list</A>.
<LI>
Wait a week or so.
<LI>
Go through and edit all relevant files and lines so that they are
prefixed with the word <CODE>OBSOLETE</CODE>.
<LI>
Wait until the next GDB version, containing this obsolete code, has been
released.
<LI>
Remove the obsolete code.
</OL>
<P>
<EM>Maintainer note: While removing old code is regrettable it is
hopefully better for GDB's long term development. Firstly it
helps the developers by removing code that is either no longer relevant
or simply wrong. Secondly since it removes any history associated with
the file (effectively clearing the slate) the developer has a much freer
hand when it comes to fixing broken files.</EM>
</P><P>
<HR SIZE="6">
<A NAME="SEC135"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC134"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC140"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC142"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC142"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 15.4 Before the Branch </H2>
<!--docid::SEC135::-->
<P>
The most important objective at this stage is to find and fix simple
changes that become a pain to track once the branch is created. For
instance, configuration problems that stop GDB from even
building. If you can't get the problem fixed, document it in the
<TT>`gdb/PROBLEMS'</TT> file.
</P><P>
<A NAME="SEC136"></A>
<H3> Prompt for <TT>`gdb/NEWS'</TT> </H3>
<!--docid::SEC136::-->
<P>
People always forget. Send a post reminding them but also if you know
something interesting happened add it yourself. The <CODE>schedule</CODE>
script will mention this in its e-mail.
</P><P>
<A NAME="SEC137"></A>
<H3> Review <TT>`gdb/README'</TT> </H3>
<!--docid::SEC137::-->
<P>
Grab one of the nightly snapshots and then walk through the
<TT>`gdb/README'</TT> looking for anything that can be improved. The
<CODE>schedule</CODE> script will mention this in its e-mail.
</P><P>
<A NAME="SEC138"></A>
<H3> Refresh any imported files. </H3>
<!--docid::SEC138::-->
<P>
A number of files are taken from external repositories. They include:
</P><P>
<UL>
<LI>
<TT>`texinfo/texinfo.tex'</TT>
<LI>
<TT>`config.guess'</TT> et. al. (see the top-level <TT>`MAINTAINERS'</TT>
file)
<LI>
<TT>`etc/standards.texi'</TT>, <TT>`etc/make-stds.texi'</TT>
</UL>
<P>
<A NAME="SEC139"></A>
<H3> Check the ARI </H3>
<!--docid::SEC139::-->
<P>
<A HREF="http://sources.redhat.com/gdb/ari">A.R.I.</A> is an <CODE>awk</CODE> script
(Awk Regression Index ;-) that checks for a number of errors and coding
conventions. The checks include things like using <CODE>malloc</CODE> instead
of <CODE>xmalloc</CODE> and file naming problems. There shouldn't be any
regressions.
</P><P>
<HR SIZE="6">
<A NAME="SEC140"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC135"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC141"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC142"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC135"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC142"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 15.4.1 Review the bug data base </H3>
<!--docid::SEC140::-->
<P>
Close anything obviously fixed.
</P><P>
<HR SIZE="6">
<A NAME="SEC141"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC140"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC142"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC142"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC135"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC142"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 15.4.2 Check all cross targets build </H3>
<!--docid::SEC141::-->
<P>
The targets are listed in <TT>`gdb/MAINTAINERS'</TT>.
</P><P>
<HR SIZE="6">
<A NAME="SEC142"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC141"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC149"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC149"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 15.5 Cut the Branch </H2>
<!--docid::SEC142::-->
<P>
<A NAME="SEC143"></A>
<H3> Create the branch </H3>
<!--docid::SEC143::-->
<P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ u=5.1
$ v=5.2
$ V=`echo $v | sed 's/\./_/g'`
$ D=`date -u +%Y-%m-%d`
$ echo $u $V $D
5.1 5_2 2002-03-03
$ echo cvs -f -d :ext:sources.redhat.com:/cvs/src rtag \
-D $D-gmt gdb_$V-$D-branchpoint insight+dejagnu
cvs -f -d :ext:sources.redhat.com:/cvs/src rtag
-D 2002-03-03-gmt gdb_5_2-2002-03-03-branchpoint insight+dejagnu
$ ^echo ^^
...
$ echo cvs -f -d :ext:sources.redhat.com:/cvs/src rtag \
-b -r gdb_$V-$D-branchpoint gdb_$V-branch insight+dejagnu
cvs -f -d :ext:sources.redhat.com:/cvs/src rtag \
-b -r gdb_5_2-2002-03-03-branchpoint gdb_5_2-branch insight+dejagnu
$ ^echo ^^
...
$
</FONT></pre></td></tr></table></P><P>
<UL>
<LI>
by using <KBD>-D YYYY-MM-DD-gmt</KBD> the branch is forced to an exact
date/time.
<LI>
the trunk is first taged so that the branch point can easily be found
<LI>
Insight (which includes GDB) and dejagnu are all tagged at the same time
<LI>
<TT>`version.in'</TT> gets bumped to avoid version number conflicts
<LI>
the reading of <TT>`.cvsrc'</TT> is disabled using <TT>`-f'</TT>
</UL>
<P>
<A NAME="SEC144"></A>
<H3> Update <TT>`version.in'</TT> </H3>
<!--docid::SEC144::-->
<P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ u=5.1
$ v=5.2
$ V=`echo $v | sed 's/\./_/g'`
$ echo $u $v$V
5.1 5_2
$ cd /tmp
$ echo cvs -f -d :ext:sources.redhat.com:/cvs/src co \
-r gdb_$V-branch src/gdb/version.in
cvs -f -d :ext:sources.redhat.com:/cvs/src co
-r gdb_5_2-branch src/gdb/version.in
$ ^echo ^^
U src/gdb/version.in
$ cd src/gdb
$ echo $u.90-0000-00-00-cvs &#62; version.in
$ cat version.in
5.1.90-0000-00-00-cvs
$ cvs -f commit version.in
</FONT></pre></td></tr></table></P><P>
<UL>
<LI>
<TT>`0000-00-00'</TT> is used as a date to pump prime the version.in update
mechanism
<LI>
<TT>`.90'</TT> and the previous branch version are used as fairly arbitrary
initial branch version number
</UL>
<P>
<A NAME="SEC145"></A>
<H3> Update the web and news pages </H3>
<!--docid::SEC145::-->
<P>
Something?
</P><P>
<A NAME="SEC146"></A>
<H3> Tweak cron to track the new branch </H3>
<!--docid::SEC146::-->
<P>
The file <TT>`gdbadmin/cron/crontab'</TT> contains gdbadmin's cron table.
This file needs to be updated so that:
</P><P>
<UL>
<LI>
a daily timestamp is added to the file <TT>`version.in'</TT>
<LI>
the new branch is included in the snapshot process
</UL>
<P>
See the file <TT>`gdbadmin/cron/README'</TT> for how to install the updated
cron table.
</P><P>
The file <TT>`gdbadmin/ss/README'</TT> should also be reviewed to reflect
any changes. That file is copied to both the branch/ and current/
snapshot directories.
</P><P>
<A NAME="SEC147"></A>
<H3> Update the NEWS and README files </H3>
<!--docid::SEC147::-->
<P>
The <TT>`NEWS'</TT> file needs to be updated so that on the branch it refers
to <EM>changes in the current release</EM> while on the trunk it also
refers to <EM>changes since the current release</EM>.
</P><P>
The <TT>`README'</TT> file needs to be updated so that it refers to the
current release.
</P><P>
<A NAME="SEC148"></A>
<H3> Post the branch info </H3>
<!--docid::SEC148::-->
<P>
Send an announcement to the mailing lists:
</P><P>
<UL>
<LI>
<A HREF="mailto:gdb-announce@sources.redhat.com">GDB Announcement mailing list</A>
<LI>
<A HREF="mailto:gdb@sources.redhat.com">GDB Discsussion mailing list</A> and
<A HREF="mailto:gdb-testers@sources.redhat.com">GDB Discsussion mailing list</A>
</UL>
<P>
<EM>Pragmatics: The branch creation is sent to the announce list to
ensure that people people not subscribed to the higher volume discussion
list are alerted.</EM>
</P><P>
The announcement should include:
</P><P>
<UL>
<LI>
the branch tag
<LI>
how to check out the branch using CVS
<LI>
the date/number of weeks until the release
<LI>
the branch commit policy
still holds.
</UL>
<P>
<HR SIZE="6">
<A NAME="SEC149"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC142"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC150"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC150"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 15.6 Stabilize the branch </H2>
<!--docid::SEC149::-->
<P>
Something goes here.
</P><P>
<HR SIZE="6">
<A NAME="SEC150"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC149"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC151"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC174"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC174"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 15.7 Create a Release </H2>
<!--docid::SEC150::-->
<P>
The process of creating and then making available a release is broken
down into a number of stages. The first part addresses the technical
process of creating a releasable tar ball. The later stages address the
process of releasing that tar ball.
</P><P>
When making a release candidate just the first section is needed.
</P><P>
<HR SIZE="6">
<A NAME="SEC151"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC150"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC159"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC174"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC150"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC174"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 15.7.1 Create a release candidate </H3>
<!--docid::SEC151::-->
<P>
The objective at this stage is to create a set of tar balls that can be
made available as a formal release (or as a less formal release
candidate).
</P><P>
<A NAME="SEC152"></A>
<H4> Freeze the branch </H4>
<!--docid::SEC152::-->
<P>
Send out an e-mail notifying everyone that the branch is frozen to
<A HREF="mailto:gdb-patches@sources.redhat.com">gdb-patches@sources.redhat.com</A>.
</P><P>
<A NAME="SEC153"></A>
<H4> Establish a few defaults. </H4>
<!--docid::SEC153::-->
<P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ b=gdb_5_2-branch
$ v=5.2
$ t=/sourceware/snapshot-tmp/gdbadmin-tmp
$ echo $t/$b/$v
/sourceware/snapshot-tmp/gdbadmin-tmp/gdb_5_2-branch/5.2
$ mkdir -p $t/$b/$v
$ cd $t/$b/$v
$ pwd
/sourceware/snapshot-tmp/gdbadmin-tmp/gdb_5_2-branch/5.2
$ which autoconf
/home/gdbadmin/bin/autoconf
$
</FONT></pre></td></tr></table></P><P>
Notes:
</P><P>
<UL>
<LI>
Check the <CODE>autoconf</CODE> version carefully. You want to be using the
version taken from the <TT>`binutils'</TT> snapshot directory, which can be
found at <A HREF="ftp://sources.redhat.com/pub/binutils/">ftp://sources.redhat.com/pub/binutils/</A>. It is very
unlikely that a system installed version of <CODE>autoconf</CODE> (e.g.,
<TT>`/usr/bin/autoconf'</TT>) is correct.
</UL>
<P>
<A NAME="SEC154"></A>
<H4> Check out the relevant modules: </H4>
<!--docid::SEC154::-->
<P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ for m in gdb insight dejagnu
do
( mkdir -p $m &#38;&#38; cd $m &#38;&#38; cvs -q -f -d /cvs/src co -P -r $b $m )
done
$
</FONT></pre></td></tr></table></P><P>
Note:
</P><P>
<UL>
<LI>
The reading of <TT>`.cvsrc'</TT> is disabled (<TT>`-f'</TT>) so that there isn't
any confusion between what is written here and what your local
<CODE>cvs</CODE> really does.
</UL>
<P>
<A NAME="SEC155"></A>
<H4> Update relevant files. </H4>
<!--docid::SEC155::-->
<P>
<DL COMPACT>
<DT><TT>`gdb/NEWS'</TT>
<DD><P>
Major releases get their comments added as part of the mainline. Minor
releases should probably mention any significant bugs that were fixed.
</P><P>
Don't forget to include the <TT>`ChangeLog'</TT> entry.
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ emacs gdb/src/gdb/NEWS
...
c-x 4 a
...
c-x c-s c-x c-c
$ cp gdb/src/gdb/NEWS insight/src/gdb/NEWS
$ cp gdb/src/gdb/ChangeLog insight/src/gdb/ChangeLog
</FONT></pre></td></tr></table></P><P>
<DT><TT>`gdb/README'</TT>
<DD><P>
You'll need to update:
</P><P>
<UL>
<LI>
the version
<LI>
the update date
<LI>
who did it
</UL>
<P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ emacs gdb/src/gdb/README
...
c-x 4 a
...
c-x c-s c-x c-c
$ cp gdb/src/gdb/README insight/src/gdb/README
$ cp gdb/src/gdb/ChangeLog insight/src/gdb/ChangeLog
</FONT></pre></td></tr></table></P><P>
<EM>Maintainer note: Hopefully the <TT>`README'</TT> file was reviewed
before the initial branch was cut so just a simple substitute is needed
to get it updated.</EM>
</P><P>
<EM>Maintainer note: Other projects generate <TT>`README'</TT> and
<TT>`INSTALL'</TT> from the core documentation. This might be worth
pursuing.</EM>
</P><P>
<DT><TT>`gdb/version.in'</TT>
<DD><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ echo $v &#62; gdb/src/gdb/version.in
$ cat gdb/src/gdb/version.in
5.2
$ emacs gdb/src/gdb/version.in
...
c-x 4 a
... Bump to version ...
c-x c-s c-x c-c
$ cp gdb/src/gdb/version.in insight/src/gdb/version.in
$ cp gdb/src/gdb/ChangeLog insight/src/gdb/ChangeLog
</FONT></pre></td></tr></table></P><P>
<DT><TT>`dejagnu/src/dejagnu/configure.in'</TT>
<DD><P>
Dejagnu is more complicated. The version number is a parameter to
<CODE>AM_INIT_AUTOMAKE</CODE>. Tweak it to read something like gdb-5.1.91.
</P><P>
Don't forget to re-generate <TT>`configure'</TT>.
</P><P>
Don't forget to include a <TT>`ChangeLog'</TT> entry.
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ emacs dejagnu/src/dejagnu/configure.in
...
c-x 4 a
...
c-x c-s c-x c-c
$ ( cd dejagnu/src/dejagnu &#38;&#38; autoconf )
</FONT></pre></td></tr></table></P><P>
</DL>
<P>
<A NAME="SEC156"></A>
<H4> Do the dirty work </H4>
<!--docid::SEC156::-->
<P>
This is identical to the process used to create the daily snapshot.
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ for m in gdb insight
do
( cd $m/src &#38;&#38; gmake -f Makefile.in $m.tar )
done
$ ( m=dejagnu; cd $m/src &#38;&#38; gmake -f Makefile.in $m.tar.bz2 )
</FONT></pre></td></tr></table></P><P>
<A NAME="SEC157"></A>
<H4> Check the source files </H4>
<!--docid::SEC157::-->
<P>
You're looking for files that have mysteriously disappeared.
<KBD>distclean</KBD> has the habit of deleting files it shouldn't. Watch out
for the <TT>`version.in'</TT> update <KBD>cronjob</KBD>.
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ ( cd gdb/src &#38;&#38; cvs -f -q -n update )
M djunpack.bat
? gdb-5.1.91.tar
? proto-toplev
<small>...</small> lots of generated files <small>...</small>
M gdb/ChangeLog
M gdb/NEWS
M gdb/README
M gdb/version.in
<small>...</small> lots of generated files <small>...</small>
$
</FONT></pre></td></tr></table></P><P>
<EM>Don't worry about the <TT>`gdb.info-??'</TT> or
<TT>`gdb/p-exp.tab.c'</TT>. They were generated (and yes <TT>`gdb.info-1'</TT>
was also generated only something strange with CVS means that they
didn't get supressed). Fixing it would be nice though.</EM>
</P><P>
<A NAME="SEC158"></A>
<H4> Create compressed versions of the release </H4>
<!--docid::SEC158::-->
<P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ cp */src/*.tar .
$ cp */src/*.bz2 .
$ ls -F
dejagnu/ dejagnu-gdb-5.2.tar.bz2 gdb/ gdb-5.2.tar insight/ insight-5.2.tar
$ for m in gdb insight
do
bzip2 -v -9 -c $m-$v.tar &#62; $m-$v.tar.bz2
gzip -v -9 -c $m-$v.tar &#62; $m-$v.tar.gz
done
$
</FONT></pre></td></tr></table></P><P>
Note:
</P><P>
<UL>
<LI>
A pipe such as <KBD>bunzip2 &#60; xxx.bz2 | gzip -9 &#62; xxx.gz</KBD> is not since,
in that mode, <CODE>gzip</CODE> does not know the name of the file and, hence,
can not include it in the compressed file. This is also why the release
process runs <CODE>tar</CODE> and <CODE>bzip2</CODE> as separate passes.
</UL>
<P>
<HR SIZE="6">
<A NAME="SEC159"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC151"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC160"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC160"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC150"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC174"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 15.7.2 Sanity check the tar ball </H3>
<!--docid::SEC159::-->
<P>
Pick a popular machine (Solaris/PPC?) and try the build on that.
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ bunzip2 &#60; gdb-5.2.tar.bz2 | tar xpf -
$ cd gdb-5.2
$ ./configure
$ make
<small>...</small>
$ ./gdb/gdb ./gdb/gdb
GNU gdb 5.2
<small>...</small>
(gdb) b main
Breakpoint 1 at 0x80732bc: file main.c, line 734.
(gdb) run
Starting program: /tmp/gdb-5.2/gdb/gdb
Breakpoint 1, main (argc=1, argv=0xbffff8b4) at main.c:734
734 catch_errors (captured_main, &#38;args, "", RETURN_MASK_ALL);
(gdb) print args
$1 = {argc = 136426532, argv = 0x821b7f0}
(gdb)
</FONT></pre></td></tr></table></P><P>
<HR SIZE="6">
<A NAME="SEC160"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC159"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC161"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC161"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC150"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC174"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 15.7.3 Make a release candidate available </H3>
<!--docid::SEC160::-->
<P>
If this is a release candidate then the only remaining steps are:
</P><P>
<OL>
<LI>
Commit <TT>`version.in'</TT> and <TT>`ChangeLog'</TT>
<LI>
Tweak <TT>`version.in'</TT> (and <TT>`ChangeLog'</TT> to read
<VAR>L</VAR>.<VAR>M</VAR>.<VAR>N</VAR>-0000-00-00-cvs so that the version update
process can restart.
<LI>
Make the release candidate available in
<A HREF="ftp://sources.redhat.com/pub/gdb/snapshots/branch">ftp://sources.redhat.com/pub/gdb/snapshots/branch</A>
<LI>
Notify the relevant mailing lists ( <A HREF="mailto:gdb@sources.redhat.com">gdb@sources.redhat.com</A> and
<A HREF="mailto:gdb-testers@sources.redhat.com">gdb-testers@sources.redhat.com</A> that the candidate is available.
</OL>
<P>
<HR SIZE="6">
<A NAME="SEC161"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC160"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC167"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC167"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC150"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC174"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 15.7.4 Make a formal release available </H3>
<!--docid::SEC161::-->
<P>
(And you thought all that was required was to post an e-mail.)
</P><P>
<A NAME="SEC162"></A>
<H4> Install on sware </H4>
<!--docid::SEC162::-->
<P>
Copy the new files to both the release and the old release directory:
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ cp *.bz2 *.gz ~ftp/pub/gdb/old-releases/
$ cp *.bz2 *.gz ~ftp/pub/gdb/releases
</FONT></pre></td></tr></table></P><P>
Clean up the releases directory so that only the most recent releases
are available (e.g. keep 5.2 and 5.2.1 but remove 5.1):
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ cd ~ftp/pub/gdb/releases
$ rm <small>...</small>
</FONT></pre></td></tr></table></P><P>
Update the file <TT>`README'</TT> and <TT>`.message'</TT> in the releases
directory:
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ vi README
<small>...</small>
$ rm -f .message
$ ln README .message
</FONT></pre></td></tr></table></P><P>
<A NAME="SEC163"></A>
<H4> Update the web pages. </H4>
<!--docid::SEC163::-->
<P>
<DL COMPACT>
<DT><TT>`htdocs/download/ANNOUNCEMENT'</TT>
<DD>This file, which is posted as the official announcement, includes:
<UL>
<LI>
General announcement
<LI>
News. If making an <VAR>M</VAR>.<VAR>N</VAR>.1 release, retain the news from
earlier <VAR>M</VAR>.<VAR>N</VAR> release.
<LI>
Errata
</UL>
<P>
<DT><TT>`htdocs/index.html'</TT>
<DD><DT><TT>`htdocs/news/index.html'</TT>
<DD><DT><TT>`htdocs/download/index.html'</TT>
<DD>These files include:
<UL>
<LI>
announcement of the most recent release
<LI>
news entry (remember to update both the top level and the news directory).
</UL>
These pages also need to be regenerate using <CODE>index.sh</CODE>.
<P>
<DT><TT>`download/onlinedocs/'</TT>
<DD>You need to find the magic command that is used to generate the online
docs from the <TT>`.tar.bz2'</TT>. The best way is to look in the output
from one of the nightly <CODE>cron</CODE> jobs and then just edit accordingly.
Something like:
<P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ ~/ss/update-web-docs \
~ftp/pub/gdb/releases/gdb-5.2.tar.bz2 \
$PWD/www \
/www/sourceware/htdocs/gdb/download/onlinedocs \
gdb
</FONT></pre></td></tr></table></P><P>
<DT><TT>`download/ari/'</TT>
<DD>Just like the online documentation. Something like:
<P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ /bin/sh ~/ss/update-web-ari \
~ftp/pub/gdb/releases/gdb-5.2.tar.bz2 \
$PWD/www \
/www/sourceware/htdocs/gdb/download/ari \
gdb
</FONT></pre></td></tr></table></P><P>
</DL>
<P>
<A NAME="SEC164"></A>
<H4> Shadow the pages onto gnu </H4>
<!--docid::SEC164::-->
<P>
Something goes here.
</P><P>
<A NAME="SEC165"></A>
<H4> Install the GDB tar ball on GNU </H4>
<!--docid::SEC165::-->
<P>
At the time of writing, the GNU machine was <KBD>gnudist.gnu.org</KBD> in
<TT>`~ftp/gnu/gdb'</TT>.
</P><P>
<A NAME="SEC166"></A>
<H4> Make the <TT>`ANNOUNCEMENT'</TT> </H4>
<!--docid::SEC166::-->
<P>
Post the <TT>`ANNOUNCEMENT'</TT> file you created above to:
</P><P>
<UL>
<LI>
<A HREF="mailto:gdb-announce@sources.redhat.com">GDB Announcement mailing list</A>
<LI>
<A HREF="mailto:info-gnu@gnu.org">General GNU Announcement list</A> (but delay it a
day or so to let things get out)
<LI>
<A HREF="mailto:bug-gdb@gnu.org">GDB Bug Report mailing list</A>
</UL>
<P>
<HR SIZE="6">
<A NAME="SEC167"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC161"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC174"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC174"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC150"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC174"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H3> 15.7.5 Cleanup </H3>
<!--docid::SEC167::-->
<P>
The release is out but you're still not finished.
</P><P>
<A NAME="SEC168"></A>
<H4> Commit outstanding changes </H4>
<!--docid::SEC168::-->
<P>
In particular you'll need to commit any changes to:
</P><P>
<UL>
<LI>
<TT>`gdb/ChangeLog'</TT>
<LI>
<TT>`gdb/version.in'</TT>
<LI>
<TT>`gdb/NEWS'</TT>
<LI>
<TT>`gdb/README'</TT>
</UL>
<P>
<A NAME="SEC169"></A>
<H4> Tag the release </H4>
<!--docid::SEC169::-->
<P>
Something like:
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ d=`date -u +%Y-%m-%d`
$ echo $d
2002-01-24
$ ( cd insight/src/gdb &#38;&#38; cvs -f -q update )
$ ( cd insight/src &#38;&#38; cvs -f -q tag gdb_5_2-$d-release )
</FONT></pre></td></tr></table></P><P>
Insight is used since that contains more of the release than
GDB (<CODE>dejagnu</CODE> doesn't get tagged but I think we can live
with that).
</P><P>
<A NAME="SEC170"></A>
<H4> Mention the release on the trunk </H4>
<!--docid::SEC170::-->
<P>
Just put something in the <TT>`ChangeLog'</TT> so that the trunk also
indicates when the release was made.
</P><P>
<A NAME="SEC171"></A>
<H4> Restart <TT>`gdb/version.in'</TT> </H4>
<!--docid::SEC171::-->
<P>
If <TT>`gdb/version.in'</TT> does not contain an ISO date such as
<KBD>2002-01-24</KBD> then the daily <CODE>cronjob</CODE> won't update it. Having
committed all the release changes it can be set to
<TT>`5.2.0_0000-00-00-cvs'</TT> which will restart things (yes the <KBD>_</KBD>
is important - it affects the snapshot process).
</P><P>
Don't forget the <TT>`ChangeLog'</TT>.
</P><P>
<A NAME="SEC172"></A>
<H4> Merge into trunk </H4>
<!--docid::SEC172::-->
<P>
The files committed to the branch may also need changes merged into the
trunk.
</P><P>
<A NAME="SEC173"></A>
<H4> Revise the release schedule </H4>
<!--docid::SEC173::-->
<P>
Post a revised release schedule to <A HREF="mailto:gdb@sources.redhat.com">GDB
Discussion List</A> with an updated announcement. The schedule can be
generated by running:
</P><P>
<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>$ ~/ss/schedule `date +%s` schedule
</FONT></pre></td></tr></table></P><P>
The first parameter is approximate date/time in seconds (from the epoch)
of the most recent release.
</P><P>
Also update the schedule <CODE>cronjob</CODE>.
</P><P>
<HR SIZE="6">
<A NAME="SEC174"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC167"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H2> 15.8 Post release </H2>
<!--docid::SEC174::-->
<P>
Remove any <CODE>OBSOLETE</CODE> code.
</P><P>
<A NAME="Testsuite"></A>
</P><P>
<HR SIZE="6">
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_15.html#SEC129"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_16.html#SEC175"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_19.html#SEC186">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdbint_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>
<FONT SIZE="-1">
<address>
<p>Please send FSF &amp; GNU inquiries &amp; questions to <a
href="mailto:gnu@gnu.org">gnu@gnu.org</a>. There are also <a
href="http://www.gnu.org/home.html#ContactInfo">other ways to
contact</a> the FSF.</p>
<p>These pages are maintained by <a
href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
330, Boston, MA 02111, USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
</address>
This document was generated
by <I>GDB Administrator</I> on <I>October, 18 2002</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
</BODY>
</HTML>