summaryrefslogtreecommitdiffstats
path: root/contrib/local
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2012-11-07 22:20:09 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2012-11-07 22:20:09 (GMT)
commitda08a1d3c3bca8070c9b029cfc1f8faf9e34dd25 (patch)
treeb285148ab6ca415814d9370148f91736f83c852c /contrib/local
parent0ae6c27d9322208053033d9b19c0ffffed3d99eb (diff)
downloaduscxml-da08a1d3c3bca8070c9b029cfc1f8faf9e34dd25.zip
uscxml-da08a1d3c3bca8070c9b029cfc1f8faf9e34dd25.tar.gz
uscxml-da08a1d3c3bca8070c9b029cfc1f8faf9e34dd25.tar.bz2
Committing local version again
Diffstat (limited to 'contrib/local')
-rwxr-xr-xcontrib/local/bcp-boost.sh18
-rwxr-xr-xcontrib/local/build-linux.expect36
-rwxr-xr-xcontrib/local/build-windows.expect202
-rwxr-xr-xcontrib/local/compress_and_upload_deps.sh32
-rwxr-xr-xcontrib/local/make-dist.sh145
-rwxr-xr-xcontrib/local/make-installer-html-table.pl245
-rw-r--r--contrib/local/package-linux.expect33
-rwxr-xr-xcontrib/local/package-windows.expect77
-rwxr-xr-xcontrib/local/remove-dsstore-files.sh9
-rwxr-xr-xcontrib/local/validate-installers.expect317
10 files changed, 1114 insertions, 0 deletions
diff --git a/contrib/local/bcp-boost.sh b/contrib/local/bcp-boost.sh
new file mode 100755
index 0000000..9f5450d
--- /dev/null
+++ b/contrib/local/bcp-boost.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+ME=`basename $0`
+DIR="$( cd "$( dirname "$0" )" && pwd )"
+CWD=`pwd`
+
+SOURCE_FILES=`find ${DIR}/../../src/ -name \*.h -print -o -name \*.cpp -print`
+ARABICA_FILES=`find ${DIR}/../../contrib/prebuilt/include/arabica -name \*.hpp -print -o -name \*.cpp -print`
+
+# echo ${ARABICA_FILES}
+# exit
+
+/Users/sradomski/Documents/TK/Code/boost_1_51_0/dist/bin/bcp \
+--boost=/Users/sradomski/Documents/TK/Code/boost_1_51_0 \
+--scan ${SOURCE_FILES} ${ARABICA_FILES} \
+${DIR}/../prebuilt/include
+
+rm -rf ${DIR}/../prebuilt/include/libs
diff --git a/contrib/local/build-linux.expect b/contrib/local/build-linux.expect
new file mode 100755
index 0000000..793d3d6
--- /dev/null
+++ b/contrib/local/build-linux.expect
@@ -0,0 +1,36 @@
+#!/usr/bin/expect
+
+set timeout 300
+set USCXML_BUILD_HOST $::env(USCXML_BUILD_HOST)
+
+set prompt "sradomski@"
+append prompt ${USCXML_BUILD_HOST}
+append prompt {:[a-zA-Z~\/\-]+\$ }
+
+eval spawn ping -c1 ${USCXML_BUILD_HOST}.local.
+expect "cannot resolve" { puts "Host ${USCXML_BUILD_HOST}.local. not found"; exit } \
+ -re $prompt { }
+
+eval spawn ssh ${USCXML_BUILD_HOST}.local.
+
+##############################
+# uscxml in debug configuration
+expect -re $prompt { send "rm -rf /tmp/build-uscxml && mkdir /tmp/build-uscxml && cd /tmp/build-uscxml\n" }
+expect -re $prompt { send "cmake -DCMAKE_BUILD_TYPE=Debug -DDIST_PREPARE=ON /media/psf/Home/Documents/TK/Code/uscxml\n" }
+
+expect "download" { exp_continue } \
+ -re $prompt { send "make -j2\n" }
+
+expect "Building CXX" { exp_continue } \
+ "Linking CXX" { exp_continue } \
+ -re $prompt { send "\n" }
+
+##############################
+# uscxml in release configuration
+expect -re $prompt { send "rm -rf /tmp/build-uscxml && mkdir /tmp/build-uscxml && cd /tmp/build-uscxml\n" }
+expect -re $prompt { send "cmake -DCMAKE_BUILD_TYPE=Release -DDIST_PREPARE=ON /media/psf/Home/Documents/TK/Code/uscxml\n" }
+expect -re $prompt { send "make\n" }
+
+expect "Building CXX" { exp_continue } \
+ "Linking CXX" { exp_continue } \
+ -re $prompt { exit }
diff --git a/contrib/local/build-windows.expect b/contrib/local/build-windows.expect
new file mode 100755
index 0000000..27ab7c0
--- /dev/null
+++ b/contrib/local/build-windows.expect
@@ -0,0 +1,202 @@
+#!/usr/bin/expect
+
+set timeout 600
+set USCXML_BUILD_HOST $::env(USCXML_BUILD_HOST)
+set USCXML_BUILD_ARCH $::env(USCXML_BUILD_ARCH)
+
+
+set local_prompt {sradomski$ }
+set initial_remote_prompt "C*>"
+# the default windows prompt is hard to recognize
+set remote_prompt "easy_to_recognize"
+
+eval spawn ping -c1 ${USCXML_BUILD_HOST}.local.
+expect "cannot resolve" { puts "Host ${USCXML_BUILD_HOST}.local. not found"; exit } \
+ -re $local_prompt { }
+
+eval cd ~/Documents/TK/Code/
+
+##############################
+# prepare and deploy archive
+
+# check age of archive against modification date
+eval spawn find ./uscxml -newer uscxml-win.tar
+set redeploy 0;
+expect {
+ "find:*No such file" { set redeploy 1; }
+ -re ".cpp\r\n" { set redeploy 1; }
+ -re "package\r\n" { set redeploy 1; }
+ -re ".h\r\n" { set redeploy 1; }
+ -re "CMakeLists.txt\r\n" { set redeploy 1; }
+ -re $local_prompt { }
+}
+#set redeploy 0;
+
+if {$redeploy} {
+# eval spawn rm uscxml-win.tar
+# eval spawn tar --exclude='__*' --exclude=uscxml/contrib/prebuilt/darwin --exclude=uscxml/docs/html --exclude=uscxml/examples/ios --exclude=uscxml/contrib/archives --exclude=uscxml/.git --exclude=uscxml/build* --exclude=uscxml/lib/ios-5.0 --exclude=uscxml/lib/linux* --exclude=uscxml/lib/darwin* --exclude=uscxml/installer/uMundo* --exclude=uscxml/contrib/prebuilt/linux* --exclude=uscxml/contrib/prebuilt/ios -cf uscxml-win.tar uscxml/
+eval spawn rm uscxml-win.zip
+eval spawn zip -r uscxml-win.zip uscxml/ --exclude __\* uscxml/contrib/prebuilt/darwin\* uscxml/contrib/prebuilt/ios\* uscxml/contrib/prebuilt/linux\* uscxml/docs/html\* uscxml/examples/ios uscxml/contrib/archives\* uscxml/.git/\* uscxml/build\* uscxml/installer/uMundo* uscxml/contrib/prebuilt/linux*
+ expect {
+ "a uscxml/" { exp_continue }
+ timeout { puts "Timeout when packaging source code"; exit; }
+ -re $local_prompt { }
+ }
+
+# eval spawn scp -4 uscxml-win.tar sradomski@${USCXML_BUILD_HOST}.local:\\uscxml-win.tar
+ eval spawn scp -4 uscxml-win.zip sradomski@${USCXML_BUILD_HOST}.local:\\uscxml-win.zip
+ expect {
+ "ETA" { exp_continue }
+ "The authenticity" { send "yes\n"; exp_continue; }
+ timeout { puts "Timeout when uploading source code"; exit; }
+ -re $local_prompt { }
+ }
+}
+
+##############################
+# ssh into remote host
+
+eval spawn ssh -4 sradomski@${USCXML_BUILD_HOST}.local.
+expect {
+ timeout { puts "Timeout when connecting to windows"; exit; }
+ "The authenticity" { send "yes\n"; }
+ -re $local_prompt { puts "Could not connect to remote host"; exit; }
+ -re $initial_remote_prompt { }
+}
+
+send "set prompt=easy_to_recognize \r"
+expect -re $remote_prompt
+
+# unpack archive if required
+if {$redeploy} {
+ send "rmdir \/S \/Q uscxml\r"
+ expect -re $remote_prompt
+
+# send "tar xf uscxml-win.tar\r"
+ send "unzip uscxml-win.zip\r"
+ expect "uscxml/" { exp_continue } \
+ -re $remote_prompt { }
+
+}
+
+# setup directories
+send "rmdir \/S \/Q build-uscxml\r"
+expect -re $remote_prompt
+send "mkdir build-uscxml\r"
+expect -re $remote_prompt
+send "cd build-uscxml\r"
+expect -re $remote_prompt
+
+##############################
+# start cmd.exe and prepare for compiling
+# send "cmd\n"
+# expect -re $cmd_prompt
+
+# "c:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
+# send "\"c:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat x86_amd64\"\n"
+if { [string compare $USCXML_BUILD_ARCH 32] == 0 } {
+ send "\"c:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\bin\\vcvars32.bat\"\r"
+ expect -re $remote_prompt
+} else {
+ send "\"c:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat\" x86_amd64\r"
+ expect -re $remote_prompt
+}
+##############################
+# compile in debug configuration
+
+send "\"cmake.exe\" -G \"NMake Makefiles\" -DCMAKE_BUILD_TYPE=Debug -DDIST_PREPARE=ON ..\\uscxml\r"
+
+expect "download" { exp_continue } \
+ -re $remote_prompt { }
+
+send "nmake\r"
+expect {
+ "Building" { exp_continue; }
+ "Linking" { exp_continue; }
+ "fatal error" { exit }
+ -re $remote_prompt { }
+}
+
+# send "nmake java\r"
+# expect {
+# "Building" { exp_continue; }
+# "Linking" { exp_continue; }
+# "fatal error" { exit }
+# -re $remote_prompt { }
+# }
+#
+# send "nmake csharp\r"
+# expect {
+# "Building" { exp_continue; }
+# "Linking" { exp_continue; }
+# "fatal error" { exit }
+# -re $remote_prompt { }
+# }
+
+##############################
+# compile in release configuration
+
+send "\"cmake\" -G \"NMake Makefiles\" -DCMAKE_BUILD_TYPE=Release -DDIST_PREPARE=ON ..\\uscxml\r"
+expect -re $remote_prompt
+
+send "nmake\n\r"
+expect {
+ timeout { puts "Timeout when building"; exit; }
+ "Building" { puts "Building"; exp_continue; }
+ "Scanning" { puts "Scanning"; exp_continue; }
+ "Linking" { puts "Linking"; exp_continue; }
+ "fatal error" { puts "Dying"; exit; }
+ -re $remote_prompt { puts "Continuing"; }
+}
+
+# send "nmake java\n\r"
+# expect {
+# timeout { puts "Timeout when building"; exit; }
+# "Building" { puts "Building"; exp_continue; }
+# "Scanning" { puts "Scanning"; exp_continue; }
+# "Linking" { puts "Linking"; exp_continue; }
+# "fatal error" { puts "Dying"; exit; }
+# -re $remote_prompt { puts "Continuing"; }
+# }
+#
+# send "nmake csharp\n\r"
+# expect {
+# timeout { puts "Timeout when building"; exit; }
+# "Building" { puts "Building"; exp_continue; }
+# "Scanning" { puts "Scanning"; exp_continue; }
+# "Linking" { puts "Linking"; exp_continue; }
+# "fatal error" { puts "Dying"; exit; }
+# -re $remote_prompt { puts "Continuing"; }
+# }
+
+send "cd ..\r"
+expect -re $remote_prompt
+
+if { [string compare $USCXML_BUILD_ARCH 32] == 0 } {
+ send "zip -r win-package-x86.zip uscxml\\package\\windows-x86\r"
+} else {
+ send "zip -r win-package-x86_64.zip uscxml\\package\\windows-x86_64\r"
+}
+
+send "exit\r"
+expect -re $local_prompt
+eval cd ~/Documents/TK/Code/
+
+if { [string compare $USCXML_BUILD_ARCH 32] == 0 } {
+ eval spawn "scp epikur-win7.local:win-package-x86.zip ."
+ expect -re $local_prompt
+ eval spawn "unzip -o win-package-x86.zip"
+ expect -re $local_prompt
+ eval spawn "rm win-package-x86.zip"
+ expect -re $local_prompt
+
+} else {
+ eval spawn "scp epikur-win7-64.local:win-package-x86_64.zip ."
+ expect -re $local_prompt
+ eval spawn "unzip -o win-package-x86_64.zip"
+ expect -re $local_prompt
+ eval spawn "rm win-package-x86_64.zip"
+ expect -re $local_prompt
+}
+
+exit
diff --git a/contrib/local/compress_and_upload_deps.sh b/contrib/local/compress_and_upload_deps.sh
new file mode 100755
index 0000000..c96ff0b
--- /dev/null
+++ b/contrib/local/compress_and_upload_deps.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+set -e
+
+ME=`basename $0`
+DIR="$( cd "$( dirname "$0" )" && pwd )"
+CWD=`pwd`
+
+cd $DIR
+
+if [ "$UMUNDO_PREBUILT_HOST" == "" ]; then
+ UMUNDO_PREBUILT_HOST="admin@umundo.tk.informatik.tu-darmstadt.de:/var/www/html/uscxml/prebuilt"
+fi
+
+if [ "$1" == "" ] || [ "$2" == "" ]; then
+ echo "$ME <prebuilt dir> <version>"
+ exit
+fi
+
+if [ ! -d $1 ]; then
+ echo "$1: no such directory"
+ exit
+fi
+
+PLATFORM=`basename $1`
+VERSION=$2
+
+cd ../prebuilt
+
+tar cvzf uscxml-prebuilt-${PLATFORM}-${VERSION}.tgz ${PLATFORM}
+scp uscxml-prebuilt-${PLATFORM}-${VERSION}.tgz ${UMUNDO_PREBUILT_HOST}/
+rm uscxml-prebuilt-${PLATFORM}-${VERSION}.tgz \ No newline at end of file
diff --git a/contrib/local/make-dist.sh b/contrib/local/make-dist.sh
new file mode 100755
index 0000000..1eacb48
--- /dev/null
+++ b/contrib/local/make-dist.sh
@@ -0,0 +1,145 @@
+#!/bin/bash
+
+ME=`basename $0`
+DIR="$( cd "$( dirname "$0" )" && pwd )"
+
+# do not tar ._ files
+export COPY_EXTENDED_ATTRIBUTES_DISABLE=1
+export COPYFILE_DISABLE=1
+
+############################
+# Compile libraries
+############################
+
+cd ${DIR}
+
+./remove-dsstore-files.sh
+
+echo -n "Build uscxml for Linux 32Bit? [y/N]: "; read BUILD_LINUX32
+if [ "$BUILD_LINUX32" == "y" ] || [ "$BUILD_LINUX32" == "Y" ]; then
+ echo "Start the Linux 32Bit system named 'debian' and press return" && read
+ echo == BUILDING USCXML FOR Linux 32Bit =========================================================
+ export USCXML_BUILD_HOST=debian
+ expect build-linux.expect
+fi
+
+echo -n "Build uscxml for Linux 64Bit? [y/N]: "; read BUILD_LINUX64
+if [ "$BUILD_LINUX64" == "y" ] || [ "$BUILD_LINUX64" == "Y" ]; then
+ echo "Start the Linux 64Bit system named 'debian64' and press return" && read
+ echo == BUILDING USCXML FOR Linux 64Bit =========================================================
+ export USCXML_BUILD_HOST=debian64
+ expect build-linux.expect
+fi
+
+# make sure to cross-compile before windows as we will copy all the files into the windows VM
+echo -n "Build uscxml for iOS? [y/N]: "; read BUILD_IOS
+if [ "$BUILD_IOS" == "y" ] || [ "$BUILD_IOS" == "Y" ]; then
+ echo == BUILDING USCXML FOR IOS =========================================================
+ ${DIR}/../build-uscxml-ios.sh
+fi
+
+echo -n "Build uscxml for Android? [y/N]: "; read BUILD_ANDROID
+if [ "$BUILD_ANDROID" == "y" ] || [ "$BUILD_ANDROID" == "Y" ]; then
+ echo == BUILDING USCXML FOR Android =========================================================
+ export ANDROID_NDK=~/Developer/SDKs/android-ndk-r8
+ ${DIR}/../build-uscxml-android.sh
+fi
+
+echo -n "Build uscxml for Windows 32Bit? [y/N]: "; read BUILD_WIN32
+if [ "$BUILD_WIN32" == "y" ] || [ "$BUILD_WIN32" == "Y" ]; then
+ echo "Start the Windows 32Bit system named 'epikur-win7' and press return" && read
+ echo == BUILDING USCXML FOR Windows 32Bit =========================================================
+ export USCXML_BUILD_HOST=epikur-win7
+ export USCXML_BUILD_ARCH=32
+ # winsshd needs an xterm ..
+ TERM=xterm expect build-windows.expect
+fi
+
+echo -n "Build uscxml for Windows 64Bit? [y/N]: "; read BUILD_WIN64
+if [ "$BUILD_WIN64" == "y" ] || [ "$BUILD_WIN64" == "Y" ]; then
+ echo "Start the Windows 64Bit system named 'epikur-win7-64' and press return" && read
+ echo == BUILDING USCXML FOR Windows 64Bit =========================================================
+ export USCXML_BUILD_HOST=epikur-win7-64
+ export USCXML_BUILD_ARCH=64
+ # winsshd needs an xterm ..
+ TERM=xterm expect build-windows.expect
+fi
+
+echo -n "Build uscxml for Mac OSX? [y/N]: "; read BUILD_MAC
+if [ "$BUILD_MAC" == "y" ] || [ "$BUILD_MAC" == "Y" ]; then
+ echo == BUILDING USCXML FOR Mac OSX =========================================================
+ rm -rf /tmp/build-uscxml
+ mkdir -p /tmp/build-uscxml
+ cd /tmp/build-uscxml
+ cmake -DDIST_PREPARE=ON -DCMAKE_BUILD_TYPE=Debug ${DIR}/../..
+ make -j2
+ make -j2 java
+ cmake -DDIST_PREPARE=ON -DCMAKE_BUILD_TYPE=Release ${DIR}/../..
+ make -j2
+ make -j2 java
+fi
+
+############################
+# Create installers
+############################
+
+echo -n "Build packages for those platforms? [a/y/N]: "; read BUILD_PACKAGES
+if [ "$BUILD_PACKAGES" == "y" ] || [ "$BUILD_PACKAGES" == "a" ]; then
+
+ cd ${DIR}
+
+ if [ "$BUILD_LINUX32" == "y" ] || [ "$BUILD_LINUX32" == "Y" ] || [ "$BUILD_PACKAGES" == "a" ]; then
+ echo Start the Linux 32Bit system named 'debian' again && read
+ echo == PACKAGING USCXML FOR Linux 32Bit =========================================================
+ export USCXML_BUILD_HOST=debian
+ expect package-linux.expect
+ fi
+
+ if [ "$BUILD_LINUX64" == "y" ] || [ "$BUILD_LINUX64" == "Y" ] || [ "$BUILD_PACKAGES" == "a" ]; then
+ echo Start the Linux 64Bit system named 'debian64' again && read
+ echo == PACKAGING USCXML FOR Linux 64Bit =========================================================
+ export USCXML_BUILD_HOST=debian64
+ expect package-linux.expect
+ fi
+
+ if [ "$BUILD_WIN32" == "y" ] || [ "$BUILD_WIN32" == "Y" ] || [ "$BUILD_PACKAGES" == "a" ]; then
+ echo Start the Windows 32Bit system named 'epikur-win7' again && read
+ echo == PACKAGING USCXML FOR Windows 32Bit =========================================================
+ export USCXML_BUILD_HOST=epikur-win7
+ export USCXML_BUILD_ARCH=32
+ TERM=xterm expect package-windows.expect
+ fi
+
+ if [ "$BUILD_WIN64" == "y" ] || [ "$BUILD_WIN64" == "Y" ] || [ "$BUILD_PACKAGES" == "a" ]; then
+ echo Start the Windows 64Bit system named 'epikur-win7-64' again && read
+ echo == PACKAGING USCXML FOR Windows 64Bit =========================================================
+ export USCXML_BUILD_HOST=epikur-win7-64
+ export USCXML_BUILD_ARCH=64
+ TERM=xterm expect package-windows.expect
+ fi
+
+ if [ "$BUILD_MAC" == "y" ] || [ "$BUILD_MAC" == "Y" ] || [ "$BUILD_PACKAGES" == "a" ]; then
+ echo == PACKAGING USCXML FOR MacOSX =========================================================
+ cd /tmp/build-uscxml
+ # rerun cmake for new cpack files
+ cmake -DDIST_PREPARE=ON -DCMAKE_BUILD_TYPE=Release ${DIR}/../..
+ make package
+ cp uscxml*darwin* ${DIR}/../../installer
+ cd ${DIR}
+ fi
+fi
+
+############################
+# Validate installers
+############################
+
+expect validate-installers.expect
+
+############################
+# Create ReadMe.html
+############################
+
+echo -n "Create ReadMe.html? [y/N]: "; read CREATE_README
+if [ "$CREATE_README" == "y" ]; then
+ ./make-installer-html-table.pl ${DIR}/../../installer > ${DIR}/../../installer/ReadMe.html
+fi \ No newline at end of file
diff --git a/contrib/local/make-installer-html-table.pl b/contrib/local/make-installer-html-table.pl
new file mode 100755
index 0000000..6315404
--- /dev/null
+++ b/contrib/local/make-installer-html-table.pl
@@ -0,0 +1,245 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Cwd 'abs_path'; # abs_path
+use Cwd; # getcwd
+use File::Spec; # abs2rel
+use Data::Dumper; # recursively dump data structures via Dumper($foo)
+use File::Path; # make_path
+use File::Path qw(make_path);
+use File::Temp qw/ tempfile tempdir /;
+use File::Basename;
+
+my $script_dir = dirname(abs_path($0));
+my $orig_cwd = getcwd;
+
+# get last version where we bumped the version string (ignoring pre, rc, beta ..)
+my $cmake_edits = `git log --follow -p $script_dir/../../CMakeLists.txt`;
+my $commit_hash;
+foreach my $line (split("\n", $cmake_edits)) {
+ if ($line =~ /^commit ([\dabcdef]+)/) {
+ $commit_hash = $1;
+ }
+ last if ($commit_hash and $line =~ /\+SET\(UMUNDO_VERSION_PATCH \"\d+\"\)/);
+}
+my $change_log = `git log --pretty=format:"%H %h @@@ %ai: %s ### %b" $commit_hash..`;
+# remove empty bodies
+#$change_log =~ s/\n\n/\n/g;
+# link to commit on github
+$change_log =~ s/([\dabcdef]+) ([\dabcdef]+) @@@/<a href="https:\/\/github\.com\/tklab-tud\/umundo\/commit\/$1">$2<\/a>/g;
+# put body below commit message
+$change_log =~ s/###\s\n/\n/g;
+$change_log =~ s/###\s/\n\n /g;
+$change_log =~ s/\n([^<])/\n $1/g;
+
+
+my $installer_dir = shift or die("Expected directory as first argument\n");
+if (!File::Spec->file_name_is_absolute($installer_dir)) {
+ $installer_dir = File::Spec->rel2abs($installer_dir, getcwd);
+}
+
+my $descriptions = {
+ './bin/protoc-umundo-cpp-rpc.*' => 'ProtoBuf RPC plugin for C++',
+ './bin/protoc-umundo-java-rpc.*' => 'ProtoBuf RPC plugin for Java',
+ './bin/umundo-monitor.*' => 'Diagnosis tool (somewhat unmaintained)',
+ './bin/umundo-pingpong.*' => 'Test deployments (i=incoming, o=outgoing)',
+ './include/umundo/core.h' => 'C++ headers for core layer',
+ './include/umundo/rpc.h' => 'C++ headers for remote procedure calls',
+ './include/umundo/s11n.h' => 'C++ headers for object serialization',
+ './include/umundo/util.h' => 'C++ headers for utilities',
+ './lib' => 'Pure C++ libraries',
+ './lib/libumundoNativeJava[\.6].*' => 'SWIG generated JNI wrapper (included in JAR)',
+ './lib/libumundocore[\.6].*' => 'C++ library for core',
+ './lib/libumundorpc[\.6].*' => 'C++ library for remote procedure calls',
+ './lib/libumundoserial[\.6].*' => 'C++ library for serialization',
+ './lib/libumundoutil[\.6].*' => 'C++ library with utilities',
+ './lib/umundo-monitor.lib' => 'not sure',
+ './lib/umundo-pingpong.lib' => 'not sure',
+ './lib/umundoNativeCSharp[\.6].*' => 'SWIG generated C# backend for DLLInvoke',
+ './share/umundo/android-8' => 'Cross compiled binaries for Android',
+ './share/umundo/android-8/armv5te/libumundoNativeJava.so' => 'SWIG generated JNI wrapper',
+ './share/umundo/android-8/umundo.jar' => 'JAR for Android (without JNI inside)',
+ './share/umundo/lib/umundo.jar' => 'JAR for desktops (auto-loading JNI code inside)',
+ './share/umundo/lib/umundoCSharp.dll' => 'C# library with managed code',
+ './share/umundo/prebuilt' => 'Prebuilt libraries in case we forgot something',
+ './share/umundo/samples' => 'Sample programs and IDE templates',
+ './share/umundo/samples/android' => 'Sample programs for Android',
+ './share/umundo/samples/android/umundo-pingpong/libs' => 'These are just placehoders!',
+ './share/umundo/samples/android/umundo-pingpong/libs/armeabi/libumundoNativeJava.so' => 'Replace with real library from above!',
+ './share/umundo/samples/android/umundo-pingpong/libs/armeabi/libumundoNativeJava_d.so' => 'Replace with real library from above!',
+ './share/umundo/samples/android/umundo-pingpong/libs/umundo.jar' => 'Replace with real library from above!',
+ './share/umundo/samples/csharp' => 'Sample programs for C#',
+ './share/umundo/samples/csharp/umundo-pingpong' => 'The simplest umundo program in C#',
+ './share/umundo/samples/csharp/umundo-s11ndemo' => 'Serialization in C# (Dirk is working on it)',
+ './share/umundo/samples/csharp/umundo.s11n' => 'My initial attempts at serialization with C# (deprecated)',
+ './share/umundo/samples/ios' => 'Sample programs for iOS',
+ './share/umundo/samples/ios/umundo-pingpong' => 'The simplest umundo program for iOS',
+ './share/umundo/samples/java' => 'Sample programs for Java',
+ './share/umundo/samples/java/core/chat' => 'Chat using the core layer',
+ './share/umundo/samples/java/core/chat/build.properties' => 'Adapt these for your system',
+ './share/umundo/samples/java/rpc/chat' => 'Chat using the RPC layer',
+ './share/umundo/samples/java/rpc/chat/build.properties' => 'Adapt these for your system',
+ './share/umundo/samples/java/rpc/chat/proto/ChatS11N.proto' => 'ProtoBuf file for chat services',
+ './share/umundo/samples/java/s11n/chat' => 'Chat using the serialization layer',
+ './share/umundo/samples/java/s11n/chat/build.properties' => 'Adapt these for your system',
+ './share/umundo/samples/java/s11n/chat/proto/ChatS11N.proto' => 'ProtoBuf file for chat message objects',
+ './share/umundo/samples/cpp' => 'Sample programs for C++',
+ './share/umundo/samples/cpp/core/chat' => 'Chat using the core layer',
+ './share/umundo/samples/cpp/rpc/chat' => 'Chat using the RPC layer',
+ './share/umundo/samples/cpp/s11n/chat' => 'Chat using the serialization layer',
+ './share/umundo/samples/cpp/s11n/chat/proto/ChatS11N.proto' => 'ProtoBuf file for chat message objects',
+ './share/umundo/samples/cpp/rpc/chat/proto/ChatS11N.proto' => 'ProtoBuf file for chat services',
+ './share/umundo/cmake/FindUMundo.cmake' => 'CMake module to find umundo once it is installed',
+ './share/umundo/cmake/UseUMundo.cmake' => 'CMake macros for protobuf',
+};
+
+my ($mac_archive, $linux32_archive, $linux64_archive, $win32_archive, $win64_archive);
+my ($mac_files, $linux32_files, $linux64_files, $win32_files, $win64_files);
+
+chdir $installer_dir;
+foreach (sort <*>) {
+ next if m/^\./;
+ $mac_archive = File::Spec->rel2abs($_, getcwd) if (m/.*darwin.*\.tar\.gz/i);
+ $linux32_archive = File::Spec->rel2abs($_, getcwd) if (m/.*linux-i686.*\.tar\.gz/i);
+ $linux64_archive = File::Spec->rel2abs($_, getcwd) if (m/.*linux-x86_64.*\.tar\.gz/i);
+ $win32_archive = File::Spec->rel2abs($_, getcwd) if (m/.*windows-x86-.*\.zip/i);
+ $win64_archive = File::Spec->rel2abs($_, getcwd) if (m/.*windows-x86_64.*\.zip/i);
+}
+
+print STDERR "No archive for MacOSX found!\n" if (!$mac_archive);
+print STDERR "No archive for Linux 32Bit found!\n" if (!$linux32_archive);
+print STDERR "No archive for Linux 64Bit found!\n" if (!$linux64_archive);
+print STDERR "No archive for Windows 32Bit found!\n" if (!$win32_archive);
+print STDERR "No archive for Windows 64Bit found!\n" if (!$win64_archive);
+
+$mac_archive =~ m/.*darwin-i386-(.*)\.tar\.gz/;
+my $version = $1;
+
+# make a hash remove first element split into array at newline
+%{$mac_files} = map { $_ => 1 } map { s/^[^\/]*\///; $_ } split("\n", `tar tzf $mac_archive`) if $mac_archive;
+%{$linux32_files} = map { $_ => 1 } map { s/^[^\/]*\///; $_ } split("\n", `tar tzf $linux32_archive`) if $linux32_archive;
+%{$linux64_files} = map { $_ => 1 } map { s/^[^\/]*\///; $_ } split("\n", `tar tzf $linux64_archive`) if $linux64_archive;
+%{$win32_files} = map { $_ => 1 } map { s/^[^\/]*\///; $_ } split("\n", `unzip -l $win32_archive`) if $win32_archive;
+%{$win64_files} = map { $_ => 1 } map { s/^[^\/]*\///; $_ } split("\n", `unzip -l $win64_archive`) if $win64_archive;
+
+# print Dumper($mac_files);
+# exit;
+my $tmpdir = File::Temp->newdir() or die($!);
+#print STDERR $tmpdir."\n";
+chdir $tmpdir or die($!);
+
+system("tar", "xzf", $mac_archive) if $mac_archive;
+system("tar", "xzf", $linux32_archive) if $linux32_archive;
+system("tar", "xzf", $linux64_archive) if $linux64_archive;
+system("unzip", "-q", $win32_archive) if $win32_archive;
+system("unzip", "-q", $win64_archive) if $win64_archive;
+
+my $rv;
+mkdir("content") or die($!);
+foreach (sort <*>) {
+ next if m/^\./;
+ next if m/.*content/;
+ if ($_ !~ /.*windows.*/i) {
+ $rv = `ditto $_/usr/local content`;
+ } else {
+ $rv = `ditto $_ content`;
+ }
+ $rv = `rm -rf $_`;
+}
+
+# remove duplicates and uninteresting directories
+# $rv = `rm -rf content/bin/protoc-umundo-cpp-rpc.exe`;
+# $rv = `rm -rf content/bin/protoc-umundo-java-rpc.exe`;
+# $rv = `rm -rf content/bin/umundo-monitor.exe`;
+# $rv = `rm -rf content/bin/umundo-pingpong.exe`;
+
+$rv = `rm -rf content/include/umundo/common`;
+$rv = `rm -rf content/include/umundo/connection`;
+$rv = `rm -rf content/include/umundo/discovery`;
+$rv = `rm -rf content/include/umundo/protobuf`;
+$rv = `rm -rf content/include/umundo/rpc`;
+$rv = `rm -rf content/include/umundo/s11n`;
+$rv = `rm -rf content/include/umundo/thread`;
+$rv = `rm -rf content/include/umundo/util`;
+$rv = `rm -rf content/include/umundo-objc`;
+
+chdir "content/" or die($!);
+
+my $tree_list = `tree -a -h --noreport --charset ISO-8859-1`;
+my $flat_list = `find -s .`;
+
+print '<html><body>'."\n";
+
+print '<h1>Changelog</h1>'."\n";
+print '<pre>'."\n";
+print $change_log;
+print '</pre>'."\n";
+
+print '<h1>Contents</h1>';
+print <<EOF;
+<p>The following table is an excerpt of all the files in the individual installer
+packages (detailled C++ headers are not shown). All the different archives/installers
+for a given platform contain the same files, it is only a matter of taste and
+convenience. There are differences between the contents for each platform though
+and they are listed in the <i>availability</i> column.</p>
+
+<p><tt>Mac</tt> are all the darwin installers, <tt>L32</tt> and <tt>L64</tt> is short for Linux 32 and 64Bit
+respectively, same with <tt>W32</tt> and <tt>W64</tt> for Windows. Only the first occurence of a
+library is commented, the <tt>_d</tt> suffix signifies debug libraries, the <tt>64</tt>
+suffix is for 64Bit builds and the Windows libraries have no <tt>lib</tt> prefix.</p>
+
+EOF
+print '<table>'."\n";
+print '<tr><th align="left">Availability</th><th align="left">Filename</th><th align="left">Description</th></tr>';
+print '<tr><td valign="top">'."\n";
+print '<pre>'."\n";
+
+foreach my $file (split("\n", $flat_list)) {
+ if ($file eq '.') {
+ print '<font bgcolor="#ccc">MAC</font>|L32|L64|W32|W64'."\n";
+ next;
+ }
+ if (-d $file) {
+ print "\n";
+ next;
+ }
+ $file =~ s/\.\///;
+# print STDERR $file."\n";
+ (exists($mac_files->{"usr/local/$file"}) ? print " X " : print " - ");
+ (exists($linux32_files->{"usr/local/$file"}) ? print " X " : print " - ");
+ (exists($linux64_files->{"usr/local/$file"}) ? print " X " : print " - ");
+ (exists($win32_files->{"$file"}) ? print " X " : print " - ");
+ (exists($win64_files->{"$file"}) ? print " X " : print " - ");
+ print "\n";
+}
+
+print '</pre>'."\n";
+print '</td><td valign="top">'."\n";
+print '<pre>'."\n";
+
+print $tree_list;
+
+print '</pre>'."\n";
+print '</td><td valign="top">'."\n";
+print '<pre>'."\n";
+
+foreach my $file (split("\n", $flat_list)) {
+ my $has_description = 0;
+ foreach my $desc (keys %{$descriptions}) {
+ if ($file =~ /^$desc$/) {
+ print $descriptions->{$desc}."\n";
+ delete $descriptions->{$desc};
+ $has_description = 1;
+ }
+ }
+ if (!$has_description) {
+ print "\n";
+ }
+}
+
+print '</pre>'."\n";
+print '</td></tr>'."\n";
+print '</table>'."\n";
+print '</body></html>'."\n";
+
+chdir $orig_cwd; \ No newline at end of file
diff --git a/contrib/local/package-linux.expect b/contrib/local/package-linux.expect
new file mode 100644
index 0000000..2685981
--- /dev/null
+++ b/contrib/local/package-linux.expect
@@ -0,0 +1,33 @@
+#!/usr/bin/expect -d
+
+set USCXML_BUILD_HOST $::env(USCXML_BUILD_HOST)
+set timeout 150
+
+set local_prompt {sradomski$ }
+set prompt "sradomski@"
+append prompt ${USCXML_BUILD_HOST}
+append prompt {:[a-zA-Z~\/\-]+\$ }
+
+eval spawn ping -c1 ${USCXML_BUILD_HOST}.local.
+expect "cannot resolve" { puts "Host ${USCXML_BUILD_HOST}.local. not found"; exit } \
+ -re $local_prompt { }
+
+eval spawn ssh ${USCXML_BUILD_HOST}.local.
+expect -re $prompt { send "cd /tmp/build-uscxml\n" }
+expect -re $prompt { send "cmake -DCMAKE_BUILD_TYPE=Release -DDIST_PREPARE=ON /media/psf/Home/Documents/TK/Code/uscxml\n" }
+
+expect -re $prompt { send "make package\n" }
+
+expect "CPack" { exp_continue; } \
+ -re $prompt { send "logout\n" }
+
+##############################
+# exit and copy packages
+
+expect -re $local_prompt
+eval cd ~/Documents/TK/Code/
+
+eval spawn "scp -r ${USCXML_BUILD_HOST}.local:/tmp/build-uscxml/uscxml-linux* uscxml/installer/"
+expect -re $local_prompt
+
+exit
diff --git a/contrib/local/package-windows.expect b/contrib/local/package-windows.expect
new file mode 100755
index 0000000..8aa4ac8
--- /dev/null
+++ b/contrib/local/package-windows.expect
@@ -0,0 +1,77 @@
+#!/usr/bin/expect
+
+set timeout 600
+set USCXML_BUILD_HOST $::env(USCXML_BUILD_HOST)
+set USCXML_BUILD_ARCH $::env(USCXML_BUILD_ARCH)
+
+set local_prompt {sradomski$ }
+eval spawn ping -c1 ${USCXML_BUILD_HOST}.local.
+expect "cannot resolve" { puts "Host ${USCXML_BUILD_HOST}.local. not found"; exit } \
+ -re $local_prompt { }
+
+set initial_remote_prompt "C*>"
+# the default windows prompt is hard to recognize
+set remote_prompt "easy_to_recognize"
+
+eval spawn scp -4 -r ../../package sradomski@epikur-win7.local:uscxml
+expect {
+ "100" { exp_continue }
+ "The authenticity" { send "yes\n"; exp_continue; }
+ timeout { puts "Timeout when uploading source code"; exit; }
+ -re $local_prompt { }
+}
+
+##############################
+# ssh into remote host
+
+eval spawn ssh -4 sradomski@${USCXML_BUILD_HOST}.local.
+expect {
+ timeout { puts "Timeout when connecting to windows"; exit; }
+ "The authenticity" { send "yes\n"; }
+ -re $local_prompt { puts "Could not connect to remote host"; exit; }
+ -re $initial_remote_prompt { }
+}
+
+send "set prompt=easy_to_recognize \r"
+expect -re $remote_prompt
+
+send "cd build-uscxml\r"
+expect -re $remote_prompt
+
+if { [string compare $USCXML_BUILD_ARCH 32] == 0 } {
+ send "\"c:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\bin\\vcvars32.bat\"\r"
+ expect -re $remote_prompt
+} else {
+ send "\"c:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat\" x86_amd64\r"
+ expect -re $remote_prompt
+}
+
+##############################
+# package
+
+send "\"cmake.exe\" -G \"NMake Makefiles\" -DCMAKE_BUILD_TYPE=Release -DDIST_PREPARE=ON ..\\uscxml\r"
+expect -re $remote_prompt
+
+send "nmake package\r"
+expect {
+ -re $remote_prompt {}
+ "Built target" { exp_continue; }
+ "CPack" { exp_continue; }
+}
+
+##############################
+# exit and copy packages
+
+send "exit\r"
+expect -re $local_prompt
+
+eval cd ~/Documents/TK/Code/
+
+if { [string compare $USCXML_BUILD_ARCH 32] == 0 } {
+ eval spawn "scp -r epikur-win7.local:build-uscxml\\\\uscxml-windows* uscxml/installer/"
+} else {
+ eval spawn "scp -r epikur-win7-64.local:build-uscxml\\\\uscxml-windows* uscxml/installer/"
+}
+expect -re $local_prompt
+
+exit
diff --git a/contrib/local/remove-dsstore-files.sh b/contrib/local/remove-dsstore-files.sh
new file mode 100755
index 0000000..50cbb3a
--- /dev/null
+++ b/contrib/local/remove-dsstore-files.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+set -e
+
+ME=`basename $0`
+DIR="$( cd "$( dirname "$0" )" && pwd )"
+CWD=`pwd`
+
+find ${DIR}/../.. -name '.DS_Store' -exec rm {} \; \ No newline at end of file
diff --git a/contrib/local/validate-installers.expect b/contrib/local/validate-installers.expect
new file mode 100755
index 0000000..7022b37
--- /dev/null
+++ b/contrib/local/validate-installers.expect
@@ -0,0 +1,317 @@
+#!/usr/bin/expect
+
+## way more verbose:
+#!/usr/bin/expect -d
+
+set timeout 2;
+set local_prompt {easy_to_recognize}
+log_user 0
+eval spawn /bin/bash
+expect -re {bash.*$} {}
+send "export PS1=easy_to_recognize\n"
+expect -re $local_prompt
+expect -re $local_prompt
+
+proc checkArchive {listCommand label listOfFiles} {
+ upvar 1 local_prompt local_prompt
+ set reqFiles [lsort $listOfFiles]
+
+ puts "Validating $label installer via $listCommand"
+
+ log_user 0
+ send "$listCommand 1>/dev/null\n"
+ expect {
+ "cannot find" { puts " Cannot find archive for $label"; puts " Not OK"; return; }
+ "Error opening" { puts " Cannot find archive for $label"; return; }
+ -re $local_prompt { }
+ }
+
+ send "$listCommand |sort\n"
+ foreach {file} $reqFiles {
+ set relist 1;
+ expect {
+ -re $file { }
+ -re $local_prompt {
+ if {$relist} {
+ send "$listCommand |sort\n";
+ set relist 0;
+ exp_continue;
+ } else {
+ puts " Cannot find $file in $label installer"; exit;
+ }
+ }
+ }
+ }
+ expect -re $local_prompt
+ puts " Archive OK"
+}
+
+set reqFilesCSharpProject {
+ "samples/csharp/umundo-pingpong/umundo-pingpong.sln"
+ "samples/csharp/umundo-pingpong/umundo-pingpong.suo"
+ "samples/csharp/umundo-pingpong/umundo-pingpong/Program.cs"
+ "samples/csharp/umundo-pingpong/umundo-pingpong/umundo-pingpong.csproj"
+ "samples/csharp/umundo-pingpong/umundo-pingpong/umundo-pingpong.csproj.user"
+ "samples/csharp/umundo-pingpong/umundo-pingpong/Properties/AssemblyInfo.cs"
+}
+
+set reqFilesXCodeProject {
+ "samples/ios/umundo-pingpong/AppDelegate.h"
+ "samples/ios/umundo-pingpong/AppDelegate.mm"
+ "samples/ios/umundo-pingpong/main.m"
+ "samples/ios/umundo-pingpong/umundo-pingpong-Info.plist"
+ "samples/ios/umundo-pingpong/ViewController.h"
+ "samples/ios/umundo-pingpong/ViewController.m"
+ "samples/ios/umundo-pingpong.xcodeproj/project.pbxproj"
+ "samples/ios/umundo-pingpong.xcodeproj/project.xcworkspace"
+}
+
+set reqFilesAndroidProject {
+ "samples/android/umundo-pingpong/AndroidManifest.xml"
+ "samples/android/umundo-pingpong/project.properties"
+ "samples/android/umundo-pingpong/src/org/umundo/samples/UMundoAndroidActivity.java"
+}
+
+set reqFilesDesktopCommonUnix {
+ "/usr/local/bin/protoc-umundo-cpp-rpc"
+ "/usr/local/bin/protoc-umundo-java-rpc"
+ "/usr/local/bin/umundo-pingpong"
+ "/usr/local/bin/umundo-monitor"
+ "/usr/local/share/umundo/java/umundo.jar"
+}
+
+set reqFilesAndroid {
+ "/share/umundo/android-.*/armv.*/libumundoNativeJava.so"
+ "/share/umundo/android-.*/armv.*/libumundoNativeJava_d.so"
+ "/share/umundo/android-.*/umundo.jar"
+}
+
+set reqFilesJavaSamples {
+ "samples/java/core/chat/build.properties"
+ "samples/java/core/chat/build.xml"
+ "samples/java/core/chat/src/org/umundo/Chat.java"
+ "samples/java/rpc/chat/build.properties"
+ "samples/java/rpc/chat/build.xml"
+ "samples/java/rpc/chat/proto/ChatS11N.proto"
+ "samples/java/rpc/chat/src/org/umundo/Chat.java"
+ "samples/java/s11n/chat/build.properties"
+ "samples/java/s11n/chat/build.xml"
+ "samples/java/s11n/chat/proto/ChatS11N.proto"
+ "samples/java/s11n/chat/src/org/umundo/Chat.java"
+}
+
+set reqFilesCPPSamples {
+ "samples/cpp/core/chat/CMakeLists.txt"
+ "samples/cpp/core/chat/src/Chat.cpp"
+ "samples/cpp/core/chat/src/Chat.h"
+ "samples/cpp/rpc/chat/CMakeLists.txt"
+ "samples/cpp/rpc/chat/proto/ChatS11N.proto"
+ "samples/cpp/rpc/chat/src/Chat.cpp"
+ "samples/cpp/rpc/chat/src/Chat.h"
+ "samples/cpp/s11n/chat/CMakeLists.txt"
+ "samples/cpp/s11n/chat/proto/ChatS11N.proto"
+ "samples/cpp/s11n/chat/src/Chat.cpp"
+ "samples/cpp/s11n/chat/src/Chat.h"
+}
+
+# "/share/umundo/prebuilt/android/arm-linux-androideabi/libmDNSEmbedded.a"
+# "/share/umundo/prebuilt/android/arm-linux-androideabi/libmDNSEmbedded.so"
+# "/share/umundo/prebuilt/android/arm-linux-androideabi/libmDNSEmbedded_d.a"
+# "/share/umundo/prebuilt/android/arm-linux-androideabi/libmDNSEmbedded_d.so"
+# "/share/umundo/prebuilt/android/arm-linux-androideabi/libpcre.a"
+# "/share/umundo/prebuilt/android/arm-linux-androideabi/libpcre_d.a"
+# "/share/umundo/prebuilt/android/arm-linux-androideabi/libpcreposix.a"
+# "/share/umundo/prebuilt/android/arm-linux-androideabi/libpcreposix_d.a"
+# "/share/umundo/prebuilt/android/arm-linux-androideabi/libzmq.a"
+# "/share/umundo/prebuilt/android/arm-linux-androideabi/libzmq_d.a"
+
+
+set reqFilesIOS {
+ "/usr/local/share/umundo/ios-.*/libumundo.ios.a"
+ "/usr/local/share/umundo/ios-.*/libumundo_d.ios.a"
+
+ "/usr/local/share/umundo/deps/ios/.*/libpcreposix.a"
+ "/usr/local/share/umundo/deps/ios/.*/libpcrecpp.a"
+ "/usr/local/share/umundo/deps/ios/.*/libpcre.a"
+ "/usr/local/share/umundo/deps/ios/.*/libprotobuf-lite.a"
+ "/usr/local/share/umundo/deps/ios/.*/libprotobuf.a"
+ "/usr/local/share/umundo/deps/ios/.*/libprotoc.a"
+ "/usr/local/share/umundo/deps/ios/.*/libzmq.a"
+}
+
+# "/usr/local/share/umundo/ios-.*/libumundocore.ios.a"
+# "/usr/local/share/umundo/ios-.*/libumundocore_d.ios.a"
+# "/usr/local/share/umundo/ios-.*/libumundoserial.ios.a"
+# "/usr/local/share/umundo/ios-.*/libumundoserial_d.ios.a"
+# "/usr/local/share/umundo/ios-.*/libumundorpc.ios.a"
+# "/usr/local/share/umundo/ios-.*/libumundorpc_d.ios.a"
+# "/usr/local/share/umundo/ios-.*/libumundoutil.ios.a"
+# "/usr/local/share/umundo/ios-.*/libumundoutil_d.ios.a"
+
+#############################
+# Validate Mac installers
+#############################
+log_user 0
+set reqFilesMac {
+ "/usr/local/include/umundo/s11n.h"
+ "/usr/local/include/umundo/core.h"
+ "/usr/local/include/umundo/rpc.h"
+ "/usr/local/include/umundo/util.h"
+
+ "/usr/local/lib/libumundo64.dylib"
+ "/usr/local/lib/libumundo64_d.dylib"
+ "/usr/local/lib/libumundocore64.dylib"
+ "/usr/local/lib/libumundocore64_d.dylib"
+ "/usr/local/lib/libumundoserial64.dylib"
+ "/usr/local/lib/libumundoserial64_d.dylib"
+ "/usr/local/lib/libumundorpc64.dylib"
+ "/usr/local/lib/libumundorpc64_d.dylib"
+ "/usr/local/lib/libumundoutil64.dylib"
+ "/usr/local/lib/libumundoutil64_d.dylib"
+ "/usr/local/lib/libumundoNativeJava64.jnilib"
+ "/usr/local/lib/libumundoNativeJava64_d.jnilib"
+}
+
+set reqFilesMac [concat $reqFilesMac $reqFilesAndroid $reqFilesIOS $reqFilesDesktopCommonUnix $reqFilesXCodeProject $reqFilesAndroidProject $reqFilesJavaSamples $reqFilesCPPSamples]
+set reqFilesMac [lsort $reqFilesMac]
+checkArchive "tar tzf ../../installer/umundo-darwin-*.tar.gz" Mac $reqFilesMac
+
+#############################
+# Validate Linux32 installers
+#############################
+
+log_user 0
+set reqFilesLinux32 {
+ "/usr/local/bin/protoc-umundo-cpp-rpc"
+ "/usr/local/bin/umundo-pingpong"
+ "/usr/local/bin/umundo-monitor"
+
+ "/usr/local/include/umundo/s11n.h"
+ "/usr/local/include/umundo/core.h"
+ "/usr/local/include/umundo/rpc.h"
+ "/usr/local/include/umundo/util.h"
+
+ "/usr/local/lib/libumundo.so"
+ "/usr/local/lib/libumundo_d.so"
+ "/usr/local/lib/libumundocore.so"
+ "/usr/local/lib/libumundocore_d.so"
+ "/usr/local/lib/libumundoserial.so"
+ "/usr/local/lib/libumundoserial_d.so"
+ "/usr/local/lib/libumundorpc.so"
+ "/usr/local/lib/libumundorpc_d.so"
+ "/usr/local/lib/libumundoutil.so"
+ "/usr/local/lib/libumundoutil_d.so"
+ "/usr/local/lib/libumundoNativeJava.so"
+ "/usr/local/lib/libumundoNativeJava_d.so"
+
+ "/usr/local/share/umundo/java/umundo.jar"
+}
+set reqFilesLinux32 [concat $reqFilesLinux32 $reqFilesDesktopCommonUnix $reqFilesAndroid $reqFilesAndroidProject $reqFilesJavaSamples $reqFilesCPPSamples]
+set reqFilesLinux32 [lsort $reqFilesLinux32]
+checkArchive "tar tzf ../../installer/umundo-linux-i686-*.tar.gz" Linux32 $reqFilesLinux32
+
+#############################
+# Validate Linux64 installers
+#############################
+
+log_user 0
+set reqFilesLinux64 {
+ "/usr/local/bin/protoc-umundo-cpp-rpc"
+ "/usr/local/bin/umundo-pingpong"
+ "/usr/local/bin/umundo-monitor"
+
+ "/usr/local/include/umundo/s11n.h"
+ "/usr/local/include/umundo/core.h"
+ "/usr/local/include/umundo/rpc.h"
+ "/usr/local/include/umundo/util.h"
+
+ "/usr/local/lib/libumundo64.so"
+ "/usr/local/lib/libumundo64_d.so"
+ "/usr/local/lib/libumundocore64.so"
+ "/usr/local/lib/libumundocore64_d.so"
+ "/usr/local/lib/libumundoserial64.so"
+ "/usr/local/lib/libumundoserial64_d.so"
+ "/usr/local/lib/libumundorpc64.so"
+ "/usr/local/lib/libumundorpc64_d.so"
+ "/usr/local/lib/libumundoutil64.so"
+ "/usr/local/lib/libumundoutil64_d.so"
+ "/usr/local/lib/libumundoNativeJava64.so"
+ "/usr/local/lib/libumundoNativeJava64_d.so"
+
+ "/usr/local/share/umundo/java/umundo.jar"
+}
+set reqFilesLinux64 [concat $reqFilesLinux64 $reqFilesDesktopCommonUnix $reqFilesAndroid $reqFilesAndroidProject $reqFilesJavaSamples $reqFilesCPPSamples]
+set reqFilesLinux64 [lsort $reqFilesLinux64]
+checkArchive "tar tzf ../../installer/umundo-linux-x86_64-*.tar.gz" Linux64 $reqFilesLinux64
+
+#############################
+# Validate Win32 installers
+#############################
+
+log_user 0
+set reqFilesWin32 {
+ "/bin/protoc-umundo-cpp-rpc.exe"
+ "/bin/umundo-pingpong.exe"
+ "/bin/umundo-monitor.exe"
+
+ "/include/umundo/s11n.h"
+ "/include/umundo/core.h"
+ "/include/umundo/rpc.h"
+ "/include/umundo/util.h"
+
+ "/lib/umundo.lib"
+ "/lib/umundo_d.lib"
+ "/lib/umundocore.lib"
+ "/lib/umundocore_d.lib"
+ "/lib/umundoserial.lib"
+ "/lib/umundoserial_d.lib"
+ "/lib/umundorpc.lib"
+ "/lib/umundorpc_d.lib"
+ "/lib/umundoutil.lib"
+ "/lib/umundoutil_d.lib"
+ "/lib/umundoNativeCSharp.dll"
+ "/lib/umundoNativeCSharp_d.dll"
+ "/lib/umundoNativeJava.dll"
+ "/lib/umundoNativeJava_d.dll"
+}
+set reqFilesWin32 [concat $reqFilesWin32 $reqFilesAndroid $reqFilesCSharpProject $reqFilesAndroidProject $reqFilesJavaSamples $reqFilesCPPSamples]
+set reqFilesWin32 [lsort $reqFilesWin32]
+checkArchive "unzip -l ../../installer/umundo-windows-x86-*.zip" Win32 $reqFilesWin32
+
+#############################
+# Validate Win64 installers
+#############################
+
+log_user 0
+set reqFilesWin64 {
+ "/bin/protoc-umundo-cpp-rpc.exe"
+ "/bin/umundo-pingpong.exe"
+ "/bin/umundo-monitor.exe"
+
+ "/include/umundo/s11n.h"
+ "/include/umundo/core.h"
+ "/include/umundo/rpc.h"
+ "/include/umundo/util.h"
+
+ "/lib/umundo64.lib"
+ "/lib/umundo64_d.lib"
+ "/lib/umundocore64.lib"
+ "/lib/umundocore64_d.lib"
+ "/lib/umundoserial64.lib"
+ "/lib/umundoserial64_d.lib"
+ "/lib/umundorpc64.lib"
+ "/lib/umundorpc64_d.lib"
+ "/lib/umundoutil64.lib"
+ "/lib/umundoutil64_d.lib"
+ "/lib/umundoNativeCSharp64.dll"
+ "/lib/umundoNativeCSharp64_d.dll"
+ "/lib/umundoNativeJava64.dll"
+ "/lib/umundoNativeJava64_d.dll"
+}
+set reqFilesWin64 [concat $reqFilesWin64 $reqFilesAndroid $reqFilesCSharpProject $reqFilesAndroidProject $reqFilesJavaSamples $reqFilesCPPSamples]
+set reqFilesWin64 [lsort $reqFilesWin64]
+checkArchive "unzip -l ../../installer/umundo-windows-x86_64-*.zip" Win64 $reqFilesWin64
+
+expect $local_prompt
+send "logout\n"
+exit \ No newline at end of file