
GLK's list of things to do for each release.  This started with an
early version of Teem and has been only partially maintained since
then; consider it a work-in-progress ...

-3.5) make sure that teem/src/meet/enumall.c:meetAirEnumAll()
 is up-to-date

-3) make sure that all the files have the right copyright
pre-ambles

-2.5) make sure that there are no DOS files
find . -name \*.c -exec undos -n {}  \;
find . -name \*.h -exec undos -n {}  \;
find . -name \*.txt -exec undos -n {} \;

-2) make sure there are no tabs:
cat > tab.txt
(tab) (return)
^D

find . -name \*.c -exec grep -f tab.txt {} /dev/null \; | more
find . -name \*.h -exec grep -f tab.txt {} /dev/null \; | more
find . -name \*.txt -exec grep -f tab.txt {} /dev/null \; | more
rm -f tab.txt

-1) finalize TEEM_VERSION* in air/air.h and airTeemReleaseDate in air/misc.c

-0.5) regenerate teem/python/ctypes/teem.py

0) Bring documentation up-to-date with source tree
make sure all the unrrdu pages agree with unu usage info
cd ~/teem
cp README.txt ~/teemdoc/html/tree/
cp src/README.txt ~/teemdoc/html/tree/src/
cp src/CHANGES.txt ~/teemdoc/html/tree/src/
cp src/TODO.txt ~/teemdoc/html/tree/src/
cp src/LICENSE.txt ~/teemdoc/html/tree/src/
(cd ~/teemdoc; cvs commit -m "pre-release text file update")
sftp kindlmann,teem@web.sourceforge.net
is one way of putting files onto the web server

1) Check namespace safety
  a) Make sure all library symbols are properly prefixed.
  On a 32-bit Mac, this should return nothing:

  cd ~/teem/arch/darwin.32/lib
  nm libteem.a \
   | grep -v "libteem.a(" \
   | grep -v "         U " \
   | grep -v \\\?\\\?\\\?\\\?\\\?\\\?\\\?\\\?\ t\  \
   | grep -v \\\?\\\?\\\?\\\?\\\?\\\?\\\?\\\?\ s\  \
   | grep -v \\\?\\\?\\\?\\\?\\\?\\\?\\\?\\\?\ d\  \
   | grep -v \\\?\\\?\\\?\\\?\\\?\\\?\\\?\\\?\ b\  \
   | grep -v " _air"    | grep -v " __air" \
   | grep -v " _hest"   | grep -v " __hest" \
   | grep -v " _biff"   | grep -v " __biff" \
   | grep -v " _nrrd"   | grep -v " __nrrd" \
   | grep -v " _ell"    | grep -v " __ell" \
   | grep -v " _unrrdu" | grep -v " __unrrdu" \
   | grep -v " _alan"   | grep -v " __alan" \
   | grep -v " _moss"   | grep -v " __moss" \
   | grep -v " _tijk"   | grep -v " __tijk" \
   | grep -v " _gage"   | grep -v " __gage" \
   | grep -v " _dye"    | grep -v " __dye" \
   | grep -v " _bane"   | grep -v " __bane" \
   | grep -v " _limn"   | grep -v " __limn" \
   | grep -v " _echo"   | grep -v " __echo" \
   | grep -v " _hoover" | grep -v " __hoover" \
   | grep -v " _seek"   | grep -v " __seek" \
   | grep -v " _ten"    | grep -v " __ten" \
   | grep -v " _elf"    | grep -v " __elf" \
   | grep -v " _mite"   | grep -v " __mite" \
   | grep -v " _pull"   | grep -v " __pull" \
   | grep -v " _coil"   | grep -v " __coil" \
   | grep -v " _push"   | grep -v " __push" \
   | grep -v " _mite"   | grep -v " __mite" \
   | grep -v " _meet"   | grep -v " __meet" \
   | uniq

  cd ../../include
  grep "#define" teem/*.h | grep -v _export \
   | grep -v " AIR"    | grep -v " _AIR" \
   | grep -v " HEST"   | grep -v " _HEST" \
   | grep -v " BIFF"   | grep -v " _BIFF" \
   | grep -v " NRRD"   | grep -v " _NRRD" \
   | grep -v " ELL"    | grep -v " _ELL" \
   | grep -v " UNRRDU" | grep -v " _UNRRDU" \
   | grep -v " ALAN"   | grep -v " _ALAN" | grep -v " alan" \
   | grep -v " MOSS"   | grep -v " _MOSS" \
   | grep -v " TIJK"   | grep -v " _TIJK" \
   | grep -v " GAGE"   | grep -v " _GAGE" \
   | grep -v " DYE"    | grep -v " _DYE" \
   | grep -v " BANE"   | grep -v " _BANE" \
   | grep -v " LIMN"   | grep -v " _LIMN" | grep -v " limn" \
   | grep -v " ECHO"   | grep -v " _ECHO" | grep -v " echo" \
   | grep -v " HOOVER" | grep -v " _HOOVER" \
   | grep -v " SEEK"   | grep -v " _SEEK" \
   | grep -v " TEN"    | grep -v " _TEN" \
   | grep -v " ELF"    | grep -v " _ELF" \
   | grep -v " PULL"   | grep -v " _PULL" \
   | grep -v " COIL"   | grep -v " _COIL" | grep -v " coil" \
   | grep -v " PUSH"   | grep -v " _PUSH" \
   | grep -v " MITE"   | grep -v " _MITE" | grep -v "mite_" \
   | grep -v " MEET"   | grep -v " _MEET" 

2) Make sure it works
  "make teem/dev teem/install" on every supported architecture,
  and make sure Windows stuff also still works (if new files or
  libraries were added)

2.5) svn "tag":
setenv VERSION <<version>>
svn copy https://teem.svn.sourceforge.net/svnroot/teem/teem/trunk \
         https://teem.svn.sourceforge.net/svnroot/teem/teem/branches/Teem-${VERSION}

3) Create source-only tgz:
svn co http://teem.svn.sourceforge.net/svnroot/teem/teem/trunk teem
cd teem
find . -name .svn  -exec rm -rf {} \;
cd ..; mv teem teem-${VERSION}-src
tar czvf teem-${VERSION}-src.tar.gz teem-${VERSION}-src
mv teem-${VERSION}-src.tar.gz ~/rel

cvs -d:ext:kindlmann@teem.cvs.sf.net:/cvsroot/teem co NrrdIO
cd NrrdIO
find . -name CVS  -exec rm -rf {} \;
cd ..; mv NrrdIO NrrdIO-${VERSION}-src
tar czvf NrrdIO-${VERSION}-src.tar.gz NrrdIO-${VERSION}-src
mv NrrdIO-${VERSION}-src.tar.gz ~/rel

4) Checkout a tree:

"make teem/install" on all platforms ...

rapture/ray/muse:
setenv TEEM_ARCH irix6.64
setenv TEEM_PNG
setenv TEEM_ZLIB
setenv TEEM_BZIP2
setenv TEEM_BZIP2_LPATH -L/home/sci/gk/usr/irix6.64/lib
setenv TEEM_BZIP2_IPATH -I/home/sci/gk/usr/include
setenv TEEM_PNG_LPATH -L/home/sci/gk/usr/irix6.64/lib
setenv TEEM_PNG_IPATH -I/home/sci/gk/usr/irix6.64/include

(options for being multi-threaded)
setenv TEEM_PTHREAD
setenv TEEM_LINK_SHARED
setenv PATH ${PATH}:/home/sci/gk/usr/local/irix6.64/bin
setenv LD_LIBRARY64_PATH ${LD_LIBRARY64_PATH}:/home/sci/gk/usr/local/irix6.64/lib

vision:
setenv TEEM_ARCH solaris
setenv TEEM_PNG
setenv TEEM_ZLIB
setenv TEEM_BZIP2
setenv TEEM_BZIP2_LPATH -L/home/gk/lib
setenv TEEM_BZIP2_IPATH -I/home/gk/include
setenv TEEM_ZLIB_LPATH -L/home/gk/lib
setenv TEEM_ZLIB_IPATH -I/home/gk/include
setenv TEEM_PNG_LPATH -L/usr/local/lib
setenv TEEM_PNG_IPATH -I/usr/local/include


5) Create Unix-ish binary builds (without src or docs):
   for each TEEM_ARCH in:
   irix6.n32 linux.ia64 linux.amd64 linux.32 cygwin solaris darwin.32 darwin.64
-  ssh to some ARCH machine, copy teem-VERSION-src.tar.gz there if needed
-  setenv TEEM_XXX for all the externals that it makes sense to 
      compile into the distributed statically linked binaries
setenv VERSION <<<version>>>
tar xzvf ~/rel/teem-${VERSION}-src.tar.gz
cd teem-${VERSION}-src; setenv TEEM_DEST `pwd`
cd src; make; cd ..
mv src/LICENSE.txt . 
yes | rm -rf README.txt aix cygwin darwin.32 darwin.64 irix6.64 \
      irix6.n32 linux.32 linux.amd64 linux.ia64 solaris win32 src \
      CMake CMakeLists.txt CTestConfig.cmake DartConfig.cmake
cd ..
mv teem-${VERSION}-src teem-${VERSION}-${TEEM_ARCH}
tar czvf teem-${VERSION}-${TEEM_ARCH}.tar.gz teem-${VERSION}-${TEEM_ARCH}
mv -f teem-${VERSION}-${TEEM_ARCH}.tar.gz ~/rel
yes | rm -rf teem-${VERSION}-${TEEM_ARCH}

6) Create Windows binary builds.

7) put the builds on sourceforge:
cd ~/rel
sftp kindlmann@frs.sourceforge.net
cd uploads
mput *.tar.gz

9) update online documentation (which may be done more often than releases)
cd ~/teemdoc
cvs commit -m "pre-release doc update"

ssh kindlmann@shell.sf.net

cd teem/htdocs
cvs update
exit








for Deft:
cvs -d:ext:kindlmann@teem.cvs.sf.net:/cvsroot/teem init
cvs -d:ext:kindlmann@teem.cvs.sf.net:/cvsroot/teem import -m "initial import" Deft Deft start
