| README or Readme Src or Readme Bin Frequently Asked Questions API index Documentation Java Cryptography Extension Specification Utility scripts Copyright and License | Building and Snapping The Distribution Group Source File Manipulation Miscellaneous Source File Diffs | Cryptix Development Team

## Building and Snapping

These scripts are run from the top directory.

- build.{sh|bat} - script for building all tree.
- make_snap.{sh|bat} - calls build, above, and makes a snapshot.

# The Distribution Group

The scripts that are used to distribute Cryptix Version 3 are also included within the distributions. They are much more complex than the above, and only written for Unix (produced on FreeBSD, but should work under Solaris and Linux). The build scripts listed above are more amenable to local hacking.

The distribution group consists of:

- dist_all.sh does these actions in sequence:
  - updates from CVS (use -update to ignore),
  - calls `dist_source.sh` to make a source dist,
  - unpacks the source dist,
  - calls `dist_javadoc.sh` to create a JavaDoc distribution from the source distribution.
  - calls `dist_binary.sh` to create a binary distribution from the source distribution.
  - Then, the binary distribution is unpacked and tested and maybe all three distributions are uploaded to the web server. An index.html is produced that lists what is in this release.
  This script normally expects CVS to be present.

- dist_source.sh makes a source distribution out of the current directory by copying everything to temp directory and zipping it.

- dist_binary.sh will take a source tree and produce a binary distribution. It does this by reading the passed manifest util/man/binary.man.

  binary.man specifies the JAR manifests in util/*.man and specifies how to build JARs with `buildjar.sh`. A few admin files are added, and the result is packaged up.

- man is the directory with the manifests in. These files each describe an archive for distribution purposes.

- buildjar.sh takes a manifest and compiles all the files within it. These are placed in a JAR format archive, along with some admin files. Then, `testjar.sh` is run to make sure it is up to spec.

  For example, `util/man/spt.man` is all the non-algorithmic provider and core code. This manifest says to compile the Java modules, make some nonsense text files, and package it in to a JAR.

- See especially `util/man/webfunds.man` for an example that makes a single jar with everything needed for a particular application.

- testjar.sh takes a JAR, extracts the manifest, and looks up what tests are specified. These are then run. When instructed by options, testjar will save the actions and the results of each test, primarily so that the binary distribution has a record of what happened, in `test_results` and `util/auto_testjar*.sh`.

This group of scripts should evolve further, but might not, as it probably won't be used with the new generation. Desirable features would include adding compilation scripts to the source release (other than running dist_binary.sh).

# Source File Manipulation

- dosify.sh - convert all text files to DOS format
- unixify.sh - convert all text files to Unix format
- Replace.java - replace a string with another string in text files

- FixLineEndings.java - localise line endings and expand tabs. Make sure that the root of the source release is on the CLASSPATH, then do "`java util.FixLineEndings`" to get a summary of options.

# Miscellaneous

- clean.{sh|bat} - remove temporaries, classes, and javadoc files
- setpwd.bat - get the absolute path of the current directory. "setpwd ." on NT is equivalent to "PWD=`pwd`" on Unix.

# Source File Diffs

- diff1.{sh|bat} - diff with whitespace ignored
- diffall.{sh|bat} - recursive diff with whitespace ignored

Copyright © 1997 - 1999 Systemics Ltd
on behalf of the Cryptix Development Team.
All rights reserved.
Cryptix is a trademark of Systemics Ltd.