[BACK]Return to README.SMP CVS log [TXT][DIR] Up to [local] / src / sys

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.