1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
|
Steps for a beta release:
- docs:
* update all docs with asciidoc in doc/
- code:
* Tcl 8.5:
* configure with --enable-development
make test
* configure with --enable-memcount=yes
make test 2>&1|cat |fgrep Overall
* configure with --enable-development and activate valgrind in Makefile
make test 2>&1|cat |fgrep "definitely lost"
(8.5.11 ok, when every test returns "40 bytes in 2 blocks")
(8.5.14 ok, when on test reurns "64 bytes in 1 blocks")
* get rid of non-ansi-c
make "CFLAGS_DEFAULT=-ansi -pedantic"
(warnings are ok, errors not)
* compile with clang
make "CC=clang"
make "CC=clang" test
* run static analysis:
make cppcheck
#/opt/local/bin/scan-build-mp-8.0 -enable-checker alpha make
/opt/local/bin/scan-build-mp-8.0 make
/opt/local/bin/scan-view-mp-8.0 ...
* run Coverity (7.6.0, requires gcc 4.8):
(sudo port install gcc48)
(download Coverity Build Tool from https://scan.coverity.com/download/)
make clean
rm -rf cov-int/
/usr/local/cov-analysis-macosx-7.6.0/bin/cov-build --dir cov-int make CC=gcc-mp-4.8
tar czvf /tmp/nsf.tgz cov-int
curl --form token=jJ1QoqZ2Ksriz6JXtI3aHg \
--form email=<email> \
--form file=@/tmp/nsf.tgz \
--form version="`git describe --tags`" \
--form description="maintenance checkout" \
https://scan.coverity.com/builds?project=Next+Scripting+Framework
* configure without --enable-development
make install
make install-aol
test with NaviServer/AOLserver (xowiki/xowf)
* Tcl 8.6:
* configure with --enable-development
make test
* configure with --enable-memcount=yes
make test 2>&1|cat |fgrep Overall
* configure with --enable-development and activate valgrind in Makefile
make test 2>&1|cat |fgrep "definitely lost"
(8.6b2 ok, when every test returns "40 bytes in 2 blocks")
(8.6.0 or later ok, when every test returns "0 bytes in 0 blocks")
* valgrind via vagrant:
1. Install vagrant: https://www.vagrantup.com/downloads
2. Install VirtualBox: https://www.virtualbox.org/wiki/Downloads
3. Check out newest box version: https://app.vagrantup.com/boxes/search?utf8=%E2%9C%93&sort=created&provider=&q=by+chef+bento%2Fubuntu-*+
4. $ mkdir -p ~/VMs/ubuntu-21.04
5. Add NSF as synced folder: Vagrantfile
config.vm.synced_folder "/path/to/nsf", "/home/vagrant/nsf"
config.vm.synced_folder "/path/to/tcl", "/home/vagrant/tcl"
5. $ cd VMs/ubuntu-21.04
$ vagrant init bento/ubuntu-21.04
$ vagrant up
$ vagrant ssh
6. With box:
vagrant@vagrant:~$ bash
vagrant@vagrant:~$ apt update; apt upgrade
vagrant@vagrant:~$ apt install valgrind
7. Setup `apt install tcl-dev` or a custom tcl build
8. vagrant@vagrant:~$ cd nsf && ./configure CFLAGS=-DPURIFY --enable-development
9. Activate valgrind in Makefile (uncomment line with TCLSH plus valgrind)
10. vagrant@vagrant:~$ cat valgrind.out | fgrep "definitely lost"
11. vagrant@vagrant:~$ cat valgrind.out | fgrep "ERROR SUMMARY" (incl. invalid reads)
- test tk apps under windows
- Announcement
* Summarize changes since the last release in doc/Announce-VERSION
As source use e.g.
git log --date-order --date=short|less
~/scripts/git-changelog2 -- 2.3.0..HEAD --no-merges > ChangeLog-2.3.0-HEAD
Get:
https://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=build-aux/gitlog-to-changelog;hb=HEAD
curl -Lo ../git-changelog 'https://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=build-aux/gitlog-to-changelog;hb=HEAD'
Run:
../git-changelog 2.3.0..HEAD --format=%s%n%b[%h] -- --no-merges > ChangeLog-2.3.0-HEAD
Diffstats:
git diff --stat 2.3.0..HEAD
* Run spell checker over announcement + ChangeLog
* git add announcement
- rebuild documentation
* Prerequisites:
o dtplite (tcllib)
o asciidoc (port install asciidoc)
o Chrome
* make doc
* make pdfdoc (currently, it is necessary to manually edit next-tutorial.html and next-migration.html
and replace setInterval() + next 4 lines by reinstall())
* call "make doc" again to remove editing traces
- build test-tar-file
* make tar
* check content of tar file
tar ztvf ../nsf2.4.0.tar.gz |sort -rn -k 5,6|less
- create branch entries for CI systems (Travis, AppVeyor)
add 2.3 to branches/only sections
commit that change
(continue with tagging)
- tag version in git and commit
git tag -a 2.3.0 -m 2.3.0
git push --tags
# git push --follow-tags
# git push commit
In case retagging is necessary:
git tag -d 2.3.0
git tag -a 2.3.0 -m 2.3.0
git push origin -f --tags
- create branches for CI systems (Travis, AppVeyor)
git checkout -b 2.3 2.3.0
git push origin 2.3
register a cron task for the new branch on Travis (website)
- build tar
* (make sure accurate COMMIT file is present, e.g., run ./configure once?)
* make tar
* check content of tar file
tar ztvf ../nsf2.3.0.tar.gz |sort -rn -k 5,6|less
- put NX API and shell onto sourceforge:
* cd doc/
* dtplite -o /tmp/doc/ -style man.css -header header.html.inc html .
* mv /tmp/doc/toc.html /tmp/doc/index.html
* scp -r /tmp/doc/* {gneumann|foxcruiser}@web.sourceforge.net:/home/project-web/next-scripting/htdocs/
* check https://next-scripting.sourceforge.io/
- update archive at sourceforge
* create folder with version name
* upload tar file to new folder
* upload announce to new folder and rename it to README
- update web site
* Stefan, please add recommended steps here
- prepare next release:
rename folder containing nsf (e.g. to nsf2.3.0)
update version number in
* configure.ac (NsfVersion, NSF_MAJOR_VERSION, NSF_MINOR_VERSION)
* library/nx/nx.tcl
* library/nx/pkgIndex.tcl
* library/xotcl/library/xotcl2.tcl
* win/pkg.vc
* library/serialize/serializer.tcl
* library/mongodb/nx-mongo.tcl
* library/mongodb/configure.ac
in SRCDIR and SRCDIR/library/mongodb/
autoconf
./configure ....
|