Getting Started documentation for upcoming Release 1.1

Binary Distribution

The top-level structure of the install image is:

  ChangeLog.txt
  DISCLAIMER.txt
  LICENSE.txt
  LICENSE_THIRD_PARTY.txt
  NOTICE.txt
  NOTICE_THIRD_PARTY.txt
  README.txt
  RELEASE_NOTES.txt
  bin/
  examples/
  lib/
  binding-c/
  binding-csharp/
  binding-java/
  uninst.exe (for windows use only)

Please take a moment to review the RELEASE_NOTES.txt, ChangeLog.txt and
LICENSE.txt files.

The Windows installer (apache-etch-1.1.0-incubating-setup.exe) has created a
user environment variable (ETCH_HOME) which points to the Etch installation
directory. If you installed Etch using either

apache-etch-1.1.0-incubating-windows-x86-bin.zip

or

apache-etch-1.1.0-incubating-linux-x86-bin.tgz

you will want to create this environment variable yourself:

windows:

  set ETCH_HOME=C:\Program Files\Apache Software Foundation\apache-etch-1.1.0

*nix:

  export ETCH_HOME=/path/to/apache-etch-1.1.0

The bin directory has also been put on your path by the Windows installer. If
you are using the archives, you will need to do this yourself:

windows:

  PATH %PATH%;%ETCH_HOME%\bin

*nix:

  export PATH="$PATH:$ETCH_HOME/bin"

The bin/ directory contains a Windows bat script and a unix shell script.

You will also need to have a java runtime installed (later versions of sun jre
or jdk 1.5 or any version of 1.6 or later). A JAVA_HOME environment variable
should point to the installation directory of the java runtime. If you are going
to compile java source you will need the jdk.

After the installer has been run and the environment setup, at a windows
command line or shell prompt, you should be able to run the etch compiler and
see some basic output:

windows:

  C:\>etch -v
  Etch version is Apache Etch 1.1.0-incubating (some build info)

unix:

  bash-3.2$ etch -v
  Etch version is Apache Etch 1.1.0-incubating (some build info)

The lib directory contains the various jar files for the compiler and the Apache Velocity dependency jar:

  apache-etch-java-compiler-1.1.0-incubating.jar
  apache-etch-java-compiler-1.1.0-incubating-src.jar
  ...

The top level folders binding-c, binding-java and binding-csharp contain the language specific
runtime libraries:

Binding for Java

binding-java is organized as follows:

  apache-etch-java-runtime-1.1.0-incubating-src.zip
  lib/
    apache-etch-java-runtime-1.1.0-incubating.jar

The generated java source from the etch compiler needs apache-etch-java-runtime-1.1.0-incubating.jar.
There is source code to go with it in apache-etch-java-runtime-1.1.0-incubating-src.zip.

Binding for C#

binding-csharp is organized as follows:

  apache-etch-csharp-runtime-1.1.0-incubating-src.zip  
  lib/
    ApacheEtchCsharpIncubating.dll
    ApacheEtchCsharpIncubating.pdb

The generated c# source from the etch compiler needs ApacheEtchCsharpIncubating.dll
The C# (.NET 2.0 and later) ApacheEtchCsharpIncubating.dll should be added to any C# projects.
There is source code to go with it in apache-etch-csharp-runtime-1.1.0-incubating-src.zip.

Binding for C

binding-c is organized as follows:

  bin/
    apr-1-config		(on linux)
    apriconv			(on linux)
  include/
    [etch-*].h			(on win32)
    apr-1			(on linux)
  lib/
    etch.lib			(on win32)
    etch.pdb			(on win32)
    libetch.a			(on linux)
  extern/
    apr/
      bin/
        libapr-1.dll		(on win32)
        libapr-1.pdb		(on win32)
        libapriconv-1.dll	(on win32)
        libapriconv-1.pdb	(on win32)
      iconv/
        [iconv*]-stuff
      include/
        [apr-*].h
      lib/
        libapr-1.lib		(on win32)
	libapriconv-1.lib	(on win32)
	libapr-1.so		(on linux)
	libapriconv-1.so	(on linux)
  apache-etch-c-runtime-1.1.0-incubating-src.zip

Generated C source depends on the dlls/so/a/h files mentioned above. The best choice to
build generated code using the c binding is cmake. You can use the examples/helloworld
example as a reference. The C binding has external dependencies to the Apache Portable
Runtime (APR). We ship dll/so/h for the apr in the extern folder. There is source code
to go with it in apache-etch-c-runtime-1.1.0-incubating-src.zip

Ant Plugin

There is an ant plugin which you can use with ant 1.7.0 or later to invoke the
compiler as a task. It is documented on the wiki referenced above. You can also see examples
of its usage in the build.xml files in the examples folder

Maven

If you are using maven, then you might want to install the Etch artifacts into
your local maven repository. There is a Windows bat script to do this in the
maven directory:

etch-maven-install.bat

You need to have maven on your path when you run this script. The file
etch-java-runtime-1.1.0.jar will be installed into your local repository with
group "etch.etch", artifact id "etch-java-runtime", and version "1.1.0". You
may then reference Etch from your maven projects.

Python and XML Bindings

The source distribution includes code to support XML and python bindings, but
these bindings are not yet complete, and there is no build products associated
with those. They are mainly there to 1) capture the code contribution from
cisco systems, and 2) inspire any fence sitters, ah, helpers to jump in and
contribute.

Examples

Examples have been provided in the examples/ subdirectory. Start with the HelloWorld
example, it contains code for all three language bindings. There is a readme
file in each example's directory which explains how to build and run it.

Tests

Unit tests can be had by checking out the source code from the subversion
repository and performing a complete build:

http://svn.apache.org/repos/asf/etch/releases/release-1.1.0-incubating

Help

For help, see the wiki or send email to user@etch.apache.org. See
RELEASE_NOTES.txt for specific information for this release.