summaryrefslogtreecommitdiff
path: root/doc/release
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2014-10-23 12:48:37 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2014-10-23 12:48:37 +0200
commit70d94c74bee52d674b07754ce4069111ea71e146 (patch)
tree87b1830aaefb72871e7d0d159b1cc4bbab51d7cb /doc/release
parentb9fb94e7a768b3efd61c8053057d63c4f82898bd (diff)
Add release checklist
Diffstat (limited to 'doc/release')
-rw-r--r--doc/release487
1 files changed, 487 insertions, 0 deletions
diff --git a/doc/release b/doc/release
new file mode 100644
index 0000000..cca443f
--- /dev/null
+++ b/doc/release
@@ -0,0 +1,487 @@
+1. Preparation
+
+[X] Test with the latest GCC snapshot.
+
+ - Build latest snapshot (see etc1/gcc/from-source.txt) and install
+ in /usr/local
+ - Configure ODB manually in /tmp/odb and smoke-test
+
+ Will need from-source.txt and
+ export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
+
+ - Run (replace 4.9)
+
+ ./dist.sh -complete -test -db pgsql -mssql-test-options \
+--with-mssql-server=tcp:windows2008r2,1435 \
+-ccp gcc-4.9 -cxxp g++-4.9 -cxxpflags "-W -Wall -O3" \
+-cc gcc-4.9 -cxx g++-4.9 -cxxflags "-W -Wall -O3 -Wno-unknown-pragmas" \
+2>&1 | tee dist.log
+
+ - check dist.log for new warnings
+
+[X] Grep through @@.
+
+ - Make sure new simple value pragmas are added to the map in pragma.cxx
+
+ - Make sure newly added options support database prefix, if necessary.
+
+[X] Run srccheck.pl.
+
+ In ODB compiler:
+
+ ~/work/xsd/srccheck.pl
+
+ In runtimes:
+
+ ~/work/xsd/srccheck.pl --runtime
+
+[X] Make sure correct license headers are used in respective runtimes
+ (search for GPL, NCUEL).
+
+[X] Update version information, dates in: version, version.hxx, man pages,
+ manual. Grep the source code for the previous version.
+
+[X] Proofread NEWS file.
+
+[X] Update/add prerequisites in INSTALL files.
+
+[X] Check documentation: manual XHTML, manual PDF, man pages, usage.
+
+
+2. Source, Binary Packages and Testing
+
+[X] Run tests and examples from the build tree:
+
+ make clean
+ make -j 16 2>&1 | tee build.log
+ grep -i warning build.log
+ make test
+
+ Run multi-database tests.
+
+[X] Run alternative configuration tests:
+
+ * Other DB versions
+ * Other compilers/versions
+
+ C++11:
+
+ make conf=c++11 clean
+ make conf=c++11 -j 16 2>&1 | tee build.log
+ grep -i warning build.log
+ make conf=c++11 test
+
+ Run multi-database tests.
+
+ Qt5:
+
+ make conf=qt5 clean
+ make conf=qt5 -j 16 2>&1 | tee build.log
+ grep -i warning build.log
+ make conf=qt5 test
+
+ C++11 autotools (latest GCC):
+
+ ./dist.sh -complete -test -mssql-test-options \
+--with-mssql-server=tcp:windows2008r2,1435 \
+-ccp gcc-4.8 -cxxp g++-4.8 -cxxpflags "-W -Wall -O3" \
+-cc gcc-4.8 -cxx g++-4.8 -cxxflags "-std=gnu++11 -W -Wall -O3 -Wno-unknown-pragmas" \
+2>&1 | tee dist.log
+
+ Qt5 autotools:
+
+ @@ TODO
+
+ Clang:
+
+ ./dist.sh -rebuild -test -mssql-test-options \
+--with-mssql-server=tcp:windows2008r2,1435 -cc clang -cxx clang++ \
+-cxxflags "-W -Wall -Wno-unknown-pragmas -O0" 2>&1 | tee dist.log
+
+ Clang C++11:
+
+ ./dist.sh -rebuild -test -mssql-test-options \
+--with-mssql-server=tcp:windows2008r2,1435 -cc clang -cxx clang++ \
+-cxxflags "-std=c++11 -W -Wall -Wno-unknown-pragmas -O0" 2>&1 | tee dist.log
+
+[X] Run adhoc-test/multi-db
+
+ On Linux:
+
+ make type=static clean
+ make type=static -j 16
+ make type=static test
+
+ make type=dynamic clean
+ make type=dynamic -j 16
+ make type=dynamic test
+
+ make -f makefile.rdynamic clean
+ make -f makefile.rdynamic -j 16
+ make -f makefile.rdynamic test
+
+ make -f makefile.dll clean
+ make -f makefile.dll -j 16
+ make -f makefile.dll test
+ make -f makefile.dll clean
+
+ On Windows (after building all the runtimes as part of VC10 test below):
+
+ - Copy over the test including the generated code (makefile.dll)
+ - Build the solution with VC10
+ - On Linux: make -f makefile.dll test-prep
+ - Open new Command Prompt, run setenv.sh, then cd to test-adhoc and
+ run test.bat
+
+[X] Package and test distribution (result in /tmp/pack/):
+
+ ./dist.sh -complete -test -mssql-test-options \
+--with-mssql-server=tcp:windows2008r2,1435 2>&1 | tee dist.log
+ grep -i warning dist.log
+
+[X] Test UNIX install:
+
+ * Watch out for disk space; build in $HOME to be able to uninstall *
+
+ cd ~/odb/build/install
+ ~/work/odb/etc/test/unix/build -rebuild -test -mssql-test-options \
+--with-mssql-server=tcp:windows2008r2,1435 -j 22 2>&1 | tee build.log
+ grep -i warning build.log
+
+[X] Test Embedded:
+
+ Copy libodb, libodb-sqlite, and odb-examples .tar.gz packages
+ from /tmp/pack to adhoc-tests/raspi.
+
+ Update ODB versions in the versions file.
+
+ In new terminal:
+
+ cd ~/work/odb/adhoc-tests/raspi
+ ./build-static
+
+ On raspi:
+
+ cd /mnt/raspi
+ ./driver --database /tmp/static.db
+ ls -l ./driver # check/update size growth; previous was 546416
+ 540432 2.2.0
+ 558632 2.3.0
+ On dev:
+
+ ./build-shared
+
+ On raspi:
+
+ export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
+ ./driver --database /tmp/shared.db
+ ls -l * # check/update size growth; previous was 35348/38244/107532
+ 35024/61356/115468 2.2.0
+ 35504/87348/119792 2.3.0
+ On dev:
+
+ ./clean
+
+[X] Build Windows binary (new terminal):
+
+ cd ~/work/odb/build/mingw-w64
+ ./build-dist -rebuild -pack 2>&1 | tee build.log
+
+[X] Test on Windows with VC 8:
+
+ Connect drive T:
+
+ In Cygwin terminal:
+ cd ~/projects/odb
+ ./unpack
+ ./all 0 8 all all all 2>&1 | tee all.log
+ grep -i warning all.log
+
+[X] Test on Windows with VC 9:
+
+ Connect drive T:
+
+ In Cygwin terminal:
+ cd ~/projects/odb
+ ./unpack
+ ./all 4 9 all all all 2>&1 | tee all.log
+ grep -i warning all.log
+
+[X] Test on Windows with MinGW:
+
+ @@ UNIX install test.
+ @@ C++11 build (maybe).
+
+ Connect drive T:
+
+ In MSYS terminal (ODB distribution):
+
+ cd /c/projects/odb/mingw
+ ./unpack
+ ./build -rebuild -test 2>&1 | tee build.log
+ grep -i warning build.log
+
+[X] Test on Windows with VC 10:
+
+ Connect drive T:
+
+ In Cygwin terminal:
+ cd ~/projects/odb
+ ./unpack
+
+ ./all 5 10 all all Win32 2>&1 | tee all.log
+ ./all 4 10 all all x64 2>&1 | tee all.log
+
+ grep -i warning all.log
+
+[X] Run multi-db test on Windows (see above).
+
+[X] Test on Windows with VC 11:
+
+ Connect drive T:
+
+ In Cygwin terminal:
+ cd ~/projects/odb
+ ./unpack
+ ./all 4 11 all all all 2>&1 | tee all.log
+ grep -i warning all.log
+
+[X] Build and Test Solaris x86 binary:
+
+ cd ~/work/odb/build
+ ./pack solaris
+ cd /tmp
+ scp -r pack-solaris-X.Y.Z sol86:
+
+ ssh sol86
+ cd pack-solaris-X.Y.Z
+ ./build-dist -rebuild -arch i686-solaris2.10 2>&1 | tee build.log
+ cd test
+
+ ./build-test -rebuild -test -j 1 ./cc-i686-12u2 2>&1 | tee build.log
+ grep -i warning build.log
+
+ ./build-test -rebuild -test -j 1 ./cc-i686-12u2-stlport 2>&1 | tee build.log
+ grep -i warning build.log
+
+[X] Build and Test Solaris SPARC binary:
+
+ cd ~/work/odb/build
+ ./pack solaris
+ cd /tmp
+ scp -r pack-solaris-X.Y.Z fire:
+
+ ssh fire
+ cd pack-solaris-X.Y.Z
+ ./build-dist -rebuild -arch sparc-solaris2.10 2>&1 | tee build.log
+ cd test
+ ./build-test -rebuild -test -j 2 ./cc-sparc-12u2 2>&1 | tee build.log
+ grep -i warning build.log
+
+
+[X] Build and Test MacOS X x86 binary:
+
+ cd ~/work/odb/build
+ ./pack darwin
+ cd /tmp
+ scp -r pack-darwin-X.Y.Z pbook:
+
+ ssh pbook
+ cd pack-darwin-X.Y.Z
+ ./build-dist -rebuild -arch i686-apple-darwin8 2>&1 | tee build.log
+
+ #cd test
+ #export PATH=/usr/local/bin:$PATH
+ #./build-test -rebuild -test -j 1 ./gcc 2>&1 | tee build.log
+ #grep -i warning build.log
+
+ ssh mini
+ cd pack-darwin-X.Y.Z/test
+ ./build-test -rebuild -test -j 1 ./gcc-qt 2>&1 | tee build.log
+ grep -i warning build.log
+
+[X] Build and Test GNU/Linux x86 binary:
+
+ @@ Verify features.h is removed from include-fixed.
+
+ cd ~/work/odb/build
+ ./pack linux-gnu
+
+ On sarge32:
+ scp -r onega:/tmp/pack-linux-gnu-X.Y.Z
+ cd pack-linux-gnu-X.Y.Z
+
+ # Watch out for -libexecdir if using history.
+ #
+ ./build-dist -rebuild -arch i686-linux-gnu 2>&1 | tee build.log
+ scp test/odb-X.Y.Z-i686-linux-gnu.tar.bz2 onega:/tmp/pack-linux-gnu-X.Y.Z/test/
+
+ On onega:
+ cd /tmp/pack-linux-gnu-X.Y.Z/test
+ ./build-test -rebuild -test -j 16 ./gcc 2>&1 | tee build.log
+ grep -i warning build.log
+
+[X] Build and Test GNU/Linux x86-64 binary:
+
+ @@ Verify features.h is removed from include-fixed.
+
+ cd ~/work/odb/build
+ ./pack linux-gnu
+
+ On sarge64:
+ scp -r onega:/tmp/pack-linux-gnu-X.Y.Z
+ cd pack-linux-gnu-X.Y.Z
+
+ # Watch out for -libexecdir if using history.
+ #
+ ./build-dist -rebuild -arch x86_64-linux-gnu 2>&1 | tee build.log
+ scp test/odb-X.Y.Z-x86_64-linux-gnu.tar.bz2 onega:/tmp/pack-linux-gnu-X.Y.Z/test/
+
+ On onega:
+ cd /tmp/pack-linux-gnu-X.Y.Z/test
+ ./build-test -rebuild -test -j 16 ./gcc 2>&1 | tee build.log
+ grep -i warning build.log
+
+ On fedora17-64:
+ @@ TODO test with mysql, pgsql, and sqlite, Use gcc-minimal or
+ install Boost and Qt.
+
+[X] Build .deb packages
+
+ Copy standard linux packages to build/debian/, unpack them:
+
+ tar xfj odb-*-i686-linux-gnu.tar.bz2
+ tar xfj odb-*-x86_64-linux-gnu.tar.bz2
+
+ Update etc/binary/debian/changelog with a new version. See if any new
+ doc/ or etc/ file were added, update rules if so.
+
+ Copy the etc/binary/debian directory to the binary directories.
+
+ cd odb-X.Y.Z-x86_64-linux-gnu
+ dpkg-buildpackage -us -uc -rfakeroot
+
+ cd odb-X.Y.Z-i686-linux-gnu
+ dpkg-buildpackage -us -uc -rfakeroot -ai386
+
+ Test each package:
+
+ alien -t -g odb_X.Y.Z-N.deb # make sure dir structure is ok
+
+ On sarge:
+
+ sudo dpkg -i odb_X.Y.Z-N.deb
+ which odb
+ odb --version
+ odb -d mysql person.hxx
+ odb -d mysql private.hxx
+ man odb
+ sudo dpkg -P odb
+
+[X] Build .rpm packages
+
+ Save standard linux packages in /tmp/pack and rebuild them with
+ the -libexec libexec option. Copy them to ~/rmp/SOURCES/
+
+ Edit odb.spec, update version, changelog. See if any new doc/ or
+ etc/ file were added. Make sure default.options Debian-specific
+ part is still 6 lines long.
+
+ cd etc/binary/redhat
+ rpmbuild -ba --target x86_64-pc-linux-gnu odb.spec
+ rpmbuild -ba --target i686-pc-linux-gnu odb.spec
+
+ Result is in ~/rpm/RPMS/
+
+ Test each package:
+
+ alien -t -g odb-X.Y.Z-N.rpm # make sure dir structure is ok
+
+ On CentOS (32) and Fedora (64):
+
+ sudo rpm -i odb-X.Y.Z-N.rpm
+ which odb
+ odb --version
+ odb -d mysql person.hxx
+ odb -d mysql private.hxx
+ man odb
+ sudo rpm -e odb
+
+[X] Tag the new version:
+
+ ./tag.sh X.Y.Z
+
+
+3. Dependencies
+
+[X] Release all dependencies that have changes.
+
+
+4. Publishing
+
+[X] Generate .sha1-sums, latest links for binaries and source distributions:
+
+ cd ~/work/codesynthesis.com/public/download/odb/X.Y
+ ../../../../procedures/odb-sha1.sh X.Y.Z
+
+ Capture .sha1 sums for later announcements.
+ cat `ls *.sha1 | sort`
+
+ ../../../../procedures/odb-latest.sh X.Y.Z-N
+
+[X] Project page modifications:
+
+ - overview (if major new features worth mentioning)
+ - features
+ - examples
+ - license (if adding new database)
+ - build instructions for UNIX/Windows
+ - platforms and compilers
+
+ Proofread changes.
+
+[X] Copy doc/ leaving only .css, .png, .xhtml, .ps, and .pdf files. Make
+ the following modifications to the .xhtml files:
+
+ 1. Remove XML declaration (the first line).
+ 2. Add IE conditional CSS inclusion:
+
+ <!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="/default-ie.css"/><![endif]-->
+
+[X] Update download links in the download page. Add new packages if any.
+
+[X] Test sandbox.
+
+[X] Sync sandbox with production (do --dry-run first):
+
+ cd ~/work/codesynthesis.com
+ rsync -avz --copy-unsafe-links --dry-run public/ kolpackov.net:/var/www/codesynthesis.com/public/
+
+[X] While uploading, prepare mailing list announcement.
+
+[X] Test production.
+
+[X] Announce on the odb-users, odb-announcement mailing list.
+
+[X] Write shorter version of the announcement and update the following pages
+ and feeds:
+
+ /products/odb/index.xhtml (News box)
+ /products/odb/news.rss
+ /projects/index.xhtml (News box)
+ /index.xhtml
+ /news.xhtml
+ /news.rss
+
+ Test sanbox, then sync with production.
+
+5. Announcements
+
+[X] Update version/release date in Wikipedia: main page and ORM comparison.
+
+[X] Write a blog post.
+
+[X] Write and send external announcement. See seperate page for the list
+ of places.
+
+[X] Update Wikipedia page with new major features, if any.