This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: Update gcc_release on 4.0 branch


The 4.0 branch version of gcc_release still used CVS.  I updated it
wholesale to the version used on the 4.1 branch, after consulting with
Joseph, who pointed out that the snapshots are all built using the
same release script.

The updated script seems to have worked (tested by building 4.0.3
RC1), so I've checked in this change, on the 4.1 branch.

--
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713

2006-03-05  Mark Mitchell  <mark@codesourcery.com>

	* gcc_release: Update to version from 4.1 branch.

Index: gcc_release
===================================================================
--- gcc_release	(revision 111679)
+++ gcc_release	(working copy)
@@ -25,8 +25,8 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with GCC; see the file COPYING.  If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
+# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
 #
 ########################################################################
 
@@ -65,19 +65,19 @@ inform() {
 usage() {
 cat <<EOF
 gcc_release -r release [-f] [further options]
-gcc_release -s name:cvsbranch [further options]
+gcc_release -s name:svnbranch [further options]
 
 Options:
 
   -r release           Version of the form X.Y or X.Y.Z.
-  -s name:cvsbranch    Create a snapshot, not a real release.
+  -s name:svnbranch    Create a snapshot, not a real release.
 
   -d destination       Local working directory where we will build the release
                        (default=${HOME}).
   -f                   Create a final release (and update ChangeLogs,...).
   -l                   Indicate that we are running on gcc.gnu.org.
   -p previous-tarball  Location of a previous tarball (to generate diff files).
-  -t tag               Tag to mark the release in CVS.
+  -t tag               Tag to mark the release in SVN.
   -u username          Username for upload operations.
 EOF
     exit 1
@@ -118,8 +118,7 @@ build_sources() {
   if [ ${FINAL} -ne 0 ]; then
     inform "Updating ChangeLogs and version files"
 
-    ${CVS} co -d "`basename ${SOURCE_DIRECTORY}`" \
-           -r ${CVSBRANCH} gcc || \
+    ${SVN} -q co "${SVNROOT}/${SVNBRANCH}" "`basename ${SOURCE_DIRECTORY}`" ||\
            error "Could not check out release sources"
     for x in `find ${SOURCE_DIRECTORY} -name ChangeLog`; do
       # Update this ChangeLog file only if it does not yet contain the
@@ -135,76 +134,64 @@ EOF
         mv ${x}.new ${x} || \
             error "Could not update ${x}"
         (changedir `dirname ${x}` && \
-            ${CVS} ci -m 'Mark ChangeLog' `basename ${x}`) || \
+            ${SVN} -q ci -m 'Mark ChangeLog' `basename ${x}`) || \
             error "Could not commit ${x}"
       fi
     done
 
-    # Update `gcc/version.c'.
-    for x in gcc/version.c; do 
-      y=`basename ${x}`
-      (changedir `dirname ${SOURCE_DIRECTORY}/${x}` && \
-          sed -e 's|version_string\[\] = \".*\"|version_string\[\] = \"'${RELEASE}'\"|g' < ${y} > ${y}.new && \
-	  mv ${y}.new ${y} && \
-          ${CVS} ci -m 'Update version' ${y}) || \
-	  error "Could not update ${x}"
-    done
+    # Update gcc/DEV-PHASE if it exists, otherwise gcc/version.c.
+
+    if [ -f ${SOURCE_DIRECTORY}/gcc/DEV-PHASE ]; then
+      [ `cat ${SOURCE_DIRECTORY}/gcc/BASE-VER` = ${RELEASE} ] || \
+      error "Release number ${RELEASE} does not match BASE-VER"
+      (changedir ${SOURCE_DIRECTORY}/gcc && \
+       : > DEV-PHASE && \
+       ${SVN} -q ci -m 'Mark as release' DEV-PHASE) || \
+      error "Could not update DEV-PHASE"
+    else
+      for x in gcc/version.c; do 
+        y=`basename ${x}`
+        (changedir `dirname ${SOURCE_DIRECTORY}/${x}` && \
+            sed -e 's|version_string\[\] = \".*\"|version_string\[\] = \"'${RELEASE}'\"|g' < ${y} > ${y}.new && \
+	    mv ${y}.new ${y} && \
+            ${SVN} -q ci -m 'Update version' ${y}) || \
+	    error "Could not update ${x}"
+      done
+    fi
 
     # Make sure we tag the sources for a final release.
-    TAG="gcc_`echo ${RELEASE} | tr . _`_release"
+    TAG="tags/gcc_`echo ${RELEASE} | tr . _`_release"
 
     rm -rf ${SOURCE_DIRECTORY}
   fi
 
   # Tag the sources.
-  EXPORTDATE=""
   if [ -n "${TAG}" ]; then
     inform "Tagging sources as ${TAG}"
-    EXPORTTAG="-r${TAG}"
-    # Try to check out a file using ${TAG}.  If the command succeeds,
-    # then the sources have already been tagged.  We don't want to 
-    # overwrite an existing tag, so we don't want to use the "-F"
-    # option to "cvs rtag" below.  So, if the tag already exists,
-    # issue an error message; the release manager can manually remove
-    # the tag if appropriate.
-    if ${CVS} export -d "`basename ${SOURCE_DIRECTORY}`" \
-      "${EXPORTTAG}" gcc/ChangeLog; then
+    # We don't want to overwrite an existing tag.  So, if the tag
+    # already exists, issue an error message; the release manager can
+    # manually remove the tag if appropriate.
+    echo "${SVN} ls ${SVNROOT}/${TAG}/ChangeLog" 
+    if ${SVN} ls "${SVNROOT}/${TAG}/ChangeLog"; then 
       error "Tag ${TAG} already exists"
     fi
-    ${CVS} rtag -r ${CVSBRANCH} ${TAG} gcc || \
+    ${SVN} -m "Tagging source as ${TAG}" cp "${SVNROOT}/${SVNBRANCH}" "${SVNROOT}/${TAG}" || \
       error "Could not tag sources"
-  else
-    if [ ${CVSBRANCH} != "HEAD" ]; then
-      EXPORTTAG="-r${CVSBRANCH}"
-      # It does not work to use both "-r" and "-D" with
-      # "cvs export" so EXPORTDATE is not set here.
-    else
-      # HEAD is the default branch, no need to specify it.
-      EXPORTTAG=""
-      EXPORTDATE="-D`date -u +"%Y-%m-%d %H:%M"` UTC"
-    fi
+    SVNBRANCH=${TAG}
   fi
+  SVNREV=`${SVN} info "${SVNROOT}/${SVNBRANCH}"|awk '/Revision:/ {print $2}'`
 
   # Export the current sources.
-  inform "Retrieving sources (cvs export ${EXPORTTAG} ${EXPORTDATE} gcc)"
+  inform "Retrieving sources (svn export -r ${SVNREV} ${SVNROOT}/${SVNBRANCH})"
 
-  if [ -z "${EXPORTTAG}" ]; then
-    ${CVS} export -d "`basename ${SOURCE_DIRECTORY}`" \
-       "${EXPORTDATE}" gcc || \
-      error "Could not retrieve sources"
-  elif [ -z "${EXPORTDATE}" ]; then
-    ${CVS} export -d "`basename ${SOURCE_DIRECTORY}`" \
-       "${EXPORTTAG}" gcc || \
-      error "Could not retrieve sources"
-  else
-    error "Cannot specify -r and -D at the same time"
-  fi
+  ${SVN} -q export -r${SVNREV} "${SVNROOT}/${SVNBRANCH}" "`basename ${SOURCE_DIRECTORY}`" ||\
+    error "Could not retrieve sources"
 
   # Run gcc_update on them to set up the timestamps nicely, and (re)write
-  # the LAST_UPDATED file containing the CVS tag/date used.
+  # the LAST_UPDATED file containing the SVN tag/revision used.
   changedir "gcc-${RELEASE}"
   contrib/gcc_update --touch
-  echo "Obtained from CVS: ${EXPORTTAG} ${EXPORTDATE}" > LAST_UPDATED
+  echo "Obtained from SVN: ${SVNBRANCH} revision ${SVNREV}" > LAST_UPDATED
 
   # Obtain some documentation files from the wwwdocs module.
   inform "Retrieving HTML documentation"
@@ -227,7 +214,7 @@ EOF
   done
 
   # For a prerelease or real release, we need to generate additional
-  # files not present in CVS.
+  # files not present in SVN.
   changedir "${SOURCE_DIRECTORY}"
   if [ $SNAPSHOT -ne 1 ]; then
     # Generate the documentation.
@@ -452,8 +439,8 @@ announce_snapshot() {
   ftp://gcc.gnu.org/pub/gcc/snapshots/"${RELEASE}"/
 and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.
 
-This snapshot has been generated from the GCC "${BRANCH}" CVS branch
-with the following options: "${EXPORTTAG} ${EXPORTDATE}"
+This snapshot has been generated from the GCC "${BRANCH}" SVN branch
+with the following options: "svn://gcc.gnu.org/svn/gcc/${SVNBRANCH} revision ${SVNREV}"
 
 You'll find:
 " > ${SNAPSHOT_README}
@@ -476,8 +463,8 @@ for testing purposes.</p>
 we highly recommend you join the GCC developers list.  Details for
 how to sign up can be found on the GCC project home page.</p>
 
-<p>This snapshot has been generated from the GCC "${BRANCH}" CVS branch
-with the following options: <code>"${EXPORTTAG} ${EXPORTDATE}"</code></p>
+<p>This snapshot has been generated from the GCC "${BRANCH}" SVN branch
+with the following options: <code>"svn://gcc.gnu.org/svn/gcc/${SVNBRANCH} revision ${SVNREV}"</code></p>
 
 <table>" > ${SNAPSHOT_INDEX}
        
@@ -535,14 +522,13 @@ Last modified "${TEXT_DATE}"
 DATE=`date "+%Y%m%d"`
 LONG_DATE=`date "+%Y-%m-%d"`
 
+SVN=${SVN:-/usr/bin/svn}
 # The CVS server containing the GCC repository.
-CVS_SERVER="gcc.gnu.org"
+SVN_SERVER="gcc.gnu.org"
 # The path to the repository on that server.
-CVS_REPOSITORY="/cvs/gcc"
-# The CVS protocol to use.
-CVS_PROTOCOL="ext"
+SVN_REPOSITORY="/svn/gcc"
 # The username to use when connecting to the server.
-CVS_USERNAME="${USER}"
+SVN_USERNAME="${USER}"
 
 # The machine to which files will be uploaded.
 GCC_HOSTNAME="gcc.gnu.org"
@@ -571,7 +557,7 @@ BRANCH=""
 
 # The name of the branch from which the release should be made, as used
 # for our version control system.
-CVSBRANCH=""
+SVNBRANCH=""
 
 # The tag to apply to the sources used for the release.
 TAG=""
@@ -589,7 +575,7 @@ SOURCE_DIRECTORY=""
 
 # The directories that should be part of the various language-specific
 # tar files.  These are all relative to the top of the source tree.
-ADA_DIRS="gcc/ada libada"
+ADA_DIRS="gcc/ada libada gnattools"
 CPLUSPLUS_DIRS="gcc/cp libstdc++-v3"
 FORTRAN_DIRS="gcc/f libf2c"
 FORTRAN95_DIRS="gcc/fortran libgfortran"
@@ -639,11 +625,11 @@ while getopts "d:fr:u:t:p:s:l" ARG; do
     d)    DESTINATION="${OPTARG}";;
     r)    RELEASE="${OPTARG}";;
     t)    TAG="${OPTARG}";;
-    u)    CVS_USERNAME="${OPTARG}";;
+    u)    SVN_USERNAME="${OPTARG}";;
     f)    FINAL=1;;
     s)    SNAPSHOT=1
           BRANCH=${OPTARG%:*}
-          CVSBRANCH=${OPTARG#*:}
+          SVNBRANCH=${OPTARG#*:}
           ;;
     l)    LOCAL=1
 	  SCP=cp
@@ -677,7 +663,7 @@ while [ $# -ne 0 ]; do
 done
 
 # Perform consistency checking.
-if [ ${LOCAL} -eq 0 ] && [ -z ${CVS_USERNAME} ]; then
+if [ ${LOCAL} -eq 0 ] && [ -z ${SVN_USERNAME} ]; then
   error "No username specified"
 fi
 
@@ -708,7 +694,7 @@ if [ $SNAPSHOT -eq 0 ]; then
 
   # Compute the name of the branch, which is based solely on the major
   # and minor release numbers.
-  CVSBRANCH="gcc-${RELEASE_MAJOR}_${RELEASE_MINOR}-branch"
+  SVNBRANCH="branches/gcc-${RELEASE_MAJOR}_${RELEASE_MINOR}-branch"
 
   # If this is not a final release, set various parameters acordingly.
   if [ ${FINAL} -ne 1 ]; then
@@ -720,9 +706,6 @@ if [ $SNAPSHOT -eq 0 ]; then
 else
   RELEASE=${BRANCH}-${DATE}
   FTP_PATH="${FTP_PATH}/snapshots/${RELEASE}"
-  if [ ${CVSBRANCH} != "HEAD" ]; then
-    TAG=gcc-ss-`echo ${RELEASE} | tr '.' '_'`
-  fi
 
   # If diffs are requested when building locally on gcc.gnu.org, we (usually)
   # know what the last snapshot date was and take the corresponding tarballs,
@@ -747,13 +730,15 @@ JAVA_DIRS=`adjust_dirs ${JAVA_DIRS}`
 OBJECTIVEC_DIRS=`adjust_dirs ${OBJECTIVEC_DIRS}`
 TESTSUITE_DIRS=`adjust_dirs ${TESTSUITE_DIRS}`
 
-# Set up CVSROOT.
+# Set up SVNROOT.
 if [ $LOCAL -eq 0 ]; then
-    CVSROOT=":${CVS_PROTOCOL}:${CVS_USERNAME}@"
-    CVSROOT="${CVSROOT}${CVS_SERVER}:${CVS_REPOSITORY}"
+    SVNROOT="svn+ssh://${SVN_USERNAME}@${SVN_SERVER}${SVN_REPOSITORY}"
+    CVSROOT=":ext:${SVN_USERNAME}@gcc.gnu.org/cvs/gcc"
 else
-    CVSROOT="${CVS_REPOSITORY}"
+    SVNROOT="file:///svn/gcc"
+    CVSROOT="/cvs/gcc"
 fi
+export SVNROOT
 export CVSROOT
 
 ########################################################################
@@ -793,7 +778,6 @@ if [ $MODE_GZIP -ne 0 ]; then
 fi
 
 # Upload them to the FTP server.
-
 if [ $MODE_UPLOAD -ne 0 ]; then
   upload_files
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]