public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* OT: How do people set up long term development
@ 2003-05-28 15:38 Michael Meissner
  2003-05-28 17:48 ` Jakub Jelinek
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Michael Meissner @ 2003-05-28 15:38 UTC (permalink / raw)
  To: gcc

I am wondering how people outside of Red Hat do long term development of
compiler tools when you can't check the machine specific sources into the FSF
repository until the NDA on the machine has been lifted?  The intention is that
when the chipset I am developing the GNU toolchain for is formally announced, I
will submit the files to the FSF for consideration of inclusion in the
releases, and non-machine specific changes that I make will be contributed as
they are written.

I can see three different development models:

1) Create my own CVS repository of a checked out releases, and check the files
   into there.  Every so often, I will do a merge from the FSF sources to my
   own repository.  This is how we did development at OSF, Cygnus, and Red Hat.
   The problem is doing the merge step, and there isn't a direct correlation
   between the versions in the master repository and my system.  If all of the
   tools had CVS tags for nightly snapshots, it would make things easier, but
   the bintuils directories don't seem to have snapshot tags.  This is the way
   I'm leaning, since it will allow me to work on two systems (desk system,
   laptop) and using cvs to do the update.

2) Doing the work in a live tree, possibly using a CVS repository to hold the
   newly created files with symlinks.  CVS update would do the merges
   automatically, but it is hairier to work with on a day to day basis.

3) I could imagine an alternative to #1 of downloading the rcs files from the
   repository to use as a starting base, instead of creating the files from
   scratch.  This may make the eventual merge easier, but intermediate merges
   may be more difficult.

-- 
Michael Meissner
email: gnu@the-meissners.org
http://www.the-meissners.org

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: OT: How do people set up long term development
  2003-05-28 15:38 OT: How do people set up long term development Michael Meissner
@ 2003-05-28 17:48 ` Jakub Jelinek
  2003-05-28 21:15   ` Michael Meissner
  2003-05-28 18:00 ` Gerald Pfeifer
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Jakub Jelinek @ 2003-05-28 17:48 UTC (permalink / raw)
  To: Michael Meissner, gcc

On Wed, May 28, 2003 at 11:02:11AM -0400, Michael Meissner wrote:
> I am wondering how people outside of Red Hat do long term development of
> compiler tools when you can't check the machine specific sources into the FSF
> repository until the NDA on the machine has been lifted?  The intention is that
> when the chipset I am developing the GNU toolchain for is formally announced, I
> will submit the files to the FSF for consideration of inclusion in the
> releases, and non-machine specific changes that I make will be contributed as
> they are written.
> 
> I can see three different development models:
> 
> 1) Create my own CVS repository of a checked out releases, and check the files
>    into there.  Every so often, I will do a merge from the FSF sources to my
>    own repository.  This is how we did development at OSF, Cygnus, and Red Hat.
>    The problem is doing the merge step, and there isn't a direct correlation
>    between the versions in the master repository and my system.  If all of the
>    tools had CVS tags for nightly snapshots, it would make things easier, but
>    the bintuils directories don't seem to have snapshot tags.  This is the way
>    I'm leaning, since it will allow me to work on two systems (desk system,
>    laptop) and using cvs to do the update.

cvs update -jgcc-3_3-branch:2003{0517,0528} works IMHO just fine, you don't
need any nightly tags for it. All you need is to remember what was the last
date you did a cvs merge at, which can be recorded e.g. in the CVS commit
messages.

	Jakub

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: OT: How do people set up long term development
  2003-05-28 15:38 OT: How do people set up long term development Michael Meissner
  2003-05-28 17:48 ` Jakub Jelinek
@ 2003-05-28 18:00 ` Gerald Pfeifer
       [not found] ` <mailpost.1054134152.11116@news-sj1-1>
  2003-05-30 17:25 ` David O'Brien
  3 siblings, 0 replies; 7+ messages in thread
From: Gerald Pfeifer @ 2003-05-28 18:00 UTC (permalink / raw)
  To: Michael Meissner; +Cc: gcc

On Wed, 28 May 2003, Michael Meissner wrote:
> I can see three different development models:

In your specific case, I can imagine a fourth one, based on your plan
to submit non-machine specific changes right away (which I definitely
consider a good idea) and the fact that nearly all other changes will
reside in a new subtree in gcc/config:

4) Use our (gcc.gnu.org) CVS tree to do development, and use another CVS
   repository just for that subtree.

   That way, you can also submit/commit changes to the gcc.gnu.org tree
   most easily and don't have to worry about importing changes from
   gcc.gnu.org into a local repository.

Gerald
-- 
Gerald "Jerry"   pfeifer@dbai.tuwien.ac.at   http://www.pfeifer.com/gerald/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: OT: How do people set up long term development
  2003-05-28 17:48 ` Jakub Jelinek
@ 2003-05-28 21:15   ` Michael Meissner
  2003-05-28 22:08     ` Tom Lord
  0 siblings, 1 reply; 7+ messages in thread
From: Michael Meissner @ 2003-05-28 21:15 UTC (permalink / raw)
  To: gcc

On Wed, May 28, 2003 at 05:07:19PM +0200, Jakub Jelinek wrote:
> On Wed, May 28, 2003 at 11:02:11AM -0400, Michael Meissner wrote:
> > I am wondering how people outside of Red Hat do long term development of
> > compiler tools when you can't check the machine specific sources into the FSF
> > repository until the NDA on the machine has been lifted?  The intention is that
> > when the chipset I am developing the GNU toolchain for is formally announced, I
> > will submit the files to the FSF for consideration of inclusion in the
> > releases, and non-machine specific changes that I make will be contributed as
> > they are written.
> > 
> > I can see three different development models:
> > 
> > 1) Create my own CVS repository of a checked out releases, and check the files
> >    into there.  Every so often, I will do a merge from the FSF sources to my
> >    own repository.  This is how we did development at OSF, Cygnus, and Red Hat.
> >    The problem is doing the merge step, and there isn't a direct correlation
> >    between the versions in the master repository and my system.  If all of the
> >    tools had CVS tags for nightly snapshots, it would make things easier, but
> >    the bintuils directories don't seem to have snapshot tags.  This is the way
> >    I'm leaning, since it will allow me to work on two systems (desk system,
> >    laptop) and using cvs to do the update.
> 
> cvs update -jgcc-3_3-branch:2003{0517,0528} works IMHO just fine, you don't
> need any nightly tags for it. All you need is to remember what was the last
> date you did a cvs merge at, which can be recorded e.g. in the CVS commit
> messages.

Thanks.

Wouldn't it have problems if there was a commit that occured around midnight,
particularly a multi-file commit, one file being committed before midnight, and
the other after midnight.

-- 
Michael Meissner
email: gnu@the-meissners.org
http://www.the-meissners.org

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: OT: How do people set up long term development
       [not found] ` <mailpost.1054134152.11116@news-sj1-1>
@ 2003-05-28 22:06   ` cgd
  0 siblings, 0 replies; 7+ messages in thread
From: cgd @ 2003-05-28 22:06 UTC (permalink / raw)
  To: gcc-mail; +Cc: gcc

At Wed, 28 May 2003 15:02:32 +0000 (UTC), "Michael Meissner" wrote:
> 1) Create my own CVS repository of a checked out releases, and check the files
>    into there.  Every so often, I will do a merge from the FSF sources to my
>    own repository.  This is how we did development at OSF, Cygnus, and Red Hat.
>    The problem is doing the merge step, and there isn't a direct correlation
>    between the versions in the master repository and my system.  If all of the
>    tools had CVS tags for nightly snapshots, it would make things easier, but
>    the bintuils directories don't seem to have snapshot tags.  This is the way
>    I'm leaning, since it will allow me to work on two systems (desk system,
>    laptop) and using cvs to do the update.

This is what I do.

To facilitate independent updates of different components, I prefer to
import each package separately (i.e., not a unified tree), and have my
build system worry about building them in the right order, etc.

(I'd revisit that somewhat if i were doing it again from scratch, but
I think if i had the same goal in mind that you do or that I did when
i created my current source tree, I'd probably do the same.)


The two real drawbacks of this (IMO) are:

* the build system can get a bit bit hairy.  8-)

* you have to do a bit of extra work to merge changes to the common
  components between the different parts of the source tree.  (e.g.,
  make opcodes changes?  Gotta change the copies of opcodes in
  binutils and gdb.)

It also chews more disk space and builds a few extra copies of things,
but disk is cheap and CPU is pretty cheap, too.


I also do my cvs imports in a special way, so that I have as much time
as I need to merge things.

basically, do:

	cvs import ... >& log_file

then run the script below against that log file.  any changes in any
imports need to be explicitly merged on to the trunk.

(One can approximate this procedure by using 'cvs commit -f' on one's
source tree, but that leads to bogus commits after the initial import,
and also newly-imported files automatically show up on the trunk.
ugh.  8-)

That way, if you try a snapshot from a night and it turns out not to
work, you don't have to commit it to the trunk.

beware: the script below doesn't do any cvs locking itself, and
requires local access to the CVS repository.  8-)


(BTW, if somebody's looking for a project to hack on, inside CVS, I'd
love to see the equivalent of the script below implemented as a 'cvs
import' option.  8-)



cgd
--
#!/bin/sh
# $Id: cvsimport_killnew,v 1.5 2003/01/16 01:27:55 cgd Exp $

# Script to kill revision 1.1 in files newly imported by CVS.
# See http://www.demetriou.com/~cgd/cvs for details.
#
# Written by Chris G. Demetriou <cgd@netbsd.org>.  Public domain.

fatal() {
	echo '***' $0: ERROR: $1 1>&2
	exit 1
}

usage() {
	echo usage: $0 logfilename 1>&2
	fatal usage
	exit 1
}

if [ -z "${CVSROOT}" ]; then
	fatal "CVSROOT is unset"
fi

logfile=$1
if [ -z "$logfile" ]; then
	usage
fi
if [ ! -f "$logfile" ]; then
	fatal "$logfile does not exist"
fi

awk '/^N / { print $2 }' "$logfile" | (
	set -e
	while read file; do
		repos_path=${CVSROOT}/${file},v 
		repos_dir=`dirname ${repos_path}` 
		repos_file=`basename ${repos_path}` 

		if [ ! -f $repos_path ]; then
			echo "Warning: $repos_path does not exist."
			continue
		fi

		echo "Fixing $file..."
		(
			# XXX error handling in this block is bogus...
			# a dir that won't (likely) be used.
			mkdir -p $repos_dir/CVS
			cd $repos_dir/CVS

			# reset default branch.
			rcs -b ../${repos_file} 

			# check in new rev w/ same contents.
			co -l -M ../${repos_file}
			ci -r1.2 -d -sdead \
			    -m"revision 1.1 was added on the vendor branch; delete from trunk" \
			    ../${repos_file}
		)
		rmdir $repos_dir/CVS || true

		echo "Moving $file to the attic..."
		mkdir -p ${repos_dir}/Attic 
		mv ${repos_path} ${repos_dir}/Attic/${repos_file} 
	done
)


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: OT: How do people set up long term development
  2003-05-28 21:15   ` Michael Meissner
@ 2003-05-28 22:08     ` Tom Lord
  0 siblings, 0 replies; 7+ messages in thread
From: Tom Lord @ 2003-05-28 22:08 UTC (permalink / raw)
  To: gcc



    >>> I am wondering how people outside of Red Hat do long term
    >>> development of compiler tools when you can't check the machine
    >>> specific sources into the FSF repository until the NDA on the
    >>> machine has been lifted? 

This page:

     http://arch.fifthvision.net/bin/view/Main/InteroperatingWithCVS

describes an approach in which you `cvs update' from the central
repository for merging in FSF sources, but use arch privately.  arch
is _ideal_ for working on on two systems ("desktop, laptop") and nice
for other reasons as well.

I'm not sure I recommend this approach, quite yet, for GCC.   The size
of the GCC tree is, I suspect, right around the edge of
"uncomfortable" for the current release of arch.   Maybe not -- try it
out if you are so inclined -- but also be aware of the upcoming
quantum-leap in arch performance with the new C version (see
=READEME.new-stuff) in the distro.

(arch's "home" is http://regexps.srparish.net/www)

-t







    > From: Michael Meissner <gcc-mail@the-meissners.org>

    > On Wed, May 28, 2003 at 05:07:19PM +0200, Jakub Jelinek wrote:
    >> On Wed, May 28, 2003 at 11:02:11AM -0400, Michael Meissner wrote:

    >>> I am wondering how people outside of Red Hat do long term
    >>> development of compiler tools when you can't check the machine
    >>> specific sources into the FSF repository until the NDA on the
    >>> machine has been lifted?  The intention is that when the
    >>> chipset I am developing the GNU toolchain for is formally
    >>> announced, I will submit the files to the FSF for
    >>> consideration of inclusion in the releases, and non-machine
    >>> specific changes that I make will be contributed as they are
    >>> written.

    >>> I can see three different development models:

    >>> 1) Create my own CVS repository of a checked out releases, and
    >>> check the files into there.  Every so often, I will do a merge
    >>> from the FSF sources to my own repository.  This is how we did
    >>> development at OSF, Cygnus, and Red Hat.  The problem is doing
    >>> the merge step, and there isn't a direct correlation between
    >>> the versions in the master repository and my system.  If all
    >>> of the tools had CVS tags for nightly snapshots, it would make
    >>> things easier, but the bintuils directories don't seem to have
    >>> snapshot tags.  This is the way I'm leaning, since it will
    >>> allow me to work on two systems (desk system, laptop) and
    >>> using cvs to do the update.

    >> cvs update -jgcc-3_3-branch:2003{0517,0528} works IMHO just
    >> fine, you don't need any nightly tags for it. All you need is
    >> to remember what was the last date you did a cvs merge at,
    >> which can be recorded e.g. in the CVS commit messages.

    > Thanks.

    > Wouldn't it have problems if there was a commit that occured
    > around midnight, particularly a multi-file commit, one file
    > being committed before midnight, and the other after midnight.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: OT: How do people set up long term development
  2003-05-28 15:38 OT: How do people set up long term development Michael Meissner
                   ` (2 preceding siblings ...)
       [not found] ` <mailpost.1054134152.11116@news-sj1-1>
@ 2003-05-30 17:25 ` David O'Brien
  3 siblings, 0 replies; 7+ messages in thread
From: David O'Brien @ 2003-05-30 17:25 UTC (permalink / raw)
  To: Michael Meissner, gcc

On Wed, May 28, 2003 at 11:02:11AM -0400, Michael Meissner wrote:
> I am wondering how people outside of Red Hat do long term development of
> compiler tools when you can't check the machine specific sources into the FSF
> repository until the NDA on the machine has been lifted?  The intention is that
> when the chipset I am developing the GNU toolchain for is formally announced, I
> will submit the files to the FSF for consideration of inclusion in the
> releases, and non-machine specific changes that I make will be contributed as
> they are written.
> 
> I can see three different development models:
> 
> 1) Create my own CVS repository of a checked out releases, and check the files
>    into there.  Every so often, I will do a merge from the FSF sources to my
>    own repository.  This is how we did development at OSF, Cygnus, and Red Hat.

This is how the FreeBSD's does it.  However, you didn't mention the very
important deatail of doing *vendor branch* imports into your private CVS
tree.  Perododically, take a GCC snapshot, and import it again onto the
*vendor branch*.  CVS will give you instructions on how to use "-j -j" to
merge the changes onto your mainline development branch.

Others do the same thing, but with Perforce over CVS.  Perforce's vastly
superior branching and merging abilities make doing this easier than it
is with CVS.

> 3) I could imagine an alternative to #1 of downloading the rcs files from the
>    repository to use as a starting base, instead of creating the files from
>    scratch.  This may make the eventual merge easier, but intermediate merges
>    may be more difficult.

You can also CVSup the GCC CVS repository (,v files); and follow the
instructions at http://www.cvsup.org/faq.html#canilocal for maintaining
your own local branch.  You would use CVS's -j merging to put FSF GCC
changes onto your local, private branch.

-- 
-- David  (obrien@FreeBSD.org)

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2003-05-30 17:18 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-28 15:38 OT: How do people set up long term development Michael Meissner
2003-05-28 17:48 ` Jakub Jelinek
2003-05-28 21:15   ` Michael Meissner
2003-05-28 22:08     ` Tom Lord
2003-05-28 18:00 ` Gerald Pfeifer
     [not found] ` <mailpost.1054134152.11116@news-sj1-1>
2003-05-28 22:06   ` cgd
2003-05-30 17:25 ` David O'Brien

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).