mailcrypt / README.dev

Developers' Notes:

I've added the beginnings of a unit test framework to MailCrypt. The only
thing tested so far is GPG decryption. The armored keyrings and test cases
are packaged as part of the distribution tarball, where a 'make check' can
unpack them and then use them to run the tests. There are two keyrings: a
full set (used to create the test cases), and an 'exported' set which has
some of the secret keys removed (to test what happens when you try to
decrypt a message that isn't addressed to you).

To build MailCrypt from CVS:

You will need GNU autoconf. The following sequence will create the
distribution tarball.

   autoconf
   ./configure
   make dist

To rebuild the unit test keyrings and test cases:

Do the following to create the keys:

 ./configure
 cd tests/gpg-keys
  make new-rings
   (now manually sign the appropriate keys following the hints emitted by
    the script.. this part hasn't been automated yet)
  make exported
  make pack
   (creates allrings.txt, the armored keyring file. This file is checked into
    CVS)
 cd ../..

The test cases are regenerated as part of the development anytime the keys
are changed or the testcase generator script is modified. To rebuild them,
you will need the Python GnuPGInterface module, available at
<http://sourceforge.net/projects/py-gnupg/>. After installing it, do the
following:

 cd tests
 make gpg-testcases
  (this unpacks allrings.txt, then runs a program which creates the GPG test
   cases in gpg-testcases/* . These test cases are also checked into CVS)
 cd ..


Making a new release. This is my checklist for making a new official release.

 During development:

  ChangeLog gets updated for each CVS checkin.
  NEWS gets updated with all changes since last release.

 At release time:
  build and test, get reports from beta testers, decide to make release
  mailcrypt.el: bump mc-version
  mailcrypt.texi: bump VERSION
  ANNOUNCE gets updated with latest news.
  Changelog gets note: '* mailcrypt: Release mailcrypt-N.N.N'
  commit all docs changes
  cvs tag release-N_N_N
  make dist
  copy resulting mailcrypt-N-N-N.tar.gz to tmp dir
  sign .tar.gz, put in tmp dir
  take latest portion of NEWS to use as sourceforge Release Notes file, tmpdir
  take ChangeLog since last release for as sourceforge Changelog file, tmpdir
  update .lsm file

  upload .tar.gz, .sig, release notes, changelog to sourceforge download area
  update http://mailcrypt.sourceforge.net
   (update 'site' module, login to mailcrypt.sourceforge.net,
    go to /home/groups/m/ma/mailcrypt/htdocs/ and do a cvs update)
  announce on sourceforge news
  announce on mailcrypt-announce@lists.sourceforge.net
  announce on freshmeat
  upload to sunsite? (now ibiblio.org)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.