Instructions for creating a uimacpp release or a new build


For a new release

1. create a tag for the new release, e.g.
	svn copy https://svn.apache.org/repos/asf/uima/uimacpp/trunk https://svn.apache.org/repos/asf/uima/uimacpp/tags/uimacpp-2.4.0 1 -m"create tag for 2.4.0 release"

2. if changes are needed, update trunk. Create a new tag when ready to release.


For a new build on Linux

1. create new directory for release candidate and cd there
	mkdir uimacpp-2.4.0
	cd uimacpp-2.4.0

2. checkout source from current tag
	svn co https://svn.apache.org/repos/asf/uima/uimacpp/tag/uimacpp-2.4.0

3. Modify configure.ac 
   Update package version number specified in AC_INIT call.
   Update the  library number by modifying LT_VERSION_NUMBER following the 
      libtool version numbering convention. This is summarized on the
      wiki page https://cwiki.apache.org/UIMA/proposed-changes-to-uima-c-build-and-packaging.html.

4  Create configure script 
   cd uimacpp-2.4.0
   ./autogen.sh

5. Run configure
   define environment variable ICU_HOME, APR_HOME, XERCES_HOME, ACTIVEMQ_HOME, JAVA_INCLUDE
   ./configure --with-jdk=$JAVA_HOME/include --with-apr=$APR_HOME --with-icu=$ICU_HOME --with-xerces=$XERCES_HOME --with-activemq=$ACTIVEMQ_HOME

4. create src tarball
	make dist
    This create libuima-2.4.0.tar.gz

5. rat scan of source
	java -jar apache-rat-0.6.jar uimacpp-2.4.0 > uimacpp-src-linux-report.txt

6. build, test and create sdk tree
	cd uimacpp-2.4.0
	[setup env for the build]
      make
      DESTDIR=`pwd` make install
      make check
      make sdk ARGS=`pwd`

7. create bin tarball
	tar -czf uimacpp-2.4.0-bin.tgz uimacpp

8. rat scan of bin
	java -jar apache-rat-0.6.jar uimacpp > uimacpp-bin-linux-report.txt

9. sniff test of base sdk
	cd uimacpp
	export UIMACPP_HOME=`pwd`
	PATH=$PATH:`pwd`/bin
	export LD_LIBRARY_PATH=`pwd`/lib:`pwd`/examples/src
	cd examples/src
	make -f all.mak
	cd ..
	./runall.sh

10. sniff test of scriptators (following base sniff test)
	cd ../scriptators/perl
	make
	PATH=$PATH:`pwd`
	LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`
	runAECpp PerlSample.xml ../../examples/data/

	cd ../python
	make
	LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`h
	export PYTHONPATH=`pwd`
	runAECpp PythonSample.xml ../../examples/data/

	cd ../tcl
	make
	LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`
	runAECpp TclSample.xml ../../examples/data/

11. sniff test of uimacpp service wrapper
	in a "Uima AS window", run:
	  startBroker.sh
	back in the UimaCpp test window:
	  cd ../../examples
	  runRemoteAsyncAE.sh tcp://localhost:61616 MeetingAnnotator \
	  -d tutorial/descriptors/Deploy_MeetingAnnotator.xml



For a new build on Windows

1. checkout source from current release branch
	svn co https://svn.apache.org/repos/asf/uima/uimacpp/branches/uimacpp-2.4.0

3. create source tree
	./buildSrcTree buildDir

4. create src zipfile of buildDir\uimacpp-2.4.0 as
	uimacpp-2.4.0-src.zip

5. rat scan of source
	cd buildDir
	java -jar apache-rat-0.6.jar uimacpp-2.4.0 > uimacpp-src-windows-report.txt

6. build, test and create sdk tree
	cd uimacpp-2.4.0\src
	[setup env for the build]
	winmake /build release
	winmake /build debug
	cd ..\docs
	builddocs
	cd ..\src\test
	devenv test.sln /build release
	set UIMA_HOME=someGoodUimaSDK
	fvt
	devenv test.sln /build debug
	fvt debug
	cd ..\..
	buildsdk ..

7. create bin zipfile of buildDir\uimacpp as
	uimacpp-2.4.0-bin.zip

8. rat scan of bin
	java -jar apache-rat-0.6.jar uimacpp > uimacpp-bin-windows-report.txt

9. sniff test of base sdk
	cd uimacpp
	set UIMACPP_HOME=%cd%
	path=%path%;%cd%\bin;%cd%\examples\src
	cd examples\src
	devenv uimacpp-examples.sln /build release
	cd ..
	runall

10. sniff test of scriptators (following base sniff test)
	cd ..\scriptators\perl
	winmake
	runAECpp PerlSample.xml ..\..\examples\data\

	cd ..\python
	winmake
	runAECpp PythonSample.xml ..\..\examples\data\

	cd ..\tcl
	winmake
	runAECpp TclSample.xml ..\..\examples\data\

11. sniff test of uimacpp service wrapper
	in a "Uima AS window", run:
	  startBroker
	back in the UimaCpp test window:
	  cd ..\..\examples
	  runRemoteAsyncAE tcp://localhost:61616 MeetingAnnotator \
	  -d tutorial\descriptors\Deploy_MeetingAnnotator.xml

