File: [local] / src / sys / Attic / README.SMP (download)
Revision 1.1.2.14, Sat Jun 5 23:13:25 2004 UTC (20 years ago) by niklas
Branch: SMP
Changes since 1.1.2.13: +7 -2 lines
Update some notes
|
$OpenBSD: README.SMP,v 1.1.2.14 2004/06/05 23:13:25 niklas Exp $
The SMP branch is irregularly updated from the trunk. To do this
you mainly need to carry out the following procedure:
* Determine the new synchronization tag to use. There are two used
alternately; SMP_SYNC_A and SMP_SYNC_B. You can use several heuristics
to find out which one was used last, and then use the other one.
For example, CVSROOT/history* files gives you information about tag
operations in lines matching '^T'. Call the tag you will be using
for $NEW_TAG and the other one $OLD_TAG.
* Remove every trace of the "old" new synchronization tag, note that cvs
rtag -F won't cut it, as it does not remove files that have been removed
since last time.
$ cvs -d cvs.openbsd.org:/cvs rtag -d $NEW_TAG src/sys
If this operation is done local to cvs.openbsd.org, it will last about 2.5
minutes.
* Tag the trunk with the new synchronization tag.
$ cvs -d cvs.openbsd.org:/cvs rtag -rHEAD $NEW_TAG src/sys
This too takes 2.5 minutes local cvs time.
* Have an SMP branch checkout available with -kk substitution done.
For example check out a fresh one:
$ cvs get -rSMP -kk src/sys
* Create and add directories that have been added to the trunk since
last synchronization. Say you have a clean standard trunk checkout in $STD
and your clean SMP checkout is in $SMP:
$ cd $STD/src/sys
$ find . -type d \! -name CVS \! -path "*/compile/*" |sort>/tmp/stddirs
$ cd $SMP/src/sys
$ find . -type d \! -name CVS \! -path "*/compile/*" |sort>/tmp/smpdirs
$ comm -23 /tmp/{std,smp}dirs |while read d; do
> mkdir $d
> cvs add $d
> done
* Go into src/sys and merge from the trunk (make sure that the repository
you use have the new tags from the tagging above, i.e. don't use a mirror
that has not been updated since that step):
$ cvs up -j$OLD_TAG -j$NEW_TAG -kk
* Find any conflicts, and resolve them, this command might help:
$ cvs -q up -dP -rSMP -kk 2>&1 | grep '^C '
* Build and test an i386 GENERIC.MP & MP_LOCKDEBUG kernel as well as an
alpha GENERIC, fix every regression you can find.
* Cvs contains nasty bugs in its client/server invocation. Earlier this
documentation has contained bug fixup instructions for the remote cvs
use. However this is error-prone and slow. It's much better to do the
last step locally *on* cvs.openbsd.org. I.e. transfer your tree to commit
to cvs.openbsd.org and commit from there!
* Commit to the SMP branch in pieces to not lock too much of the sys tree
in the repository, Nice chunks are perhaps 100-300 files.
* A nice check is to browse the output of:
$ cvs -qd cvs.openbsd.org:/cvs rdiff -kk -u -r$NEW_TAG -rSMP src/sys
It should just be differences related to multiprocessor support.